::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::–:::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::..:::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::.::::::::::::::..::::::::::::::.::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::-.-::::::::::::..::::::::::::-.-::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::-`-:::::::::::..:::::::::::-`-:::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::-.-::::::::::..::::::::::-.-::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::-.-:::::::::..:::::::::-.-:::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::—-:::::::..:::::::—-::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::-.–:::::::::::::—-::::::–::::::—-::::::::::::::-.-::::::::::::::::::::
::::::::::::::::::::::::-…-:::::::::::—-::::—-::::—-:::::::::::-…-::::::::::::::::::::::
:::::::::::::::::::::::::::–.—::::::::–:-:::—-:::-:–::::::::—..-:::::::::::::::::::::::::
::::::::::::::::::::::::::::::——::::::–:-::-::-::.:–::::::—.–::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::——-::::-/—::—/–:::——-:::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::—::—-./-.::.-/.—-::—::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::–::–.:—-:.–::—:::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::——–..-:“““:-..——–:::::::::::::::::::::::::::::::::
::::::::::::::::::–.….….…——-:::::::.` `.:::::::——-.….….…–::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::-.–:..“..::-.-::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::—::–.:.–./.–::—:::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::—:—:–/-.::.-/–:—:—::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::——-:::–:—::-:.:–:::——-:::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::–.—::::::–:.::-::-::.:–::::::—.–::::::::::::::::::::::::::::
:::::::::::::::::::::::::::-..–:::::::::–:-:::—-:::-:–:::::::::–..-:::::::::::::::::::::::::
::::::::::::::::::::::::-..–:::::::::::—-::::—-::::—-:::::::::::–..-::::::::::::::::::::::
::::::::::::::::::::::—::::::::::::::—-::::::–::::::—-::::::::::::::—::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::—::::::::..::::::::—::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::-.-:::::::::..:::::::::-.-:::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::-.-::::::::::..::::::::::-.-::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::-`-:::::::::::..:::::::::::-`-:::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::-.:::::::::::::..:::::::::::::.-::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::.::::::::::::::..::::::::::::::-::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::..:::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::–:::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::