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