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