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