designed by
.=+===++====++++***#%########*###***####**+**++++++++++++++++++++++++===+=+=++==+++=+++=++=++====.
.=+===++====++++**##%%##########****####*****++*+++++++++*+++++++++++=+++++++++++++++++++++++++==.
.=+======--===+++**####**#**#********##***++++++++++++++++++++++++++++++==+++-.:=++++=+++++++=++=.
.=+=-=-=-----==+++*####*******************++++++++++++++++++++++====-:-=++=:... ....-+++++++++++=.
.=+=-----------=++***##***********+******++++++++++++++++++:.:=-:.:=+=:..... ...=++++++++==.
.=+=------------==************+*+++**++*++++++++++++++++++--++=:-=:.... ...:=++=+++-.
.=+==-----:::---=+++****++++++++++*+*+*++++++++++++++++++=+=--=:.. ...:==+=.
.=+==------::---==++++**++++++++++++++++++++++++++++++++++++-.. ...:-.
.++++=-----:::---==++++++++++++++++++++++++++++++++++++++=:.. . ..
.+*++==----------===++++++++++++++++++++++++++++++++++++:.. . . . .
.****++===--------==++++++++++++++++++++++++++++++++++=.. . .
.***+*+++====----===+++++++++++++++++++++++++++++++++-.. . .
.***+**++++=----=====++++++++++++++++=++++++++++++++=..
.*#**+****+==----+==++++++++++++++++++++++++++++++++. .. .
.*#********===-===+++++++++++++++++++++++++++++++++=. .
.*#***+****++======++++++++++++++++++++++++++++++++=. ...
.*#********+++++===++++++++++++++++++++++++++++++++-. ......:....... . . .....::====-.
.*#********+++++++=+***++++++++++++++++++++++++++++.. ..-:....::---=-::.. .-===++=:....
.*#********+++++++++****+++++++++++++++++++++++++++. .-.. ......:::. ..:+++=-:......
.***********+++++++++***++++++++++++++++++++++++++=. .. ...:-=++==:... ..=++=+=++++++-.
.+*#**+***#*+++++++++****++++++++++++++++++++++++++. ....:-=++++++++::-.. ..=++=--=++=+++-..
.+****+*+***+++++++++****++++++++++++++++++++++++++.. ..=++++=++-=+==+-::. ...+=.-=::==+=+=-..
.+******++**++++++*+++***++++++++++++++++++++++++++:. ...:=++-.-==-....:.. .=:.::....---.:-.
.+*****+*****+++++++++***++++++++++++++++++++++++++:. ...::-=-=:=:.... .:. .:-====-.
.++****++++**+*+++++++*##*+++++++=+=++=+++++++++===:. ...... ... ......
.+++*+**+++***++++++++****+++++++======++++++++++++:. ...
.=++*+***+++**+++++++*+*#**+++++========+=======-===. .=...
.++++*****++***+*++++++****++++++==============-..===.. . .:=:. . .
.+*****###*++***++++*++****++++++====--=====-==:...-==.. . ..:=:..
.***####****+****+++++++****+++++++===--==------.. ..==:. . . ........-==---.
.+++**#*##********+*++++*****++++++===--==------:....:-=.. ..:=--.--------.. . .
.++*+**######****#*+++++*****++++++====-==---::-:.....:--. . ..::..------:::.. ..
.+++**+*##*##****#**+++***##**++++++======---::::::....:-.. . ... ........... ....
.+****+*#####*++**********#****++++++======---:::::::::... . .. .:..
.+*******###****++***************++++==++==---:::::::::. . . .. ....
.+*******###***+******++***********+++++++==---::::::::.. . . .................. ...:..
.+*******###***+******++++*###*#********+++=---::::.::::.. ...:::::.:..:......... ......
.+*******###***+*+**+**++++**#*#********+++==---::::.:::... ..... ............. ......
.+*******###*****+******++++**#**#++++++**++==--:-::::::::. . ........ .................
.+*******###**********+***++++**#*++++++++++===---:::::::..... ..................:::....
.+*******#%#***************++++*##*++++++=+++==----::::::..:.. ............::..:::: .
.+*******#%#*************##*++++*#*+*+++++=++++==-::::::....::... . ....:::::..
.+*******%%%*************##***+++*#****+++===+++==-:-:::. .:-::.. . ...:.:..:..
.+******#%%%#***********####***++**#****++++==*++=-----.. .....-=--... .::::::.::..
.+******#%%%%***********####*++*+++**#**++++===**+----:. ...===-:.... .. .......:::::::::::..
.+******%%%%%#*********#####**++++++++**+++++===*+---:.. ..-=----::::::::::------::::::::..
.+*****#%%%%%#*********####***++++++++****++=====++-:.. . ..:--------------===--:::::::::.
.=+++*##%##%###*******##*#****++++===+*****+====-=+-.. ..:-------------====---:::::::.
.=+++###########**+**##********+====++++*++++++=---. ..-------------+==--------::.
.+**################*******++++++++++++++++++++++=.. . ..------------+++---------:.
.+++*****#######******+++++=======-====+++++++++=-.. ..:----------+++---------:.
.-=--=*********+====-++====----:::::-===++++++=---.. . ...---------+++=--------:.
.:::::-=======----::::--:::::::..::.::-------:::::.. . ..:::::::::-----:::::::::.
... . . ..... ....... ....... ........... .... ......... .. .. ... ... . ..
..**********************+++===+++++++++======+++++++++========++-.. .....:=+++++++===+++++*+*+:.
.%@@@@@@@@@@@@@@@@%@@%%%##**##########******##########****###+... ..:**:........:=+#%%%%%%%%%:.
. .%@@@@@@@@@@@@@@@@@%@@%%###*###########****###########*#####+. . .**...:##:.. ....+%%%%%%%:.
..%@@@@@@@@@@@@@@@@@@@@%%%##############****#########**#####=. . .=#...*=++#*. . .%%%%%%%:.
.%@@@@@@@@@@@@@@@@@@@@@@%###%##########****#######***#####=. .. .-**:..-.=%%%=. .%%%%%%:.
.%@@@@@@@@@@@@@@@@@@@@@%%%#%%###########**#######***######.. ..***#-=:#+%%%. . ...-+*#%:.
..%@@@@@@@@@@@@@@@@@@@@@@%%#%%###########*#####***********=.. . .:####%###-%%-. ....
.%@@@@@@@@@@@@@@@@@@@@@@%%%%%%########********++++++******.. .:##%%%%%%%%: ...
.%@@@@@@@@@@@%@@@@@@@@@%%%%%%%%#####********++++++++++++++=. . ....:+=.. .
.%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%###+++++**++++++++++++******+........ .
.%%@@@@@@@@@@%@@@@@@%@%%%%#%%%%#*++++++++++++++++++*************####.. .
.%%@@@@@@@@@@@@@%%@%%%%%#####**+++++++***+++++++++++++******++***##*#..
.%@@@@@@@%%%@@@%%%%%%%%%*****+++++++**+***++-............+**+++**#=*%#. ...:. .
.%@@@@@@%%%%%%@%%%%%%%#**+++++++++******+.. .:++++*#%%%%. ..#%-+.
. .%%%@@@@%%%%%%%%%%%%##*+++*++++++****-... ..=++*##%%%:..:%%... ...-#= .
.%@@@@%%%%%%%##%#%###*++***+++++**-.. . .++###%%%=+%%%%%= .+%%#:. .:
.%%%@@%%%%####***##*++*****++++=.... . . . .=*###%%%%:....*=.=%%%-.:#. ..*:..
.%%@%%%%%###****+++++******+-.... . .=**###%%%%%%*..#%%%%#.+%%. ..%:.
.%%%%%%%##****+++*++*****=.. .=**###%%%%%%%%%%@%%%:%%%- .=%:.
..%%%%%%##***+++**++***=.. . . .+**###%%%%%%%%%%%@@@@%@*. . .=%%:.
.%%%%%%#**++++**++*-... . .:+**#####%%%%%%%%%@@@%@@@*...+%%%%:.
.%%%%%%#*++++**+-... ..+***###%%%%%%%%%%@%@%%%@@%@%%%%%%:.
.%%%%%##*++++:... . . .:=+**####%%%%%%%%%%%%%%%%@%%%%%%%%:.
.%%%%###*-.... . . . .-=++***####%%%%%%%%%%%%%%%%%%%@%%%%:.
.%%%##=.. . ..=====****######%%%%%%%%%%%%%%%%%%%%%:.
.##-.. . ..-.. . ..-======+****#######%%%%%%%%%%%%%%%%%%%:..
.... . ..===-. . ...=========++*****#########%%%%%%%%%%%%%%:.
. . .. .-====... ..============+********###########%#%%%%%%%:.
..=====-. ...-=============+++********#*###########%%%%%:..
. . ..-+=====.. ...-=================+*************#############:.
. ...++======.. ..:===================++++++***********##*#######..
. ...=========-. .:=====================+++++******************####..
. . . . . ...:===========-.....======================+++++*********************##..
..-===============...-======================+++**************************..
. ...==+================:-=======================++++**************************...
.....-+++============================================++++**************************..
...=+**++++=====+=============================-======++++****************************..
. ...-++****+++==+=========================================+*******************************..
.....-+++++******+++==========================================+*++*****************************..
.-++++++++*******++===========================================++*******************************..
..=++++++++******+++====================================+====+=+**+*****************************..
.=++++++++******+++===================================+++==+++*********************************..
...=+++++++*****+++++===================================+++=++++*+*******************************..
.=+++++++*****+++++================================+=+++++++++*********************************..
..==++++++****++++++==============================++++++++++++**********************************..
.=++++++*****+*++++===============================+++++++++*+**********************************..
..+++++++*****++++++==========================+++++++++++++++***********************************..
..+++++++****+++++++========================++++++++++++*+*+************************************...
. .+++**++*****++++++===================-===++++++++++**+****************************************..
..++***++*****+++++======================+++++++++*++*******************************************..
...+****++******+++++=====================++++++*+*******+***************************************..
..+***#**###*****+++=============++++====+++++*++***********************************************..
.................................................................................................