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