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