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