::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ccCOOOoccoCCOOOOOOc:::::::::cOOccoooCCOOOCOOOO
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::cccCOOOccooCCOOOC:::::::::::::oOOoooCCCOOOOOOOO
:::::::::::::::::::::::::::::::::::::::::::::::::::::::........:::coCOOC::::::::::::::::oooooCCOOOoOOOOO
::::::::::::::::::::::::::::::::::::::::::::::::::............:::::cccCCc.::::::::::::::ccooCCCOOoCOOOOO
:::::::::::::::::::::::::::::::::::::::::::::::...................::ccocooc:::::::::::::coooCCOOCOOOOOOO
:::::::::::::::::::::::::::::::::::::::::::::........................::cooooOc.::::::coooooCCOOOoOOOOOOO
::::::::::::::::::::::::::::::::::::::::...c..........................::ccoooCOCccooooccoooCCOOoCOOOOOOO
:::::::::::::::::::::::::::::::::::::::.....c.......  . .:coCOOOOOOOCCOOOOOOCCoCCCCo::coooCCOOCoOOOOOOOO
::::::::::::::::::::::::::::::::::::::..:...:o:.:cCOOOCoococcccooccoOOOOOOOOCCOOOOCOOOoooCCOOOoOOOOOOOOO
::::::::::::::::::::::::::::::::::::...:::...:oocccccccc:c::cccccc:oOOOOOOOOOOOOCOOOOOOoCCCOOCCOOOOOOOOO
:::::::::::::::::::::::::::::::::::.:::::.....:oo:ccoCCCCCCCOOOCCoc:OOOOOOOOOOOOOOOCCOOOOOOOCcCOOOOOOOOO
:::::::::::::::::::::::::::::::::::::::.:......:ooCCCOOOCCoocc::.....cOOOOOOOOOOOOOOOOOOOOOOcOOoCOOOOOOO
:::::::::::::::::::::::::::c:::::::::...........:ooc:...::::::::::::::::.:::.::cccCOOOOOOOOOOOOOOOOOOOOO
::::::::::::::::::::::::::::c:::::...............:ooc:::::::::::::::::::::::ccccoccccoCOOOOOCOOocoCOOOOO
::::::::::::::::::::::::::::::::...................coc::::::..:::::::::.:::::cc:cccccooccoOCccoc::c:COOO
::::::::::::::::::::::::::::........................:ooc:.::::cccccccccccccoccc:::::coccoc:cccc::::cc:CO
:::::::::::::::::::::::cc:...........................:ccoc:::::cc::ccccccoooooooccccc:::ccoccccc:::cccoO
:::::::::::::::::::::::::..........................:::::cocc:::::::ccccccccoooccccoooCoc:ccccccc:::ccccO
::::::::::::::::::::::::........................::::::::::cocc::::ccccccccccoccccoooCCCc::cc:cc:::ccocoO
:::::::::::::::::::::::.........................::::::::::::coocc::::::::ccccoooooooCCCc:::cc:::cooocoOO
::::::::::::::::::::::.........................::::::::::::...:coccc:::::ccccoooccooCCocc:::::coCoocCOOO
::::::::::::::::::::c:.........................::cc::::::::......:coccc::ccccoocccooooocc::::cooocoOOOOO
::::::::::::::::::::c:..::...................:::::::::::::::::......::ccccccccccccccocccc::::cccCOOOOOOO
:::::::::::::::::cc:c:.::::..:.......::::.....::::::::::c:::::::::.::::::::::ccooooccccccccccoOOOOOOOOOO
:::::::::::::::::ccc::....:.:::..:...::::.....::::::::::::cccc:::c:::::::::::coc:::::::::cCOOOOOOOOOOOOO
:::::::::::::::::c:::......:::...::.:::::....:::::::ccc::c:cccc:c::::::cc::.:cc::ccccoooCCCCOOOOOOOOOOOO
:::::::::::::::cc:::...::.::::.....:::::.....::::::ccccccocccocccccc:::::::coCCcocccccooCOCOOOOOOOOOOOOO
:::::::::::::::cc:......::::........::.:::..::::::::cccccoooocccccccccccc::ccoCCCoooooCOOOOOOOOOOOOOOOOO
::::::::::::::cc::.............::..:.:::::..::::::::cccccooooooooooooccccc:ccoCOOCCCCCOOOOCOOOCCOOOOOOOO
:::::::::cccccc:::.......:.....::..::.::::::::::::::ccccccooooCCCCoooccccc:ccoCOOOOOOOOOOCCOOCOooOOOOOOO
::::::::ccccc:::.........::.....::..:::::::.::::::::cccccooooooooooooccc::cccoCCOOOOOOOOOCocccCOOCOOOOOO
:::::::cc::::............::::....:::..:::::.:::::::::cccccoooooooccc::ccc:cccoCCOOOOOOOOOo::::cOOOCOOOOO
::::::c::.......:.......::::::....::::::........:::::cccccoooocccccc::::::::coCCCCoCOOOOO:.:::coOOooOOOO
:::::c::.:.::..:.........::::........:::::......:::::cc:cccccccoccccc::::::::ccoCCCcoCOOc:::::ccoOOCCOOO
:::ccc:..::........::......::.........:::::.....:::::cc:cccccccc:::::ccccccccoCCCCCCoCCc:.:::cc::oOOoCOO
::c::...::.::..:..::::::.:::::::............::...::::cc::ccc:c::::::::ccccc::ccocoooCCc::c::::c::cCocCOO
::c:::::::c:...:.::::::::::::::ccc::..........:::.:::cc:::::::::::::::::cc:ccccoocccCoc::c::::c:::oocoOO
:::::c:.:c.....::::::...::cc::.::ccoc:.:::......::::::cc::c:ccc:c:cccoooCOCOOOC.:::oCo:::::::::c::oOCoOO
::::::.:....:::::::::::::.:ccc....:coCo:::....:...::::cc:::ccooccc:..cccccoCCCcCCococc::::::::::::cCOooO
:::::......::ccooooooooc:::cCooccc::::coo:.....::...:::::::ccooocccccooocooocoCOOCCoc:::::c:::::::coOOoO
:::..:::ccooooooooooooooooccCOCCooooocc:ccc:....::....::::cccccocccccccoooooCCCOOCCoc:::.::c:::c::ccOOoC
:cccooooooooooooooooooooooocCOOOOOCCooooc:c:......:....:::::ccccccccccoooooooCCOOCooo:::::::cc:c::::cOoo
:::::cccooooooooooooooooooocoOOOOOOOOOooocc:::.:..........::::ccccoooooooooCCCCCCoccc::::::::ccccc::coOO
:::::::::::ccooooooooooCCoocoCCCOOOOOOOOOOOOOo..::.......::::::ccccooooooooooCCCCcc::::::::::cocc:c::cOO
:::::::::::::::ccooooooooooc:.:coccc:ccCOOOOOOo::::........:::::::cccoooccooooCCocc:::::::::cccocc:c:cCO
::::::::::::::::::ccoooooooc.::ccoooccoccoCCOOOo..::.........::::::::::ccooooooooc::.::::::::cccoCoc:cCO
:::::::::::::::::::::coooooc:.:cooooccoooccccccoc..::..........:::::::::cocoooooc:::..:.::::::::cCOc::CO
:::::::::::::::::::::::coooc:.:ccoooccoooooooccc:.:.::............::::::coocoooc:::.....::c::::::oOC:cCO
:::::::::::::::::::::::::ccc:.:ccoooccooooooocccc:::::::..........:::::::ccccoc::::.:::::::::::::oCo:coO
::::::::::::::::::::::::::::..::coooccooooooooocc:..:::::...:::c:::.:::::cc::c:::::::::::::::c::ccc::cCO
Coc:::::::::::::::::::::::::..::coooccCooooooooocc...::::.....cocc:...::::::::.:::::ccc::cc::cc:ccoc:coC
 .cOOo::c:::::::::::::::::::..::ccooocoooooooooooc:..::::::::::oc.......:::::...:::::::::ccc:ccocccc:cco
by