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