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