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