/////////^^^^^^/^///^^^^^^^^^^^///////^^/^^^^^^^/^^^^^^^^^^^^^/////^/^^^//
/^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//^^/^^^^^
//t7%@7t3@@QQ@@@@37GQ@%#C@Q%%@3@G@#s@@%33@G6##6C@GCCCCCCCCCG@@QGQ666CCCC^^
//77QQ#@C@Q@7@S@3#%C#@@CQ@%@@@G@6#@%#C@6C3@C@sGGCQ@CCCCCCCC@CQS@@666s666^^
//77#C@@@6@#CQ3#G73@Q%%63@QCCQ@C@Q@3@@#CCCC@@sQS66CG@G6666GG@@6@6@ssssss^^
//77QG%S3#Q@Q@Q7@@@%%%%%%G@@@@33@@s6sQ3CCSC@@@@CsCCCC#@666G@s@6@6@sssGss^^
//77@@%%Q#Q%@@@%Q7%%%%%%%3%%GQsQ@C3QC3CCCQC@66CCCCCCC6GQ666QsQ6Qs@ssGsGs^^
//77#6@@CC@@@G%@@%%%%%%%%%%%3CsC@@6@CC@Q@GC@CCCCC6C6C666@G6#@6s6@#GGsGGG^^
/^7%@Q6@%%3Q6@##s%%%%%%%%333333333@C3C3G6C#GCCCCCC666666s@@S@@@@QsssGsGG^^
//7Q%@G%@@6@@S@S%%%%%%%%3333333333CCCCCCC6@CCC66666666s66s6@Q@sssGGGsGGG^^
//7@3@CQ@C%3@GC%%%%%%%%3%3333C3C33CCCCQQ#QCCC6C666666s66ssss@@ssssGGGGGG^^
//7@3#@#Q6@@Q3%%%%%3%%3333333CC3CCCCCCCGsCCC666666666s666ssss@#sGGGGGGGG^^
//7%@@@Q%GQC@%%%%%3%%%3333CCCCCQ633CCCCC@Q6C666666666666ssssss@SGGGGGGGG^^
/^7%%C#@#@@%@%%%%%%%%33333C6@@QCCCCCCCCCC@@S66sS##GGss6sssssssGQ@sGGGGGG^^
/^77%%@@Q3@Q@%%3%3%%3%%333s@@GCCCCCCCCCC6#@@@@@@@@@@@@@@QsssssGs#@GGGGGG^^
//%7%GC@##@Q%%%%%%%3333336@@3CCCCCCCCCCCC@@@@@s6666sss6ss@@sssGGGG@GGGGG^^
//77%%@#@@@%%%%%%3%333333@@6C6Q6sCCCCCCCG@@@S66666666sssssG@sssGsGQ@GGGG^^
//7%%%C@@@Q%%3%%%%3333333@@Q@@@QCCCCCCC6@@G6C66666s66sssssssSSsssGGG@QGG^/
//77%%%%C@%3%%%%%%%%33CCQ@@@@@@CCCCCCCCG@Q66666666666ssssssss@ssGsGGG@SG^^
//77%%%%3@#@%%3%33333CC#@@@@@@CCCCCCCCC@S66666666666ssssssssss@GsGGGGG@Q^^
//7%%%%%%G@@@3%%333333CC@@@@sCCCCCCCC6@G6C666666666sssssssssssGGsGGGGGG@^^
//7%%%%%%%@@@C333333C333@@@@6CCCCCCCCC#666666666666sssssssssssssssGGGGGG^^
//%%%%%%Q@@%C@@33333333C3CCCCCCCCCCC6@C666666666sssssssssGsGGsGGGGGGGGGG^^
//%%%%%%@6%33@@Q33C3CC3C3CCCCCCCCCCCQQ66666666666sssssGsssGGGGsGGGGGGGGG^^
//7%%6G@33%%33C@@3C3CCC33CCCCCCCCCCC#CC6666666666sssssssssssGGsGGQGGGGSG^/
//%%@@@@G3%3333@@@3CCCC33CCCCC6sQQ@@@@@#s666666ssssssssssGGGGGGs@GGGGGSG^^
//%@#%%@@@@6333C@@@Q@@CCC36#@@SsCCC6666s6G66sGGsssssssssG@@SGGG@GGGGSGSS^^
//@@S3%@@@@@@336@@@@@@Q3s@@Q6CCCCCCC6C66SQGs@Q@@GssssGsGGQG@@G@@GGGGGGSS^^
/~@@@@@@s33@@@QS6@@@@G@@GCCCCCC6C6666666@@@s@s@SsssssGGs@GGQ@S@@GGGGSGSS^^
/~#QQ@@@s33@@@@3CGs@@@sCCCCCCC6C66666666QQ#@Gs@ssssssGGG@GG@GQ@#GGSGGGQS^^
//%%%%%Q@@@@@Q@@6s@@6CCCCCCCCC6C6666666#Q@66##@@QsG@#@GG@@@GG@@GGGSSGSSS^^
//%%%%33Q@@@3CG@@@@3CCCCCCCCCC66666666G@@@Qss6s##G@s@@GG@#GGG@QSGGSSSSQS^^
//%%%%%%3G@@3C6@@sCCCCCCCCC6C6C666666s@@G6@Q@@@@@G@GGSGG@@GGG@GSSGSSSSQS^^
//%%%%%3333@@@@@3C3CCCCCCCCC6C6666666666@@Qs@@sQQs#@@@@QG@@@@SSSSSSGSQQS^^
//%%%%3%333#@@@3CCCCCCCCCC6CCC66666666s6s@Q@6@ssssG@@@@@@S@@Q@@SSSS#QQQS^^
//%%%%%3333CQQCCCCCCCCCCCC6CC66666666ss6ss@sGQ#sGGs@@S@@@GGG@GS@QQ@QQQQQ^^
//%%%%%33336@CCCCCCCCCCCC6CC6666666#@@@@@@QssQ@Gss@ss@G@@QGQ@SS#@Q@QQQQQ^^
//%%%33333C@3CCCCCCCCC6CCCC6666666G@6#@@sS@ssG@GG@GQ@@G@@GG@@SS@SQ@SQQQQ^^
//%3%3333CQC3CCCCCCCCCCCC666666666@6@@sG@@@QsG@QG@GGGSG@@GG@@Q@QQ@#SQQQQ^^
//%3333CCG@CCCCCCCCCCCC6C6s66666@@Q@6s@@ssS@Gs@@GS@QGQ@S@@@Q@@SQ@@QQQQQQ^^
//%3333CC@CCCCCCCCC6CC66666666G@SG@6s6@ssGs@QG@@@QG@@#S@QS@G@@QQ@@QQQQQQ^^
//%333CC@6CCCCCCCCC6CC666666G@@@Q6sssS@Qssss@G@#GGGGGGSQ#@@Gst@@@tQQQQQQ^^
//%33333SCCCCCCCCCC6666666s@@@QssssQSQ@@ssGG@@@GGGGGGG@s%@@s~tt%(sGQQQQQ^^
//%33CCQCCCCCCCCCCC66666s@@Qs6s66s@Q@#@@QsGG@#GGG@@GGtC/%/t/t%SQt(GQQQQQ^^
//%333CQCCCCCCCCCC666G@@@@@s666s@@6sS@@@@@@@@GG@@GGtG%~//~(G/QSQQQS(QQQQ^^
//%%33@3CCCCCCCC6C6CQ@@@@@@66s6s@@s@sQG@@@@GGGG@QG#st%(t~t%~GtQQQQQQ%sQ#^^
//%33CC3CCCCCC6C6C@@@@@@@@@6sG#Gs#@sss@@ssGGQGG@#@%tt/Cs^tQ~~/tQQQQ%%3QQ^^
//33333CCCCCCCC66@Q6@@ss@@@6s@@@G@QGs@GsGGG@@@GG@Q//(s%Ctt%(%~~QQQQQ(sQQ^^
//3333CCCCCCC66@QC6@@666s@@6@@@@@@@@@@GGGG@G@@G@@G^C@@#Q@CtC~s^QQQQQQ%##^^
//3333CCCCCCCC#G666@@666G@Ss@@@Q@@@@@GGGGG@G@@@@@QC@#SSQQtS%s%%QQQQQ6t@@^^
//3333CCCCCCC@6666s@6666@G@@@@ssS@@@GGGG@@@GGG@%t%/QQQ@@@@@SQQ(sQQQ#3sS#^^
//33CCCCCCCCGsCC66@@@Qs@@s@s@@ssGQQGGSGGGQ@GGtG/3@QQ#@@^6@QQ%t%%QQQ#~t##^^
//3CCCCCCC6@QCCC6G@Qs6@@@Q6sQ@@@@GG@QG@@GG@%@@#S~^@6@@^^~#Qs@QQQ%Q##tQ##^^
//33CCCCCCs#CCC66@@@#@@6G@#sG@@@GG@QGG@SQGs@@QGGtG@^/SQQ@@@6GQQQSQCC@###^^
//33CCCCC6@6CCC66@s66@ssQs@sG@GGsG#@#@GG@%@QGG@@%36GG%(Q@s6@Q3sQQsQQ####^/
//3CCCCCC@QCCCC6@@#sQs@s@sG#@SGGGGG@@#GGG@QGS@Q@SSQSQSQGC@@QQQ#s#QQ@####^/
//C3CCCC6@CC666Q@@@s@Q@@@sQ@@GG@GG@@@QGG@GGG@G#SSSSQQQQQQsQ#Q##Q#@@@##@#^^
//CCCCCC@@66C6Q@QQ@ssss@ss@GG@GG@GQG@Q6G@G@@GSGSGSSQQQQQs~%Q####S@Q@@@@@^^
//CCCCCC@@#66@@#sG@@ssQ@s@@G@GGG@G#G@@%@QQ#GGGQ66GQQQQQQtQG#QQ##@@%#@@@@^^
//CCCCCC@@@@@@@s6s@@@s@@@@@@GGGG@GQG@@G@@QSGt6QQ^3^QS3%%^%(%%%(@@#@Q@#@@^/
//3CCCC6@@@@@Q66ssG@@sQ@@@@GGG@@GG@G@@@tQSG%QSQ/%%t3st%Q((Q/G~%tQ##%@@@@^^
//CCCCCCs@@#666s66s@@@S@@@@GGGGG@@@QGS@G%GSG%s3/G3~Q^%tQ~G%G^/(####3#@@@^^
//CCCCCCCCC66666sssQ@@@Gs@@GGGGGGG@@GG#G%QSSSS(S%t/%~Q#Q##s~Q6C####s@@@@^/
//CCCCCC666666ssssss@@@sG@QGGGGGGG@@@@SGS%SSSQ~%^s~(sQ/%/%stQsQ@@@@G@@@@^/
//CCCCC6C666666sssssG@@GG@@GGGGGGGQ@Q@GSGSQQQ/t/Q/%(QG^^/^/Q@/Q@@@s@@@@@^^
//CCCC6C6666666ssssss@sG@@@GGGGGGGQ@@Q@QSSGQt%S~QQ/^/s%~/^6(###@@#Q@@@@@^^
//CCC6C66C6666sssssSG@GQG@@GGGGGGG@@@GQ@QQS%QQQ^QG6#Q####sQG###@@@@@@@@@^/
/~QC6666666s6s6sssQ@@GG@G@@QGSGGGS@@@SQQ@QQQ%QQS~s######@QQ##Gs#G@@@@@@@//
/~@@66C666666sssss@@@GGQG@@@@GGG@@@#@SQQ@QQQQssQQ(@#Q##@@###(@@@G@@@@@@@^(
//CG@Q666666s6ssss@GsG@GGG@@@@@@@@@S@QQQ@@QQQQQ3Qs/##Q@@#Q(Ct@@%@@@@@@@@^/
//C666@@66s6ssssss@GGG@GGGG@@@@@@@QS@QSS@@QQQQQQQ%tssQQtG@#@@@@@@@@@@@@@^/
//CC666G@Q666sssss@QS@@GGGG@@@@@@@SS@#QQ@@QQQQQQQQQ@@@####@#@@@@@@@@@@@@^/
//%%CCC%CCSQCC%CCCCss3CCCCCCCC66CCsCsQssGQssss3s3sGGsssssssGssssssssssGs^^
^/^^^^^^^^///^//^^^^/^^^^^^^^^^^^^^^^^^^/^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//