::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::*%#@@@@@@@#S%+:::::::::::::::::::::::::::::
:::::::::::::::::::::::::,*S@@@@@@@@@@@@@@@@S+,:::::::::::::::::::::::::
::::::::::::::::::::::::+#@@@@@@@@@@@@@@@@@@@@#;::::::::::::::::::::::::
:::::::::::::::::::::::?@@@@@@@@@@@@@@@@@@@@@@@@*:::::::::::::::::::::::
::::::::::::::::::::::*@@@@@@@@@@@@@@@@@@@@@@@@@@+::::::::::::::::::::::
:::::::::::::::::::::,@@@@@@@@@@@@@@@@@@@@@@@@@@@#,:::::::::::::::::::::
:::::::::::::::::::::;@@@@@@@@@@@@@@@@@@@@@@@@@@@@::::::::::::::::::::::
::::::::::::::::::::::@@@@@@@@@@@@@@@@@@@@@@@@@@@@,:::::::::::::::::::::
::::::::::::::::::::::S@@@@@@@@@@@@@@@@@@@@@@@@@@?::::::::::::::::::::::
:::::::::::::::::::::::#@@@@@@@@@@@@@@@@@@@@@@@@S,::::::::::::::::::::::
::::::::::::::::::::::::S@@@@@@@@@@@@@@@@@@@@@@%,:::::::::::::::::::::::
::::::::::::::::::::::::,*#@@@@@@@@@@@@@@@@@@S+:::::::::::::::::::::::::
::::::::::::::::::::::::::,+%#@@@@@@@@@@@@#?;,::::::::::::::::::::::::::
:::::::::::::::::::::::::::::,:+*?%%%%?*;:,:::::::::::::::::::::::::::::
:::,;;;;;;;;;;;;;;;;:,,::::::::::::::::::::::::::,,:;;;;;;;;;;;;;;;;,:::
:::+@@@@@@@@@@@@@@@@@@#S%*;,::::::::::::::::,;*%S#@@@@@@@@@@@@@@@@@@+:::
:::;@@@@@@@@@@@@@@@@@@@@@@@@%+,::::::::::,+%@@@@@@@@@@@@@@@@@@@@@@@@;:::
:::+@@@@@@@@@@@@@@@@@@@@@@@@@@@%::::::::?@@@@@@@@@@@@@@@@@@@@@@@@@@@+:::
:::;%%%%%%%%%%%%%%SSS#@@@@@@@@@@@%:::,?@@@@@@@@@@@#SSS%%%%%%%%%%%%%%;:::
:::::::::::::::::::::,,:+*S#@@@@@@#+;#@@@@@@#S?+:,,:::::::::::::::::::::
:::::::::::::::::::::::::::,;?#@@@@@@@@@@#?;,:::::::::::::::::::::::::::
::::::::::::::::::::::::::::::,+S@@@@@@S+,::::::::::::::::::::::::::::::
:::,+++++++++++++++;;:,,:::::::::+#@@#+:::::::::,,:;;+++++++++++++++,:::
:::+@@@@@@@@@@@@@@@@@@@#S?+:::::::,%%,:::::::+?%#@@@@@@@@@@@@@@@@@@@+:::
:::;@@@@@@@@@@@@@@@@@@@@@@@@S*::::::::::::*S@@@@@@@@@@@@@@@@@@@@@@@@;:::
:::+@@@@@@@@@@@@@@@@@@@@@@@@@@@%;::::::;%@@@@@@@@@@@@@@@@@@@@@@@@@@@+:::
::::%%%%%%%%%%%%%%%%S##@@@@@@@@@@%::::%@@@@@@@@@@##S%%%%%%%%%%%%%%%%::::
::::::::::::::::::::::,:;*%#@@@@@@@++@@@@@@@#%*;:,::::::::::::::::::::::
:::::::::::::::::::::::::::,:*#@@@@@@@@@@#*;,:::::::::::::::::::::::::::
::::::::::::::::::::::::::::::,;S@@@@@@S;,::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::;#@@#;:::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::,??,::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::