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