^^^^^^^^^^^^^^^^^^^^///////^^///////////^^ ^^^^^
^^^^^^^^^^^^^ ^^^ ^~((((33(//tGKSSSGSKS%^  ^^^^^
^^^^^^^^^^^^^^  ^/(7736Ge#eO6S#@####K@KG3~/   ^^
^^^^^^^^^^^ ^^ /(67(^^7736B@@t         /@@S/   ^
^^^^^^^^^^  ^//(t((^^^/(ORRS3/^ ^^^//^/tsss3%~
^^^^^^^^^^^  /33(^    /3@@G   tCC3CGQQKt  3@@%
^^^^^^^^^^^  /%3(/ ^^^/3R@S/              s@@%
^^^^^^^^^^^^ /%O3/ ^/^(CR@S    ^/^/^^^/  ^s@@%
^^^^^^^^^^   ~OQO3ttttts#@S/ /3GGQQQQ@#G//G@Kt
^^^^^^^^^^^  /7OQQQGGsss3C#@@%      ^//7#@s/  ^^
^^^^^^^^^^^  /(7Q@@#QQQSCC#@@G/    ^//76K3t   ^^
^^^^^^^^^^^^^  ^tGR@B@BRRQSQK@@B7/7#@@@G~  ^^^^^
^^^^^^^^^^^^^  ^^^~6eeeeeQe36#@@@@S( ^//^^^^^^^^
^^^^^^^^^^^^^^^^  /(77736OesGR@@@K3/    ^^^^^^
^^^^^^^^^^^    //(~^^^^((7G@@@@K(   ^^^^^^^^^^^^
^^^^^^^^^^    /((~/   /((t3OKR@BRe3/  ^^^^^^^^^^
^^^^^^^^^^    ~((/^   /((t33OK#R@#G7/^   ^^^^^^^
^^^^^^^^     ^///   ^//((t33sSQKeGKRQ7^  ^^^^^^^
^^^^^^^^/^^  ////    //(t%3%seS#SessSRRs~  ^^^^^
^^^^^^^/^^^/////^   ///(tt3%sOeK#SC3s@@Q(   ^^^^
^^ ^^//~/ ^tCC(^    //((tt%%sOOKRRGt3QQ3~  ^^^^^
^^^^^//~/(tsG3(^   ^/((ttt%3ssGQRRQG333se6(^  ^^
^^^   //tt3sC3(^   //((tt%C3CssSKKQQstt3QK%/  ^^
^^^   /ttCCsO6~/  ///(ttt%33CCsSSK#KOtt3QS3^  ^^
  ^(6eGGQR@@QQeOssOOsOGeeKQQ#@@@@@@@RGOQ@R6/  ^^
  ^(OQQGSKR#QeeOssOOGGGSSSSeKRR@BBBRQeGSRS%^  ^^
^^^^/////////////^////////////////////////^^^^^^