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