^^^^^^^^#####################^^^^^^^^^^
^^^^^^######^^^^^^^^^^^^^######^^^^^^^^
^^^^^#####^^^^^^^^^^^^^^^^^######^^^^^^
^^^^####^^^^^^^^^^^^^^^^^^^^^#####^^^^^
^^^####^^^^^^^^^^^^^^^^^^^^^^^#####^^^^
^^####^^^^^####^^^^^^^^^###^^^^^###^^^^
^^###^^^^^######^^^^^^^###^^^^^^####^^^
^####^^^^^######^^^^^^###^^^^^^^^###^^^
^###^^^^^^^####^^^^^^###^^^^^^^^^####^^
^###^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^###^^
^###^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^###^^
^###^^^^##^^^^^^^^^^^^^^^^^##^^^^^###^^
^###^^^^###^^^^^^^^^^^^^^^^##^^^^####^^
^####^^^^###^^^^^^^^^^^^^^###^^^^###^^^
^^###^^^^####^^^^^^^^^^^####^^^^####^^^
^^####^^^^#####^^^^^^^#####^^^^^###^^^^
^^^####^^^^###############^^^^#####^^^^
^^^^####^^^^^###########^^^^^#####^^^^^
^^^^^#####^^^^^^^^^^^^^^^^^######^^^^^^
^^^^^^#########################^^^^^^^^
^^^^^^^^#####################^^^^^^^^^^