^^^^^^^^^^########^^########^^^^^^^^^^^ ^^^^^^^^#####^^^^^^^^^^^^^^#####^^^^^^^^ ^^^^^^####^^^^^^^^^^^^^^^^^^^^####^^^^^^ ^^^^^###^^^^####^^^^^^^^####^^^^###^^^^^ ^^^^###^^^^######^^^^^^######^^^^###^^^^ ^^^###^^^^^######^^^^^^######^^^^^###^^^ ^^^###^^^^^######^^^^^^######^^^^^###^^^ ^^###^^^^^^^####^^^^^^^^####^^^^^^^###^^ ^^###^^^##^^^^^^^^^^^^^^^^^^^^##^^^###^^ ^^###^^^##^^^^^^^^^^^^^^^^^^^^##^^^###^^ ^^^###^^###^^^^^^^^^^^^^^^^^^###^^###^^^ ^^^###^^^####^^^^^^^^^^^^^^####^^^###^^^ ^^^^###^^^######^^^^^^^^######^^^###^^^^ ^^^^^###^^^^^##############^^^^^###^^^^^ ^^^^^^####^^^^^^########^^^^^^####^^^^^^ ^^^^^^^^#####^^^^^^^^^^^^^^#####^^^^^^^^ ^^^^^^^^^^^########^^########^^^^^^^^^^^ ^^^^^^^^^^^^^^^##########^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^########^^########^^^^^^^^^^^ ^^^^^^^^#####^^^^^^^^^^^^^^#####^^^^^^^^ ^^^^^^####^^^^^^^^^^^^^^^^^^^^####^^^^^^ ^^^^^###^^^^####^^^^^^^^####^^^^###^^^^^ ^^^^###^^^^######^^^^^^######^^^^###^^^^ ^^^###^^^^^######^^^^^^######^^^^^###^^^ ^^^###^^^^^######^^^^^^######^^^^^###^^^ ^^###^^^^^^^####^^^^^^^^####^^^^^^^###^^ ^^###^^^##^^^^^^^^^^^^^^^^^^^^##^^^###^^ ^^###^^^##^^^^^^^^^^^^^^^^^^^^##^^^###^^ ^^^###^^###^^^^^^^^^^^^^^^^^^###^^###^^^ ^^^###^^^####^^^^^^^^^^^^^^####^^^###^^^ ^^^^###^^^######^^^^^^^^######^^^###^^^^ ^^^^^###^^^^^##############^^^^^###^^^^^ ^^^^^^####^^^^^^########^^^^^^####^^^^^^ ^^^^^^^^#####^^^^^^^^^^^^^^#####^^^^^^^^ ^^^^^^^^^^^########^^########^^^^^^^^^^^ ^^^^^^^^^^^^^^^##########^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^########^^########^^^^^^^^^^^ ^^^^^^^^#####^^^^^^^^^^^^^^#####^^^^^^^^ ^^^^^^####^^^^^^^^^^^^^^^^^^^^####^^^^^^ ^^^^^###^^^^####^^^^^^^^####^^^^###^^^^^ ^^^^###^^^^######^^^^^^######^^^^###^^^^ ^^^###^^^^^######^^^^^^######^^^^^###^^^ ^^^###^^^^^######^^^^^^######^^^^^###^^^ ^^###^^^^^^^####^^^^^^^^####^^^^^^^###^^ ^^###^^^##^^^^^^^^^^^^^^^^^^^^##^^^###^^ ^^###^^^##^^^^^^^^^^^^^^^^^^^^##^^^###^^ ^^^###^^###^^^^^^^^^^^^^^^^^^###^^###^^^ ^^^###^^^####^^^^^^^^^^^^^^####^^^###^^^ ^^^^###^^^######^^^^^^^^######^^^###^^^^ ^^^^^###^^^^^##############^^^^^###^^^^^ ^^^^^^####^^^^^^########^^^^^^####^^^^^^ ^^^^^^^^#####^^^^^^^^^^^^^^#####^^^^^^^^ ^^^^^^^^^^^########^^########^^^^^^^^^^^ ^^^^^^^^^^^^^^^##########^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^########^^########^^^^^^^^^^^ ^^^^^^^^#####^^^^^^^^^^^^^^#####^^^^^^^^ ^^^^^^####^^^^^^^^^^^^^^^^^^^^####^^^^^^ ^^^^^###^^^^####^^^^^^^^####^^^^###^^^^^ ^^^^###^^^^######^^^^^^######^^^^###^^^^ ^^^###^^^^^######^^^^^^######^^^^^###^^^ ^^^###^^^^^######^^^^^^######^^^^^###^^^ ^^###^^^^^^^####^^^^^^^^####^^^^^^^###^^ ^^###^^^##^^^^^^^^^^^^^^^^^^^^##^^^###^^ ^^###^^^##^^^^^^^^^^^^^^^^^^^^##^^^###^^ ^^^###^^###^^^^^^^^^^^^^^^^^^###^^###^^^ ^^^###^^^####^^^^^^^^^^^^^^####^^^###^^^ ^^^^###^^^######^^^^^^^^######^^^###^^^^ ^^^^^###^^^^^##############^^^^^###^^^^^ ^^^^^^####^^^^^^########^^^^^^####^^^^^^ ^^^^^^^^#####^^^^^^^^^^^^^^#####^^^^^^^^ ^^^^^^^^^^^########^^########^^^^^^^^^^^ ^^^^^^^^^^^^^^^##########^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^########^^########^^^^^^^^^^^ ^^^^^^^^#####^^^^^^^^^^^^^^#####^^^^^^^^ ^^^^^^####^^^^^^^^^^^^^^^^^^^^####^^^^^^ ^^^^^###^^^^####^^^^^^^^####^^^^###^^^^^ ^^^^###^^^^######^^^^^^######^^^^###^^^^ ^^^###^^^^^######^^^^^^######^^^^^###^^^ ^^^###^^^^^######^^^^^^######^^^^^###^^^ ^^###^^^^^^^####^^^^^^^^####^^^^^^^###^^ ^^###^^^##^^^^^^^^^^^^^^^^^^^^##^^^###^^ ^^###^^^##^^^^^^^^^^^^^^^^^^^^##^^^###^^ ^^^###^^###^^^^^^^^^^^^^^^^^^###^^###^^^ ^^^###^^^####^^^^^^^^^^^^^^####^^^###^^^ ^^^^###^^^######^^^^^^^^######^^^###^^^^ ^^^^^###^^^^^##############^^^^^###^^^^^ ^^^^^^####^^^^^^########^^^^^^####^^^^^^ ^^^^^^^^#####^^^^^^^^^^^^^^#####^^^^^^^^ ^^^^^^^^^^^########^^########^^^^^^^^^^^ ^^^^^^^^^^^^^^^##########^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^########^^########^^^^^^^^^^^ ^^^^^^^^#####^^^^^^^^^^^^^^#####^^^^^^^^ ^^^^^^####^^^^^^^^^^^^^^^^^^^^####^^^^^^ ^^^^^###^^^^####^^^^^^^^####^^^^###^^^^^ ^^^^###^^^^######^^^^^^######^^^^###^^^^ ^^^###^^^^^######^^^^^^######^^^^^###^^^ ^^^###^^^^^######^^^^^^######^^^^^###^^^ ^^###^^^^^^^####^^^^^^^^####^^^^^^^###^^ ^^###^^^##^^^^^^^^^^^^^^^^^^^^##^^^###^^ ^^###^^^##^^^^^^^^^^^^^^^^^^^^##^^^###^^ ^^^###^^###^^^^^^^^^^^^^^^^^^###^^###^^^ ^^^###^^^####^^^^^^^^^^^^^^####^^^###^^^ ^^^^###^^^######^^^^^^^^######^^^###^^^^ ^^^^^###^^^^^##############^^^^^###^^^^^ ^^^^^^####^^^^^^########^^^^^^####^^^^^^ ^^^^^^^^#####^^^^^^^^^^^^^^#####^^^^^^^^ ^^^^^^^^^^^########^^########^^^^^^^^^^^ ^^^^^^^^^^^^^^^##########^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
\^^^^^^^^^^########^^########^^^^^^^^^^^ ^^^^^^^^#####^^^^^^^^^^^^^^#####^^^^^^^^ ^^^^^^####^^^^^^^^^^^^^^^^^^^^####^^^^^^ ^^^^^###^^^^####^^^^^^^^####^^^^###^^^^^ ^^^^###^^^^######^^^^^^######^^^^###^^^^ ^^^###^^^^^######^^^^^^######^^^^^###^^^ ^^^###^^^^^######^^^^^^######^^^^^###^^^ ^^###^^^^^^^####^^^^^^^^####^^^^^^^###^^ ^^###^^^##^^^^^^^^^^^^^^^^^^^^##^^^###^^ ^^###^^^##^^^^^^^^^^^^^^^^^^^^##^^^###^^ ^^^###^^###^^^^^^^^^^^^^^^^^^###^^###^^^ ^^^###^^^####^^^^^^^^^^^^^^####^^^###^^^ ^^^^###^^^######^^^^^^^^######^^^###^^^^ ^^^^^###^^^^^##############^^^^^###^^^^^ ^^^^^^####^^^^^^########^^^^^^####^^^^^^ ^^^^^^^^#####^^^^^^^^^^^^^^#####^^^^^^^^ ^^^^^^^^^^^########^^########^^^^^^^^^^^ ^^^^^^^^^^^^^^^##########^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^