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