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