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