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