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