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