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