::::::::coooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo:::::oooooo
:::::::::ccoooooooooooooooocccoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooc:::coooooo
:::::::::::coooooooooooccccccccoooocoooooooooooooooooooooocccccccccccccccccccccccccccooooooooooooooooocccooooooo
::::::::::::cooooooooccccccccoccooccocooooooooooooccccc:::::::::::::::::::::::::::::::::cccccooooooooooooooooooo
:::::::::::::oooooooccccccccOOcooocooccooooooccc:::::::::::::::::::::::::::::::::::::::::::::::ccccooooooooooooo
:::::::::::::cooooocccccccO8888OOocoocoooccc::::::::::::::::::::::::::::::::::::::::::::::::::::::::cccooooooooo
:::::::::::::cooooocccccoOOOO8888Occcccccc:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::cccoooooo
:::::::::::::oooooocccooOcoooocO8OcOcccccc::::::::::::::::::::::::::::::::::ccccc:::::::::::::::::::::::::cccooo
::::::::::::cooooooococOcooooooooccOcccccc::::::::::::::ccccccccooooccoooooocccc::::::::::::::::::::::::::ccccco
:::::::::::cooooooooooOoooooooocccocccccc::::::::::::ccoccO888OOOccoooccccccc:c::::::::::::::::::::::::::cccccoo
:::::::::ccooooooooooOoccoooooc:coocccc:::::::::::coccO8@@@8888Oooooooccccc:cc::::::::::::::::::::::::::ccccccoo
:::::::ccooooooooooocccccccccccooccc::::::::::cocOOOOccc888888888cooooccc::cc::::cooccccc::::::::::::::ccccccccc
cccccooooooooooooooocccccccc:ccc:::::::::::cocccoooooooocO88888888oocc:::cc::::::::ccooooooocc:::::::::ccccccc88
oooooooooooooooooccooccccc::cc:::::::::cooccoocccoooooooooO888888Occ:::coc:::::::::::cooooooooocc::::::ccccccc88
ooooooooooooooocc:cccccc:::c:::::ccc:cococcccccccooooooooooO88OOOccc:coc:::::::::::::::oooooooooooc::::cco8Occ88
oooooooooooooocc::cocc:::ccoooooccocooccccccccccccoooooooccccOOcccccoc::::::::c:::::::::ooooooooooooc:::ccc8Oc88
oooooooooooocc::::co:cocccoocccccooccccccccccccccccccc::::::occcOOOo:::::::coooocc::::::cooooooooooooc:::ccO8OO8
ooooooooooccc:::::ccO8Ococcccccoccccccccccccc:::::::::::::::cOOcoc::::::::::ooooc::::::::oooooooooooooc::::o88OO
ooooooooocc:::::coOOcOOooccccccccccc::::::::::::::::::ccccccccc::::::::::::::::::::::::::ooooooooooooooc:::coocc
oooooooocc:::::ccOOcoOOoooccccccccccc:::::::::::::ccccc::::::::::::::cc:::::::::::::::::cooooooooooooooc::::cocc
oooooocc::::::ccOcooc8coooccccccccccccccccccc:::::c:::::::::::::::::coooc:::ccooc:::::::oooooooooooooooo::::cccc
ooooocc::::::ccOcooOOcoooccccccccccccccccccccccc:::c:::::::::::::::::::c::::cooooc:::::coooooooooooooooo::::cccc
oooocc:::::::cOccOOcooooccccc::c:ccccccccccccccccc::c:::::::::::::::::::::::ccccc::::coooooooooooooooooc:::::ccc
ooocc::::::::cOOOcoooocccc:::ccc:ccccccccccccccc:c::c::::::::::::::::::::::::::::::ccoooooooooooooooooo::::::ccc
oocc:::::::::cocccccccccccOoccc:cccccccccccccc:::cc:c:::::::::cc::::::::::::::::ccooooooooooooooooooooc:::::cccc
occ::::::::::::c::ccccccccocooo:cccccccccccccc::::::cc:::::::::cooccccccccccccoooooooooooooooooooooooc:::::ccccc
cc:::::::::::::c:::ccc:oooooccccccccccccc:::::::::c::c::::::::::cooooooooooooooooooooooooooooooooooc::::::cccccc
c::::::::::::::c:::cccccccccccccccc::ccc:::::::::cc:::c:::::::::::coooooooooooooooooooooooooooooocc:::::cccccccc
c:::::::::::::c:::::::::::::::::::::::::::::::::cc:::::c::::::::::::ccoooooooooooooooooooooooooc::::::::cccccccc
::::::::::::o:::::::::::::::::::::::::::::::::::c:::::::cc::::::::::::::ccooooooooooooooooocc:::::::::::cccccccc
::::::::::::::::::::::::::::::::::::::::::c:::::::::::::::cc::::::::::::::::::ccccccccc::::::::c:::::::::ccccccc
:::::::::::::::::::::occ::::::::::::::::::::::::::::::::::::ccc::::::::::::::::::::::::::::::cc:c:::::::::::cccc
:::::::::::::::::::ccoc::::::::::::::::::::::::::::::::::::::::coc:::::::::::::::::::::::::::::::::::::ccccccccc
:::::::::::::::::::::::::::::::::::...:::::::::::::::::::::::::::coc:::::::::::::::::::::::::::::::::ccccccccccc
::::::::::::::::::::::::::::::::::::....:::::::::::::::::::::::::::oc:::::::::::::::::::::::::::::::cccccccccccc
::::::::::::::::::::::::::::::::::::::..::::::::::::::::::::::::::::cc:::::::::::::::::::::::::::::cccccccoccccc
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::cc.:::::::::::::::::::::::::::cccccOOOOOcco
::::::::::::::::::::::::::::::::::::::c:::::::::::::::::::::::::::::::cc:::::::::::::::::::::::::::ccccOOccooooc
::::::::::::::::::::::::::::::::::::::cc:::::::::::::::::::::::::::::::c:::::::::::::::::::::::::::ccccoOooooooo
::::::::::::::::::::::::::::::::::::::cc::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ccccocoooooo
::::::::::::::::::::::::::::::::::::::o:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::cccccoccoooo
:::::::::::::::::::::::::::::::::::::cc:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::cccccoccoo
::::::::::::::::::::::::::::::::::::cc::::::::::::::::::::::ccccccccc::::::::::::::::::::::::::::::::::ccccccocc
:::::::::::::::::::::::::::::::::::cc::::::::::::::::::::ccccoccoccccccc:::::::::::::::::::::::::::::::::ccccccc
::::::::::::::::::::::::::::::::::::::::::::::::::::::c:ccccO8OOOOcocccccc:::::::::::::::::::...:::::::::::::ccc
::::::::::::::::::::::::::::::::::::::::::::::::::::::ccccccOooooocOcoccccc::::::::::::::::::.....::::::::::::::
:::::::::::::::::::::::::::::::::::::c::::::::::::::::occccOcooooooocOoccccc::::::::::::::::.........:::::::::::
:::::::::::::::::::::::::::::::::::::cc:::::::::::::::ccccoOcoooooooocOocc:cc::::::::::::::............:::::::::
::::::::::::::::::::::::::::::::::::::cc:::::::::::::cccccocOooooooooocOoc::c:::::::::::::::..............::::..
::::::::::::::::::::::::::::::::::::::cc::::::::::::::cccccoOooooooooooOccc:::::::::::::::::::....::......::::::
::::::::::::::::::::::::::::::::::::::cc.::::::::::::.ococccoOooooooooooOocc::........::::::::::::::.....:::::::
:::::::::::::::::::::::::::::::::::::::c:.:::::::::::.:ccocccoOcoooooocoOocc::::....::::::::::::::::.....:::::::
:::::::::::::::::::::::::::::::::::::::::...:::::::::..:cccoccocOcoccccc8oc:::::c:::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::c....:::::::..:occooccocOOOOOOcc::::::c:::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::c:..............:ccccocccoooocc:::::::o:::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::cc:...............:cccccoc::::::::::::o:::::::::::::::::::::::::::::::
8 8
88888888ba ad88888ba 88 88 I8, 8 ,8I 88 88
88 "8b ,d d8" 8 8 "8b 88 "" `8b d8b d8' 88 88
88 ,8P 88 Y8, 8 8 88 "8, ,8"8, ,8" 88 88
88aaaaaa8P' ,adPPYYba, MM88MMM `Y8a8a8a, 88,dPPYba, 88 Y8 8P Y8 8P ,adPPYYba, ,adPPYba, 88aaaaaaaa88 ,adPPYba, 8b,dPPYba, ,adPPYba,
88""""""' "" `Y8 88 `"8"8"8b, 88P' "8a 88 `8b d8' `8b d8' "" `Y8 I8[ "" 88""""""""88 a8P_____88 88P' "Y8 a8P_____88
88 ,adPPPPP88 88 8 8 `8b 88 88 88 `8a a8' `8a a8' ,adPPPPP88 `"Y8ba, 88 88 8PP""""""" 88 8PP"""""""
88 88, ,88 88, Y8a 8 8 a8P 88 88 88 `8a8' `8a8' 88, ,88 aa ]8I 88 88 "8b, ,aa 88 "8b, ,aa
88 `"8bbdP"Y8 "Y888 "Y88888P" 88 88 88 `8' `8' `"8bbdP"Y8 `"YbbdP"' 88 88 `"Ybbd8"' 88 `"Ybbd8"'
8 8