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