.........................................................,:+?%%?*??;......................
        .......................................................;*?%%%%%%%%S#%;....................
        ........................,,,,,,,,,,,,,,:::;;::::,,,,,,;%SS%%%%?????**%S;,,,,,,.............
        ..........,,,,,,,,,:::::::::::::::::::+++************##S####SSSS%***+?S;;;;;;;;;:::::,....
        .........,::,::,,:::::::::::::::::::::;;;+++;;;;;;;;+++**???%SS##SS?++S%;;;;;;;;;;;;++;,..
        ........::,,,:::::::::::::::::::::::::;;;;*+++*++;;+++;;;:::::;;;++*;;++;;;;;;;;++++++*;..
        ........;:::::::::::::::;;;;;;;;;;;;;;+;;;+++;+*+;:;**+;*;++;;;;;;;;;;;**+++++++;;+++*??,.
        .......,;:::::;*SSSS#############@@@@@S;;;*+*+++*++;;;;;+;++;+*;*+;;;;+#@@@@@@@#+:;++*??:.
        .......:;::::::%@@@@@@@@@@@@@@@@@@@@@@#+;;+++++;?:*+;*+++*;;*;++++;;;;?@@@@@@@@@*:;++*?%;.
        .......::,,,,::*%%%%%%%%%%%%%%%%%%@@@@@*;+*++++++;+;;++;;;*;*;;+*;;;;;#@@@@@@@@@?;;++*?S+.
        .................................:#@##@%;+*+**+*****+++++++;+;;+;:;;;?@@@@@@@@@@?;;++*?%*.
        ,:::::..::::::::::::::,;,:::::::.:#####S;;*+++;;;;;+;***?**++????*;;;#@@@@@@@@@@?;;+**?%?.
        ,:::::,,::,::::::,,::,,:,::,::,,.:######+;*;;+*;;;;*++*+*S%?+***?+;;?@@@@@@@@@@@?;;+***?%,
        .................................:######*:++***+;;+*?**?%%%S??***;;;#%**#@@@@@@@%;;++**?%,
        ......::,,,,,::%%%%??????????????%#####@?:+*****+;;+**?*?%*++%%*+::?S++,:#@@@@@@%;;++**?%:
        ......:;,,:::;;@@@@##################S%*:::**++++;;;++*?*?*??%%?;:;?+;*+,;@@@@@@%;;++**?%;
        ......;:,,,:::;@@@@#################%S%?**;:::+++++;++*%%***+?%*:;+?+;;+,;@@@@@@%;;++**?%;
        ......;:,,,,::+@@@@############SS##SS%?**+;;;:;;++*+*??%%%++++*%+:;***+*;;#@@@@@@%;;++**?%+
        ......;:,,,,::+@@@########S####S###SSS%%%?***+;:;;++****+;+*?%?;;+*?%%SS@@@@@@@@%;;++**?%+
        ......;,,,,,::+@@@#SSS###SS##S######SSSSS%?**+;:::::::::;;;;++;;;++S@@@@@@@@@@@@S;;++**?%*
        ......;,,,,,::+@@@#SSS##############SSSSSS%??***+;::::::::::;;;;;,*@@@@@@@@@@@@@S;:+++**?*
        .....,;,,,,,:;+@@@#SS##############%S##SSSSSSS#%;;;;:;;::::;;;;;,*#@@@@@@@@@@@@@S;:+++**?*
        .....,;,,,,,::+@@@#S##############?+%####SS#####S%????%%?***+;;*%@@@@@@@@@@@@@@@S;:+++**?*
        .....,;,.,,,::*@@@#SS############S*+*?%S%S####@@@@#S%S#S##?*++#@@@@@@@@@@@@@@@@@S;:+++**??+
        .....,;,.,,,:;*@@@#S##############%*????%S%%%S##@@@@@#SSS??*??#@@@@@@@@@@@@@@@@@S::+++**??+
        .....,;,.,,,:;*@@@@################SSS%%???????%%%%%SS%%%%%?%?S@@@@@@@@@@@@@@@@@S::+++**??+
        .....,;,.,,,,:;*@@@@################SS%?????%%?????????%%%%%%%??@@@@@@@@@@@@@@@@@S::+++**??+
        .....,;..,,,:;*@@@@##############S%%????%%?%%??%%?%?????%%%%%%?S@@@@@@@@@@@@@@@@S::+++**??+
        .....,;,.,,,:;?@@@@###########SS%%%?????????????%?%%?????%%%%%%%?S@@@@@@@@@@@@@@S::+++**??+
        .....,;,.,,,:;?@@@@@#@@@@@@@@#SSS%%?????????%??????????????%%%%%%%@@@@@@@@@@@@@@S::+++**??+
        .....,;,.,,,,:;*?************?SSSS%%%%%%%%%%%?%%????????%%%%%%%%%%%??????%%%%%%%*;;+++**?*+
        .....,;,.,,,,,,,,,,,,,,,,,,,,,+?%SSSSSS%%%%%%%%%%%%%%%%%%%%%%%%%%%?;;;;;;;;;;;;;;+++++**?*
        .....,;,.,,,,,,,,,,,,,,:::::::,::;*SSSSSSS%%%%%%%%%??%%%%%%%%%%%%??+;;;;;;;;;;++++++++**?*
        .....,:,,,,,,,,,,,,,:::::::::::::::*S%%SS%%%SSS%SSSS%%%%SS%%%%%%%%?*++;;;;;;++++++++++++*+
        ......:,.,,:::;;;;;;;;;:::;;:::;++++SSSS%%%%%%%?%S%??**?SSSSSSSSS%?**+++******????*******:
        ......,,.,,:;*????%?*+;;:::::::+??**%SSS%%%%%%%??**??????%#######S???++++*%S##SS#S%?*****:
        ......,,,,:;*??++;*%%?+;;;;;+;;:;;;;*#SSSS%?*+++++++++++++*S######S??*++*%#@S?**%#S%?***+,
        ......,,,,;;+??**+*%%?+;;+;;*;;;::::;?%%%?+;:;;;;;;;;;;;;;;;%####@#%?+++*S##S%??%#S%?*+++,
        .......,,,::;*??????*+;:::::::::::::::;;;::::;;;;;;;;;;;;;;;%@#####S*++++*%S#SSSSS%?*+++;.
        ........,,:::;;;++;;;:::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;%@##SS*+++++++*??%%%%%?***+;,.+
        .........,,,,,,,:;+++++++++++*******************************%@##S#*;;;;;;+++++*+++;;;:,...+
        .................,:::::::::::::::::;;;;;;;;;;;;;;;;;;;;;::::;#@SS#%.......................
        .............................................................S@##S%;......................
        .............................................................?@#S%??,.....................
        .............................................................?@#%?*?;.....................
        .............................................................*@S???*;