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