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