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