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