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