ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:::::::::::::::::::;;;;
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:::::::::::::::::::;;
cccccccccccccccccccccccllllccccccccccccccc:;;ccccccccccccccc::::::::::::::::::::
cccccccccccccccccccccccc'.;loollllloolll:.....:cccccccccccccccc:::::::::::::::::
ccccccccccccccccccccccccc'.,cdkkkOkoooo, .... .llcccccccccccccccc:::::::::::::::
ccccccccccccccccccccccccclloolc:;;;:,'''....  .,docccccccccccccc::::::::::::::::
cccccccccccccccccccccccloolc:c:;,,,,,','',;,.,.,cooccccccccccccccc::::::::::::::
ccccccccccccccccccccclol;,,;:c;,,'.,'';;clodddoolodlcccccccccccccc::::::::::::::
cccccccccccccccccccccldll..'looo,.',cc;;;:cloodxxdddccccccccccccccc:::::::::::::
clloooloolllccccccccclodxkkdxxdllcccc::;::ccllloxxolocccccccccccccc:::::::::::::
ddl:lccc::olddlccccccclcokd.,cooc;,;;::::cccclllloolooccccccccccccc:::::::::::::
lclc:clocclododolccclcc;:ll,:c::;;;,'...;::c::::lc::lodccccccccccccc::::::::::::
cc::cl:lloddodoolcccccc;....''..'''...,:;;,,',,,',;cclodl:::cccccccc::::::::::::
lccllc,,c:cllolddcc:::;:;'...... ..',,;'.....'.';:cccoddxlc::ccccccc::::::::::::
clclloc:ll:cololl:,,,;;:;,..................';:cclclllllodcccc:ccccc::::::::::::
lc::cll::cclclollc::;;::::::;,',,'',,,',;;:;:::;;,,:cllooooc::;::ccc::::::::::::
cool:clcccclololdl:;::;:lllcccccc::,,'''.',;;,',c:::ccloolllc::,,;;:c:::::::::::
olc:oclolloolcooll;;;;;;ldoc::::;,,,''..''.'',:,';:cc:::looll::,',,;::::::::::::
l;:llll:c;l;:loool;;;;;;clc;;,,;;;:;,..'..'''',;,,;,,;ccloooo:;,.'.';:::::::::::
.,::;:;';:cloccccl:;;;;;;;;;;::;;,,,,''.''..'....,;;:::ccclloo,'''''::::::::::::
cllo:cocdoddc:lddl;;;,,;;,.......,,','''',,..';:;,',;::::::clo:...... ....,:::::
;lo:.,;,;;';';;,';,;;;,;,,''.......''..,,;';,'...',;;::ccc::clo'          .,::;;
ooc;;..''',c;,c;:lllllllc:;'',,;,'...;;',';,;lc::cloooodxxdolclc'''...     '::::
:,,,l;:::'c:l,c::clccccc::clooddooll:'..,;:lloodooodxxxxxxxdocllooooddooooodoooo
';ll;;;,,,ccl;:;lcccc::;;;collcc;,;loocdo::cclooxxxxxxxdddolllcloddxxxdxxxxxxddx