^^^^^^^^^^^^############^^^^^^^^^^^^^^^
^^^^^^^^^^#################^^^^^^^^^^^^
^^^^^^^^#####################^^^^^^^^^^
^^^^^^#####^^^^^^^^^^^^^^^#####^^^^^^^^
^^^^^####^^^^^^^^^^^^^^^^^^^#####^^^^^^
^^^^####^^^^^^^^^^^^^^^^^^^^^#####^^^^^
^^^####^^^^^^^^^^^^^^^^^^^^^^^#####^^^^
^^####^^^^^####^^^^^^^^^###^^^^^###^^^^
^^###^^^^^######^^^^^^^###^^^^^^####^^^
^####^^^^^######^^^^^^###^^^^^^^^###^^^
^###^^^^^^^####^^^^^^###^^^^^^^^^####^^
^###^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^###^^
^###^^^###^^^^^^^^^^^^^^^^^###^^^^###^^
^###^^^^#####################^^^^^###^^
^###^^^^^^#################^^^^^^####^^
^####^^^^^!#^^#^^#!^^^^^^^^^^^^^^^###^^^
^^###^^^^^#^^#^^#!^^^^^^^^^^^^^^####^^^
^^####^^^^#^^#^^#!^^^^^^^^^^^^^^###^^^^
^^^####^^^#^^^^^#!^^^^^^^^^^^^#####^^^^
^^^^####^^^#####^^^^^^^^^^^^^#####^^^^^
^^^^^#####^^^^^^^^^^^^^^^^^######^^^^^^
^^^^^^#########################^^^^^^^^
^^^^^^^^#####################^^^^^^^^^^