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