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