*********++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++++*******
*******++++++;+;;+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+++++++++*******
*****++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::;::;;;;;;;;;;;;;;;;;;;;;;;;;++++++++*****
***++++++++;;;;;;;;;;;;;;;;;;;;;;:;:::::::::;::;;:;;;::;:::;:::;;;::;;;:;;;;;;;;;;;;;;;;;+++++++****
**+++++++++;;;;;;;;;;;;;;;;;:::::::::::::::;::::::;::::::::::::::::::::::::;::::;;;;;;;;;++++++++***
**+++++++;;;;;;;;;;;;;;;;;;;;:::::::::::::+*:::::::::::;:::::::::::::::::::::::::;;;;;;;;++++++++++*
**++++++;;;;;;;;;;;;;;;;;;:::::::::::::::+#*:::::::::::::::::::::::::::::::::::::::;;;;;;;;;;+;++++*
++++++++;;;;;;;;;;;;;;:;::::::::::::::::+S#S:::::::::::::::::::::::::::::::::::::::;;;;;;;;;;+++++++
+++++;+;;;;;;;;;;;;;:::::::::::::::::::+S###*:::::::::::::::::::::::::::::::::::::::;;;;;;;;;+++++++
+++++;;;;;;;;;;;::;;::::::::::::::::::+S#####?+;:::::::::::::::::::::::::::::::::::::;;;;;;;;+++;+++
+++++;;;;;;;;;;::::::::::::::::::::::+S#######S?+;:::::::::::::::::::::::::::::::::::::;;;;;;;;;;+++
+++++;+;;;;;;;;:::::::::::::::::::::+SS########S%*:::::::::::::::::::::::::::::::::::::::;;;;;;;;+++
+++++;;;;;;;;;;;::::::::::::::::::::+?%##########%::::::::::::::::::::::::::::::::::::::::;;;;;;;;++
+++;;;;;;;;;;;;::::::::::::::::::::+***%S#######@%:::::::::::::::::::::::::::::::::::::::;;;;;;;;;++
++++;;;;;;;;;;::::::::::::::::::::;%S%?%SS%S#####;:::::::::::::::::::::::::::::::::::::::::::;;;;;++
++++;;;;;;;;:::::::::::::::::::::,;%?**?????S###*,::::::::::::::::::::::::,::::,:::::::::::::;;;;;++
++;;;;;;;;;;:::::::::::::::::::::,:+*******?%S%*:::::::::::::::::::::,:,,,,::::::::::::::::;;;;;;;;+
+;;;;;;;;;;::::::::::::::::::::,,,:+*???????%*:,::::::,,::::,,,,:::,,,,,,,,,,,,::::::::::::::;;;;;;+
+++;;;;;;;::::::::::::::::,,,,,,,,,:;+??????**+;:,,:::,::,,,,,,,,,,,,,,,,,:,,,,,::::::::::;;;;;;;;;;
+;+;;;;;;;::::::::::::::::::::,,,,:,,,:;*%?%%%??*+:::::,:,,,,,,,,,,,,,,,::::::,,,,::::::::;;;;;;;;;;
+;;;;;;;;;;;::::::::::::::::::::::::::,,*%S%??????*+:,,,:,,,,,,,,,,,,,,,,,,::,,,,,:,::::::::;;;;;;;;
;;;;;;;;;:::::::::,:::::,,,,,,,::::::,:?%%%%%%%?????*+:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::;;;;;
+;;;;;;;;::::::::,,,,,,,,,,,,,,,,,::,,:*SSSSSSSSS%????*;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::;;;;;;;;
+;;;;;;;;;;::::::,,,:,,::;;:::,,,,,,,:,:%SSSSSSSS%%%%???*:,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::;;;;;;;
;;;;;;;;;;;::::::::::::;;++;;;:,,,,,,,,:%SSSSSSSSSSS%%%??*;:,,,,,,,,,:,,,,,,,,,,,,,,,:::::::::;;;;;;
;;;;;;;;;;:::::::::::::;;;;;;;;;::,,,,,+S######SSSSSSS%%%??*:,,,,,,,,::::::::::,,,,,::::::::::;;;;;;
;;;;;;;;;::::::::::::::,::;;;+++**+;;:+SSS#######SSSSSSS%%??*:,,:,,:::::::::::::,,,,:,::::::::;;;;;;
;;;;;;;;;:::::::::,,,:,,,,,,::+%?S#%%S%%%SS#############SS%??*:,,,:::::::,,,,:,,,,,,:,::::::::;;;;;;
;;;;;;;:::::::::,,,,,,,::,,,,,,?@###SS%SSSS###########SSS%%%??*:,,,,,,,,,,,,,,,,,,,,,,:::::::;;;;;;;
;;;;;;;;;::::::::,::,,,,,,,,,,,:+?%SSS#########S####SSSSSSS%???;,,,,,,,,,,,,,,,,,,,,::::::::::;;;;;;
;;;;;;;;;;;::::::::::,:,,:::,,:,,,,:?###########SSSSSSS%SSS%%??*,,,,:,,,,,,,,,,,,,,,,:::::::::;;;;;;
;;;;;;;;;:::::::::,:,,:::,:::::::,,,+######S*?#########S%%%%%%??:,,,,,,,,,,,,,,,,,,::::::::::;;;;;;;
;;;;;;;;::::::::::::::::,::,,,,,:,,,,*####?;,:?##########SS%%%%?;,,,,,,,,,,,,,,,,,,,:::::::::;;;;;;;
;;;;;;;;::::::::::::::::,:::,,,,,,,,,;SSS?,,:,:%############S%%%+,,,,,,,,,,,,,,,,:,,:::::::::;;;;;;;
;;;;;;;;::::::::::::::::,,::::,,,,,,,:*SS*,,,,,+S############S%%*:,,,,,,,,,,,,,,,,,,::::::::;;;;;;;;
;;;;;;;;::;:::::::::::,,,,,:,,,,,,,,,,:++:,,,,,;%##SSS########S%*,,,,,,,,,,,,,,,,,,,:::::::::;;;;;;;
++;;;;;;;;;;:::::::::,,,,,,:,,,,,,,::,,,,,,,,,,:?SSSSS#########S+,,,,,,,,,,,,,,,,,,,:::::::::;;;;;;;
++;;;;;;;;;;:::::::,,,,:,,,,,,:,,,:,:,,,,,:,,,,:*SSSS##########S:,,,,,,,,,,,,,,,,::::::::::::;;;;;;;
+;;;;;;;;:::::::::,,,,,,,,,,:,,,,,,:,:::,,::,,,:+SSSS#########S?,,,,,,,,,,,,,,,,,,,,:::::::;;;;;;;;;
+;;;;;;;::::::::,::,,,,,,,,,,,:,,,,,,,,,,,,:,,,,+SSSS#########S?:,,,,,,,,,,,,,,,,,::::::::;;;;;;;;;;
;;;;;;;;;::::::::,:,:::,,,,,,,,,,,,,::,,,,,,,:,,+%SS#########*++:,,,,,,,,,,,,,,,,::::::::::;;;;;;;;;
+;+;;;;;;:::::::::::,:,,,,,,,,,,,,,,:,,,,,,,,:,,*S#########S*,,,,,,,,,,,,,,,,,,,:,,::::::::;;;;;;;;;
+++++;;;;;:::::::::,,:,,,,,,,,,,,,,,,,::,,,,,,,;SS#########S;,,,,,,,,,,,,,,,:,,:::::::::::;;;;;;;;;+
+++++;;;;;:;;;::::::::::,,,,,,,,,,,,,,::,,:,,,:%##########S?:,,,,,,,,,,,,:,,,,,::::::::;;;;;;;;+++++
+++++;;;;;;;:::::::::::,,,,,,,,,,,,,,,,,,,,,,,+S#########S%*,,,,,,,,:,,,::,,,,,,:::::::::;;;;;;+++++
++++++;;;;;;:::::::::,:,,,:,,,,,,,,,,,,,,,,,,:?##########S?*,,,,,,,,:,,,:,,::,,::::::::::;;;;;;;;;++
++++;;;;;;;:::::::::::,,,::,,:::::::::,,,,,,,,?###########?;,,,,,::::,,:,,::,,::::::::::;;;;;;;;;;++
++++;;;;;;;;::::::::::,,,,:,,,:::::::::,,,,,,,;?S########%:,,,,,,:,:,,,,,,,,,,::::::::::;;;;;;;;;;++
++++++;;;;;;::::::::::,::,:,,,,,,,::::::::::::,,*#######%:,,,,,,,,,,,,,,,,,,,:::::::::::;;;;;;;;;+++
+++++;+;;;;;;;::::::::::::,,,,,:,,:::::::::::::,,?#####S?*;,,,,,:::::,,,,,::::::::::::;;;;;;;;;;++++
+++++++;;;;;;;;;::::::::::::::::::,::,,,::,,,:::,:S#####%?*,,,:,:::::::::,::::::::::::;;;;;;;;++++++
*+++++++;;;;;;::::::::::::::::::::::::,,,:,:,::,,,+######%?:,,::,:,::::::::::::::::::;;;;;;+++++++++
**++++++++;;;;;::::::::::::::::,,,,,,::::::::::,:::?#####S?;::,,,,,:,:::::::;;;;:::;;;;;;;;;+++++***
*++++++++;;;;;;;;;::::::::::::::::::::::::::::::::::;*%%?*+;::::::::::::::::::::::;;;;;;;++++++*****
*++*+++++;;;;;;;;;;;::::::::::,:::::,,,:::::::::::::,:+?***+;:::::::::::::::::::::;::;;;;++++++++++*