:..';ldokdxdo;.                     .....   .;:,,::::::clcc:
c..:clcxdokkd'........                ........,,,;::::::cccc
lc;clccl;ckkx:.'',;,:lc,ll'  ....      ..''.''':;,,;::cc:::c
cc::cclccddc.    ...':cc0x.   ...        ..,;:::;,;;;;:cc;;;
:::cllccloo;  ,ll,'.;cclxo;.....        . .lc;;:;:;;:;;;;:::
::;:::c:co:. ..'.,odxdol:ll';;,   .;;;;:c,cllc:;::cc:::;,;;:
:;;:::::ccc'   .,ckOOxdx;...,','..:c:clllllolllc;:c:cc,,;;;;
;;;;:c;::cl,'.. .:k0kxxkkc,.'..'::;;,colcllcllcc::c:;:::;:c:
::;;:ccc::::::.':dOkxdx0KKO,....';:c;,;;:cllllc:ccllc::::c:;
:c;',,,;;;:::;;coddoclooc:'.   ',,.;:;,,;:cllc::clllloo;,:::
:cl::;c:;,;;;::llooc;;.'.      .',,.';c:;:cc:clc:clloodocc:;
::;,:lookk,,;:::::::;'lx:         ..',',;c:::cl:cccclooloooc
c;:clx0NK,,;:::col;,':c.           .,;,,,ll:;::cc:clolclc'.
..,:cld0l,;;;::cc:,...'      ...    .';,,::;;;;:c::cllc:,,,
,;lxxd:;;:,;odo:'.....           ..    .,;:;,;;;;:c::::c;..,
;.cl;,;c::,cdxc.    .            .....  ..,:',;;;;::cccclclo
c,,;:lcccc:ccc.                    .''.   .''.';;:;::::cclll