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