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