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