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