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