::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......:::::::::::::::::::::::..::::::::.......::::...........::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................:::::::::::::::::::::...........:::::..........:::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................:::::---------::::::::.......:::::::......:......:::::::::::....:::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...... ...........:::::---::::::-----::::::::::::::::........:::...::::::::::::......::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::... ......:::::::::::::::::::::::::::::....:::........:::::::::::::::..........:::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.... ........:::::::::::::::::::::::::::::....:::::..........:::::::::...........::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.... ..............::::::::::-----------:::::::::::::........:::::::::::.........:::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...... ................::::::----==========--:::::::::....::....:::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........ ...................::::------=====++++==--:::::::.....:::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......... .....................:::-----------========--::::::::...::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................::::----------------------::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............:::::.............:::---------------------------:::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............::::::..........:::::-----------:::::------------::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............::::..........::---------::-------:--------------::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............:::.......::--======----:::::--------------------::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................::--=+++++====----:::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................:::::--==++****++==---::::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....:::.......::::::-----==+++++==--::::----------------------:::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....:::::::.......::::::::---=====--:::::-----===--------------:::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::--::::......::::::::--------::::::----=======------=-----:::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::::.......:::::::::::::::::...:::----==++**++===-==-----:::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......:::::.....:::::::::::::::::.....:::-----===++*+++=====----::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......::::::...:::::::::::::::::.....:::---------===++======---:::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......:::::.....:::::::::::::::::...::::-----------------===--::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......:::::::....:::::::::::::::::::::::-----------:::----==--:::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......:::::::::...:::::::::::::::::::::--------::::-:---------::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......:::::::::...::....::::::::::::::---------::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::::::::::::::::::::-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---::::::::::::---===========----------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=--:::::::::::::---=====++++=--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=+==--:::::::::::::---====+++==-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....::-=++==--:::::::::::-----=======-----------:::..::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...::-=++==-----::::::::--------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...::-=========----::::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...::::---=========---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::::::--===============-----===---===+==-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....:::.::::----===============----:::-=++==:::-==--:...:::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::........:::...::::::..::::::::::::::::::::::::::--------:::......::::::---===============--:::::-=++=-:..:-===-:...::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::.....:::::....:::::::::::::::::::::::::::::--=++++===----:::::::::::::--=========-=====-::::::-=++=-:::::-==-::...:::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::.::::::::::::::::::::::::::--==+***++=----=====--:::::::---==============--:::::::====--::--=++=::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::..:::....::::--------:::::---------=+++==------::---======------=====---=========-::....::----::-==+++=::....::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::..........:::----=====-:-------:--====-:::::-----:::--========+==============++====-:......:::::-=++==-:..............:::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::....... ..::::::-==++=--------:::-----:..:::---=--:::::---==++++++===++++++++++++*++-::......::::-==-::....................................::::::::::::::::::::
:::::::::::..:::::.... ..::--:::-------==--:::::::::::::::::---=---::::-----======++++++++++++++****+=::........:::.............................................::::::::::::::
:::::::::::::::...... ..:::-::::---------::::::::::::::::::::---==------------------=========+++++++++=-::....................................................................
::::::::::::::.... ..::::::::::::::::....::::...::::::::::::--==--------------------------======+++==-:::::::..............................................................
:::::::::::::.... .::-:::...............::::..::::::::::::::--===-----------------------------======----::::::::::........................................................
:::::::.::::.... .. ..:--::...............::...:::::::::::::::::--===-----------------------------======----::::----::::::...................................................
:::::::........ ... ..::--:... ....::.....::::::::::::::::::-====----------------------------===---------::::::::::::::.................................................
.:::::::...... ... ..::--:.. ....::......::::::::::::::-:::--====--------------------------====----------::::....:::::::...............................................
...:::::..... ... ..::--:.. ...........:::::::::::::::-:::--====-----------::---:::-------===-------------::::..:::--:::..............................................
...:::::.... .... ..:---:.. ...:........::::::::::::::::::::--===---------::::::::::::----------------------:::::::----:::::...........................................
:::.:::.... ...... ..:---:.. ...::.........:::::::::::::::::----=====--------:::::::::::---==-------------------::::::::----:::..........................................
....:::.... ...... ..:---:.. ..::........:::::::::::::::::::-----=====----------:::::::----=----------------------::::::::--::::::........................................
....:::... ...... ..::--:... ..::.......::::::::::::::::::-------======---------::::::--===------:::::::::::--------:::::::::::::::.......................................
..::::.... ..... ..::-::.. .............:::::::::::::::::---------=======------::::::--==---::::::::::::::::---------:::::::::::::........................................
.:::..... ........ ..::--:. ............:::::::::::::::::-----------========----:::::---=--::::::::::::::::::::--------:::::--:::::::......................................
..::..... ......... ..:--:. .............::::::::::::::::::::---------===++====----:::-----::::::::::::::::::::::::-----::::::::::::::......................................
........ .............. .:--:. ..............::::::::::::::::::::----------============------:::::::::::::::::::::::::::::--::::::::::::::......................................
........ ..........::::...:--:...............:::::::::::::::::----------------=====++===----::...:::::::::::::::::::::::::::::::::::::--::.......................................
........ ..........::::::::-::..............:::::::::::::::::-------------------========---:::..........:::::::::::::::::::::::::::::---:::......................................
:........ .............:::::::::..........::::::::::::::::::----------------=------=======--:::...........:::::::::::::::::::::::::::::--::::.....................................
::..... .........:.... .....:::.........::::::::::::::::::----------------====-----=======--::...............:::::::::::::::::::::::::::::::.....................................
:..... ........:::... ..::.........:::::::--------------------------------------==++=--::................:::::::::::::::::::::::::::--::.....................................
:..... .......:::::...... ...........:::::::-----------------------------------------=++==-:::................::::::::::::::::::::::::::--::::...................................
...... ......::::::...... .........:::::::::-----------------------=----------------=+++==-::.................::::::::::::::::::::::::------::..................................
..... ......::::::::................::::::::::-------=====---------------===---------=+***+=--::..................:::::::::::::::::::::--------::::...............................
.............::::----:::::::.........::::::::---==+==================------------------=+*##*+=-:::...................:::::::::::::::::::----------::...............................
............::::------:::--:::......::::::::--=++**+++=====================------------=*#%%#*+=-:::....................:::::::::::::::::----------::...............................
...........::::---===-------::.....:::::::---==+****+++++++++==============-----------=+*#%%%#*+=-:::::......:................::::::::::-----------:................................
...........:::----====-------:....::::::-----==+++++++++++++++==============---------==+#%%%%%#*+-::::::::::::::................::::::::-------==--:................................
..........::::---========---::...:::::------======++++++++++++==================-----=+*#%%%%%##+=--:::::::::::::................::::::--------==--:................................
.........::::---==========--::....::::----========++++++++++++++================---==+*#%%%%%%%