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