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