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