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