*****************++++++++=======-----------:::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:-------------------====-==============++=++++++++++++****************########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
***************+++++++=======-----------:::::-::::::::::::::::::::::.:::::::::::....::::::::::::::::::::::::::::::::--:---------------------================+==++++++++++++*******************####################%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
*#***********++++++++=======---------::::::::::::::::::::::::::.::.........:..........:...:.::::::::::::::::::::::::::::---------------------=-================+++++++++++++++******************##*#################%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
************++++++++=====----------:::::::::::::::::::...........................................:::::.::::::::::::::::-:::---:----------------=---===============+++++++++++++*****************#**#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
************+++++++====---------:::::::::::::::::::.................................................:.:::::::::::::::::::::-:::---:------------------=============+==+++++++++++*++********************###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
**********++++++======------::::::::::::::.:::...........................................................:...:::::::::::::::::::--::-------------------====-=============+++++++++++**+******************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
********++++++=====----------::::::::::::::::............................................................:.:....::::::::::::::::::-::-:::----------------=-===============+++++++++++++********************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
********+++++=====-------:::::::::::::....................................................................:....:.::::::::::::::::::::::::------------------==-===============+++++++++++++++******************#*###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
********+++++=====------::::::::::::..........................................................................::.:.::.:::::::::::::::::::::::-----------------=---=============+++++++++++++++++****************#*##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
******++++++=====-----::::::::::::..............................................................................:...:::::::::::::::::::::::::--------------------==-============++=+++++++++++++++****************####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
*****+++++======-----:::::::::.......................................................................................:....::.:.::::::::::::::-::::------------------=--==========+==+=+++++++++++++++++****************################%##%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
****+++++=====------:::::::................................... ..  ..................................................:........:::::::::::::::-:::::---------------------==============+==+++++++++++++******************####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@
***++++======-----::::::::.................................... ...  . ......... ...............................................::.::::::::::::::::::::::-------------------=-============++++++++++++++*****************#######################%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@
*+++++=====------::::::::...............................    . ..    .......   . ... ................................................:::::::::::::::::::::-:::-----------------=============+++++++++++++*++*****************##################%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@
++++++====------:::::::.:................... ...                       ..    .. ..  .     . .........................................::::::::::::::::::::::::::---------------=================++++++++++++++********************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@
++++======-----::::::::......................                                            ..    .......................................:.::::::::::::::::::::-:::---------------------==========+==+++++++++++++******************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@
+++=====-----::::::::.......................                                                   ..  ...................................:...::::::::::::::::::::-::----------------=----============+++++++++++++*+++**************#**#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@
++=====-----:::::::::................ .....                                                    ..  ...................................:..:.:::::::::::::::::::::::-------------------================+++++++++++++++********************#################%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@
+=====-----::::::::................. ....                                                      .......................................:..::::::::::::::::::::::::::--:---------------=-============+==+++++++++++++++**+****************#####################%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@
=====----:::::::::............... ..  .                                                         ..  ......................................:.:::::::::::::::::::::::-::-----------------=--===============+++++++++++++++******************#**##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@
===------:::::::................. ..                                                           .  ..... ....................................:..::.::::::::::::::::::::::----------------=--===============+++++++++++++++*+**************#*****####*##############%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@
==------:::::::.................                                                                 .. .. ........................................::::::::::::::::::::::::----------------=-------=============+=++++++++++++++++*+****************##*##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@
=-------:::::::..................                                                                   .  .....................................::.::..:::::::::::::::::::::::----------------------===========++=+=+=++++++++++++++*++*****************#*#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@
=-----::::::::..............  ..                                                                     . ........ ..................................::::::::::::::::::::::::--:-------------------==-==============+=+++++++++++++*+**+***+************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@
-----::::::.................                                                                        .      ........................................:.::::::::::::::::::::-----:---------------------=================+++++++++++++++++*++**************###*##############%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@
----:::::::.................                                                                             ... ...................................:.::::::::::::::::::::::::--::---------------------==-==============++====+==++++++++++++*****************###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
---:::::.................                                                                                .  . .. ................................::..::.:::::::::::::::::::::-------------------------==-=================+++++++++++++++++++*+**************##################%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--::::::............. .. ..                                                                       ..       ... ......................................:..::::::::::::::::::::::-:--:--------------------===-===============+==++++++++++++++++++**+**************#**###############%%#%%%%%%%%%%%%%%%%%%%%%%%%%
-::::::................                                                                           ..    . .  ... ......................................:::::::::::::::::::::::::::::------------------------===================+++++++++++++++++++*****************###################%%%%%%%%%%%%%%%%%%%%%%%%
-::::....................                                                                              .    .... ......................................::::.:::::::::::::::::::::::::---:---------------------=--=================+++++++++++++++++*****************#**###############%##%%%%%%%%%%%%%%%%%%%%%
::::..............  ..                                                                                      ... ......................................::::::::::::::::::::::::::::::::::----------------------=-=======-==========+++++++++++++++++++++******************#################%#%#%%%%%%%%%%%%%%%%
::::..............                                                                                           .   .........................................:.:::::::::::::::::::::::::::::--::-------------------==================+=+==++++++++++++++++*+*+**************##*#################%#%%%%%%%%%%%%%%%
:::::...........  .                                                                                             .. .....................................:::..:.:::::::::::::::::::::::::::-:---------------------=-=--================+=++++++++++++++++++++****************####################%%#%%%%%%%%%%%
::............. .                                                                                            .  .. ..................................:........:::::::::::::::::::::::::::::-----------------=----=----===-============+==++++++++*++++++++++*****************#**####################%%%%%%%%%%
::.............                                                                                              .     ......................................:::.:::::::::::::::::::::::::::::-:---------------------------=====-===============++++++++++++++++++++++*****************###################%%%%%%%%
::..........                                                                                          .         .........................................:....::.:::::::::::::::::::::::::::---------------------------=--===================+++=++++++++++++++++*****************##**##################%#%%%%
:............                                                                                               .   ..............................................::::::::::::::::::::::::::::::-:-----:--------------------=-==-================+++++++++++++++++++++*+*+*******************#################%%%%
.......... .                                                                                                     ......................................:..:.:::::::::::::::::::::::::::::::::::::---------------------------==================+=====+++++++++++++++++++*++*************###################%%%%
.........                                                                                                     .. .........................................:....:....:::::::::::::::::::::::::-:::-:----------------------==--=======================++++++++++++++++++++++****************#################%%%
.........                                                                                                    .  ...................................................::.:::::::::::::::::::::-:---:-:--------------------------==--===================++++=++++++++++++++++++***************##*#################
.........                                                                                                    . .  ..... ........................................:.:::.::::::::::::::::::::::::-::-:-------------------------=--=-====================++====++++++++++++++++++******************###############
.......                                                                                                          .. ..... .........................................::.::::::::::::::::::::::::-::::------------------------------===================++=+=+++++++=++++++++++++++****************###############
........                                                                                                       ...................................................::..::::::::::::::::::::::::-:::-----:--:------------------=------==-================+==++=+++++++++++++++++++*++**************######*######
........                                                                                                       ... ...............................................::.::::::::::::::::::::::::::::--::----------------------------=--====-==================+=++=++++++++++++++++++++***************#**########
..... .                                                                                                       ..  .  .............................................:::::::::::::::::::::::::::::::---:-------------------------------===-=======================+++=+++++++++++++++++******************########
....                                                                                                             .....  ......................:...................:.:::.:::::::::::::::::::::::::-:::--------------------------------==-===========================++++++++++++++++++***+****************#**##
....                                                                                                           .....................................................::..:::::::::::::::::::::::----:----:--:-----------------------===---========================+++++++++++++++++++++*+++*****************###
....                                                                                                              .. .. ...........................::.............:..::....:::::::::::::::::::::-:::--::--------------------------------=--=========================++==++++++++++++++++++*****************###
....                                                                                                             ... ..............................::..........:..:.::...::::::::::::::::::::::::::::::---------------------------------==-=============================+++++++++++++++++++++***************##
...                                                 .                                                                ................................................::.::::::::::::::::::::::::::::-:-----:-------------------=--------==--============================+=+++++++++++++++++++++*************##
. .                                                                                                          . .  ...................................................::.::::::::::::::::::::::::::::::--:-::-----------------------------==-===========================+=+++=++++++++++++++++++++*************
...                                                                                                            ....................................................:.::::.:::::::::::::::::::::::-::--::---------------------------------==---==-=========================+==+++++++++++++++++++**************
..                                                                                                            .  ...   ..............................................:::::::::::::::::::::::::::::::-:::-:-:--------------------------==-====----==========================+==++++++++++++++++++++************
.                                                                                                                 ...  .. .....................................:.......::.::::::::::::::::::::::::::-::::-:::---:-----------------------=--=--====================+============++++++++++++++++++++*+*********
                                                                                                                    .  . ..........................................:..::..::::::::::::::::::::::::::::::::::-:----------------------------==-===========================+++++++=+++++++++++++++++*+***********
                                                                                                                 ...  ..............................................::....::::.::::::::::::::::::::::::::::::--::------------------------=------==========================+=++++++=+++++++++++++++++++********
.                                                                                                              ....  ..................................................:..:::::::::::::::::::::::::::::::::---::------------------------------=-=--======================++==+=====++++++++++++++++++*********
                                                                                                                .. .....................::-:..........................::.:.:::::::::::::::::::::::::::::::::::::----------------------------------===============================+++++++++++++++++++++*+******
.                                                                                                                 .................. .-*##*-...............................:::::::::::::::::::::::::::::::--::--::--------------------------------===============================++=++++++++++++++++++++***+**
                                                                                                              . . ...............  .-**+-:...........................:.....::::::::::::::::::::::::::::::-:-:-::::------------------------------=-=--============================+=++++==+++++++++++++++++++**
                                                                                                                 .. ........... .-+#*=.  .............................::::.:::::::::::::::::::::::::::::::::::::----:------------------------------=======-==========================+==++++++++++++++++++*++*
                                                                                                                 ............ :=*#+:. ................................:....::::::::::::::::::::::::::::::::::::-:::::--------------------------------==-==============================+=+=++++++++++++++++****
                                                                                                             .   .......... .=+*+.  ....................................:::::::::::::::::::::::::::::::::::::::::::-:------------------------------=-================================+====+=+++++++++++++++**+
                                                                                                                ..  .. .. .-+=+-. ...................................:.:.::::::::::::::::::::::::::::::-:::::::-::::-------------------------------=======-=========================++=====+++++++++++++++++*+
                                                                                                             .. .  ....  -=+++- .......................................:..::::::::::::::::::::::::::::::::::::::-----------------------------------==================================+==++++=++++++++++++++++*
                                                                             .                              .    ..... :+*=+=. .......................................:..:::::::.:::::::::::::::::::::::::::::::::-::------------------------------==-===--==========================+=++++=++++++++++++++++++
                                                                                                         .       .....:*+:=:  .....................................:..:.:::::::::::::::::::::::::::::::::::::::::::-------------------------------======-==============================+++==+++=++++++++++++++
                                                                                                            . . .... :*-:+: ..........................................:.::::.:::::::.:::::::::::::::::::::::::-::::--:---------------------------=-=-=============================++===+====++==++++++++++++++
                                                                                                      ..  ... .......+: +: .. .......................................::...::::::::::::::::::::::::::::::::::::::::::::------------------------=------=-==========================++=========++=+=+++++++++++++
                                                                                                          .   ..... +- +- .. .....................................:..:...::..::.:::::::::::::::::::::::::::::::::-:::-----------------------------=-=--==-======================================++++++++++++++
                                                                                                        .. ....... == == ...............................................::..::::.::::::::::::::::::::::::::::::::------:---------------------==---======-===-=================================++++=+++++++++++
                                                                                                       ..   ..... :+ :+. .................:---::.........................::::::::::::::::::::::::::::::::::::::::---:-------------------------------===-=====-===========================+====++=+++++++++++++
                                                                   .                                    .. . .....=: +: .... ...........:====+++=-:...................:::...::::::::::::::::::::::::::::::::::::::-::--------------------------------=--===================================+==++=+=+++++++++++
                                                                                                     .     .. .. :- -= ...............:==:....---==---::..............::...::::::.::::::::::::::::::::::::::::::::-::-:---------------------------------=======================================+++==++++++++++
                                                                                                          ...... -..+: ..............=+:...........:----:.................:::.:::::::::::::::::::::::::::::::::---::-:---------------------------===--===========================================++==+++++++++
                                                                                                           ...  :- -+ ..............==. ..............................:....::::::::::::::::::::::::::::-:::::::::::--------------------------=-------=-==-=======================================++=++++++++++
                                                                                                          ..  . -:.+: .............--..........................:.........::::::::::::::::::::::::::::::::::::::::::----------------------------------====-===--===============================+=+=++=+++++++++
                                                                                                      . .....  .=.-+. . ..........--...................................:.::::::::::::::::.:::::::::::::::::::::-:::-----------------------------------===---====================================+=++++++++++++
                                                                                                     . ....... .=.==    .........:-.................................::::.::::::::::::::::::::::::::::::::::::::::-:-----------------------------------=---=====================================+=++=++++++++++
                                                                                                     .     . . := =- ............-................................:.::...::::::::::::::::::::::::::::::::::::--:------:-------------------------=---------===-===================================+==++++++++++
                                                                                                    .   . .. . := =:.. .........-:..................................:...::.::::.::::::::::::::::::::::::::::-:::-:----------------------=-------=---------==--===================================++=++=+++++++
                                                                    ..                                    .  . -= =........... :-..................................:...:::::.:.::::::::::::::::::::::::::::::::-:::----------------------------=------==--======================================++===+++++++++
                                                                                                    ..   . ... -- +............-..................................:...:::::::::::::::::::::::::::::::::::::::::-:::--:--------------------=---------=-=-==-=--===============================+=+++=+++++++++++
                                                                                                          .. . := +: .........-....:=***+*+=:.....::............:.....::.::::.:::::::::::::::::::::::::::::::::-::-:--------------------------------======-==-===--================================+++++++++++
                                                                                                           ... := =-.........::.:-*%#*+++*#%=........:::........:::..:::::.:::::::.::::::::::::::::::::::::::-::--::---------------------------------==----==--=--=-================================++++=+++++
                                                                                                     .     ... .= -=.........==+##*-.  .  ..:=+***+-...::..:.....:.::::.:..::::::::::::::::::::::::::::::::::::--::::--------------------------------------=======-================================+++++++++++
                                                                                                  ..............=..+........-%%*-.  .........::--=+##*-...:.......:::..:::...:::::::::::::::::::::::::-:::::----:::::------------------------------=--==------==--==-===============================++++++++++
                                                                                                .....  ..   ... =: =-.......++-. ...................-+%#=...:.....:::..:.:...::::::::::::::::::::::--::::-::-:-::::---:-----------------------=-----=--=----=-==-=-===================================++=+++++
                                                                                             ..   ...::::...:.. -: .=......:+  .......................:+##=.......:...:.:::::::::::::::::::::::::::-:::::::::::::---:-::-------------------------------=---=---===========================+=====+======+++++++
                                                                                               .=*##********#+ ..-..=: ... == ...........................=##-.::.::.:.:-.::::::::::::::::::::::::::::::::::::-:-----:-------:------------------------==--=--=-===-===-=======================+=====+===+++++++
                                                                                            :-+%#*=:.   ....:: . -...+.....+:..............................+#+..::.:::::::::.::::::::::::::::::::::::::::-:--:::--:::-:------------------------------=--=--==========-================================++++++++
                                                                                       . .:+#*=:.             .. .=. :+: .:*.............................:..:*%-..:..:::::::::::::::::::::::::::::::::::::::::--::::--:--------------------------------=-----====-===================================+++++++++
                                                                                     .  -+*+:    .         ...... --  .+- :+..................................=%+:.:::::::::.::::::::::::::::::::::::::-::::::::::::----------------------------------=-----===--===========================+==========+++++++
                                                                                   .. :+*=.   .. ..  .   ... .  ...=-...==+= ........:.........................-%%-::::.::::::::::::::::::::::::::::::::::::::::::::-----------------------------===----------=-====================================+=++++++++
                                                              ..              ..... .-*=.        ...    ..  ...  .. -=.  .+: .  ............................:::.:+%=:::::::::.:::::::::::::::::::::::::::-:::::--:::-------------------------------------=----=======================================+++++++++
                                                                            .....  -+=.       .-+=........ ....  ....-+-..:...--:..............................::.-#+::::::::::::::::::::::::::::::::::::::::::-::::---:-:---------------------------==--=---=--====================================++==++++++
                                                                           ..    .++:       .=+=:.         ..   ..... :-.....-+===:.........................::::::.:**-:::::::::::::::::::::::::::::::::::::::--:--------------------------------------=--------====-===============================+=++++++++
                                                                         ..     :*-.       :=-.        .   . .. ....... .....-= ..:-:.................:....::::::::::+#=::::::::::::::::::::::::::::::::::::::-::::--------------------------------==---=---===-====-=================================++++++++
                                                                        ..    .=+:       :=-.            .    ...............:=-....--....................:...::.::::.=#+:::.:::::::::::::::::::::::::::::::-::--:---:----------------------------=-----=--=-========================================+++++++++
                                                                      ..     -++.       -+:         .   ................ ::...:==:...:-.................::.....:::::::.-%*-.:::::::::::::::::::::::::::::::-::------------------------------------=-------=-------================================+++=++++++++
                                                                     .      -+-        ==.              ..   .......... :=......:=-...:::............::......:.....::::.-##-::::::::::::::::::::::::::::::::::-:-::--:---------------------------=------==--==----==-========================+====++==++++++++
                                                                    .      -+:     . .=-              ............ .....=.........==....::..........:....+=...:.:..:::::::*#-.::::::::::::::::::::::::::::-:---::-::-------------------------------=---======--====-=========================+===++=++++++++++
                                                                         .=+.  .    .=-             ...  . ... ........=- ........ -+-...::........:.....:+*+:.:::.....::::+%=:::::::::::::::::::::::::::--:-:::----:--------------------------------=------=-=====================================+++++++++++
                                                                         =*.       .=:           .      .... .-++:....-=.....:= ... .+=...::...............:+#=.::.=*+-:.:::*%-::::::::::::::::::::::::::-:::::--:--:----------------------------=---=---===--==============================+=++=+++++=+++++++
                                                                .       :*:       .=:               ...... .-++-......-:......+...... ==...-:.............:..-%+..::-*%*-.:::=#-::::::::::::::::::::::::-:::---:::-:--::-----------------------------===--=---=================================++++++=++++++++
                                                                       .+-       :+.              ......  -++:   ....:-...... =- ..... ==...-:..........:...:.:%+.:...-*%*-::.=#-:::::::::::::::::::::::::-:--::--------------------------------------=======================================++==++=++++++++++
                                                              .       .==       .+:            . ...... .+#+:  ......=:.......-=........==..:+.................:%+.:::.:=##-:::=*::::::::::::::::::::::::-:::--:--------:-----------------------------===--=--===============================+==++++++++++++++
                                                                      -+.      :+:                ...  :+=:  .......-=.........=........ =-..--..............:..:%=.:.::..-#*-::+*:::::::::::::::::::::::::::-:-:--:--:-:----------------------------===---=-===============================+===+=++++++++++++
                                                                     .+.      .+-              ..... .-=-. ... .....=: ....... -- ........=:..=:...............:.-%-.:.:::::*#-::**:::::::::::::::::::::::-:::--:--:-:-:---------------------------=====-==-=====-================================+++=++++++++
                                                           .      .. -:       ==      ..       .... .-:. ...........=...........=.........:=..:-..................-%:.:::.+*.=%=::**::::::::::::::::::::::-:::---:--::-----------------------------------==-=====-=============================+==++++++++++++
                                     .                    .      .  := .     -= .    .:.      ..   :-. ... .. .... :-...........-:.........-=..--................:.-#:.::::@+.=#=.:#+::::::::::::::::::::-::---::-:::----------------------------------====--=====================================++++++++++++
                                     .                   .      .   =: ...  :+.      --      .... --. .      ..... -............:-..........-=..---...............:.+#::::.=%-:=#=.=%+::::::::::::::::::::::-:::::::-------------------------------=---=-==-===-=============================++==++=+=++++++++
                                                        .      .   .=  ..  .+:      -=      .....--.......  .......-.............=...........=:.:=+*-.........::.:.:.+*.:::.#*::-*-:+#-::::::::::::::::::::::-:-::::-:-:-::---------------------------=-==---===-========================+=++=++++++++++++++++
                                                       .        .  =- .    =-      .=.     .....-: . ...  .........=.......:.....-:...........=..--+#+.........:..:::.#+.::.:%-::-#=:##::::::::::::::::::::::::::------------------------------------=--=---==-============================+=+++++++++++++++++
                                                       .         .-+  .   -=       =-       . .-: .  ... .. ......:-.......-:....:=...........-=.:=.-**:.....:..::..:::#=.::.+#.-:=%-:#+.:::::::::::::::::::::::::::-----------------------------------=-------==-==-=======================+++=+++=++++++++++
                                                      .        .=++: .   :=.      :-          -: .    ............::.......=:.....-:...........=-.=-.:+*:.......:::.::.:%-.::.#=.::+#::%-:::::::::::::::::::::::--:---:---------------------------------=-----==============================++==+=++++===+++++
                                                              :+=.  ..   =:      .=:         --    ...............::.......=:......-............=::+...-+:.....:::.::.:.=#::::=#::::**:=%:::::::::::::::----:-----:-----:-------------------------------------===========================+=+++====++++++++++++
                                                    .        -+.  ...   -=       --.    ..  --   .. .............:=:.......-:......-:...........:=.=:.:.-+..:.::::....::.*#.::.#+.:::#-:**.:::::::::::::-:-:-::-:---::--------------------------------=-=--==-=---======================+==++====+++++++++++++
                                                       .  . =+.  .     :=.      .-: .      -=  ...  .............=+:.......-:......:-............----....-*...........::::#+.::-#:::.=*::*=:::::::::::::::-::-:--:----------------------------------==-==-==-----======================+==+++=++++++++++++++++
                                                         . -*.  . :-   -:      .:-        -=. ..................-=-:.......:-.......-............:=:=...:.=*......:.:::::.-%-:::**.:::#+:-#:::::::::::--:::::::-:---:------------------------------==-----=---===========================++++=++++++++++++++++
                                                  ..    . :*:   .:+:  :-       .-.    .  :=. .  ................+.-:.......:-.......:-............--=:...:.++.:.::::::::::.*#.::-#-:::=*-:++::::::::-:-::-::--:::-::----------------------------=--=----------==-========================+=+=+=+++++=+++++++++
                                               .    .. ...*-    .=:  .:.      .-: . ..  .=:    ................--.-........:=........-............:=--....::*=.::::.::::::.:%=:::+*.:::#=::*::::::::::::::::::::--:----------------------------------------==-=-===========================+++=+==+=++++++++++
                                                   . ... -+  . .=-   .        .-.       --   ..................=..-:........=........-:........:...---.....:=*..::::::::::::=%:::-#-:::*+::=+::-::::-:::::::::----:-::-:-----------------------------=--------============================++=+===+=+++++++++++
                                                    ... .+. .. --            .--  .  . -- .    .. ...... :=...::..=:........--.......:=............:-=:::..:.++.::::::::::::.#+.::++.::=*:::+-:::::::::-:::::-::--:::---------------------------==------=---===========================+=+++++++++++++++++++++
                                                  . ....+-    .=.   .        .-: .. . :-  .   . ........:*- ..::..-:........:=........-:............-=-.:-..::*:.::::::::::::-%-::-*:::-*-::=+::::-::::::::----:------------------------------------=--=---=-=======================++====++===+++++++++++++++
                                     .        ........ -+. .. =:   .         .-.   . .-  .  ...........:+- ..::...--........:+........:-............:==..==.:.=+.::::::::::::.**:-:*-:::*=:::*-:::::::-:::---:-::-:::--------------------------=----------====--===-===================++=+===++++++++++++++++
                                     .       ......... +-  . .=    .         :-   . .-. .  ............=- ...-....--.........=-.......:=-............-+:.:*:.::*-.::.:::::::::-%-::++.::*=-::=+::::::::::---:-::--:-:---:---------------------=-------=--====--=======================++====++++++++++++++++++
                                           ...........:+.    -:             .-.  .. -: ..... .........:+....-:....:-.........==.......:=-:...........:+-..-+.::=+.::::::::::::.++:-:*:::*+-::-*::::::::-::-::-:-----:-------:------------------------=-----==-===========================++=+=++=+++++++++++++
                                             ........ --   :==    .         .-.  . -- ..   ..........:==....=.....:-.........-+.......:-:-............==.:.+=.::*-::::::::::::::#:-:*-::#+-:::*-::::::::::::---------------------------------=--=---=-===============================+=====++++=++++++++++++++
                                            ..... ....=. -=-=-   .          ::    :-. . . ..........:--=.. -- .....-..........*:......:-.-:......:.:..-=::.:+-::=*.:::::::::::::+*-:++::%=::::*+:::::::::::-:::--------------:-----------------==-----==============================+====++++++++++++++=++++++
                                             .  ..   --.=-. -.   .          :.   .=. .. ............---- ..=.......-:.........+-.......-::-...:.:.....:+-.:.-*-::*-::::::::::::::#=:-%+:#=::::=*:-:::-::--::-:----:----::--:------------------=------===========================++==+====+++++++++++++++++++++
                                         ......   ...+:=-  .-                ... -:        ........:-.-: .--.......::...:.....-+.......--.:-.:....::.:.=-.:::=+-:=+.::::::::::::.+#:-**-*:::::=#:::::::--=+::--------------------------------==-==-===============================++=+=+++++=+++++++++++++++++
                                         ..   . . . :===   --   .          .    .-.  .. .. ........-: -:..=........::...:.....:+::.....:-:.-:....::.:..:-:::::+=:-*:.:::::::::::.-%-:*+%+::::--*-::::::::-+*=:--:-------------------------=-----===--======-================+======+=+===++=++++++++++++++++++
  .                                      ...  .  .. =+=. ..-.   .    .    ..   .-: . .... ........--..-: :-.........-........:.==.......-:::-......:::::=-.:::==-:==::::::::::::::#+.+=*=:::-:-#-:::::::-:-+**-:-------:--------------=--=--=--==-=-====---==-==================+++=+==+=+++++++++++++++++++++
  .                                     .        . :**:  ..=.      .  ..  .... .=...... .........:-:..=:.=:.........-::.....-:.-+.:.....-:.:--..:.::::::-::::::==--*::::::::::::::+%:==--:::::-*::::::::::-::+#+:---------:------------------===-=====-=-================+========+++=++=+++++++++=+++=+++++++
               .                  ...    ...  .... -#=.. ..=.  .           .. ... . .............-:.. =:.=:.........::......+-..+-......--.:-+=--::::::::::::::=-=:*-::::::::::::::%+-+:::-===+-:::::::-:::--:-**:-:-----------------------========---===========================++++++++++=++++++++++=+++++++
.             ..      ..          ..      .. . ... =*:....:=   .    ..     .  .. ...............--...:=-==.. .......:-......-=..-+.......=-+*+*+****=-:::::::::-==-=+.:::::::::::::=#=*:-**++=:::::::::::::::--:**:------:----------------=-=---=---=-===--=====================+++=+++++=+=+=++++++=+++++++++
                                      .. ..... . . ++.....:=  .         . .............. -= .. :+=+**######*=........-=:.....+-..+:....:+*+-:.--.:-=*#*-.:::::::=--=+:::::::::::::::#++-#*-::::::::::::::::::--::#=::---:------------------=--------=-----===================+==++==++==++=++=++++++=+++++++++
                           .... ....  .  ..........*- ....-- ..       .  ..... ......... +:...-***=--:---::=*=........=+:....-+:.-=.:.:*=--.:.:=-...::=*+:.:::::-=--+-::::::::::::::+#==%-:::::::::::::::::-::--:=*:-----------------------=-==----==-==========================+++=++++=+++==++++++++++++++++
                            . .   .  ..............*: ... -- .      ....... .............=. :+*+:.  . -=:.   :........-==.....+-..=-:.::..=:....=-:::...=*=::::::=:-+=.::::::::::::::#*-#=:::::::::::::-::::::-::-#=:-:::----------=---------=--=-==--=-====================++==++=++=++++++++++++++++++++++++
                              .     ....... .. ...:+: ... =- .      . . . :. ...........-=.=+:-:......:+:.............:-+=....-*-..*=...:.:-.:.::==..::..-#+:.:::--:++:::::::::::::::+#:#=-::::::::::::::-:------:*=:-:----------------=--------------=-============++==+=======+==+==+++++++++++++=++++++++++
                    .      .. ................ ...:+..... =: ..      .  ..=: ...........==+=..-.......-+...............--*-....+*-.-*=:::::+:....-+=::::::-#*::::-=:=*:::::::::::::::-#:+*::::::::::::::::-------:*+:---------------=----------=----==========================+==+===+++++++++++++++++++++++++
.  .                 .... .........................=. .. .=: .   . .......=: .. ....... =*- .::.......:=................-+*-....===:-*+:.:.-=.:.:.:+*-.:::::+=::::=-:*=:::::::::::::::*=:#=::::::::::::-:----:---:*+:--:------------------===-=--===-==========================+++==+++++==++++++=++=+=+++++++
.        ..          ..............................=. .. .+:   . ....  .. -: ......... :#: ..-........:-................-++++:..:==+=:**=:..=-.:::::=+-:::::.:::::-=:++:::::::::::::::=+:=#-::::::::::--:--------:#=:-:------------------------==---=======================+=+++===++=++++++++++++++++++++++++
..      ..    .        ............................=: .. .+: ..    ...... =- ..........+=...:-.....  .:-.................=+--==:.:=-+*****+=-+-:-::::-+=:::::::::::-::+-::::::::::::::-*-:+#--:::::--:--:-------:+%------:---------=-----------=======-====================+=++==++==+++++++++++++++++++++++++
   .       .....     ............................. -: .. :=. ..  ........ :- ..........:-...-:.....:----:................-+--.-==:--.--:::=*#*+=+*=::::=+-::::::::.=-:+=:::::::::::::::+-:-*#-:::::::------------@#-----------------=---------===--==-=====================+====++==++++++++++=+++++++++++++++
.......     ..   ... ... ..........................:- ...-=. ............ := ..........:-...-......--:::-=-:..............---:..-=-==::::**=::==++*+-:::-+=::::::::--:=+:::::::::::::::==:::+#=::--:--:---------#@=:------------------------------===-=====================+==++=+++=+++++++++==+=++++++++++++
.. .... ....... ........ .... ......................-...:--. ............ .=.......... :-..::....:=+**++=--=-.............:-:-....-+*=:.++:-*%%%#%%%#=-:::=+-.:::::-=::=-::::::::::::::-+::::+#*----:--------:-*%#--------------------------===--=========================+==++==+=+=++++++++==+++++++++++++++
... ........     ............+- ....................-...-:-......  ........=. ........ --..-:..:=*%##*#****==..............-:......:-=-.::+%*+++++*#%@%+::::+=::::::=-::+::::::::::::::-+----:=##+-:-:::::---=#**+:-------------------------=--===============================+++==+++++++++++++++++++++++++++
....... ................... -%:....................... :-......  .. .......=: .........::.:-..-##*=---++=--+*+.............:-...........-#*-*#%%%#+-=#%@=::::++:::::=-::--::::::::::::::+-:-:::-*%%*+====+*##*-=*:-------------------------==-================================+++===++=+++++++++++++++++++++++
...... .................... -%:........................-:.... .=*+: .......=- .........::.:: -##+:.+#%@@@%*::**:............::.........:*=-%@@@@@@@#:-#%@=.:.=+==-.:=-::::::::::::::::::==:-*-:--=*#%####*+=-:-#-------------------------=-======================================+++++++++++++++++++++++++++++
............................:%* ......................--... .=%%+.........:-=..........:: -::#%*:.*@%%%%%@@%:.=:.............:.........+-:@%*%@@%%%@#:-#%%-::-*:-*+:==::--::::::::::::::-+:--*+:::--=::::::::=#-:-----------------------==--=====================================+++=+++++++++++++++++++++++++
............ ................:*+.................... -- .. -#%+: ....... :-:+. ........:..::*##- +*-+%%%#*%@#:.:......................-=.+@-.+%%#++%@+:=#%*.::#-.:=+++-:--::::::::::::::-*--::++=::::-----::+*-:--------------------------====-=================================++++=+++++++++++++++++++++++++
...............................=*-..................-=.. .+%*:  ........ -: =: ........:..-+*++..*-.-%%%*-=%@+.:................:.....-:.*#::=@%#===@#::*%%:::#=::.:=+=--=-::::::::::::::*=:--:-++=-:::-:-+#*:--:---------------------=---===--==============================+==+++==++++++++++===++=+++++++++
...............................:-=*=:............ :--...=##-. .......... -: -=............=+++- -*:.+#%%#=:*@#.:.......................::%*..*##%*+*%@=:-#@=::*=::::-*=---*::::::::::-:::*+---:::-+***+**#*-:--:--------------------------=-=======================+==============++=+++++++++=+++++++++++++++
...............................:*=:=**=-:...   ..-++:..=%=. .............+. .+:...........-:**:.=#:=*-%@#*+*%%::......................::-%#:-%*%%%%%@@+::*@*::++.:::=*=--:+=:::::-:::-:::+*-----:::--=+==:::---------------------------=--=-===================================+++++=+++++++++++++++++++++++++
.................................+#- :=+**+======**=..++: ............. -+ ..-+.....=-...:-:*+..=%%%##@@@###%%-:..................:.:.::-%@%%@@@@%@%%@+::+%#:.+*::::-*=:-:-+::::::::=-::--*-----:::-:::::-------------------------==---=======-====================+========+++++++=+++=++++=+++++++++++++++++
................................. :**-.  ..::-=+*+: :*=. .............. +- . -%- ...+=....:-*=..=%%##@@@@*+*@%-...................::::::-%@%%%@@@%%@%%+::=#%-.++::::-*=-:::*-:::::-:++:-:-*=----:-----:--::--------------------=--=---=-==--==-===================+=======++=+++++++++++++++++++++++++++++++++
..................................  -+*+=-::-==-:. .*- .. ............ :=....:*+....-+....-++=..-%%**%@@@#+*%%-..................::::::.-%@#-+@@@@%%-#+::-##-:+=::::-*=-:::+=:::::---*-:::++----:--:--:::--------------------------------=-=============================+++===++=+++++++++++++++++++++++++++++
....................................  .--==--:. ...+: .. :: ... .......=: ...:++: ...=:...=-+=..:%%+*%%%####-#:....................::::::#%#*#%@%%@#*%=::=#=::*=::::=*=-:::=*::::::::++--:=+-:----=*-:::::::-----:-------------------=--=====--================+=============+++=+++++++++++++++++++++++++=+++
......................................        ....=-.. . +: ......... --.... :=:= ...:+...-.==...##*#+--:=+#+*.:.................::::::::#@#*@#*=+#%@#::.=+:::*=::::=+=-::::*-::::::::*=-:-+--:----**:--:--------:---------------------==--===========================+==+=+=++==++++++++==+++++++++++++++++++
.................................................-- .:=..+. ........ .=..... =- =- .. -=..-::=:..+%=-::::::-*=..................:.:::::::+%*=*====-=%+.:-=:::-#-::::+=--::::+=:::::-::=*:-:==::----:#+:-----------------------------------======================++===++=+=++++++++=+++*#%#*++++++++++++++++=++
.......................................  .. ....:-...+: .=.......... =:..... =: .=.....==.-..:+...#+..:::::=#:...................:.::::::-#*---=---=#:::=::::=*:::::+:--::::-+:::::::::*+::---:---::=@=:---------:----------------------===========+++=+++=+++==+===========++++++*#%@%%##%%*+++++++++++++++++
................................................-.. +-  := ........ -= ......+:..--....:*:-:..:=. -%:...:--#=....................:::::::::+#=:---:-#=.-+::::.++::::-=:--:::::*::::::::::#=::--------:+@=---------------------------=-======-===============+++++==++*##%%%#####%%@%####%%*+##*+=+++=++++++++++
...............................................-:. -+ . -= :........=. ......+....=:....=*--...:--.+%=-==*#+.................::.::.:.::.:::*%=::-=%+:==::::::*-::::--.--:::::*=:::::::::-#-::---:----:#@=:--------------------------------=======-===++++++====+*####%%*****#@@%%%%%%#**#%%*%#+++==++=++++++++
..............................................:- .:*... -=.. ......=- ..... -=.....-....-++=....:=-.-#%##*-................:.-=:..:....:::::=#####+--=-::::.=+:::::-::=-:::::++:::::::--:=#:---::------#%=-----------------------------=====--==+*#####*###%**#**+++*+===+#%@%*+++++*#%#***%#%*+++===+++++++++
..............................................=...*: ...==........:=....... =- ....-=...-=:++: ...-:::--:.::.................=*+::..:..::.:-==**=--=::::::::*-::::--::=-:::::=*:::::::-:::**::----------%#==--------------------------===--=+##**+===-=---=#%*+=====+++#%%####%%#*+===+*#*++*@#+++===+=+++++++
.............................................-:. -+ ..  +- .......=:........+:......==...=.-+*=:....:::---:..................-=+=....::::..:---:::::::::::.=+::::--:::=-:::::-*::::-:::::::**:--:------:-##--------------------------==-=+##*==-----=====*#+=======+*#%#*======+#%%#*+==+%*==*%=+====+++++++++
............................................:-...+:.. :=#- ..... -= ........+........==..=- :-*#:............................-+++:.::::::..:::.::::::::::.:*:::::*=:::=-::-:::*-::::::::::::*#-:--------:-#*---===-----------------==-=*#+=----==--===-+%*========*%%#*+==========+*#%*==+#*==##======+==+=+++
............................................=:. -=.. =#-+: .....:+.........:+........:-=.:+....--............................-=+=:.....::::::::::::.::::::*=::::+%=::-+:::=-::+=:::::::::::::+%+-:---------#*---=====------------=--+*#+---====---===+##+-=====+***+==+**============+##+=+#+=+%+=++==+=++=+++
...........................................:-..:+. .*#- =:......=- ........-+......:*-.-+-+:.................................-=+-:....:::::::::::::::::::++:::.+%+:::-=:::+-:.=+::::::::::::::-##=::-:::----*#+------===--------=--*#=------------==*@*======+*#+=======+#=============*#+=*#+=*%+========++++
...........................................-:..+= :*+: .=......:+......... == ....=%*...:=++.................................:==:.::.:..:.:::::::::::::.=+::.:+#*::::==:-:+-::=+::::::::::::--::=##=:-----:::=##=------=====---=-+#+--=---=--=++===#%=-=====*#*=========-+#==========++=+#+=#++=*+=====+++++++
...........................................=...*.:*:....=......== .........== ...+=== ....=+-................................:=-::::.::::::::::::::::::++:.:-*-*=::::+=:::*-::-*:::::::::::::::-::=*#+-------:-+%#=--------=-==-+#=--------=+#*==-##=-==-=*#*=============*+=========+=+=*%=**==+++==+++++=+++
......................................... -:..-=-+......=......+:..........+-...*= =+ ...:=---..............................:::.::.::..::::::::::::::-*+::-+=:.*-::::=-:::*-:::*::::::::-:::::::::::=*#+-::----:-#%#*=---------+#--------=+#*=---=+=====*%*=--============+#=========+=++=##=*+=++=====++=++++
..........................................=...=+*.......=.....:= ..........+-..+=  =+ ....-=...................................::::::.:.:::::::::::-=+==++=:..-*::::-=:::-#-:::*-:::::::::::::::::::::-*#*+-::----=#@@%*==-----#--+---=+**+=--=-=====-+##+--===============**=============+%+#+=+=====+=++++++
.........................................:-...+*:....=.:+.....=- ......... =- =+ . =+ .....=............................:..:..:::::.:::::::::::::::+++*+-:.::.+=::::--:::=#-:::*-::::::::::::::-::::-:::-+#**+=::-::=+#%%%%#*+%*+##-=*#*+-----=======##+--=-================#==========+==+%*#+=======+=++++++
.........................................-:..:*: ...-+.:+.....+: ..........+=.*... :*......=-.........................:.::::.::::..::::::::::::::::.:::.::::::*-::::--:::=*::-:+=::::::::::::::-:--:::::-::-=*##*+===----==+**++##*#*+------=====-=*#*--=========-==========**=======++==++%##+=====++=+=+++++
.........................................=...-+ ....=:.:+. ..:+........... ==== ...:#:.....:+........................::..:::::::..:::...::::::::::::::::::::.-*:::::--:::**::::++:::-::::::::::::::::-------::--=**#######*+*++**+=--------====-=+#*=---====================+#=============#%#++===++====+=+++
........................................-=...+-... :=..:=....-+ ...........=++......++ .....=-..........................::::::::::::::::::::::::::::::::::::.++:::::-:::-#*--::++:::::::::::::::::::::-::::----:::::----==++====---------==---=+#*=--=----===-===============#*===========+#@+=+===+===++===++
........................................=:..:=:....-=:.:+....== ...........-%=......-#......-+.........................::.::::::::::::::::::::::.::::::::::::*=::::--:-:=#++:::=+:::::-:::::::::--::---:-:---------------:-::----------=--=--+#*=--------====================+%+====+====++%%=+++=+++++++=++++
........................................=..::......-:=..+:...+= ...........:#.......:*= .....+-..................::::.::::.:::..:.::::::::::::::::::::::::::-#:::::--:::**:**-:++::::::::::::::---------------------------------------=----=**=------=-=======================*#==========+%*=+===++==+++=++++
.......................................:=..:......:- ==.+-...+- ............*:.......=#:.....-+...::..........:.:..:::::.:==+=++=-:.::::::::::::::::::::::::+*:::::=:::-#=::+#=+=:-:::--::::-::-:--:--:-::---:---------------------------=**=--------=-===============+========%+===++=+++##+++=++=++=++++++++
...................................:...=-........ -- .*:==...+- ............+= ......:+#:....:*-....:......::....::..::.=**==--==*#*-.::::::.:::::::::::::::*-::::--:::=*-:::=#%*------::-:------------------:-------------------------=**=------------================+=======+%+====+++**+===++==+++++++++++
.......................................=.....=:.. -:. -*-=..:*- ...........:-*........-+#:....-+:........:::........:::+*-::::--::-+%+:.:::::::::::::::::::=*:::::-::::+*::-:::+%#+----::-:-----------:-:---------------------------=+*+=-----------===----=====+=======++======*%==+====+++=+=+++++++++++++++
......................................:=.....*:...=:...=*+:..+: ...........:.*-........:=%+:..:+-...-:.........:::.:::*#=+*#******++*%-.::::::::::::::::::-#-::::-=:::-*=::::-::-+##*-::--------------:--------------------------==**+-----------==-===+*###%%%%%####*+==++====+=#%==+==++=++==+++++++++=+++++
......................................--....:*:...=:... =%-..+- .............-*.........:-*#*+++*::+-.:.........:.::.+*===-:::::::::=#=:::::::::::::::::::+*:::::=::::-*::::::-:-::=*#*+=-::::--------------------------------==+*+=--------=----=+*####**++==++==+*##%%*+=+======*%+=++++=++++++++===*#%%%*++
......................................=-.....*:...=:.....+*..=+...............*= ..........:=+*==*#-.:.......:::::::.+-......:::.::::+-.:::::::::::::::::=*-::::==::::=+::::::=*:::::-+*##**==----------------------------===+*+=-------------=***##*+=---=========-===+#%#+=++====*%*==+=+++=++=++*#@@@@%++=+
................................::....=:.....*-...=-.....:*-.=+...............:#:..............-*%+......:::::.:.:::.=+.:::::::::::::+-.::::::::::::::::-#-:-+::+:::::*=:::::::**::::::::-=++*##*+------------------====++###+-::-----====**####%#=----===--=============+*%*=+++++=+#%#*+++==+*#%@@@%#*++=+++
:.....................................=..... ++...*=......++.-*.....:..........-#-..........:-**#==+..:..:..:.::::::.-*.::::::::::::-+:::::.:::::::::::-*=::+=:--::::-*-:::--:::+#-:-:::::::::-=+*####************+++===--=+*##*****#####***+=---+##++==---===============-=#*++=++++=+#%%%%%%%@@%#*+====+++++
:.....:...............................=:.....:#..=#=......=#-.#- .............. -#*=:::::-=+*++*-..==...::.:.::::..:.-#:.:.:::::::::=+.::::.::::::::::-*=:::*::-:::::=+::::::::::=#=::-------:-:::-==++++++++=====--:-:-----:-==+=+====-------=----=+*##*+++==-=========================+#%%#*++========++++++
......................................*:..... *+-*:+:......+#:=+ .................=+*****+=-.-*:....+=..::.:::.:::.::.*=.:::::::::::+=.::::::::::::::-++:::=*-:-:::::+*:::::::::::-**-:-::---------:::::--:---:-------------------------===-=---------==+**####**+++===============+**#%#*+=====+=+=====++++++
....................................:+#= .....-##:.#:......:+#=*.........:.............:....=%+====-:=+:.:::::::.::::.=*:::::::::::-+:::::::::::::::-*=::::+==--:::::++:::::::::::::+#+::--:-----------------------------------------===-------==-=====-----==+**###########%%%%%%%%##*+=========+++===+++++++
.:........:.........................*==%:.::::.-*.=+=.......:=*%-........::...............-**+=+++****##-.:::::::::::::*=.:::::::::==::::::::::::::-+=:-:::*--=-:::::+=::::::::::::-:-*#=::-:--------------------------------------==-----=----==---=--==========++=++=+++++++++++*#*+==+++======++========+++
:::..:.........................:...=*:#+#*-....==:+.*:......::.=*......................:-++-........::-=#+::::::::::::.-#=.::::::::*-:::::::::::::-+-::-+::*-:=::::-:*=:--:+-::-::-::::=#*-::--------------------------------------=------------------==-=========++================*#*+=+======++======++++++
...:........:.....:............:..:*:*+::+#=:..+:--.-+..........*=......................=-..............:++:.:::::::::::-*+::-:::-*=.::::::::::::=+:::::*-:*-:=-:--::*=---:*#:--:-::-:-::+#*--::---------:----------------------------------------==-===-==--=====+++===========+++===*%*=====+======+=+++++++
:::.:..............::.........::..=+-#::..:+*+=+.=-..+=.........:#-..........................::..........:+*=.::::::::::::+#+=--=*=:::::::::::::++::::::+=:*-::+::--:*=-----%*:---:-:--:::-+##+=-:---------------------------------------------==-=====-============+===+===========+==+%*=======+=+++=+++++++
:::::.:..:..:...::.........::...::*-*=.......-+*.==...+=.........-#=..:.::...........................::.:::-#+:.:::::::::::-+***+-::::::::::::=+=:::::::-+:*-::==:-::*=:::--=%*-:---::::--:::-=****=--:::------------------------=--=----=--==---==-================++=+==++***##*+======#+======+===+++++++++
::.:::..:..........:.....:....::.:*:#-........:+.-+....++:....:.:.-#+:.:+:::.::::::.:.........::::..::..:::.:+#+:::::::.::::::::.:::::::::::-++---:::::::+=*-:::+-:-:*=::=----#%=:---::--::---::-=+*#**#*=-------:------------------=------===++++=-=================++=+*#******#%%*==+=+#++===+=====++++++++
::::::::.....:.::........::::..:.=+:*:........:+..+:....-*+-:...:::+%#+#=..............::::.::::::..::::::::::-*#+-.::::::::::::::::::::::-++=:.+=:::::::-*+-:::-+:-:+=::+*:-::+%+::-------------:::-==++*##**#****+++==-------=======++**###****###=================+##*+=========+#%*=+=#*===+++==++++++++++
:::::::..:....::::.............:.==:#:......:.:+:.=+......-++++++++=::**#*+++++=---:::.:..:.::::.:::::::::::::::#%#=-:::::::::::::::::::-=#*::::=+::::::::+%-::::=+::*+:--#*+++=*@%+-:-::--:---::::-::::::-======+****###******######***+==---=---=*##=============+**++=============+%#==+#=+====+=++++++++++
:::::::::.::......::.:...........+-:#:.........=:..+:........:-:.....+=..-==+=++++****+==-:::::::::..:::::::::::+@%#*+::::::::::::::::-++=*-:::::*-::::::::++:-:::++:+*:-:=#==**+==#%#+--::::---:------------------------=======-------------======-=*#==========+#*====+===+==========%#=*#======+++=++++++++
::::::::::..:.:......:.:::::...:.+-.#=.........:=..:*...............++..............:--+***=-::::::.::::.:::::::-%@%##*-::::::::::::==+=:-+::::::=+::::::-::*+:-::-*=-#-:::=+-::::::=*#%#**#*+-:---------------------------:-------=----------========+%=====++***+======+=============+%+*#=====+++=+++++++++
:::::::::....::..:::::::::::::::.+=.++ .:::-----+:..-*:...........-*=.........-:.........:=*#*=:::::::-*-:.:::::-%%%%%##*=-::::.:-==-::::-+:::::::*-:::::::::*=::::-*+*-::-:-++=-::::::-+%%+==-:----------------:---------:-------------------=====-==-*#==*#**+==========+=============#***======+=++++++++++
::::::::::.:::::::::.::::::::-::.=+ -*=++**++++++=...-*+:.....:-=**-....::-=+*+:......:.....:+#*-:::::.*#*+::::::#%%%%%%%##*+=+++=-::::::==:::::::=*::::::::::#*=--::*#-::::::-++++==+*#*=::::-----------------=+*****##***+=----------=-----====-======#*==#+=============+============*%#=========++++++++++
:::::::::::::::::::::::.::::::.:.-#:-+=:..............:=+*+++++++++*******+=-:..........:::::.:+%*-:::.-#-*+:::::#%%@%%%%###**+=:::::::::==::::==-:*=:::--:::::**=++-:**-:::-:::--=+++=-::---------:---::--=****+====-====+*#%*=-------=-=---==-+*=======%+==#*===========+=++=======+==+@*======+++++++++++++
:::::::::::::::::::::::::::::::.=*-......................:---:......::::...............:.....:..-##=::::#+*%+:::-#%%%%%%%%%#=::::::::::::+-:=+##=:::*=::::::::::+#==*+-=*=-:::-::::::::--:--------:-:--=***+=--::-------:--:-=*%#=------==--==---+#======*%===##=-=========+============+%=======+++++++++++++
:::::::::::::::::::::.:..::::.:*+:............::.......:..............................::::..::::::#%=:::*%#-#=::=%@@%%%%%%#=:::::::::::::**#%#+=#-:--#+::::::::-:-*+-=+**##***=:-:-+-:::-:::::::::-=+**+=-::::-----------------=*##*--==---======-+#=-====#*===*%*=========+=========++=##=+==+==+=+++++++++++
:::::::::::::::::::::::.::::::#=.::......::.......:.......:...........................::::::::::::+#*-::*%=.=#-:=*=+#@%%@%+::::::::::::::**+=-==*#=::-**-:::--:--:-+*=---==--------=**=-::::--=++**+=-:::::-------::--------------=#%+-=====--====-+#+=====%#+===*#*+======++==========+#==++======+++=+++++++
:::::::::::::::::::::::::::::*+............:-=++++*+++++-:..........::......::...:::.::::::.:::::.==-=.:**:::#=:=+...+%++*+::::::::::::::+====+=+*#=:::=#*---------:-+*+-:.::::----::-+*******++=-::-----:---:----------------------+%#=-===--======+#+====##*##*++*###*++=++**========#+====+==++++++++++++++
:::::::::::::::::::::.:::-::+=:::...::..-=+*++=:::::::-=+**+-:..:..:..:::::::..::::::::::::::::::.+=-+.:+*:::*+-++:::=%+=-*-:::::::::::::+=+++++++*%#=-:-**+-----:--::-+*++--:::::-:::::-----::::----::::-----------------------------*%+--===-======+#====+%==**####%%@@@%##*========*+====+++++=++++++++++++
::::::::::::::::::::::::::.=+::::::.::-+*+-:..............:=+*+-......:::..:::::::::::::::::::::.-#:=*::=+:::+*-*=::.*#++=*-:::::::::::::+=+=++++++**#%*+==**-:-:-------:-+*+*++===--:--:::::::::-:-::::--:------------------------==--+%*-=-====-====#*-===%*=====+++++++=====+=+===+*==+++++====++++++++++++
::::::::::::::::::::::::-:-*::::::::-=+:....:...........:.....-**=:..:....:.::::::::::::::::::::-#++#*:.=*:::+*-*::::**+*+*+:::::::::::::*=++***+=+*===*#%%#%%#*=----::--:::---===+===--::::::::-----::--:-----------------------===--=-=##-===========#+-==#*====++=================+=====+++==++++++++++++++
:::::::::::::::::::::::-::*-:::::.:-=:..:::.::::::.:............:+*+:.::.:**:::::::::::::::::::=%***++..=+:::*+=+.:::*+**++*:::::::::::::*+=++*+===++-::--=+++*#%%*-:==-::::-:::::::::-:::::::--------------------------------------==-===%*-===-======+#===**-============================++=====+=++++++++++
::::::::::::::::::::::::.=+:::::.-+:...:::::.::.::::..............-*%+..:::*#::::::::::::::::-*#+--:*=.:+=:::*+*-:::-++***=#:::::::::::::+*=++++=-=+=:::::------=+%#=-+++=-:::::---::---:-:--::------------------------------------==--==-=%============%====*====================+======++===+==+=+++++++++++
::::::::::::::::::::::-::+::::::*+:.:::::.::::::::.::::::::::::.::..:##-.::.+#=::::::---::-=*#+:.:.-#-.-#--:-#*+.:::-+++**+#-::::::::::::=*=+**++==+::-:-+#++===-:-#%+:-=++++=------------::::--:-----------------------------=--=-------=-=============#+===+==================+==========+=======+++=+++++++
::::::::::::::::::::::::-+:::::*+.::....--==++====--::......:::::--::.=#=::::+##*+++=--=++**+:.:::=*=::*#*::+%*-::::+*+*++=*=::::::::::::-+=+*=+====:::-+*++=++=+=--*@#-::-----:-:-------:::----------:--:-------------==---=-=-===========-===-==-====-*#========================++==============++++=+++++++
::::::::::::::::::::::::-+::::+-.:..:=+***+==---==++****+=-::.....::-==*%#+-:::=*##***+*+-::..:.:+#-..=*-#+:#%+:::::+=+*+*=+*:::::::::::::=**+=====-:--+*++++=++==+=-+%#----------------:----------------------------===----=====--=-=====-==-==========+#============================+=++====+=++=+===+++++++
:::::::::::::::::::::::.=+:::::.:.:+#+-:..............::=++++++++++++==-:=+*-.:::-===+=-:------=#*:.:+#-:=#+@*:::::-*++*++++*::::::::::::--=++=-+=----*++++**+**++=+=--#%*+=---------------------------------------------===-====-==========-===========+#==================================+++++==+=+++++++++
:::::::::::::::::::::::-#+:::::.:+#*-.....................:-===+-::........-*=:.:::::-==++*+++++-..:+*-:::*@#-:::::=+++*+**+#-::::::::::::-:--+**--:-**=+++=+++++=++++==#@%##**+------:------------------------------===-====------=====-====--=========+%===================================++==+++++++++++++
::::::::::::::::::::::-#-:::::.=%#=.:...................:=+=-............::.:=*=:.........::::...:=+=:::::##=::::::+++*++*#+%=::::::::-:::::::-*---:*%***++==========+++=+%@@%%%##%%%%+------------------------------==--=--==+++++=--====-=-==-========+#===========================+======+++=+++=++++++++++
:::::::::::::::::::-:-#-::::.:*%+:::...................-+-.................:..:=++=:...........-=+=:.::::++++--:::-*=+***+*+##+===++**#+:::::-*=:---**==+**#*++=======++=++*%#+--==+*#@+:--------------------------=-=--=++**#*******+==================*#===========================+===++=++++++++=+++++++++
::::::::::::::::::::=#-::::.-#*-:::::::............:..:*-........................-++--==---=++*+-:.:::::==.=*--:::+%%****+*+##*******+*#:::::=+-:::=*##:::-=++++#*++++*###**+++-:-:---+%#--------------===-------==---=+**+==-------=+**===========--===#*========================++=====++++=++++++++++++++++
:::::::::::::::::::-#-:::::+#+:::::....:::............=*............................::--=+++%+:..:::::::-.::*=--:-#%%%#++**+##-:::::::-%-::::+=:---+*%*:-::::::-=+==#%+==--===---------+@+---------------------=---=+**==---====-====-=+#+-=====+=======#+================+++==+========++=+==+++++++=++++++++
:::::::::::::::::::*=::::-##-:::::....::::::...::::.:-#-.::.:::...:....:....:...............%=....::::::::::=*--:+%%%%%%+**+##--::::::-#-:::=*-:-:-##*%:::-:-:::::::=@+:-----:--------=-#%---------------=-------=**+=--=-=-----=======-=#*====+#======**============+==================+==+==++++++++++++++++
::::::::::::::::::=*::::-%%-:::::::::::::::::..:::.::+*.::::.:.::.::.:..::.:...........:...:%+.:.:..::::::::-#+:+#%#%%%%%***+#-:::::::=%---:++:--:=%*-%-:--:--------:+@-----------------=%+--------------+*******+=--====-====-==-========**-==+*======#=================+=================+++++++++++++++++++
::::::::::::::::-:*-:::-%#-::::::::::.:::.::::::.::::*+::::::..:..:..::::..................:%*.::::::::::::-:+*=#%%%%%%##%*##%=:::::::=#:::-*----:=%+:%+:-------------%*----------------=##----------------++****+++===-=-----==-=========-#+==+*=====**======================+=======+====+==+=++++++++++++++
:::::::::::::::-:=*:::-%*::::::::::::::::::::::::::::#=:::::::::...::::::::........:.:::....*#.::::::::::::::-#*-##%%%%#-#@*+**-::::::=#:-:++:--::+%=:*#:-:-----:----:*@+--------------=-+%=-------------------==+****+=------=-=====-======%==+*-===+#====================+==============+==+++++++++++++++++
:::::::::::::-:::+=:::#*::::::::::::::::::::::::::::-#-:::::::::..::::::::::..:..::::....::.+@-:::::::::::::-:**:*%%%%%=:-#@++%=--::::+#---*----=++*-:+%::-------:-----%*+----------------##:------==--------=------=+##=----=======--======#+-*+===+#+============================+=====+==+++=++++++++++++++
--::::::::::::-::*:::+#-::::::::::::::::::::::::::::+*-.:::::::::::::::::::.::..:::::...:::.+@=.::::::::::::-:-*--%%%@*::=%%%=#+:-::-:=#-:-+:-=+=--:--=%---------------+%+----------------+%-------------------=-------=*+=--==-===-=======-#*=#===*%+===========================+========+++==+++++++++++++++
::::::::::::::::=*::=#-:::::::::::::::::::::::::::::**::::::::::::::::::::..::::::::::::::::+@*::::::::::::::::**:*%%%=:-#%-#%#+-::--:=#::===+=::------%=:-------------=%+----------------=%=-------=---------==-===-==--+*#+-==============#***==+*+===-=================================+=+=++++++++++++++++
-:::::::::::::-:=*::#+:::::::::::::::::::::::::::::-*=:::::::.+#-.::::::::::::::::::::::::::=@#::::::::::::::::-*:=%%*-:+@+:-%@+-----:=#:-+*+---------:##--------------=%#------=----------#*:--------------=-===--==--==--+**==============#+#====+===================================+=+++++++++++++++++++++
---::::::::::--:+*:=*-::::--:::::::::::::::::::::::=*-:::::::::*#:::::::::::::::::::::::::::-#%:::::::::::::::::*+:#%+::##:--#@%+-----+%--+=-----------+%=-----------+###*=----------------+%-------------=======--==--=--=-=*#=-===========##+==+#===-=============================+==+++++++++++++++++++++++
::::::::::::-:::++.++::::::::::::::::::::::::::::::*+-::::::::::#*::::::::::::::::+-:::::::::+%-::::::::::::::-:-*:+%--=@=:-+%@@@=:----%--=--------*+=-=@*---------+##+=------------------=-%+------------===========-==-=====+*+-=========*%*=-*%*=================++=============++=+++=++++++++++++++++++++
:::::::-::::::-:+*:*=::::::::::::::::::::::::::::::*+:::::::::::-%*::::::::::::::-#-:::::::-:=%=:::::::::::::-::-*=:#=:*#:--#@@%#%----:%==-------*#*==-=%#-----=-=#%*=---=----------------=-#*---------==--====------=====-===-+#+=========%#-=*#+=+====================+=======+=++====++++++++++++++++++++++
:-::-:----:----:+#-#-::::::::::::::::::::::::::::::*+::::::::::::=%-:::::::::::::=*:::::::::::%+:::::-:::::-:::-:+*-=#=%+::+@@%%+*%----#*--:---=#@%**##+#%=-----=%#+*=----------------------**------====--=---=++++====--====-==+*+====-=+%#=+##=================================++==+++++++++++++++++++++++++
-:::::::-:::::::+#-*:::::::::::::::::::::::::::-::-*=:::::::::::::**:::::::::::::+*:::::::::-:**:::::::-:::::::::=*--+%%-:=%@@%%=-%#:--=%-----+#*%@@%+--=%+----+@%*##*****#=---------------**#----------===*####********+=--=====**+===+#%%*#*+====================+=+=+=+=====+++++++++++++++++++++++++++++++
-::::::--::-::::=*=+:::::::::::::::--:::::::::::::-#=:::::::::::::=#:::::::::::::**:::::::::::+#::-=--::::::------#=--%*--*@%%%*--=%*-=-#%---+@#:#@@@=---%#--=*@%%@%#*++++#%=--------------**#------==+*****++=========+*#*+======**==+##*++=-===-=================+++===+=+==++++++++++++++++++++++++++++++++
--:---:-::::::-:=#++::::::::::::::::::::::::::::::=#=::::::::::::::*=::::::::::::**:::::::::::=#-====-:::::-::----+*-:+*-=%@@%#=--=%@+---##=*%+%=+%@#----*%---+*##+=-------%*------------=-**#=---+****+==----====-===-===+*#*====+#+===============================++=+=======+++=+++++++++++++++++++++++++++
-:------:-::::-:-*++::-:::::::::::::::::::::::::::+#-::::::::::::::+=:::::::::::-#+:::::-::----#+==---------:-=----*=--#=+@%%%*---%#+%=---+*%+:#*-%@*----=%=----==---------*%=-------------**#=-+*#+===--====-===============##**==#*===============================+==+===+++++++=+++++++++++++++++++++++++++
------:::--:-::::++=:-::::::::::::::::::::::::::::+#:::::::::::::::=+:::::::::::-#=:::--:------#%##*+++*+=++=##:---*+--=#%@%%#---#%=-#%----#@*-+%-*@+-----%*---------------=@=----=--------#+#***+=--=-======-=====--==========*##+*#=======-=========================+===++==++++++++++++++++++++++++++++++++
--:-----:--::-:-:+*=-:::::::::::::::::::::::::::::+*:::::::::::::::-*-::::::::::-#=:--:--:---::=+=+*#%%%#*++*%+----=*---*%%%%+--+@+--*@#--+@@%=-%==%=-----*%----------------%*-==----------*=*#=-----==-=--==-====--===========-=**+*=================================+==++==+++==++++++++++++++++++++++++++++
:::----:---:-::::=#+::::::::::::::::::-:::::::::::**::::::::::::::::*=::::::::::=#=:-:::::-:----::::-=+*%%#*#%=----:*=--=%%%#---@#--*%%@+=%@%%*-**+#------=%=---------------#%--------=-=--*=+*-----=--===--==============--======+**================================++==+=++=++++++++++++++++++++++++++++++++
------------:::::-#+::::::::::::-:::::::::::::::::*+::::::::::::::::++:::::::-::=#=::::::------:----::::-*@#%*------++---+%#+--*@=-+%%%@#*%@%#%-*%#+-------#*--------=------*@=------------#++#--------===-=======---=----=========*#===================================+++==+++++++++++++++++++++++++++++++++
---------:::::::::+*::::-::::::--:::::::::--::-::-*+:::-::::::::::::=*-:::::::::=#-:--::--:-----:--------:-#%=:----:=#----*#---%*-=#%@@#%%@%##%+=@#=-------+%--------==-----+@*------=---=-#++#-------====-======--================+#===========================+=====+==+++++=+++++++++++++++++++++++++++++++
----------:--::-::-+-::::::::::::::::::-:::::::::-*+:::-:::::::-::::-*=:::::::::=#-:::--:--::----------:-+##---------*=----#*-+%=-*%%@%%%%%%%%%#=%*--------=%+-------=-----==%#====--==--==#+=#--------====-====--=================+%==============================++++==+++++++++++++++++++++++++++++++++++++
------------------:+=:-::-::::::-::::::-::::-::-:-#+:::::::::::::::::*=--:-:::::=#-:-:----:::-------:-=*%%*-:--------+*----=%+#*-=#@%%#%%%%%%%%%+%=---------*%------------==-#%=+==-===-===#+=#--=----=======--=--=-================#+=============================+++++++++++++++++++++++++++++++++++++++++++
------------------:=+:::::::::::::-::::-:-:::::-:=#+--:::::::::::::-:+*---::::::+*-::::::::---------=#%%+:::---------=#=----*%%=-*%%%##@%%%%%%%%%#----------=%+-----------==-+%++=-=====---#+=#=----==-=-=======-=================+=*+====================++=====+++=+++=+++++++++++++++++++++++++++++++++++++
--------------------+-:::::---:-::::::::-:::----:+#=:-:-:::::::-:::-:=#=--------+*--::::-:--------=*%%+-::-::---------*+----=%%==#@%%%%%%%#%%%%%%=-------=-=-#*--=-----=-=====%*=+-====-==-*==#=-=--===--===========================*===============+====++===+==++=++++++++++++++++++++++++++++++++++++++++++
---------------::-::-=::-:::::::::::::::::::--:-:+#=:::::::::::--::::-*+-:-----:+*-------:::----:=@%*-:---------------*#---=-*@**@%%%%%##%%%%%%%#=----=--===-+%--=----=--====-#%=*==-======#+=%=---=================================+==========+===+======+======+++++++++++++++++++++++++++++++++++++++++++++
------------------::--:::-::----:-:--:--:::::----+#=:::::-::::-:::::::++-:-----:*+:----::::-----:+%-::-:--------------=%=-=--=##%@%%%%%%%%%%%%%%+=---====---==%+----==--=====-*%=+======-==*+-#+-===========================================+=++==+=====+++++====+++++++++++++++++++++++++++++++++++++++++++*+
---------:-------:-:---::--::--:-::-::::---------+#-::-:--:-----:----:=#-:------*+:--::-::------:*#:--------:----------#*-=-=-=%@%%%#%%@*====+*%#+=---------=-##-------==-====+@+++-=======**-#+=================================================+==+==========+++++++++++++++++++++++++++++++++++++++++++++++
-----------------:-------::------:-:::::---::----*#-:-:::::::::::-::---#=:------#=:-:--::-:-----:*#--------------------*#-==-=-+%%@%%@%#%%*=====#%------==-==-+%=--====--======%*=*========**-#*-==========================================+==+=++======+====+++=+++++=+++++++++++++++++++++++++++++++++++++++
------------------------------:-------:-----:--:-*#-:::::::--:-::::--::**:------#-:----:::-------=%--------------------=%+---==-+@%#%@+-=+%%+-=-##-----=======-#+-----=========##=*========#*-**-============================================+==+++=++=++=+=+===++++=+++++++++++++++++++++++++++++++++++++++++
------------------------:--:-:::--:::-:-:-:------##--:::::::----:::-::-=#-----:-*-----:-------:---%*------------------=-#*--====-*%#@@%*=--#@#=-#*-----=---=-=-+%-=--==========*%**+=======#*-*#-=========================================+==+===+=+=====+++===+++++++++++++++++++++++++++++***+++++++++++++++
-----------------:-----:-----:---::--::-:--------##----::::::::::::::---#=--:::=*-----------------##--------------------+#-------=*%%@@@%*=-*@#-%+-------=-=====%=----=========*%**#+======#*=*#============================================+=++=++==+==++=+++++++++++++++++++++++++++++++++++++++++++++++++++
----------------------:-------------------------=##--:-::::::::---------#+:----=*-:---::---------:+%+--------------=----=%+--=--===%@@@%%@%+-=@#%+-------=--=---*#-============+%****======%*=*%=======================================+==++=+=+++==+++++=+=+=+++++++++++++++++++++++++++++*++++++*++++**+++++
-------------------------------------------------##--:--:::::----:::----+*--:-:=*-----------------=@*-----------------=--**---====+*%@@%@%%@#+=%@=--------=-=-=-+%=============+%*+**+=====%*=*%=================================+=====+======+++==+=++=====+++++++++++++++++++++++++++++++++++++++++++++++++*
-------------------------------:--::------:-----=##---::::::----:-----::=#-:--:=*:--::-:----------=%%=-------------------+%=-=----=+#@@%%@%%@@*+%=-------=-===-=-%*-============%#***+=*===%*=*%======================================++=+=+=++++++++++===++++++++++++++++++++++++++++++++++++++++++++++++++++
-------------------------------------------------##---::-:----:----:----=#=:--:++:--::-------------*%*------------------==#*-=--=-=+*%@%%%@%%%@%#--------=======-+%=============%#*##+*@+=+%*-+%+=====================================+==+==+++++===+++++=+++++++++++++++++++++++++++++*++++++++++++++++++++++
--------------------:----------------------------##---------------:------*+:---++:-:---------------+%%=---------------=-==*#-===-===+%%%%@%%%%%@*--------=========%+-===========*#****+@*=+%*-*@+===================================++=++++++++++=++==++++++++++++++++++++++++++++++++++++++++++++++++++*++++*
-------------------------------------------------*#----:-----------------+#---:++------------------=*%+--------------=-=--+#=========*@%%#*#%@@@+---------=---====##=====+======*%****+%#+*##=+%+==================================+==+++++=++++=+==++++++++++++++++++++++++++++++++*++++++++++*+*++++++++*+**
-------------------------------------------------*#=---------------------+#---:+*-----:------------=*%#-----------=------==#*-=-======%%%%@@@%%#+=--------------=-+%+===========+%****+*@**##=+%+=============================++++==+++=++++++++++++++++++++++++++++++++++++++++++++*+++++++++**++++*++**+++++
-------------------------------------------------*#---:-------------------#+---*+:------------------*#%=----------------===*#=-=======*%%@%%%%@*==------------=====%#============##+*#++@#*##=+%+=========================+==+===++====++++++++++=++++++++++++++++++++++++++*+++++++++++++++++++++++++*+++++++
-------------------------------------------------+#---:--------------:----*+:--*+:------------------+*@*------------------==#=========+@%%@%%@@%+-+=---------======+%============##***++@%*##=+%+===========================+==+==++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*++++++++++++
-------------------------------------------------*#-----------------:-----*#---*+-------------------=#%#------------------==#*-=======+%%%%%%@@%*=+*=---=----=======#*===========*%****+%%*#%=+%+==================================++++++=++=+++++++++++++++++++++++++++++++++++++++*++*+++*++**++*++++*++++++
-------------------------------------------------*%=----------------------+%=--#=--------------------*%@=---=-----==---=-==-*#========*%%%%%%@@@#==#+-=-----========*%===========+%****=#%*#%==#+=======================================+=++=++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++
-------------------------------------------------*#-----------------------+%=--#=:-------------------+#@*----=-------------==%+=======+%%@%%%%%%%+=*#==-----===-=====%*=========+=%#***+*@*#%+=#+=================================+++=+++=++=++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-------------------------------------------------+#=-----------------------%+:=#=--------------------=*%%=-----=------=-=-===#*=======+%%%%%%%@%@*=*#+=---===--======*%====++=====##***+*@##%+=#==============================++=++===++=====+++++++++++++++++++++++++++++++++++++*++++*++***++*++++++++++++++
-------------------------------------------------+#+-----------------------#*-=#=--------------------=*%@+---=--==--=---=--==+#=======+%%%%@@@@%%#=+**=---===-========%+==========*%***++%##%+=#+==============+======+==+===+==+===+++==+=+++++++++++++++++++++++++++++++++++++++++++++++***++*+**+++++++++++
-----==------------------------------------------+#+-----------------------**-=#=---------------------+#%#-----==------=-=====#+======*@%%%@#*++*%==+*+=-=----========*#========+=+%****+%##%+=#+=====================++++===++=+=+++++=++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++++++++++++
-------------------------------------------------+#+-----------------------+#-=#----------------------=+%@=---==--=-=--=======**======#@%%%*=---=%*=+#*==-=--=========+%+===+=====+%***++##*@+=#+=======+==========+++++++===+==+++===++=++++++=+++++++++++++++++++++++++++++++++++*++++++++++*++*++++++++++++
-=----=------------------------------------------+#+-----------------------+#-=#-----------------------=*@#-=-------=-===-===-+%======#%%*=-=====%%==+#+----=-=========#%====+=====##*+*+#%#@+=#*===============++===++==+++=++=+++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
---==--=--=--------------------------------------+#*------------------------#=+#------------------=----=+%%=---=----===========#+=====#%*====+#@@#%*=+##=-----==========%*===+===+=##***+%%#%+=#*-===========================+===+++=++++++=+++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++*
=---==-------------------------------------------=**------------------------#+*#--------------------=--==*@*---=-==============##====+##===-*@@#+=%*==***-===-==========*%==+======*#++++#%#%+=#*===================+=======+==++==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++**++++++++++++
=---=--------------------------------------------=**------------------------***#------------------------=+%%===================*#=====#*===*@%=-=-*%==+#*===---===-======%+==+====+*%++***%%%+=#*==========+================+=++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-==----------------------------------------------+#*------------------------+#*#=-----------------------==*@#-==-==============+%+====%*=*%@*=-==-+%+==*#*--=====--======*%==+==+++*%****+%%%*=%#-===============+====+==+===++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++
=====-===---------------=------------------------=**---------------------==-=###-------------------------=+%%=-====-============#*====%*#@%+-==-+#%@+==+##+-===-==========%*=+==+==+%****+%@%*+%%====================+==+=========++++++++++++=++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++
======-------------------------------------------=*#-------==---------------=#%#=--------------------=---++#%#-=================**====#%@#====+#@@@@+===##*+==========+===*%=++=====#*++**%@#**#%*=================+=====+==+++====+++++++++++++++++++++++++++++++++++++++++++++++++++++++*++***++++++++++++++
=====-----=-------=------------------------------=*#-------=+----------------*%#=--------------------=--==+*%%=-================+#+==+#@*====*@@@@%@#===+#**+-=============%*++++=+=##++*+#@#**###================+=====+=====++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++
======--------------=----------------------------=+#=------=#=------=--==-==-+%#----=--------=----==-----==+#@#==================%*=+=##===+#@@%@@@@%====***#==============+%+++====*#***+#@#+*%*%==================+++++===++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++***+*+++++++++++++++++
=====------------=----=--=-----------------------=+#+-------*+------------==-=%#-===-----------=---=-====-=+*%%+=================#*=+=##+=+%@%@@@@@%%+===+##*#+=============##+=====*#+**+*@#+*%+%+=============++======+==+=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*+++++++++++++++
==-=-===--======------------------=--------------=+#=-------=#----==-------=-=##=-------------==-------=====+#%#=================+#===*#=*@@@%%%@%%%@*====*#**#+============+%*+====*%+*+**@#+##+%*============+========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+**+++++*++++++++++++++++
===========--===-----=---------------------------=+#+-------=*+-----------=--=##-------------==---===--=====+#%@*================+%+=+*%#@@%@%%@@%%*##====+***#*+=====+====+=#%+====+%*++++%%+##+%*==========+=+=++==+=+++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++*++*++++++++++++++++
================--------------=---=---------------=#+--------=*-==-----------=*#---==-----==-=---============*#%%=++==============#*==*@@%@@%@@%%#=-*%=====*#**#*+====++====+*%*====+%+*++*%%*##=%#============+++===+=+++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
====-=========---==------==--=--===----=----------=#*---------#=----=---------*#---*=-----=--================+##@*=============++=##=++@@@@%@%%#+-==+%+=====***###***++++++***#%+===+%*+++*%%*##=#%===========+=+==++==++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
========-=--=--=----------=-==-==----=------------=##---------*+----------====*#-=-*=------====-=-==--========*#%%+===============+%+==#@@%@%%*=-====%*=====+*#**#####**###**+*%*++==%*+++*%%*%#=#%============+======++++==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=================-----==-==--======---------------=##---------+%=------=-=-===*#=--+*-----====-===============*##%#===============+#*==*@@@@%*======+%#=+====*##**########%###*%%+===#*++++#%#%*+*%+================+++====++=++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++
==============------=-====-==--====-----------=----*#=----=--=-%*-==----======*%=--+#=========================+**%%+=+=============*#==*@@%%+=====#%%%%=+====+*#***##%#########*%*=+=*#++++#%##*++%+=============++==++=+++=+++=+=+++++++++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=======-==========----===-=======------------------*%=------==-*%*+-===-==-=--*#=--=#+-=================-======*##%%+==============+#==+@%%+====*%%+=+%++=====*###*##***%#####*+#%===*#=+++*%##*+=%*=============+==+===++++++++++++==+++++++++++++++++++++++++++++++++++++++++**++*++++++++++++++++++++++++++
===============-============-=--==-=-===-----------+%+-----==--=%%*===---=-===+#====#*-========================+*##%*==============+#==+%%+===+%@#===+%*+=====+##**#####%*#####++%*==+#++++*%##*+=##=+=========+===+++++=++++++++++=+++++++++++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++
======================--====--=====-------------=--+%+---==-====###+====-==---+#====*#==========================*###%+==============#+==##===+@%+=====##+=====+*#**###*####*###+=*%+=+#+++**%#**++##=+======+=++++==+==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=====================--========-----=--------------=%*--=-======+%*#===-=======#====+%+=========================+###%#==============**==*#==*@#======+%#++=====+###*#*#####***#+==##=+%+++**%%#*++*%++=======+++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
==============================--==-=-----------=-=-=#*==--=======%##*==========%+====%*==========================*###%+=============+#++*%=*@*==+==+#%%%*+======*##*##**#####*#+==*%*+#*++**%@%*++*%+++==+++==+==+++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*
=============================-----==----------=----=##+==========*%##*=====-===%+====##==========================+###%%=========+===+#+++%#@+====+#%@@@@*+======+###*#**###*#**+==+#%=##++++%@@#++*%+=========++=++==++++++++++==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
================================-=---==-------=---==##+===========%%%*+=======+%*====*%+==========================*###%+====+========#*++%@+====*@@@%%@@#+======+*##*##**#*###**===+%**#+++*%#%@*+*%+========+++=+===++++=+++++==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
====================================--==--==---=====##*===========#%#%*========%+====+%*==========================+###%#==========+++**++##=+==#@@%@@@@%%+======++**#*#######***===+*%*%+++*%##@#+*%+======+==++++===++++=+++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++
====================================--=--=----======*#+===========+%%%#+=======%*=====##+==========================*###%*=========++=+#++*%===#@@@@@@%%%%*======+++*#*####*##***===++###++++%##%@**%++========++++=+++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
===================================--=----====--====*%*+===========#%%##=======#*=====*%*==========================*####%===========++%*++%++%@%%@%@%%%%%*=======++*##*#*##**#*++==+++%%*+++%%*#%%*%++===+========+++++=++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
===+==============================-==-=-=---========+#*+===========+%%%#*======#*=====+%*==========================+####%*======+==+=+%*+=%*%@%@@@@%@%%%%#+=======++***##*##***++===+=*@*+++#%*#%%#%+=+====+=====++==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
==============================-=====------==========+%*+============%##**+=====#*======##+==========================*####%+==+++==++++##+=#@%%%@@@%%@@%#%#+========+***##*##***++==+++*@**++#%*#%%@#+=========+==+++=+=++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
==++============================+====----==-=========#*+============*%###*=====##==+===#%*==========================+#*##%#====++++=++*#+++@@%%%@%%@@%%%%#+========+*#**##*#***+++=+++*%*+++*@##%#@%++=====++++======++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+=====+=====================================-========%#+============+%*###+====##======*%#+==========================*##%#%*=+====+===*%+++%@%@@%%@@@@%%%#++========+*#*##*##**+++=+++*%*+*+*@##%#*@*=+==+++=+==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++=++===============================================##*=============###*#*====##=======#%+==========================+#*#*##++==+====++#*++#@@%%%%%%%@%%%%*+=========+#**#*#**#+++==+++%#****@####*#%=+==========+++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++=+================================================+%*+============*#*###*===##=======*%*=======================+===*#*#*%*=+===+++++##+=*@%%%%@%%%@@%%%*+==========+#*##*#**++++++++%#*+**%%**#%*%*=+++=====+=+++++==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++===================================================%#+=============%*###*+==*#=======+##+==========================+#####%+++++=++=+*#+=+%@@%%@%%%%%@%%%*========+==***##***+=++++++%#**#*#@**##**@++====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++====================================================##+======-======#####**+=*%=======+*%*+============++========+++=*##%#%*======+==+%+=+*@%@%%%%@%%@@@%*+==========+#*##***+=++++++%#**##*@#*###*%#=+=++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
==++==================================================*%+=====--======+%*###++=*%========+##*+=========+=+===+++=+=+===+#*###%+=+===+==+%++++#%%%%%@@%@@#%%#*===========+**###*++++++++%###*##%%**##**%*=+====++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++=======================================-===========+%*==============%#####++*%+=======**%*+==========+=+++===========*#*#*%#=++=+==++%+=+++%@@@%%@@@*=*@##===========+*####*++++++++%*###******###*#%+====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++====================================================#%==============*%*##%#*#%+=======+*#%*+====+===++===++++=+++==+=+#####%*++==+++=#*=+=+*@@%%%@%+==*@##+===+=======+*###+++++++++%#*##*##***####*#%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++
++++===================================================*%+==============%#####*#%+======+=*#%#*+=======+=+++====++======+*###*%#=++++===##=+=+=%@%%%%+===+%%##+=++===++=++++*#*+==+=++=%%**#####*+*#*##*%#=++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++==================================================*%*==============*%####*#%+========+*#%#*+=+=+===+++++=+++++++====+####*%*++++=+=*%=+===+@@%%+===+=%%%#*+++==++=++=++++++=+=++++%@%*##*#***+#####*@*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++
++++++=================================================+%#=============+=%%#####%+=========*#%%#*+++=++=++=++=++=+=+++++++*#*#*#%+++=+++*%+++===#@%+=====*@%%%*#+++====+=++++===+=+++++%%%%*#####***#*#*##%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++====================================================+#%============+==*%#####%==========+#####*+++++=+=+++++++++====+==+####*%*+++++++%+=+===+@#=+=+=#%*%#%#*#+=++==+=++=+===+=++=++##*%%*#####*+*###**%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++=+==============================================+#@*=====+=========%###*#%+==========*###%#*++=++++++=++++======+=++*###*#%+++++++#*=++++=*@+=+=#%+=%#%%##*+++++=====+====++++++##**@#####**+*#*#*##%*+++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++==============================================*@#=++=+=+++====+=*%##**%+========+=+#%#%##++++++++++====++++++=++++####*%#=++++=##=++++==#%+=*@+=+#%#%%#*#+===++===+==+=+==++=#%*+#%####***+**#**##%++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++
+++++++==================+=============================+#%%=+#+==+=========%%###%==+======+==*##*%#*+=+++=+=+=======+==++++++##%#*%++++++##=++++++=%#=@*=+++%#####*#*+=+=+=++++==++==+=*%**+%%###***++**#***%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++==============+==+==============================*%%*=%*=+==========#%###%+====++++===+##%#%#*+++==++=+=+++=======++++*###*##++++=*%++++++=++%%%=+++%@%#%%#####*++==+++==+++++++*%**+*@####**++**##***@*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*
++++++==========+=====+=========================++======*%%#=*#===========++%##%%+============*#%#*##*+=++===+++=======+===+++####*%*+++=+%++++++++=*@*=++%@@@##%######*++++==++++=++++*%***+#%####**++******#%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++=+++====+===============================+===++=*#%%+=#*============#%*%%+========+===+##%#*%%*++++++=++++++++=====+++*#####%+++++%*+++++++++#%++%@@@@%*####%#*#*+++++++===++++*%##*+*@#*##*#*******#*%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*
++++++++++++++++====++++===============+============++==*##@*=*%++==========+%*#%+=++=========+*#%%##%%*+++==+++++=+===++++++++###*#%#++++%*=+++++++++%#*@@@@@@######%###***++++++=+++++%##*++%%###*#*++***#**#%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*
+++++++++=+++=+++++++===++=====+======++=====++====++===#**%#==##=+=+====+=+=#%*@*============++#%%###%%*++++++++++++=====++=++*###*#%+++=#*=++++++++++@@@%%%@@%#%%####%%#**+++++=++++++%##*++#%###*#*++******#@*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++===++++++++=======+========+=====+===++==+==+=**+%%+=+%+==++======+=%#%*===+=========+#%%%###%%*=+++++++++++=++=++==++**###%#=+=##=++++++++++#@%%%%@@@%#%%#%#%%##***++=++=++++##*#++*%######*+++****#%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++=++++++++++=+======+=+===+++===========+++==+=#*+#@*==%#+==+===+===++#@#===========++=+##%%###%%*++++++++++++=+=+++++++*####%+++##++++++++++++#@%%@@@%@%#%#%##%%##***+++++++++##*#++*%%#####*+++*****#@*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*
++++++++++++++++++++=====+++===+=======+====+====+=====+%*+*%%==*%++=====++====*@*====+=====++===*#%%#####%*=++++++=++++++++++++++*##*%#++#%+++++++++++++%@@@@@@%@%%%#%#%%%%#*#*++++++++#%##+++#@####**++++*****%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++=++++====++++=====+===++==+=========+=+#*++#%+=+%#+====++=====+%*==++=======++==+##%###%##%*=++++++++++++++++++++*####%++*%+++++++++++++*%@@%@@%%@%%%#%%###%###++++++++#%#%+++*%%##**#*++++*****@*+++++++++++++++++++++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**
++++++++++++++++++++++=++++++++=+=+=++==++===+=========*#++=#@*==+%*+=+++==+++=+%#==*%*+======++==*#%%###%##%*+++++=++++++++++++++*####%#=*%++++++++++++++*@%@@@@@@@%#%%%####%##*+++++++#%##*+++%%###***+++++***+%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++==+++==+==++++=======++==+++++=##*+=*@#=+=##+++++=+++=++%#=+#%%+=+========+*#%#%%%%##%#+++++++++++=++++++++#####%+*%*++++++++++++++#@%@@@@%%@%#%%%##%%%#*+++++++#%##%#++#%#####**+++++****@*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++=+++++==++++++====++++++%**+=+%%+==+%*+=+=+++==++#%==*%%*=++=+++++++*#%%#%###%%%#++++++++++++++++++++####%**%*++++=++++++++++%%%@%%@@%@%%%%@%%%%##*++++++#%###*+++%%*####*++++++**+#%+++++++++++++++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++=++++++++++++++==++++++++++=*%++++*#%+===*#==+++==++++#%++*%%#+++=++++++++#####%#####%%*++++++++++++++++++*###%#*%#+++++++++++++++*@@@@@@%@@@%%%%%%%#%%#*+++++#%#%%#+++#%*###***++++++***%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*
++++++++++++++++++++++++++++++++++++++==+=++++++++==+=#%++=+##@*===+%+=====+++++#%++*%%%#+=++=====++**########%#%%#+++++++++++++++++**##%%#%#++++++++++++++++#@%@@@%@@%@%%##%%#%%#++++++*%##%#+++*%######**++++++*+#%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*
+++++++++++++++++++++++++++++++++++++++++++=+==+++++++%#++++##%#==++%#===+++++++*@*++##%#+++==++=++++*############%#++++++++++++++++++*#%%%%%+++==+++++++++++*@@@@@@@%%%@@##%%%#%#++++++*%####++++%#######*+++++++**%#+++++++++++++++++++++++++++++++++++++++++=+++++++++++++++++++++++++++++++++++++++++**++*
++++++++++++++++++++++++=++++++++++++++++++=++++++++=+%#++++##%%+=+=*%*+==++++++*@*++*#%%*+==++++++=+*#############%%#*++++++++++++++++*##%#%+++++++++++++++++#@@%%@%%%%*#@%%%%#%%*+++++*%#%##*+++*%#####**+++++++*+#%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+*
++++++++++++++++++++++++++++++++++++++++++=+++++++=+=+%*++++##%%+=+=+%##*=++++++*@*+++#%##+=++++++++++#######%######%%%#++++++++++++++++##%#%*++++++++++++++++*@@@@%%%*+++#@%%#%#%#+++++*%####*+*+*%######*+++++++++*%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**
+++++++++++++++++++++++++++++++++++==+++=++++++++++++*%*++=*##%%*+===*%#**++=+++*%#+++*##%*+++++++++++*##%####%#######%%%*++++++++++++++*#%#%*++++++++++++++++*%@@%%%*+++++%@%%%##%*++++*%###**++++#######**+++++++++#%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**
++++++++++++++++++++++++++++++++++++++++++++++++++++++%*++++**%%*+=+++%#**+++++++%#++++####*=++++=+++++*######%#####%%%%#%*++++++++++++++*#*%*++++++++++++++*##*%@%@*++++*%%#@%%##%*++++*%#%##**+++#%*####***+++++**#@@@#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*
*++++++++++++++++++++++++++++++++++++++++=++++++++++++%+++++*#%%**=+++#%#**++++++%#++++*####++++++++++++##%#%%%####%#%%%##%*++++++++++++++#*%#++++++++++++*##%###@%%++++#%*++%@#%##+++++*%#%%#***+++%*#*##***++++++*%%*#%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**
+*+++++++++++++++++++++++++++++++++++++++++++++++++++*%*++++*#%#**++++*%#*#*+++++%#+++++#%##*+++++++++++*##%%%%%%##%%%%%%##%*+++++++++++++###%*****++++**#%%%%%%#%@#+++%%+++++%@%%#*++++*%####***+++%######***++++**%%**%#+++++==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**
*++*++++++++++++++++++*++++++++++++++++++++++++++++++*%+++++*%@%*+=+++=#%###*++++%%++++++####++++++++++++*###%%#%###%%%%@%#%%*++++++++++++**#%*#############%%%%##@*++#%+++++#@@@%%*++++*%####*+++++#%*#*##***++++++%%++##++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**
***+**+++++++++++++++++++++++++++++++++++++++++++++++*%*++++#%%*++++=+++%#**#*+++%%++++++#%##+++++++++++++*###%##%#%%%%%#%####++++++++++++*##%*#***#####%######%%#%#**@++++*@@@@@%%*+++++%####*+++++*@***###***+++++#@++*%++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***
******+*+++++++++++++++++++++++++++++++++++++++++++++*%#++++*##+++++++++#%####++*%%++++++*%##*++++++++++++*###%###%#%%%%%#%####++++++++++++*#%*##++++***#%#####%%%%@*%#+++*@@@@@@@%*++++*%###**++++++%#**###***+++++*%#++%*=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***
**++++++++++++++++++++++++++++++++++++=+++++++++++++++%%*+++***+++++++++*%####*+*%@+++++++####+++++++++++++*###%##%%%%%%%%%%#*%#++++++++++**#%*###*++++++*######%%##%%+++#@@@@@@@@@*++++*%###**++++++#%*#####**+++++*%%++##=+++=++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****
**++**++++++++++++++++++++++++++++++++++++++++++++++++#@*++++**++*+++++++#%%###*+%@+++++++*###*+++++++++++++##*%####%%%#%%%%###%*+++++++++**#%**####**+++++**####%%*@#++#@@%@@@@@@%%*++++#####*++++++*%*#*###***++++*#@*+##==+==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***
*****+*+++++++++++++++++++++++++++++++++++++++++++++++*%#++++++++++++++++*%%%%%#*%@*+++++=+####++++++++++++++#######%#%%%%##%##%%+++++++++**#%*+*#####**++++++***###%#+*@@%%@@@@@@@@%++++#####*+++++++%#**####**++++**@#+*%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***
******+++++++*++++++++++++++++++++++++++++++++++++++++*#%*++++++++++++++++%%%%###%@*+++++++*###*++++++++++++++###%#####%%%##%%%#%#+++++++++*#%++++######*++++++++**+#%*%@%@@@@@@@%@@@*+++#%##**+++++++#%***###***++++*%@++%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****
****++*+******+++++**++++++++++++++++++++++++++++++++++*%%++++++*+++++++++#%#%%#*%@#++++++++####++++++++++++++*%#####**######%%%#%#******++##%+++++*#%####*+++++++*+*%%%@@@@@%@@%%@@%%+++#%##**+++++++*%***##*#**++++*#@#+##=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*+***
***+******+++*++*+++++++++++++++++++++++++++++++++++++*+#%*++++++++++++++++#%%#%#%%#++++++++*####++++++++++++*+#######*###%%%#%%#%%****+++**#%*+*++**##%####*++++++++#@%@@@@@%@@@%%#+%*++####*#*+++++++%#*###*##*+++++*%%+*%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++*
***+****+++++**+++++++++++++++++++++++++++++++++++++++*+*%#*+++++*+++++++++*%%#%%%%%++++++++*#####+++++++++++++*#######*#######%%%%#*++*#****%+++++++*##%#####*++++*+*%%@@@@@@@@%*+++*%++#*###*++++++++#%**#**##**++++**%**%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****
**********+**+++++++++++++++++++++++++++++++++++*+++++*++#@*+++++*++++++++++#%%#%%@%+++++++++*####++++++++++++++*%##########%%##%%%%#***%*+*#%*++++++++#%%##*##*+*+++*%@@@@@@@@%*+++++%*+#####*++++++++*%#*#**##***++++*%%+%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++*
*********+***++++*++++++++++++++++++++++++++++++++++++++++%%+++*+*++++*+++++*%%#%@@%*+++++++++##%%#+++++++++++++*%%########%%%%#%%%%%#++*%+*#%*+*++++++*#########*++**#@@@@@@@%*+++++*#%+#*####*++++++++%%**##*##**++++**@**%+++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++*+**+**
*************+++******++*+++++++++++++++++++++++*+++++++++*@#++++*+++++++++++*###%%@*+++++++++*#%%%*++++++++******%##%*#%#######%%%%%#*+*%**#%++++++++++*###%##*##*+*+#%@@@@@%*++++*%%#%*#####*+++++++++#%*##**###**+++*+%#+%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++*+
************+*****++*++++++*++++++*++++++++++++++++++++++++#@*++++*+++++++++++*##%%@#++++++++++*##%#+++++++++++++*#%%%#########%%%%#@##*+#%+#%++++++++*++*#########*++*#%@@@%*+++*%@#++*%###***+++++++++*%**##***#*#*++*+##+##++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*+*
*****************+***++++++++++*+****++++++**+++++++++**++++#@*++**+++++++++++**%##@#+++++++++++#%##++*++++++++****%%#####%####%%###%%#*+*%*##++*+++*++++**########%#**#%@@@#+++#@@*=+++%####*#++++++++++%#*##**###%%++*++++#%+++++++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*
************+++**+***+++*+++*++++++++**+*+++++++++++++++++++*%%#*+++++++++++++*#%#%@%+++++++*+++*###*+++*+++****+**#%%%%%%@%%####%%%%%##*+####++*++++++*++**#######%##**#@@%+++#@%+=++++#%###*#*+++++++++#%*#*#*###*%#+++++**%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**
*************+*********+**+**++++++++*++**+++++++**++++*+++++*@#****++++*+++++*%%#%%%++*+++++++*+*##*++++*+********#%@@@@@@@@%*###%%%%%##**%%#++++++++++++*+*##%%###%##*#%%*++*@%+++++*+*%%##***+++++++++*%###***####%*++++++%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++
*********+***************+*++***++**+++**+++++++++++++****++++#@#**++*+++**++**%##%%%*++++*+++**+**#*++*+********#@@@@%%%%%@@@####%%%%%##**#@#+++++++++++++++*##%####%%#*%@#+*@@*++++++*#%%###*+++++++++++%###****##*#%++++++#%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++**
**************+************+*******++*++*+++++++*+++++**+++++++*@%*+**+**++***#%#%@%@#+++++**+++*****+*+*****+*#@@%#*#*#*++*+#@####%#%%%####%#**++++++++++++++*#####%%%%##@%*%@*+*+++*#@@@@###*+++++++++++%%*##*########+++++*%*=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
**************************+*********+*****+++++*++++++++++++++++#%@#++**++****#%#%%%%#+++*+***++**+**********#%%#**+++++++++++%%###%%#%%####%%**+++++++++++++++*######%%%#%%%@#+*+++#%@@@@@%##*+++++++++++#%*##***#####%++++*+#%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++*+
***************************************+*+++***++++++++++++**++**#%%%#*+**+***%##%%%%%*+++*++*+***++*+*****#%%*+++++++++++++++*%####%##@%####%**++++*+**+++++++*########%##@@#++*++#@@@@@@@%#**+++++++++++*@#*###*#*##*#%+++++#@*++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++*++
**********************************+***+***+**++++++**+++**++***+**#%%%%*****+*%##%%%@%+*+++*************+*#@#++***+++++++++++**%%###%%#%%####%***++*++++++++++***####%#%#%#@%++**+#@@@@@@%%%#*++++++++++++*%#*###***##**%*++++*%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++
***********************************++*********++++********+**+++***#%%%%#*++*#####%%%%******+****+***+**#%%*+++++++++*+++***++*#%###%%#%%%###%%+**+++++++++++++***###%%%###%%*+**#@@@@@@@%%@#**++++++++++++%%*##*#**###*#%++++*#%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*
***************************************************++++********+**++*%%%@@#**%####%%%@#+*++**####%###%%%##*+++*+++++++++****+***%%###%%#%%####%***+*+++++**+*++****######*%%%***#@@@@@@@@%%@#++++++++++++++#%**#########*%*++*+#%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++
*************************************************+*+**+***************###%@%#%#%##%##@#++*%%@%%%%%###**+++**++++*+++++*++++++**+%%###%%#%%%###%#+****++++**+++*+***####%%##%%%*#@@@@@@@@@@%%%++++++++++++++*%**#######%##%%++*+*%+=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*************************************************************************##%%%####%%%%%**%%%%#***+++++++*+++++++***+++*+++++***+#%#%%%%#%%%###%%+*++++++++++*******#*###%%#%%%#@@@@%@@@@@%%%%++++++++++++++*%#*#########*#%*+*+*%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
******************************************************+************+*******#%%###%%%%%%*****%*++++++*+++**+++*+++**++**++******+*%##%%%%%%%%##%%***++++*+*++*++***+*######%##%@@@@@@@@@@@@%%%*+++++++++++++*%%*#*##*####**%#++++%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
****************************************************************************%%#####%%%@#+**+##+*+++******++*+++*+*+**************%%#%%%%%%%%###%**++*+++++++++++**+**####%%##%@@@@@%@@@@@%%%%*++++++++++++++#%**#######%#*#%+++*%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++
***************************************************************************#%#####%%%%%%+**+##*++***+++****+******+*+*********+**%%####%%%%%%##%#+***+**++++*+****+***#*#%%###@@@@@%@@@%@@%%%*++++++++++++++#@#*#**#**###**%*++*%*=++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
***************************************************************************%%%#####%%%%%*****%*+***+*******+*********************#%#%#%%%%%%%%#%%+**+**++******+****++**##%%##%%@%@%@@@%@%%%%#++++++++++++++*%#*###**#####*%#+++%*+++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
***************************************************************************%%######%%%%%#****%*+**+*******+**********************#%%%#%%%%%%%%##@***+++++****++*+**+++++*##%%#%%@%@%@@@@@%%%##++++++++++++++*%#***#***####*#%++*%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**
*#*************************************************************************%%#*####%%%%%#****#%***+****+++***********************#%%%%#%%%%%%%##@#****+******+**+**++*+++**%%##%%%%%@@@@@%%%%%+++++++++++++++#%**#*##*#####*%*++##+++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++*++*+
##*************************************************************************@%#######%%%@%*****%#**********************************%%%%##%%%%%%##%#**++++++**+**++**+++++++*#%##%%%%%@@@@@%%%#%*+++++++++++++++#*****#**####*%%++#%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++
####***********************************************************************%%###*###%%#%@******%**********************************%%%%%%#%%%%%%%%%+**+++++++**++*+*+++++++++*#*%%@@%@@@@@%%%#%*+++++++++++++++****#*##**###**%++*%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
**************************************************************************#%########%%%%@#+****##*********************************%%#%%%#%%%%%%%%%****+**+**+*+*+*#*++**+++++**%%@@@@@@@@%%%%%#++++++++++++++++***#*###**###*%*++#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
**************************************************************************#@#%######%%%%%%******%*********************************%%%%%%%%%%%%%%#@*+**++++*++++*+***++*++*+***+%%@@@@@%@%%%%%%#+++++++++++++++++*#***###*****%#++**++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++
**************************************************************************%%##########%#%%******##+*******************************%%%%%%%%%%%%%%%%#+*+****++++*******+++++***+*#@@@@@@%@@%%%%%#+++++++++++++++++*#*****#*+***#%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
**************************************************************************%%#%#######%%%%@#******%********************************%%%%%%%#%%%%%%%%%****+*+++**++*+**+++*++*++++*@@@@%@%@@%@%%%#+++++++++++++++++**##***##****#%*+++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++
**************************************************************************%%#########%%%%%%******%#*******************************%%%%####%%%@%%%%%****+*++**+++++**+***+*+++++*@@%@%@%@@%%%%%#++++++++++++++++++*+**#****+*#*%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
**************************************************************************%%#########%#%%%%*******%*******************************@%%%##%##%%%%%%%%#+****++***++++*********+**+*@@%@%%%%@%%%%%*++++++++++++++++++*+**#*****+**#%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#*#***********************************************************************%%######*##%#%%%%#******%#******************************%%%%##%%##%#%%%#%#****++*******************++*%@@@@@@%%%@%%%*++++++++++++++++*+*++***#****+**%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#************************************************************************#%##%#####*#%#%%%%%******#%******************************#@%%##%%##%%%%%##%*****++**++*+******+*+**+***%@@@@@@@%%@@%%*++++++++++++++++*+*+++*#*#*+**+*##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#######******************************************************************#@%#%##########%%%@*******%#***************************##%%%%###%##%#%%%##%*****+***++*******++***++*+**#%%@@@@%%%@%%#+++++++++++++++++++++++*#*****+**%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#######*****************************#************************************#@%*%%#######%%%%%@#******#%***********************#%%%%#########%#%%%%#**%#+**************++**++++**+++++**#%@@@%@%@#+++++++++++++++++++++++******++++#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#########*****#**********************************************************#@%#####%#####%%%%%%******#%*****************##%%%%##*******#######%###***%#****************+*++++**++++++++++##%@@@@#+++++++++++++++++++++++++****++++*#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
############**#***************************#*******************************%%#######%####%##%%#******%#***********##%%%##*****+*****************+***#%+*********+****+*+++++*++++++++++++++#@@%#++++++++++++++++++++++++++**+++++*#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
###############**************************************************#********#*##*###*#######%%%%******##********##%%##******************************+#%+**+**********++++++++++++++++++++++++*%@#++++++++++++++++++++++++++*#*+++++*+++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++
################*********************************#***************************#*###**##%####%#@#******%#****#%%%#************************************#**++**++****++++++++++++++++++++++++++++*%++++++++++++++++++++++++++++*+++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
####################*********************#********##*************************#***###**#%###%#*#******####%%##************************************+***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
####################*#*************#*************#**********************************#####**##******************************************************++++****+*++++*+++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#######################******************************#********************************##**********************************************************++*+***+++*+++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++
########################*#*********************************#***************************#********************************************************+++***+++++++++++++++*+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
##########################**************************#*****#*********************#************************************************************+*+******+*++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
##############################***********************************************************************************************************************+++++**+**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
###########################***##***************************************************************************************************************+*********+***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#################################********************************************#***********#***********************************************************+***+++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#################################*#**********************************************************************************************************************+**+***++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#######################################************************************#*****#***************************************************************************+**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
########################################***********************************#****##***********************************************************************+*+++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#########################################*#**************************************##********************#***********************************************++++++**+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#############################################************************************#*********************#********************************************+++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
##############################################**##*************************#**************************#**********************************************++++**+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++
##################################################**********************##*******#*******************#**#********#**********************************+**++*++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
####################################################**************#************************####*****##*********************************************++**+***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
######################################################********************************#***##******##*#********#*#************************************+****+*++++++++++++*++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#########################################################********##********************#****##***##**#*######**##***#*******************************+****+**+++++*++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++