#@@###SSSSSS#%?S#@#SS%SS%?%S###SS%%SSS%%%?*?%SS?????%SSS%?%%?%SS%????????%%????%%S#S%S%%%S%%%SSSSSSS
@@@@@@#####@@#%S#@@###@#S%%SSSSSSS####SS%?*?#@#S????%S##SS#S%%SS%??????%SS%???%#@@@#SSSSS%SSS##S%%SS
@@@@@##SS#@@@##SS#SSS#@@#SS%%??%S#@@@#S%%?*%#@@#S%%??%#@@@@#SS%%???*?S###S?++;+S@@@#SSS%*?%S##@#S%%?
#####S%??%S#####SS%%%%S###SS?**%SSS###S?%%%%S####SSS%?%S######S%%%?%SS#SSS%?*+*%#######S?**??%###S%%
%%%%%?*****????????******??**************???*??**??????????%SS%?*****???????%?**???%%%%%??***?%SSSS%
S%????***********++++++++++++++++++++++++++++++++++++++*******+++++++++++++++++++************???????
#??*******++++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+;;;;;;;;;;;;;;;;;;;;;;;;;+++++++++++*******
%?*******++++**+++;;+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+%*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+;;;++++++*****
??******++++***++++++;;;;;;;;;;;;;;;++;;;;;;;;;;;?#@S;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*++;;;+++++*****
???*****++++++++++++;;;;+++;;;;;;;;;;;;;;;;;;;;;?###@S;:;;;;;++;;;;;;::;;++;;;;;;;;;+++;;;;+++*%?***
%%%?******+++++**++++;;;+++;;;;;;;;;;;;;++;;;;;*#####@%;:;;;;;;;;;;;::;;+++;;;;;;;;;;;++;;;+++?%?***
S#S%******++++*???***+;;++;;;;;;;;;;;;;:;+++;;*######@@S;;;;;;;;;+??*;;;++;;;;;+++++;;+*+;;;;+SS*+++
S%SS?*****++++%##S??**+++++;;;;;;;;;;;;::;+*?*?SS##@@@@@?::::::;+**%S?++*;;;;*?%SS##?++**+;;;*#S****
S%SSS?***+++++%###SS%?*++++++++++;;;;;;+?%S%%***?%#@@@@@?:::::::+*?*?**++%%*%SS#####S?????*+;+%SSS##
#SSSS%??*++++;+++*%%%?*+**?**?%%%?+;;;;*S#SSSS#S%%S###@#+;;;;:::;*?%%?*++S##S%%%%SSS##SSSSS%*++*%#@@
@#####SSS%*******??%?*++**?%%S#SS%*;;;;;?SSS%?S%?%%%%%#%?*++++++**?%S%*+?SSSS%%%SS%?%S######S?++?#@@
#######@##S%??**++++++++**?%%SSS%*++++++?%S%?*??%%%%%%%?*++***??*+;+%%**S########S%???%S#####S%?%%S#
?S#########S*+;;;;;;;+++***?????*++++*????***?%%%%%%%*****??%%SS?+;;*?*?S####S#SSSSSSS%%S######S%SSS
**%S######S%?+;;;;;;;++++++***+++++++*%%%%*;+?%%%%%%%%%%%SSSS##SS?+;+?%SSSSSSS%SSS#############S%SS#
**?%##SSSSS%?+;;;;;;;;++++++*****+;;+?%%%%???S#SSSSS##S%%SSSSSSSS%?+;+?SSSSSS%%SS##############%%%SS
?**?SSSSSSSSS?+;;;;:::;++++++**??*++***+;+%#@@####@SS##SS%%%%%%%%%?+;;*%%%%?????%SSSSSSSSSSSSS%**?%%
++++****?%%%%%*;;::::;+++++**?????**++;;+%#@@@@@#@%%####SSS%%%%%%%+;:;*?%??***???????*??%%????*+++*?
++;+;;;++++++++;;:,:::;+++;+++;++;+;;;+?S@@@#%%%%S%S####S%%%?*++++;::;+****+++++++++++++++++++++++**
++;;;;;;;;+++++;::,,::;;;;;;;;;;;;;;;?S#SS%**++**?S######@##%+;;;;:::;;+++++;;;;;;;;;;;;;;;;+++++++*
++;;;;;;;;;;;;;;;;:::;;;;;;;;;;;;;;+%SSSSS?*??%%%#@####SS#@@#S*;;;::::;;;;;;;;;;;;;;;;;;;;;++++++++*
+++++++;;;;;+;;;;;;;;;;;;;;;;;;;;;;*#@#SS%%%%%%S##@########@@#S+;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++*
++++++++;+;;;;;;;;;;;;;;;;;;;;;;;;;;*?*+++++++%%%#######@#@@##S?;;;;;;;;;;;;;;;;;;;;;;;;;++++++++++*
+*++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++?S%#@@@@@@@@@@@@@#+;;;;;;;;;;;;;;;;;;;;;;;;;+++++++++*
***++++;++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;S%#@@@@@@@@@@@@@@%;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++*
++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;::::::;?*%@@@@@@@@@@@@@#;::::::::;;;;;;;;;;;;;;;;;;;;;+++++
++++++++;;;;;;;;;;;;;;;;;;;:;;;:::::::::::::::::::*S@@@@@@@@@@@@#;:::::::::::::::::;+***++;;;;;;;;++
*+++++++;;;;;;;;;;;;;;;:::;::::::::::::::::::::::?#S#@@@@@@####@#;::::::::::::::::::*%%S%?*+;;;;;+*?
*+++++++++;;;;;;;;;;;;;;;;::::::::::::::::::::::;#@#%@@@@@@@@####;:::::::::::::::::::*?*??SS?++;;*%%
++++++++;;;;;;;;;;;;;;;;::::::::::::::::::::::::*@@#%#@@@@@@@@@##+,:::::::::::::::::;*;::;+?%?*++*S%
*+++++++;;;;;;;;;;;;;;;;:::::::::::::::::::::::;S@#@S%@@@#@@@@@@#?:::::::::::::::::;*;::::;;+%%?**?%
*+++++;+;;;;;;;;;;;;;;;:::::::::::::::::::::::,+##@@#?#####@@@@##+:::::::::::::::::+;::::;;;;+?%%%??
*+++++++;;;;;;;;;;;;;;:::::::::::::::;:::::::::;S#@@@S###@@@@@?:;:::::::::::::::::++:::::;;;;;;*%S%%
++++++++;;;;;;;;;;;;;;::::::::::::::::::::::::::?@@@@@@@@@@@@@;,:::::::::::::::::++::::::;:;;;;;+?%S
++++++++;;;;;;;;;;;;;:::::::::::::::::::::::::::%@@@##@@@@@@@@*,::::::::::::::::++::::::;;;;;;;;;;+%
*+++++++;;;;;;;;;;;;;;;::::::::::::::::::::::::;#@@@##@@@@@@@@+::::::::::::::::;+::::::;;;;;;;;;++*?
+++++++++;;;;;;;;;;;;;;;;::::::::::::::::::::::?@@@@#@@@@@@@#%::::::::::::::::;*;:::::::;;;;;;;++*?%
*++++++++;;;;;;;;;;;;;;;;;::::::::::::::::::::;#@@@@########%;:::::::::::::::;*;::::::;:;;;;;;++*?%S
***+++++++;;;;;;;;;;;;;;;;::::::;:::::::::::::;?@@@@@@@@@##*:::::::::::::::::*;::::::::;;;++**?%SS##
***++++++++;;;;;;;;;;;;;;;;:::::::::::::::::::::?@@@@@@@@@#;,:::::::::::::::++:::::::;;+**???%%S#S%*
+**++++++++;;;;;;;;;;;;;;::::::::::::::::::::::,;#@@@@@@@@@%:::::::::::::;;++:::::;;+*?%%%%%SSS%?*++
*++++++++++;;;;;;;;;;;;;;::::::::::::::::::::::::%@@@@@@@@@@*:::::::::::+**?**++*??%%%SSSSS%?*++++?%
*++++++++++;;;;;;;;;;;;;;;;;;;:;;:;::::::::::::::?#@##?+S##S*::::::::::;*????????%%%%%%?**++;;;;*S@@
**+++++++++;;;;;;;;;;;;;;;;:;:;:::;::;:::::::::;::;?%%+,;%%?;:::::::::::**++;;;;;;;;;;;;;;;;;+*%@@@@
****++++++++;;;;;;;;;;;;;;;;;:;::::::::::::::::::::;???::*??+:::::::::::;:::::::;;;;;;;;;;;+?S#@@@@@
****+++++++++;;;;;;;;;;;;;;;;;:;::::::::::::::::::::*%*;,+%?+::::::::::::::::::::;;;;;;;;+?#@@@@@@@#
*****++++++++++;;;;;;;;;;;;;;:::::::::::::::::::::::+??*:+?**:::::::::::::::;;;;;;;;;;;;*S@@@@@@@#?*
*****+*++++++++;;;;;;;;;;;;;:::::::::::::::::::::;+*?%?*;;+++;::::::::::::::+++*+;;;;;+?S#SS#@@#?++?
*******++++++++;;;+++++++++;;;;;;;;;;;;;;;;;;;++***?*++;;;;;;+;;;;;;::::::::;+++++;;;+?**????%?**?S#
*******++++++++;;;+??%%%%???????**********************??*++*******+++***++++++++++++++++*?%%%%??%S#@
*******++++++++;;;;;+*%SS%%%%%%%%%%%%%%%?%S%??%%%%??%%%%%%%??%%?%%%%??%%%%%%%%%%%%%%%%%%??%%%%%%?%#@