::::::::::::::::::::::::::::::::::'########:::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##.... ##::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::: ##::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ########:::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##.....::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::..::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::'##::::'##::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::: ##::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::: ##::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: #########::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##.... ##::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::: ##::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::: ##::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::..:::::..:::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::'####:::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::. ##::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::: ##::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::: ##::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::: ##::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::: ##::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::'####:::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::....::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::'##:::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ########:::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::........::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::'########:::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##.... ##::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::: ##::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ########:::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##.. ##::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##::. ##:::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::. ##::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::..:::::..:::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::'#######:::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::'##.... ##::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::: ##::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::: ##::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::: ##::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::: ##::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::. #######:::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::.......::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::'##::::'##::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::. ##::'##:::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::. ##'##::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::. ###:::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::: ## ##::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::: ##:. ##:::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::. ##::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::..:::::..:::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::'##::::'##::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::. ##::'##:::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::. ##'##::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::. ###:::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::: ## ##::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::: ##:. ##:::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::. ##::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::..:::::..:::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::'#####::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::'##.. ##:::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::'##:::: ##::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::: ##::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::: ##::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::. ##:: ##:::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::. #####::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::.....:::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::'########:::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##.... ##::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::: ##::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ########:::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##.. ##::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##::. ##:::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::: ##:::. ##::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::..:::::..:::::::::::::::::::::::::::::::::::