*********+++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++++++++++******
*******++++++;++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++++******
******+++++++;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;;;;;;;;::;:;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++++*****
****+++++++;+;;;;;;;;;;;;;;;;;;;;:::?+:;::;;;;;;:::::::;::;;::;;;;;;;;:;;;;;;;;;;;;;;;;;++++++++****
***+++++++;;;;;;;;;;;;;;;;;;:;:::::?#*::::::::::::::;::;:::;;;;;;;:;:;;:;:::;;:;;;;;;;;;++;++++++***
**+++++++++;;;;;;;;;;;;;;;;;;:::::?##S;::::::::::::::::;;::;;::::::::::::::;;::;;;;;;;;;;;;++++++++*
**++++++++;;;;;;;;;;;;;;;;;::::::*####%+;;:::::::::::::;:::::::::::::::::::::::::::;;;;;;;;;;++++++*
++++++++;;;;;;;;;;;;;;:;::::::::+S#####S%*+;;::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;++++++
++++++++;;;;;;;;;;;;;::::::::::+S########S%?+:::::::::::::::::::::::::::::::::::::::::;;;;;;;;++++++
++++++++;;;;;;;;;;:;::::::::::;%S#########S%+:::::::::::::::::::::::::::::::::::::::;;;;;;;;;;++++++
+++++++;;;;;;;;;;;::::::::::::;+?S##########*::::::::::::::::::::::::::::::::::::::::;::;;;;;;++++++
++++++;;;;;;;;;;;;:::::::::::+????%S########;:::::::::::::::::::::::::::::::::::::::::::;;;;;;;;++++
++++;;;;;;;;;;;;;;:::::::::::+S%??%%%?S####*:::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;+++
++++;++;;;;;;;;;;::::::::::::;?*****?*?S##?:::::::::::::::::::::::::::::::::::::::::::::;;;;;;;+;+++
++++;+;;;;;;;;;;:::::::::::::;+******??%%+::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;++
++++;;;;;;;;;;;;::::::::::::::+?????????*;,::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;+
+++++++;;;;;;;;;:::::::::::::::;;+????????*+:::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;+
+++++;;;;;;;;;;;:::::::::::::::::::*??%%%???**+;:::::::::::::::::::::::::::::::::::::::::::;;;;;;;;+
++++;;;;;;;;;;:::::::::::::::::::::*?%%????????*+;:,::::::::::::::::::::::::::::::::::::::;;;;;;;+++
++++;;;;;;;;;:::::::::::::::::::::*%S%%%%%%%%%????*;::::::::::::::::::::::::::::::::::::::;;;;;;;;;+
+++++;;;;;;::::::::;;;::::::::::::;%SSSSSSSSSS%%????*;:::::::,::::::::,:,,,:::::::::::::::::;;;;;;;;
++++;;;;;;;;:::::;;;++;;;:::::::::,+###SSSSSSSS%%%%???+:,:,:,,,,,,,,,,,,,,,,,:,,,,,::::::::::;;;;;;;
++++;;;;;;;:::::::;;;;;;;;::,:::::,+###S#####SSSSSSS%??*;,,::::::,,,,,::,,,,,:,,,,,,,:::::::;;;;;;;;
+++;+;;;;;;;:::::::::;;;;++++;:,,,,*#################SS%?;,,:::,,,:,,,::,,,,,::,:,::::::::::;;;;;;;;
++;;;;;;;;;;;:::::::::::;*??SS??*;;%#################SSS%?;,,,::,,,,,,,:,,,:::,,,,::::::::::;;;;;;;;
+++;+;;;;;;::::::::::::::S####S#@###SSS############SS%%%%??;,,,,:,,,,,:::,,:::,,,,,::::::::::;;;;;;;
+++;;;;;;;;;:::::::::::,:?S#@S#@#@##S######S######SSS%%%%%?*:,,,,,,::,,:,:::,,,,,,,::,::::::;;;;;;;;
+++;;;;;;;:::::::::::::::,:;?S#####S#######SS##S##SS%%%%%???;,,,,,:,,,,,,,,,,,,,,,,:::::::::;;;;;;;;
+++;;;;;;;:::::::;;++++++++*??%SSS#S#########SSS####S%%%%???*:,,,,,,,,,:,,,,,,,,,,:::::::::;;;;;;;;;
++;;;;;;;;:::::;+*****??***?%?SS########*;%##########S%%%????:,,,,,,,,,,,,,,,,:::,:::::::::::;;;;;;;
+;;;;;;;;;;::::;;++***+;::::??%#######%;,,;S##########SS%%???:,,,,,,,,,,,:::,,::::::::::::::::;;;;;;
;;;;;;;;;;;;:::::::::::::::::?%SSSS%*;,,,,,+S###########SS%%?;,,,,,,,,,,,,,,,,,::,,:::::::::::;;;;;;
;++;;;;;;;;;;::::::::::::::::;**;:::,,::::,:?###S#########S%%;,,,,,,,,,,,,,,,,,,,,,,::::::::::;;;;;;
+++++;;;;;;;:::::::::::::::::::::::::,,:,,,,;%##SS########S%%;,,,,,,,,,,,,,,,,,,:::,::::::::;;;;;;;;
+++;+;;;;;;;::::::::::::::::::::::::,,,,,,,,:*S#SS##########S*;:,,,,,,,,,,,,,:,,,,,:::::::;;;;;;;;;;
+++;;;;;;;;;;::::::::::::,,,,,,,,,,::,,,,,,,,;%SSSS##########@#?:,,,,,,,,,,:,,,,:::::::::::;;;;;;;;;
+++;;;;;;;;;:::::::::::::::::::::,,,,,:,:,,,,:?SSSS##########%+:,,:,,::,,,::,,:,:::::::::::;;;;;;;;;
++++;;;;;;;;;::::::::::::::::::::::::::,,::::,+SSS########S;;,,,,,::::::,,::::,:::::::::::;;;;;;;;;;
++++;;;;;;;;:;::::::::::::::::::::,,:::,,,:,,,;%S########S?,,,:::,,,,,:,,,,,:,,,,,::::::;;;;;;;;;;;*
+++++;;;;;;;;;:::::::::::::::::,::,::::::,,:,,:%########SS;,:,,,,,,,,,,,,,,,,:::::::::::::;;;;;+++?%
+++;;;;;;;;:;::::::::::::,,::::::::::::::::::,;S########S%;,,,,,,,,::,,,,,::,,:::,::::::::;;;;+**?%?
++++;;;;;;;;;;:::::::::::,:::::,,,:,::,:::::::?#########S?:,,,,,,:,::::::::::,::::::::::;;;;;+??%%%?
++++++;;;;;;;;;;;;::::::::::,:,:,:::::::::::,:%#########S%;,,,::,:::::::::::::::::::::;;;;;;;+%%%%%%
++++++++;;;;;;;;::::::::::::::::::::::::::::,+##########S?;,,,,,::,,,::,:::::::::::::;:;;;;;;*?+++**
+++++++;;;;;;;;::::::::::::::::::::::::::::::;S##########+:,,:,,::,,,::,,,,,,,::::::::::;;;;+++;++++
+++++++;;;;;;;;;::::::::::::::::::::::::::::::?S########*,,,:,::,:,,:::::::::,:::::::::;:;;;;;;;++++
++++++;;;;;;;;;;::::::::::::::::::::,,::::::::,;S######%;,,::::,,,::::::::::::::::::::;;;;;;;;;;++++
+++++++;;;;;;;;:::::::::::,,::::,,::,::::::::,:,;S####S??;,,,::::,::,,,,,,:::::::::::::;;;;;;;;+++++
+++++++;;;;;;;;:::::::::::::,::,::::::::::::::::,*#####S??;,::::::::::::::::::::::::::;;;;;;++++++++
+++++++++;;;;;;;;:::::::::::::::::::::::::::::::::%#####S%+::::::::::::::::::::::::;;;;;;;;;;+++++++
***+++++++;;;;;;;;;;;::::::::::::::::::::::::::::,;S#####?;,:::::::::::::::::::::::::;;;;;;;;;++++++
****++++++++;;;;;;;;;;:::::::::::::::::::,:,,:::::,;+%%?*+;:::::::::::::::::::::::;;:;;;;;;;;++++++*
****+++++++++;;;;;;;;;;;;;:::::::::::::::::::::::::,,:****+;:::::::::::::,:::::::::;;;;;;;;;++++++++
****++++++;;;;;;;;;;;;:;:::::::::::::::::::::::::::::,;***+;:::::::::::::::::::::;;;;;;;;;;;;++++++*
****++++++;;;;;;;;;;;;;;;::::::::::::::::::::::::::::::***+;;:::::::::::::::::::;;;;;;;;;++++++++***