@@@@#SSSSSSSSSSSS%???%%%????%%???*??????**?????****??????%?*??????*??***********?????????????%%%%%%%
@@#SSSS####%%%?%?????%??????????*???????*??????*???????????????*+***?????????????????????%%%%%%%%%%S
##S%??%S@@S%?**+++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+;++++++++****?%?????
?%%%??%S##S%%???*++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++?SS#S?*
????%%%%SS%%???*++;;;;;;;;;;;;;:;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;:;;;:;:;;:;;;;;;;;;;;;;;;;;+++*SSSS?*
**********+++++;;;;;;;;;;;:;;;:::::::::::::::::::;;::::::;:::::::;::::::::;:::;;;;;;;;;;;;;++*SSS%**
******+++++;;;;;;;;;;:::::::::::::::::::::::::;*::::::::::::::::::::::::::::::::;;;;;;;;;;;;+*%S%***
*****+++++;;;;;;;;;;;::::::::::::::::::::::::*S#?:::::::::::::::::::::::::::::::;;;;;;;;**+++*?????*
***+**?*+;;;;;;;;;;;;;;;;;:::;*+;:::::::::::*####?::::::::;*+;::::::::::::::::;::;;;;;;+*%%?????????
***%S#@S*;;;;;;;;;;;*%%%?;::::++;;;::::;????S#####%;:::::*SS%*+;:::::::::::;?%%%+;;;;;;;;+*?????????
SS#@@@#S%*;;;;;;;;;;%S#S%*;;;:::;+*+;::*SSSSS######%:::::%S%%SSS*;:::::::::*SSSS%;::;;;;;;;;;+*?%%%%
#@@@@@#%??++;;;;;;+*?%SS%?*;;::::;+***%S#S??%S######+::::;?%%%%%?;;;;::::::+%%%S%*;;;;;;;;;;;+*%####
@@##@#S%%SS%?+;;;*S#####S?;:::;;::::+?S##S????%S##@S;:;;++??%%%?+;;+++::::+*%%%%%****++++****?%SSSSS
@#####%?%S#S%*++?S###@@##?*++*%?:::::;*SSS%##%%%SS#?;+*?%SSS%%S%*++?%%*+*?SSS%%SS%%S%??????%SSSSSSSS
##@@######%?%%%%*+*%#####S%?**?%*:::;+?%S%*?%???%?%%%%???%%%SSSS?+;+%SS%?*+?%%%SSSSSS%?+;;;;*%S#####
SSSSS#@###%S###S*;;;?###SSS%?*+*?*+****?%%???%%%%??%?+;:;?%?%S%%?*++?%%+:::*%%?%%%SSS%%?+;;;+?%SSSSS
SS%??%%SSSS%%%SS%*+;*%S%%%??*+;;++;;:::;*+*?%%%%%%%%?+;:;?%%%%???*++*??+:::+%%%%%%%%%%%%*;;;;*%%%%%%
S##SS%?**???????*+::+?%?****++;;;;:::+*?%*?SSSSSSS#S?*;:;*?************+;::+?%%%%%%%%%%%*;;;+*?%%???
%SS###SS%?*+++*?*+;;+*?*****+++;;;::;+*?%S##S##S%#####?++???*****?******+;;+*?***???????*;;;+*?%%%?*
%%%SSS%%SSS%??*++++?%%%%?***++;;;;;:;++*S######S######S%???????**++++++;;;;+***?**++;;;:;::;;++**??%
?????%%??%SSSS%%?%%SSSSSS%?*+++;;;;+++**S@@@@######@@##S?*+*******+;;;;;;:;;+++++++***++++;;;++++++*
**************************+++;;;;+*????*?##@@@####@@@@@@#?;;;;;++;;;;;::;::;::;::;;;;;+++++++++++***
*+++++++++;;;;;;;;;;;;;;;;;;;;;;;+*****?S%%SS######@@@@##%;;;;;;;;;;;;;;:::::::::::::;;;;;;+++******
++++++++++;;;;;;;;;;;;;;;;;;;;;;++;;;;;?@SS############SS%+;;;;;;;;;;;;;;:;:::;::::::;;;+**?????????
++++++++++;;;;;;;;;;;;;;;;;;;;++*++%#S##@S#@@@######S###S%+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*??%%???%%%%
+++++++++;;;;;;;;;;;;;;;;;;;;;;;;+S@@#@@@@S*+?##@####@@@#S?;;;;;;;;;;;;;;;;;;;;;;;;;;;;*????%??%%%%?
++++++;;;;;;;;;;;;;;;::;::;:;;;::;?SS#@#S*::::SS#@@@@@@@@#%;::;;;:;;;;;;;::::;:;+**+++*?%%%%%%%?%%%%
+++++;;;;;;;;;;;;;:::::::::::::::::::;;;::::::%S#@@@@@@@@#S+::::::::::::::::::;*?%%%?%%???%%%S%%%??%
++++;;;;;;;;;;;:::::::::::::::::::::::::::::+*##%@@@#####@#+:::::::::::::::::::+%?*++*%%??***?%S%?++
+++;;;;;;;;;;;:::::::::::::::::::::::::::::;S##@%##########;:::::::::::::::::::;*;::::;*%%%%???*****
+++;;;;;;;;;;;:::::::::::::::::::::,,,,::::;S##@S%#########;:::::::::::::::::::+;:::::::+%SSSSS%%%%%
+;;;;;;;:::::::::::::::::::::::::,,:,::,,,,?@####?#######@S:,:::::::::::::::::;+:::::::+*?SSSSSSSSSS
;;;;;;;;:;::::::::::::::::::::,,,:::::,,,,,*###@#?######@%+:::,,::::::::::::::*;::::::+?%SSSSS%?%SSS
+++;;;;;;;;;;;::::::::::::::,,,:,:::,::::,,:S##@@######@S:,,,,,::,:::::::,::,++:,,::;*?%SS%%%%%%%%%%
++++;;;;;;;;;:::::::::::::,,:::,:::,::::,,,:S###########;,:,,:::::::::::::::;*:,::;*?%SSS*:*S%%%%%%%
++;;;;;;;:::::::::::::::::::::::::::::::::,*##########@%,,,,,:::::::::::::,:?+:;+*?%SS?+;:::?S%%%%%%
++;;;;;;:::::::::::::::::::::::::::::::::::%##########@%,:,,,:,,:,::::,:,::*?+*?%%S%*;::::::;?S%%%%%
+++;;;;;;;:::::::::::::::::::::::::::::::,*###########S;::::::::::::::::+??%??SSS%*::::::;;;;;?%???S
+++;;;;;;;:::;:::::::::::::::::::::::::::::?#########S;:::::::::::::::::*%%%*+*+;:::::::;;;;;;;*??%S
+++++;;;;;;;;;:;::::::::::::::::::::::::::,;#########S:::::::::::::::::::*?;::,,::::::::;;;;;;;;?%SS
+++++;;;;;;:::::::::::::::::::::::::::::::::%@###S####*,::::::::::::::::;+*::::::::;;;;;;;?##SSS##S%
+++++;;;;;;;;:::::::::::::::::::::::::::::::%@##S;+###?::::::::::::::::;++*;:::::;?###########@@@##%
*++++++;;;;;;;;;;;;;:::::::::::::::::::::::::*%%?:,*%%+::::::::::::::;++***;:::;*S@#@@@@######@@@@#?
++++++;;+;;;;;;;::::::::::::::::::::::::::,:,:*??:,;??+::::::::::::;+******;:;?####@@@@#######@@@@@S
+++++++;;;;;;;;;:::::::::::::::::::::::::::::,+?*;,:?*+::::::::::,;+***+***+*S#@@@@S??S#######@@@@@@
++++++;;;;;;;;;;;;;:::::::::::::::::::::::,,::;??+:;***;:::::::::;++******?%+**?%S?::*S#####@@@@@#@@
++++++;;;;;;;;;;;;:::::::,,,:::::::::::::::;;+??*+;;;;+;:::::::,;+++++++*?SS%+****;;*S#####@@@@@#S@@
+++++++;;;;;;;;;;;::+++++++++++++;;;;+;++++++***+++++++++;;;;;;;+++++++++*******?**?%###S%%??%S#S%##
++++++++;;;;;;::::::;+*?%%%%%%%%???????%%?????????%%????????????%???????????????%?**?##S%%%%%%????%%
*+++++++;;;;:::::::::::;;*SS%%%%?%%%%?%S%?%%%?%%?%%%?%%%%%%%?S%SSSS%SS%%%%%%SSSS%?*?%SSS?S#%SSSS%%%S
*+++++++;;;;;;::::::::::::+%%%%%%%%%??%%%%%%%%%%%%%%%S%%%%%SS#SSSS#S%%%%%%%%%%SS%??%%SS#SSSS#S####SS
***+++++;;;;;;;;;:::::::::::?%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%SS%S##S%%%%%%%%%%SS%%S%%SS######S%S###
**+++++++++;;;;;;;;;;::::::::++++++++++*************???????%%%%%%%SSSSSSSSSSSSSSSSSSSSS######SSSS###
**++++++++++;;;;;;;;;;:::::::::::::::::::::::::::::::::::::::;;;;++*?%%%%%%%%??%%%%%%%%%%%%%%%%%SSSS
*++++++++;;;;;;;;;::::::::::::::::::::::::::::::::;;;;;;;;;;;++++*******************????????????????