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