*****************++++++++=======-----------:::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:-------------------====-==============++=++++++++++++****************########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
***************+++++++=======-----------:::::-::::::::::::::::::::::.:::::::::::....::::::::::::::::::::::::::::::::--:---------------------================+==++++++++++++*******************####################%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
*#***********++++++++=======---------::::::::::::::::::::::::::.::.........:..........:...:.::::::::::::::::::::::::::::---------------------=-================+++++++++++++++******************##*#################%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
************++++++++=====----------:::::::::::::::::::...........................................:::::.::::::::::::::::-:::---:----------------=---===============+++++++++++++*****************#**#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
************+++++++====---------:::::::::::::::::::.................................................:.:::::::::::::::::::::-:::---:------------------=============+==+++++++++++*++********************###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
**********++++++======------::::::::::::::.:::...........................................................:...:::::::::::::::::::--::-------------------====-=============+++++++++++**+******************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
********++++++=====----------::::::::::::::::............................................................:.:....::::::::::::::::::-::-:::----------------=-===============+++++++++++++********************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
********+++++=====-------:::::::::::::....................................................................:....:.::::::::::::::::::::::::------------------==-===============+++++++++++++++******************#*###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
********+++++=====------::::::::::::..........................................................................::.:.::.:::::::::::::::::::::::-----------------=---=============+++++++++++++++++****************#*##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
******++++++=====-----::::::::::::..............................................................................:...:::::::::::::::::::::::::--------------------==-============++=+++++++++++++++****************####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
*****+++++======-----:::::::::.......................................................................................:....::.:.::::::::::::::-::::------------------=--==========+==+=+++++++++++++++++****************################%##%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
****+++++=====------:::::::................................... .. ..................................................:........:::::::::::::::-:::::---------------------==============+==+++++++++++++******************####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@
***++++======-----::::::::.................................... ... . ......... ...............................................::.::::::::::::::::::::::-------------------=-============++++++++++++++*****************#######################%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@
*+++++=====------::::::::............................... . .. ....... . ... ................................................:::::::::::::::::::::-:::-----------------=============+++++++++++++*++*****************##################%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@
++++++====------:::::::.:................... ... .. .. .. . . .........................................::::::::::::::::::::::::::---------------=================++++++++++++++********************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@
++++======-----::::::::...................... .. .......................................:.::::::::::::::::::::-:::---------------------==========+==+++++++++++++******************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@
+++=====-----::::::::....................... .. ...................................:...::::::::::::::::::::-::----------------=----============+++++++++++++*+++**************#**#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@
++=====-----:::::::::................ ..... .. ...................................:..:.:::::::::::::::::::::::-------------------================+++++++++++++++********************#################%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@
+=====-----::::::::................. .... .......................................:..::::::::::::::::::::::::::--:---------------=-============+==+++++++++++++++**+****************#####################%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@
=====----:::::::::............... .. . .. ......................................:.:::::::::::::::::::::::-::-----------------=--===============+++++++++++++++******************#**##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@
===------:::::::................. .. . ..... ....................................:..::.::::::::::::::::::::::----------------=--===============+++++++++++++++*+**************#*****####*##############%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@
==------:::::::................. .. .. ........................................::::::::::::::::::::::::----------------=-------=============+=++++++++++++++++*+****************##*##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@
=-------:::::::.................. . .....................................::.::..:::::::::::::::::::::::----------------------===========++=+=+=++++++++++++++*++*****************#*#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@
=-----::::::::.............. .. . ........ ..................................::::::::::::::::::::::::--:-------------------==-==============+=+++++++++++++*+**+***+************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@
-----::::::................. . ........................................:.::::::::::::::::::::-----:---------------------=================+++++++++++++++++*++**************###*##############%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@
----:::::::................. ... ...................................:.::::::::::::::::::::::::--::---------------------==-==============++====+==++++++++++++*****************###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
---:::::................. . . .. ................................::..::.:::::::::::::::::::::-------------------------==-=================+++++++++++++++++++*+**************##################%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--::::::............. .. .. .. ... ......................................:..::::::::::::::::::::::-:--:--------------------===-===============+==++++++++++++++++++**+**************#**###############%%#%%%%%%%%%%%%%%%%%%%%%%%%%
-::::::................ .. . . ... ......................................:::::::::::::::::::::::::::::------------------------===================+++++++++++++++++++*****************###################%%%%%%%%%%%%%%%%%%%%%%%%
-::::.................... . .... ......................................::::.:::::::::::::::::::::::::---:---------------------=--=================+++++++++++++++++*****************#**###############%##%%%%%%%%%%%%%%%%%%%%%
::::.............. .. ... ......................................::::::::::::::::::::::::::::::::::----------------------=-=======-==========+++++++++++++++++++++******************#################%#%#%%%%%%%%%%%%%%%%
::::.............. . .........................................:.:::::::::::::::::::::::::::::--::-------------------==================+=+==++++++++++++++++*+*+**************##*#################%#%%%%%%%%%%%%%%%
:::::........... . .. .....................................:::..:.:::::::::::::::::::::::::::-:---------------------=-=--================+=++++++++++++++++++++****************####################%%#%%%%%%%%%%%
::............. . . .. ..................................:........:::::::::::::::::::::::::::::-----------------=----=----===-============+==++++++++*++++++++++*****************#**####################%%%%%%%%%%
::............. . ......................................:::.:::::::::::::::::::::::::::::-:---------------------------=====-===============++++++++++++++++++++++*****************###################%%%%%%%%
::.......... . .........................................:....::.:::::::::::::::::::::::::::---------------------------=--===================+++=++++++++++++++++*****************##**##################%#%%%%
:............ . ..............................................::::::::::::::::::::::::::::::-:-----:--------------------=-==-================+++++++++++++++++++++*+*+*******************#################%%%%
.......... . ......................................:..:.:::::::::::::::::::::::::::::::::::::---------------------------==================+=====+++++++++++++++++++*++*************###################%%%%
......... .. .........................................:....:....:::::::::::::::::::::::::-:::-:----------------------==--=======================++++++++++++++++++++++****************#################%%%
......... . ...................................................::.:::::::::::::::::::::-:---:-:--------------------------==--===================++++=++++++++++++++++++***************##*#################
......... . . ..... ........................................:.:::.::::::::::::::::::::::::-::-:-------------------------=--=-====================++====++++++++++++++++++******************###############
....... .. ..... .........................................::.::::::::::::::::::::::::-::::------------------------------===================++=+=+++++++=++++++++++++++****************###############
........ ...................................................::..::::::::::::::::::::::::-:::-----:--:------------------=------==-================+==++=+++++++++++++++++++*++**************######*######
........ ... ...............................................::.::::::::::::::::::::::::::::--::----------------------------=--====-==================+=++=++++++++++++++++++++***************#**########
..... . .. . .............................................:::::::::::::::::::::::::::::::---:-------------------------------===-=======================+++=+++++++++++++++++******************########
.... ..... ......................:...................:.:::.:::::::::::::::::::::::::-:::--------------------------------==-===========================++++++++++++++++++***+****************#**##
.... .....................................................::..:::::::::::::::::::::::----:----:--:-----------------------===---========================+++++++++++++++++++++*+++*****************###
.... .. .. ...........................::.............:..::....:::::::::::::::::::::-:::--::--------------------------------=--=========================++==++++++++++++++++++*****************###
.... ... ..............................::..........:..:.::...::::::::::::::::::::::::::::::---------------------------------==-=============================+++++++++++++++++++++***************##
... . ................................................::.::::::::::::::::::::::::::::-:-----:-------------------=--------==--============================+=+++++++++++++++++++++*************##
. . . . ...................................................::.::::::::::::::::::::::::::::::--:-::-----------------------------==-===========================+=+++=++++++++++++++++++++*************
... ....................................................:.::::.:::::::::::::::::::::::-::--::---------------------------------==---==-=========================+==+++++++++++++++++++**************
.. . ... ..............................................:::::::::::::::::::::::::::::::-:::-:-:--------------------------==-====----==========================+==++++++++++++++++++++************
. ... .. .....................................:.......::.::::::::::::::::::::::::::-::::-:::---:-----------------------=--=--====================+============++++++++++++++++++++*+*********
. . ..........................................:..::..::::::::::::::::::::::::::::::::::-:----------------------------==-===========================+++++++=+++++++++++++++++*+***********
... ..............................................::....::::.::::::::::::::::::::::::::::::--::------------------------=------==========================+=++++++=+++++++++++++++++++********
. .... ..................................................:..:::::::::::::::::::::::::::::::::---::------------------------------=-=--======================++==+=====++++++++++++++++++*********
.. .....................::-:..........................::.:.:::::::::::::::::::::::::::::::::::::----------------------------------===============================+++++++++++++++++++++*+******
. .................. .-*##*-...............................:::::::::::::::::::::::::::::::--::--::--------------------------------===============================++=++++++++++++++++++++***+**
. . ............... .-**+-:...........................:.....::::::::::::::::::::::::::::::-:-:-::::------------------------------=-=--============================+=++++==+++++++++++++++++++**
.. ........... .-+#*=. .............................::::.:::::::::::::::::::::::::::::::::::::----:------------------------------=======-==========================+==++++++++++++++++++*++*
............ :=*#+:. ................................:....::::::::::::::::::::::::::::::::::::-:::::--------------------------------==-==============================+=+=++++++++++++++++****
. .......... .=+*+. ....................................:::::::::::::::::::::::::::::::::::::::::::-:------------------------------=-================================+====+=+++++++++++++++**+
.. .. .. .-+=+-. ...................................:.:.::::::::::::::::::::::::::::::-:::::::-::::-------------------------------=======-=========================++=====+++++++++++++++++*+
.. . .... -=+++- .......................................:..::::::::::::::::::::::::::::::::::::::-----------------------------------==================================+==++++=++++++++++++++++*
. . ..... :+*=+=. .......................................:..:::::::.:::::::::::::::::::::::::::::::::-::------------------------------==-===--==========================+=++++=++++++++++++++++++
. .....:*+:=: .....................................:..:.:::::::::::::::::::::::::::::::::::::::::::-------------------------------======-==============================+++==+++=++++++++++++++
. . .... :*-:+: ..........................................:.::::.:::::::.:::::::::::::::::::::::::-::::--:---------------------------=-=-=============================++===+====++==++++++++++++++
.. ... .......+: +: .. .......................................::...::::::::::::::::::::::::::::::::::::::::::::------------------------=------=-==========================++=========++=+=+++++++++++++
. ..... +- +- .. .....................................:..:...::..::.:::::::::::::::::::::::::::::::::-:::-----------------------------=-=--==-======================================++++++++++++++
.. ....... == == ...............................................::..::::.::::::::::::::::::::::::::::::::------:---------------------==---======-===-=================================++++=+++++++++++
.. ..... :+ :+. .................:---::.........................::::::::::::::::::::::::::::::::::::::::---:-------------------------------===-=====-===========================+====++=+++++++++++++
. .. . .....=: +: .... ...........:====+++=-:...................:::...::::::::::::::::::::::::::::::::::::::-::--------------------------------=--===================================+==++=+=+++++++++++
. .. .. :- -= ...............:==:....---==---::..............::...::::::.::::::::::::::::::::::::::::::::-::-:---------------------------------=======================================+++==++++++++++
...... -..+: ..............=+:...........:----:.................:::.:::::::::::::::::::::::::::::::::---::-:---------------------------===--===========================================++==+++++++++
... :- -+ ..............==. ..............................:....::::::::::::::::::::::::::::-:::::::::::--------------------------=-------=-==-=======================================++=++++++++++
.. . -:.+: .............--..........................:.........::::::::::::::::::::::::::::::::::::::::::----------------------------------====-===--===============================+=+=++=+++++++++
. ..... .=.-+. . ..........--...................................:.::::::::::::::::.:::::::::::::::::::::-:::-----------------------------------===---====================================+=++++++++++++
. ....... .=.== .........:-.................................::::.::::::::::::::::::::::::::::::::::::::::-:-----------------------------------=---=====================================+=++=++++++++++
. . . := =- ............-................................:.::...::::::::::::::::::::::::::::::::::::--:------:-------------------------=---------===-===================================+==++++++++++
. . .. . := =:.. .........-:..................................:...::.::::.::::::::::::::::::::::::::::-:::-:----------------------=-------=---------==--===================================++=++=+++++++
.. . . -= =........... :-..................................:...:::::.:.::::::::::::::::::::::::::::::::-:::----------------------------=------==--======================================++===+++++++++
.. . ... -- +............-..................................:...:::::::::::::::::::::::::::::::::::::::::-:::--:--------------------=---------=-=-==-=--===============================+=+++=+++++++++++
.. . := +: .........-....:=***+*+=:.....::............:.....::.::::.:::::::::::::::::::::::::::::::::-::-:--------------------------------======-==-===--================================+++++++++++
... := =-.........::.:-*%#*+++*#%=........:::........:::..:::::.:::::::.::::::::::::::::::::::::::-::--::---------------------------------==----==--=--=-================================++++=+++++
. ... .= -=.........==+##*-. . ..:=+***+-...::..:.....:.::::.:..::::::::::::::::::::::::::::::::::::--::::--------------------------------------=======-================================+++++++++++
..............=..+........-%%*-. .........::--=+##*-...:.......:::..:::...:::::::::::::::::::::::::-:::::----:::::------------------------------=--==------==--==-===============================++++++++++
..... .. ... =: =-.......++-. ...................-+%#=...:.....:::..:.:...::::::::::::::::::::::--::::-::-:-::::---:-----------------------=-----=--=----=-==-=-===================================++=+++++
.. ...::::...:.. -: .=......:+ .......................:+##=.......:...:.:::::::::::::::::::::::::::-:::::::::::::---:-::-------------------------------=---=---===========================+=====+======+++++++
.=*##********#+ ..-..=: ... == ...........................=##-.::.::.:.:-.::::::::::::::::::::::::::::::::::::-:-----:-------:------------------------==--=--=-===-===-=======================+=====+===+++++++
:-+%#*=:. ....:: . -...+.....+:..............................+#+..::.:::::::::.::::::::::::::::::::::::::::-:--:::--:::-:------------------------------=--=--==========-================================++++++++
. .:+#*=:. .. .=. :+: .:*.............................:..:*%-..:..:::::::::::::::::::::::::::::::::::::::::--::::--:--------------------------------=-----====-===================================+++++++++
. -+*+: . ...... -- .+- :+..................................=%+:.:::::::::.::::::::::::::::::::::::::-::::::::::::----------------------------------=-----===--===========================+==========+++++++
.. :+*=. .. .. . ... . ...=-...==+= ........:.........................-%%-::::.::::::::::::::::::::::::::::::::::::::::::::-----------------------------===----------=-====================================+=++++++++
.. ..... .-*=. ... .. ... .. -=. .+: . ............................:::.:+%=:::::::::.:::::::::::::::::::::::::::-:::::--:::-------------------------------------=----=======================================+++++++++
..... -+=. .-+=........ .... ....-+-..:...--:..............................::.-#+::::::::::::::::::::::::::::::::::::::::::-::::---:-:---------------------------==--=---=--====================================++==++++++
.. .++: .=+=:. .. ..... :-.....-+===:.........................::::::.:**-:::::::::::::::::::::::::::::::::::::::--:--------------------------------------=--------====-===============================+=++++++++
.. :*-. :=-. . . .. ....... .....-= ..:-:.................:....::::::::::+#=::::::::::::::::::::::::::::::::::::::-::::--------------------------------==---=---===-====-=================================++++++++
.. .=+: :=-. . ...............:=-....--....................:...::.::::.=#+:::.:::::::::::::::::::::::::::::::-::--:---:----------------------------=-----=--=-========================================+++++++++
.. -++. -+: . ................ ::...:==:...:-.................::.....:::::::.-%*-.:::::::::::::::::::::::::::::::-::------------------------------------=-------=-------================================+++=++++++++
. -+- ==. .. .......... :=......:=-...:::............::......:.....::::.-##-::::::::::::::::::::::::::::::::::-:-::--:---------------------------=------==--==----==-========================+====++==++++++++
. -+: . .=- ............ .....=.........==....::..........:....+=...:.:..:::::::*#-.::::::::::::::::::::::::::::-:---::-::-------------------------------=---======--====-=========================+===++=++++++++++
.=+. . .=- ... . ... ........=- ........ -+-...::........:.....:+*+:.:::.....::::+%=:::::::::::::::::::::::::::--:-:::----:--------------------------------=------=-=====================================+++++++++++
=*. .=: . .... .-++:....-=.....:= ... .+=...::...............:+#=.::.=*+-:.:::*%-::::::::::::::::::::::::::-:::::--:--:----------------------------=---=---===--==============================+=++=+++++=+++++++
. :*: .=: ...... .-++-......-:......+...... ==...-:.............:..-%+..::-*%*-.:::=#-::::::::::::::::::::::::-:::---:::-:--::-----------------------------===--=---=================================++++++=++++++++
.+- :+. ...... -++: ....:-...... =- ..... ==...-:..........:...:.:%+.:...-*%*-::.=#-:::::::::::::::::::::::::-:--::--------------------------------------=======================================++==++=++++++++++
. .== .+: . ...... .+#+: ......=:.......-=........==..:+.................:%+.:::.:=##-:::=*::::::::::::::::::::::::-:::--:--------:-----------------------------===--=--===============================+==++++++++++++++
-+. :+: ... :+=: .......-=.........=........ =-..--..............:..:%=.:.::..-#*-::+*:::::::::::::::::::::::::::-:-:--:--:-:----------------------------===---=-===============================+===+=++++++++++++
.+. .+- ..... .-=-. ... .....=: ....... -- ........=:..=:...............:.-%-.:.:::::*#-::**:::::::::::::::::::::::-:::--:--:-:-:---------------------------=====-==-=====-================================+++=++++++++
. .. -: == .. .... .-:. ...........=...........=.........:=..:-..................-%:.:::.+*.=%=::**::::::::::::::::::::::-:::---:--::-----------------------------------==-=====-=============================+==++++++++++++
. . . := . -= . .:. .. :-. ... .. .... :-...........-:.........-=..--................:.-#:.::::@+.=#=.:#+::::::::::::::::::::-::---::-:::----------------------------------====--=====================================++++++++++++
. . . =: ... :+. -- .... --. . ..... -............:-..........-=..---...............:.+#::::.=%-:=#=.=%+::::::::::::::::::::::-:::::::-------------------------------=---=-==-===-=============================++==++=+=++++++++
. . .= .. .+: -= .....--....... .......-.............=...........=:.:=+*-.........::.:.:.+*.:::.#*::-*-:+#-::::::::::::::::::::::-:-::::-:-:-::---------------------------=-==---===-========================+=++=++++++++++++++++
. . =- . =- .=. .....-: . ... .........=.......:.....-:...........=..--+#+.........:..:::.#+.::.:%-::-#=:##::::::::::::::::::::::::::------------------------------------=--=---==-============================+=+++++++++++++++++
. .-+ . -= =- . .-: . ... .. ......:-.......-:....:=...........-=.:=.-**:.....:..::..:::#=.::.+#.-:=%-:#+.:::::::::::::::::::::::::::-----------------------------------=-------==-==-=======================+++=+++=++++++++++
. .=++: . :=. :- -: . ............::.......=:.....-:...........=-.=-.:+*:.......:::.::.:%-.::.#=.::+#::%-:::::::::::::::::::::::--:---:---------------------------------=-----==============================++==+=++++===+++++
:+=. .. =: .=: -- ...............::.......=:......-............=::+...-+:.....:::.::.:.=#::::=#::::**:=%:::::::::::::::----:-----:-----:-------------------------------------===========================+=+++====++++++++++++
. -+. ... -= --. .. -- .. .............:=:.......-:......-:...........:=.=:.:.-+..:.::::....::.*#.::.#+.:::#-:**.:::::::::::::-:-:-::-:---::--------------------------------=-=--==-=---======================+==++====+++++++++++++
. . =+. . :=. .-: . -= ... .............=+:.......-:......:-............----....-*...........::::#+.::-#:::.=*::*=:::::::::::::::-::-:--:----------------------------------==-==-==-----======================+==+++=++++++++++++++++
. -*. . :- -: .:- -=. ..................-=-:.......:-.......-............:=:=...:.=*......:.:::::.-%-:::**.:::#+:-#:::::::::::--:::::::-:---:------------------------------==-----=---===========================++++=++++++++++++++++
.. . :*: .:+: :- .-. . :=. . ................+.-:.......:-.......:-............--=:...:.++.:.::::::::::.*#.::-#-:::=*-:++::::::::-:-::-::--:::-::----------------------------=--=----------==-========================+=+=+=+++++=+++++++++
. .. ...*- .=: .:. .-: . .. .=: ................--.-........:=........-............:=--....::*=.::::.::::::.:%=:::+*.:::#=::*::::::::::::::::::::--:----------------------------------------==-=-===========================+++=+==+=++++++++++
. ... -+ . .=- . .-. -- ..................=..-:........=........-:........:...---.....:=*..::::::::::::=%:::-#-:::*+::=+::-::::-:::::::::----:-::-:-----------------------------=--------============================++=+===+=+++++++++++
... .+. .. -- .-- . . -- . .. ...... :=...::..=:........--.......:=............:-=:::..:.++.::::::::::::.#+.::++.::=*:::+-:::::::::-:::::-::--:::---------------------------==------=---===========================+=+++++++++++++++++++++
. ....+- .=. . .-: .. . :- . . ........:*- ..::..-:........:=........-:............-=-.:-..::*:.::::::::::::-%-::-*:::-*-::=+::::-::::::::----:------------------------------------=--=---=-=======================++====++===+++++++++++++++
. ........ -+. .. =: . .-. . .- . ...........:+- ..::...--........:+........:-............:==..==.:.=+.::::::::::::.**:-:*-:::*=:::*-:::::::-:::---:-::-:::--------------------------=----------====--===-===================++=+===++++++++++++++++
. ......... +- . .= . :- . .-. . ............=- ...-....--.........=-.......:=-............-+:.:*:.::*-.::.:::::::::-%-::++.::*=-::=+::::::::::---:-::--:-:---:---------------------=-------=--====--=======================++====++++++++++++++++++
...........:+. -: .-. .. -: ..... .........:+....-:....:-.........==.......:=-:...........:+-..-+.::=+.::::::::::::.++:-:*:::*+-::-*::::::::-::-::-:-----:-------:------------------------=-----==-===========================++=+=++=+++++++++++++
........ -- :== . .-. . -- .. ..........:==....=.....:-.........-+.......:-:-............==.:.+=.::*-::::::::::::::#:-:*-::#+-:::*-::::::::::::---------------------------------=--=---=-===============================+=====++++=++++++++++++++
..... ....=. -=-=- . :: :-. . . ..........:--=.. -- .....-..........*:......:-.-:......:.:..-=::.:+-::=*.:::::::::::::+*-:++::%=::::*+:::::::::::-:::--------------:-----------------==-----==============================+====++++++++++++++=++++++
. .. --.=-. -. . :. .=. .. ............---- ..=.......-:.........+-.......-::-...:.:.....:+-.:.-*-::*-::::::::::::::#=:-%+:#=::::=*:-:::-::--::-:----:----::--:------------------=------===========================++==+====+++++++++++++++++++++
...... ...+:=- .- ... -: ........:-.-: .--.......::...:.....-+.......--.:-.:....::.:.=-.:::=+-:=+.::::::::::::.+#:-**-*:::::=#:::::::--=+::--------------------------------==-==-===============================++=+=+++++=+++++++++++++++++
.. . . . :=== -- . . .-. .. .. ........-: -:..=........::...:.....:+::.....:-:.-:....::.:..:-:::::+=:-*:.:::::::::::.-%-:*+%+::::--*-::::::::-+*=:--:-------------------------=-----===--======-================+======+=+===++=++++++++++++++++++
. ... . .. =+=. ..-. . . .. .-: . .... ........--..-: :-.........-........:.==.......-:::-......:::::=-.:::==-:==::::::::::::::#+.+=*=:::-:-#-:::::::-:-+**-:-------:--------------=--=--=--==-=-====---==-==================+++=+==+=+++++++++++++++++++++
. . . :**: ..=. . .. .... .=...... .........:-:..=:.=:.........-::.....-:.-+.:.....-:.:--..:.::::::-::::::==--*::::::::::::::+%:==--:::::-*::::::::::-::+#+:---------:------------------===-=====-=-================+========+++=++=+++++++++=+++=+++++++
. ... ... .... -#=.. ..=. . .. ... . .............-:.. =:.=:.........::......+-..+-......--.:-+=--::::::::::::::=-=:*-::::::::::::::%+-+:::-===+-:::::::-:::--:-**:-:-----------------------========---===========================++++++++++=++++++++++=+++++++
. .. .. .. .. . ... =*:....:= . .. . .. ...............--...:=-==.. .......:-......-=..-+.......=-+*+*+****=-:::::::::-==-=+.:::::::::::::=#=*:-**++=:::::::::::::::--:**:------:----------------=-=---=---=-===--=====================+++=+++++=+=+=++++++=+++++++++
.. ..... . . ++.....:= . . .............. -= .. :+=+**######*=........-=:.....+-..+:....:+*+-:.--.:-=*#*-.:::::::=--=+:::::::::::::::#++-#*-::::::::::::::::::--::#=::---:------------------=--------=-----===================+==++==++==++=++=++++++=+++++++++
.... .... . ..........*- ....-- .. . ..... ......... +:...-***=--:---::=*=........=+:....-+:.-=.:.:*=--.:.:=-...::=*+:.:::::-=--+-::::::::::::::+#==%-:::::::::::::::::-::--:=*:-----------------------=-==----==-==========================+++=++++=+++==++++++++++++++++
. . . ..............*: ... -- . ....... .............=. :+*+:. . -=:. :........-==.....+-..=-:.::..=:....=-:::...=*=::::::=:-+=.::::::::::::::#*-#=:::::::::::::-::::::-::-#=:-:::----------=---------=--=-==--=-====================++==++=++=++++++++++++++++++++++++
. ....... .. ...:+: ... =- . . . . :. ...........-=.=+:-:......:+:.............:-+=....-*-..*=...:.:-.:.::==..::..-#+:.:::--:++:::::::::::::::+#:#=-::::::::::::::-:------:*=:-:----------------=--------------=-============++==+=======+==+==+++++++++++++=++++++++++
. .. ................ ...:+..... =: .. . ..=: ...........==+=..-.......-+...............--*-....+*-.-*=:::::+:....-+=::::::-#*::::-=:=*:::::::::::::::-#:+*::::::::::::::::-------:*+:---------------=----------=----==========================+==+===+++++++++++++++++++++++++
. . .... .........................=. .. .=: . . .......=: .. ....... =*- .::.......:=................-+*-....===:-*+:.:.-=.:.:.:+*-.:::::+=::::=-:*=:::::::::::::::*=:#=::::::::::::-:----:---:*+:--:------------------===-=--===-==========================+++==+++++==++++++=++=+=+++++++
. .. ..............................=. .. .+: . .... .. -: ......... :#: ..-........:-................-++++:..:==+=:**=:..=-.:::::=+-:::::.:::::-=:++:::::::::::::::=+:=#-::::::::::--:--------:#=:-:------------------------==---=======================+=+++===++=++++++++++++++++++++++++
.. .. . ............................=: .. .+: .. ...... =- ..........+=...:-..... .:-.................=+--==:.:=-+*****+=-+-:-::::-+=:::::::::::-::+-::::::::::::::-*-:+#--:::::--:--:-------:+%------:---------=-----------=======-====================+=++==++==+++++++++++++++++++++++++
. ..... ............................. -: .. :=. .. ........ :- ..........:-...-:.....:----:................-+--.-==:--.--:::=*#*+=+*=::::=+-::::::::.=-:+=:::::::::::::::+-:-*#-:::::::------------@#-----------------=---------===--==-=====================+====++==++++++++++=+++++++++++++++
....... .. ... ... ..........................:- ...-=. ............ := ..........:-...-......--:::-=-:..............---:..-=-==::::**=::==++*+-:::-+=::::::::--:=+:::::::::::::::==:::+#=::--:--:---------#@=:------------------------------===-=====================+==++=+++=+++++++++==+=++++++++++++
.. .... ....... ........ .... ......................-...:--. ............ .=.......... :-..::....:=+**++=--=-.............:-:-....-+*=:.++:-*%%%#%%%#=-:::=+-.:::::-=::=-::::::::::::::-+::::+#*----:--------:-*%#--------------------------===--=========================+==++==+=+=++++++++==+++++++++++++++
... ........ ............+- ....................-...-:-...... ........=. ........ --..-:..:=*%##*#****==..............-:......:-=-.::+%*+++++*#%@%+::::+=::::::=-::+::::::::::::::-+----:=##+-:-:::::---=#**+:-------------------------=--===============================+++==+++++++++++++++++++++++++++
....... ................... -%:....................... :-...... .. .......=: .........::.:-..-##*=---++=--+*+.............:-...........-#*-*#%%%#+-=#%@=::::++:::::=-::--::::::::::::::+-:-:::-*%%*+====+*##*-=*:-------------------------==-================================+++===++=+++++++++++++++++++++++
...... .................... -%:........................-:.... .=*+: .......=- .........::.:: -##+:.+#%@@@%*::**:............::.........:*=-%@@@@@@@#:-#%@=.:.=+==-.:=-::::::::::::::::::==:-*-:--=*#%####*+=-:-#-------------------------=-======================================+++++++++++++++++++++++++++++
............................:%* ......................--... .=%%+.........:-=..........:: -::#%*:.*@%%%%%@@%:.=:.............:.........+-:@%*%@@%%%@#:-#%%-::-*:-*+:==::--::::::::::::::-+:--*+:::--=::::::::=#-:-----------------------==--=====================================+++=+++++++++++++++++++++++++
............ ................:*+.................... -- .. -#%+: ....... :-:+. ........:..::*##- +*-+%%%#*%@#:.:......................-=.+@-.+%%#++%@+:=#%*.::#-.:=+++-:--::::::::::::::-*--::++=::::-----::+*-:--------------------------====-=================================++++=+++++++++++++++++++++++++
...............................=*-..................-=.. .+%*: ........ -: =: ........:..-+*++..*-.-%%%*-=%@+.:................:.....-:.*#::=@%#===@#::*%%:::#=::.:=+=--=-::::::::::::::*=:--:-++=-:::-:-+#*:--:---------------------=---===--==============================+==+++==++++++++++===++=+++++++++
...............................:-=*=:............ :--...=##-. .......... -: -=............=+++- -*:.+#%%#=:*@#.:.......................::%*..*##%*+*%@=:-#@=::*=::::-*=---*::::::::::-:::*+---:::-+***+**#*-:--:--------------------------=-=======================+==============++=+++++++++=+++++++++++++++
...............................:*=:=**=-:... ..-++:..=%=. .............+. .+:...........-:**:.=#:=*-%@#*+*%%::......................::-%#:-%*%%%%%@@+::*@*::++.:::=*=--:+=:::::-:::-:::+*-----:::--=+==:::---------------------------=--=-===================================+++++=+++++++++++++++++++++++++
.................................+#- :=+**+======**=..++: ............. -+ ..-+.....=-...:-:*+..=%%%##@@@###%%-:..................:.:.::-%@%%@@@@%@%%@+::+%#:.+*::::-*=:-:-+::::::::=-::--*-----:::-:::::-------------------------==---=======-====================+========+++++++=+++=++++=+++++++++++++++++
................................. :**-. ..::-=+*+: :*=. .............. +- . -%- ...+=....:-*=..=%%##@@@@*+*@%-...................::::::-%@%%%@@@%%@%%+::=#%-.++::::-*=-:::*-:::::-:++:-:-*=----:-----:--::--------------------=--=---=-==--==-===================+=======++=+++++++++++++++++++++++++++++++++
.................................. -+*+=-::-==-:. .*- .. ............ :=....:*+....-+....-++=..-%%**%@@@#+*%%-..................::::::.-%@#-+@@@@%%-#+::-##-:+=::::-*=-:::+=:::::---*-:::++----:--:--:::--------------------------------=-=============================+++===++=+++++++++++++++++++++++++++++
.................................... .--==--:. ...+: .. :: ... .......=: ...:++: ...=:...=-+=..:%%+*%%%####-#:....................::::::#%#*#%@%%@#*%=::=#=::*=::::=*=-:::=*::::::::++--:=+-:----=*-:::::::-----:-------------------=--=====--================+=============+++=+++++++++++++++++++++++++=+++
...................................... ....=-.. . +: ......... --.... :=:= ...:+...-.==...##*#+--:=+#+*.:.................::::::::#@#*@#*=+#%@#::.=+:::*=::::=+=-::::*-::::::::*=-:-+--:----**:--:--------:---------------------==--===========================+==+=+=++==++++++++==+++++++++++++++++++
.................................................-- .:=..+. ........ .=..... =- =- .. -=..-::=:..+%=-::::::-*=..................:.:::::::+%*=*====-=%+.:-=:::-#-::::+=--::::+=:::::-::=*:-:==::----:#+:-----------------------------------======================++===++=+=++++++++=+++*#%#*++++++++++++++++=++
....................................... .. ....:-...+: .=.......... =:..... =: .=.....==.-..:+...#+..:::::=#:...................:.::::::-#*---=---=#:::=::::=*:::::+:--::::-+:::::::::*+::---:---::=@=:---------:----------------------===========+++=+++=+++==+===========++++++*#%@%%##%%*+++++++++++++++++
................................................-.. +- := ........ -= ......+:..--....:*:-:..:=. -%:...:--#=....................:::::::::+#=:---:-#=.-+::::.++::::-=:--:::::*::::::::::#=::--------:+@=---------------------------=-======-===============+++++==++*##%%%#####%%@%####%%*+##*+=+++=++++++++++
...............................................-:. -+ . -= :........=. ......+....=:....=*--...:--.+%=-==*#+.................::.::.:.::.:::*%=::-=%+:==::::::*-::::--.--:::::*=:::::::::-#-::---:----:#@=:--------------------------------=======-===++++++====+*####%%*****#@@%%%%%%#**#%%*%#+++==++=++++++++
..............................................:- .:*... -=.. ......=- ..... -=.....-....-++=....:=-.-#%##*-................:.-=:..:....:::::=#####+--=-::::.=+:::::-::=-:::::++:::::::--:=#:---::------#%=-----------------------------=====--==+*#####*###%**#**+++*+===+#%@%*+++++*#%#***%#%*+++===+++++++++
..............................................=...*: ...==........:=....... =- ....-=...-=:++: ...-:::--:.::.................=*+::..:..::.:-==**=--=::::::::*-::::--::=-:::::=*:::::::-:::**::----------%#==--------------------------===--=+##**+===-=---=#%*+=====+++#%%####%%#*+===+*#*++*@#+++===+=+++++++
.............................................-:. -+ .. +- .......=:........+:......==...=.-+*=:....:::---:..................-=+=....::::..:---:::::::::::.=+::::--:::=-:::::-*::::-:::::::**:--:------:-##--------------------------==-=+##*==-----=====*#+=======+*#%#*======+#%%#*+==+%*==*%=+====+++++++++
............................................:-...+:.. :=#- ..... -= ........+........==..=- :-*#:............................-+++:.::::::..:::.::::::::::.:*:::::*=:::=-::-:::*-::::::::::::*#-:--------:-#*---===-----------------==-=*#+=----==--===-+%*========*%%#*+==========+*#%*==+#*==##======+==+=+++
............................................=:. -=.. =#-+: .....:+.........:+........:-=.:+....--............................-=+=:.....::::::::::::.::::::*=::::+%=::-+:::=-::+=:::::::::::::+%+-:---------#*---=====------------=--+*#+---====---===+##+-=====+***+==+**============+##+=+#+=+%+=++==+=++=+++
...........................................:-..:+. .*#- =:......=- ........-+......:*-.-+-+:.................................-=+-:....:::::::::::::::::::++:::.+%+:::-=:::+-:.=+::::::::::::::-##=::-:::----*#+------===--------=--*#=------------==*@*======+*#+=======+#=============*#+=*#+=*%+========++++
...........................................-:..+= :*+: .=......:+......... == ....=%*...:=++.................................:==:.::.:..:.:::::::::::::.=+::.:+#*::::==:-:+-::=+::::::::::::--::=##=:-----:::=##=------=====---=-+#+--=---=--=++===#%=-=====*#*=========-+#==========++=+#+=#++=*+=====+++++++
...........................................=...*.:*:....=......== .........== ...+=== ....=+-................................:=-::::.::::::::::::::::::++:.:-*-*=::::+=:::*-::-*:::::::::::::::-::=*#+-------:-+%#=--------=-==-+#=--------=+#*==-##=-==-=*#*=============*+=========+=+=*%=**==+++==+++++=+++
......................................... -:..-=-+......=......+:..........+-...*= =+ ...:=---..............................:::.::.::..::::::::::::::-*+::-+=:.*-::::=-:::*-:::*::::::::-:::::::::::=*#+-::----:-#%#*=---------+#--------=+#*=---=+=====*%*=--============+#=========+=++=##=*+=++=====++=++++
..........................................=...=+*.......=.....:= ..........+-..+= =+ ....-=...................................::::::.:.:::::::::::-=+==++=:..-*::::-=:::-#-:::*-:::::::::::::::::::::-*#*+-::----=#@@%*==-----#--+---=+**+=--=-=====-+##+--===============**=============+%+#+=+=====+=++++++
.........................................:-...+*:....=.:+.....=- ......... =- =+ . =+ .....=............................:..:..:::::.:::::::::::::::+++*+-:.::.+=::::--:::=#-:::*-::::::::::::::-::::-:::-+#**+=::-::=+#%%%%#*+%*+##-=*#*+-----=======##+--=-================#==========+==+%*#+=======+=++++++
.........................................-:..:*: ...-+.:+.....+: ..........+=.*... :*......=-.........................:.::::.::::..::::::::::::::::.:::.::::::*-::::--:::=*::-:+=::::::::::::::-:--:::::-::-=*##*+===----==+**++##*#*+------=====-=*#*--=========-==========**=======++==++%##+=====++=+=+++++
.........................................=...-+ ....=:.:+. ..:+........... ==== ...:#:.....:+........................::..:::::::..:::...::::::::::::::::::::.-*:::::--:::**::::++:::-::::::::::::::::-------::--=**#######*+*++**+=--------====-=+#*=---====================+#=============#%#++===++====+=+++
........................................-=...+-... :=..:=....-+ ...........=++......++ .....=-..........................::::::::::::::::::::::::::::::::::::.++:::::-:::-#*--::++:::::::::::::::::::::-::::----:::::----==++====---------==---=+#*=--=----===-===============#*===========+#@+=+===+===++===++
........................................=:..:=:....-=:.:+....== ...........-%=......-#......-+.........................::.::::::::::::::::::::::.::::::::::::*=::::--:-:=#++:::=+:::::-:::::::::--::---:-:---------------:-::----------=--=--+#*=--------====================+%+====+====++%%=+++=+++++++=++++
........................................=..::......-:=..+:...+= ...........:#.......:*= .....+-..................::::.::::.:::..:.::::::::::::::::::::::::::-#:::::--:::**:**-:++::::::::::::::---------------------------------------=----=**=------=-=======================*#==========+%*=+===++==+++=++++
.......................................:=..:......:- ==.+-...+- ............*:.......=#:.....-+...::..........:.:..:::::.:==+=++=-:.::::::::::::::::::::::::+*:::::=:::-#=::+#=+=:-:::--::::-::-:--:--:-::---:---------------------------=**=--------=-===============+========%+===++=+++##+++=++=++=++++++++
...................................:...=-........ -- .*:==...+- ............+= ......:+#:....:*-....:......::....::..::.=**==--==*#*-.::::::.:::::::::::::::*-::::--:::=*-:::=#%*------::-:------------------:-------------------------=**=------------================+=======+%+====+++**+===++==+++++++++++
.......................................=.....=:.. -:. -*-=..:*- ...........:-*........-+#:....-+:........:::........:::+*-::::--::-+%+:.:::::::::::::::::::=*:::::-::::+*::-:::+%#+----::-:-----------:-:---------------------------=+*+=-----------===----=====+=======++======*%==+====+++=+=+++++++++++++++
......................................:=.....*:...=:...=*+:..+: ...........:.*-........:=%+:..:+-...-:.........:::.:::*#=+*#******++*%-.::::::::::::::::::-#-::::-=:::-*=::::-::-+##*-::--------------:--------------------------==**+-----------==-===+*###%%%%%####*+==++====+=#%==+==++=++==+++++++++=+++++
......................................--....:*:...=:... =%-..+- .............-*.........:-*#*+++*::+-.:.........:.::.+*===-:::::::::=#=:::::::::::::::::::+*:::::=::::-*::::::-:-::=*#*+=-::::--------------------------------==+*+=--------=----=+*####**++==++==+*##%%*+=+======*%+=++++=++++++++===*#%%%*++
......................................=-.....*:...=:.....+*..=+...............*= ..........:=+*==*#-.:.......:::::::.+-......:::.::::+-.:::::::::::::::::=*-::::==::::=+::::::=*:::::-+*##**==----------------------------===+*+=-------------=***##*+=---=========-===+#%#+=++====*%*==+=+++=++=++*#@@@@%++=+
................................::....=:.....*-...=-.....:*-.=+...............:#:..............-*%+......:::::.:.:::.=+.:::::::::::::+-.::::::::::::::::-#-:-+::+:::::*=:::::::**::::::::-=++*##*+------------------====++###+-::-----====**####%#=----===--=============+*%*=+++++=+#%#*+++==+*#%@@@%#*++=+++
:.....................................=..... ++...*=......++.-*.....:..........-#-..........:-**#==+..:..:..:.::::::.-*.::::::::::::-+:::::.:::::::::::-*=::+=:--::::-*-:::--:::+#-:-:::::::::-=+*####************+++===--=+*##*****#####***+=---+##++==---===============-=#*++=++++=+#%%%%%%%@@%#*+====+++++
:.....:...............................=:.....:#..=#=......=#-.#- .............. -#*=:::::-=+*++*-..==...::.:.::::..:.-#:.:.:::::::::=+.::::.::::::::::-*=:::*::-:::::=+::::::::::=#=::-------:-:::-==++++++++=====--:-:-----:-==+=+====-------=----=+*##*+++==-=========================+#%%#*++========++++++
......................................*:..... *+-*:+:......+#:=+ .................=+*****+=-.-*:....+=..::.:::.:::.::.*=.:::::::::::+=.::::::::::::::-++:::=*-:-:::::+*:::::::::::-**-:-::---------:::::--:---:-------------------------===-=---------==+**####**+++===============+**#%#*+=====+=+=====++++++
....................................:+#= .....-##:.#:......:+#=*.........:.............:....=%+====-:=+:.:::::::.::::.=*:::::::::::-+:::::::::::::::-*=::::+==--:::::++:::::::::::::+#+::--:-----------------------------------------===-------==-=====-----==+**###########%%%%%%%%##*+=========+++===+++++++
.:........:.........................*==%:.::::.-*.=+=.......:=*%-........::...............-**+=+++****##-.:::::::::::::*=.:::::::::==::::::::::::::-+=:-:::*--=-:::::+=::::::::::::-:-*#=::-:--------------------------------------==-----=----==---=--==========++=++=+++++++++++*#*+==+++======++========+++
:::..:.........................:...=*:#+#*-....==:+.*:......::.=*......................:-++-........::-=#+::::::::::::.-#=.::::::::*-:::::::::::::-+-::-+::*-:=::::-:*=:--:+-::-::-::::=#*-::--------------------------------------=------------------==-=========++================*#*+=+======++======++++++
...:........:.....:............:..:*:*+::+#=:..+:--.-+..........*=......................=-..............:++:.:::::::::::-*+::-:::-*=.::::::::::::=+:::::*-:*-:=-:--::*=---:*#:--:-::-:-::+#*--::---------:----------------------------------------==-===-==--=====+++===========+++===*%*=====+======+=+++++++
:::.:..............::.........::..=+-#::..:+*+=+.=-..+=.........:#-..........................::..........:+*=.::::::::::::+#+=--=*=:::::::::::::++::::::+=:*-::+::--:*=-----%*:---:-:--:::-+##+=-:---------------------------------------------==-=====-============+===+===========+==+%*=======+=+++=+++++++
:::::.:..:..:...::.........::...::*-*=.......-+*.==...+=.........-#=..:.::...........................::.:::-#+:.:::::::::::-+***+-::::::::::::=+=:::::::-+:*-::==:-::*=:::--=%*-:---::::--:::-=****=--:::------------------------=--=----=--==---==-================++=+==++***##*+======#+======+===+++++++++
::.:::..:..........:.....:....::.:*:#-........:+.-+....++:....:.:.-#+:.:+:::.::::::.:.........::::..::..:::.:+#+:::::::.::::::::.:::::::::::-++---:::::::+=*-:::+-:-:*=::=----#%=:---::--::---::-=+*#**#*=-------:------------------=------===++++=-=================++=+*#******#%%*==+=+#++===+=====++++++++
::::::::.....:.::........::::..:.=+:*:........:+..+:....-*+-:...:::+%#+#=..............::::.::::::..::::::::::-*#+-.::::::::::::::::::::::-++=:.+=:::::::-*+-:::-+:-:+=::+*:-::+%+::-------------:::-==++*##**#****+++==-------=======++**###****###=================+##*+=========+#%*=+=#*===+++==++++++++++
:::::::..:....::::.............:.==:#:......:.:+:.=+......-++++++++=::**#*+++++=---:::.:..:.::::.:::::::::::::::#%#=-:::::::::::::::::::-=#*::::=+::::::::+%-::::=+::*+:--#*+++=*@%+-:-::--:---::::-::::::-======+****###******######***+==---=---=*##=============+**++=============+%#==+#=+====+=++++++++++
:::::::::.::......::.:...........+-:#:.........=:..+:........:-:.....+=..-==+=++++****+==-:::::::::..:::::::::::+@%#*+::::::::::::::::-++=*-:::::*-::::::::++:-:::++:+*:-:=#==**+==#%#+--::::---:------------------------=======-------------======-=*#==========+#*====+===+==========%#=*#======+++=++++++++
::::::::::..:.:......:.:::::...:.+-.#=.........:=..:*...............++..............:--+***=-::::::.::::.:::::::-%@%##*-::::::::::::==+=:-+::::::=+::::::-::*+:-::-*=-#-:::=+-::::::=*#%#**#*+-:---------------------------:-------=----------========+%=====++***+======+=============+%+*#=====+++=+++++++++
:::::::::....::..:::::::::::::::.+=.++ .:::-----+:..-*:...........-*=.........-:.........:=*#*=:::::::-*-:.:::::-%%%%%##*=-::::.:-==-::::-+:::::::*-:::::::::*=::::-*+*-::-:-++=-::::::-+%%+==-:----------------:---------:-------------------=====-==-*#==*#**+==========+=============#***======+=++++++++++
::::::::::.:::::::::.::::::::-::.=+ -*=++**++++++=...-*+:.....:-=**-....::-=+*+:......:.....:+#*-:::::.*#*+::::::#%%%%%%%##*+=+++=-::::::==:::::::=*::::::::::#*=--::*#-::::::-++++==+*#*=::::-----------------=+*****##***+=----------=-----====-======#*==#+=============+============*%#=========++++++++++
:::::::::::::::::::::::.::::::.:.-#:-+=:..............:=+*+++++++++*******+=-:..........:::::.:+%*-:::.-#-*+:::::#%%@%%%%###**+=:::::::::==::::==-:*=:::--:::::**=++-:**-:::-:::--=+++=-::---------:---::--=****+====-====+*#%*=-------=-=---==-+*=======%+==#*===========+=++=======+==+@*======+++++++++++++
:::::::::::::::::::::::::::::::.=*-......................:---:......::::...............:.....:..-##=::::#+*%+:::-#%%%%%%%%%#=::::::::::::+-:=+##=:::*=::::::::::+#==*+-=*=-:::-::::::::--:--------:-:--=***+=--::-------:--:-=*%#=------==--==---+#======*%===##=-=========+============+%=======+++++++++++++
:::::::::::::::::::::.:..::::.:*+:............::.......:..............................::::..::::::#%=:::*%#-#=::=%@@%%%%%%#=:::::::::::::**#%#+=#-:--#+::::::::-:-*+-=+**##***=:-:-+-:::-:::::::::-=+**+=-::::-----------------=*##*--==---======-+#=-====#*===*%*=========+=========++=##=+==+==+=+++++++++++
:::::::::::::::::::::::.::::::#=.::......::.......:.......:...........................::::::::::::+#*-::*%=.=#-:=*=+#@%%@%+::::::::::::::**+=-==*#=::-**-:::--:--:-+*=---==--------=**=-::::--=++**+=-:::::-------::--------------=#%+-=====--====-+#+=====%#+===*#*+======++==========+#==++======+++=+++++++
:::::::::::::::::::::::::::::*+............:-=++++*+++++-:..........::......::...:::.::::::.:::::.==-=.:**:::#=:=+...+%++*+::::::::::::::+====+=+*#=:::=#*---------:-+*+-:.::::----::-+*******++=-::-----:---:----------------------+%#=-===--======+#+====##*##*++*###*++=++**========#+====+==++++++++++++++
:::::::::::::::::::::.:::-::+=:::...::..-=+*++=:::::::-=+**+-:..:..:..:::::::..::::::::::::::::::.+=-+.:+*:::*+-++:::=%+=-*-:::::::::::::+=+++++++*%#=-:-**+-----:--::-+*++--:::::-:::::-----::::----::::-----------------------------*%+--===-======+#====+%==**####%%@@@%##*========*+====+++++=++++++++++++
::::::::::::::::::::::::::.=+::::::.::-+*+-:..............:=+*+-......:::..:::::::::::::::::::::.-#:=*::=+:::+*-*=::.*#++=*-:::::::::::::+=+=++++++**#%*+==**-:-:-------:-+*+*++===--:--:::::::::-:-::::--:------------------------==--+%*-=-====-====#*-===%*=====+++++++=====+=+===+*==+++++====++++++++++++
::::::::::::::::::::::::-:-*::::::::-=+:....:...........:.....-**=:..:....:.::::::::::::::::::::-#++#*:.=*:::+*-*::::**+*+*+:::::::::::::*=++***+=+*===*#%%#%%#*=----::--:::---===+===--::::::::-----::--:-----------------------===--=-=##-===========#+-==#*====++=================+=====+++==++++++++++++++
:::::::::::::::::::::::-::*-:::::.:-=:..:::.::::::.:............:+*+:.::.:**:::::::::::::::::::=%***++..=+:::*+=+.:::*+**++*:::::::::::::*+=++*+===++-::--=+++*#%%*-:==-::::-:::::::::-:::::::--------------------------------------==-===%*-===-======+#===**-============================++=====+=++++++++++
::::::::::::::::::::::::.=+:::::.-+:...:::::.::.::::..............-*%+..:::*#::::::::::::::::-*#+--:*=.:+=:::*+*-:::-++***=#:::::::::::::+*=++++=-=+=:::::------=+%#=-+++=-:::::---::---:-:--::------------------------------------==--==-=%============%====*====================+======++===+==+=+++++++++++
::::::::::::::::::::::-::+::::::*+:.:::::.::::::::.::::::::::::.::..:##-.::.+#=::::::---::-=*#+:.:.-#-.-#--:-#*+.:::-+++**+#-::::::::::::=*=+**++==+::-:-+#++===-:-#%+:-=++++=------------::::--:-----------------------------=--=-------=-=============#+===+==================+==========+=======+++=+++++++
::::::::::::::::::::::::-+:::::*+.::....--==++====--::......:::::--::.=#=::::+##*+++=--=++**+:.:::=*=::*#*::+%*-::::+*+*++=*=::::::::::::-+=+*=+====:::-+*++=++=+=--*@#-::-----:-:-------:::----------:--:-------------==---=-=-===========-===-==-====-*#========================++==============++++=+++++++
::::::::::::::::::::::::-+::::+-.:..:=+***+==---==++****+=-::.....::-==*%#+-:::=*##***+*+-::..:.:+#-..=*-#+:#%+:::::+=+*+*=+*:::::::::::::=**+=====-:--+*++++=++==+=-+%#----------------:----------------------------===----=====--=-=====-==-==========+#============================+=++====+=++=+===+++++++
:::::::::::::::::::::::.=+:::::.:.:+#+-:..............::=++++++++++++==-:=+*-.:::-===+=-:------=#*:.:+#-:=#+@*:::::-*++*++++*::::::::::::--=++=-+=----*++++**+**++=+=--#%*+=---------------------------------------------===-====-==========-===========+#==================================+++++==+=+++++++++
:::::::::::::::::::::::-#+:::::.:+#*-.....................:-===+-::........-*=:.:::::-==++*+++++-..:+*-:::*@#-:::::=+++*+**+#-::::::::::::-:--+**--:-**=+++=+++++=++++==#@%##**+------:------------------------------===-====------=====-====--=========+%===================================++==+++++++++++++
::::::::::::::::::::::-#-:::::.=%#=.:...................:=+=-............::.:=*=:.........::::...:=+=:::::##=::::::+++*++*#+%=::::::::-:::::::-*---:*%***++==========+++=+%@@%%%##%%%%+------------------------------==--=--==+++++=--====-=-==-========+#===========================+======+++=+++=++++++++++
:::::::::::::::::::-:-#-::::.:*%+:::...................-+-.................:..:=++=:...........-=+=:.::::++++--:::-*=+***+*+##+===++**#+:::::-*=:---**==+**#*++=======++=++*%#+--==+*#@+:--------------------------=-=--=++**#*******+==================*#===========================+===++=++++++++=+++++++++
::::::::::::::::::::=#-::::.-#*-:::::::............:..:*-........................-++--==---=++*+-:.:::::==.=*--:::+%%****+*+##*******+*#:::::=+-:::=*##:::-=++++#*++++*###**+++-:-:---+%#--------------===-------==---=+**+==-------=+**===========--===#*========================++=====++++=++++++++++++++++
:::::::::::::::::::-#-:::::+#+:::::....:::............=*............................::--=+++%+:..:::::::-.::*=--:-#%%%#++**+##-:::::::-%-::::+=:---+*%*:-::::::-=+==#%+==--===---------+@+---------------------=---=+**==---====-====-=+#+-=====+=======#+================+++==+========++=+==+++++++=++++++++
:::::::::::::::::::*=::::-##-:::::....::::::...::::.:-#-.::.:::...:....:....:...............%=....::::::::::=*--:+%%%%%%+**+##--::::::-#-:::=*-:-:-##*%:::-:-:::::::=@+:-----:--------=-#%---------------=-------=**+=--=-=-----=======-=#*====+#======**============+==================+==+==++++++++++++++++
::::::::::::::::::=*::::-%%-:::::::::::::::::..:::.::+*.::::.:.::.::.:..::.:...........:...:%+.:.:..::::::::-#+:+#%#%%%%%***+#-:::::::=%---:++:--:=%*-%-:--:--------:+@-----------------=%+--------------+*******+=--====-====-==-========**-==+*======#=================+=================+++++++++++++++++++
::::::::::::::::-:*-:::-%#-::::::::::.:::.::::::.::::*+::::::..:..:..::::..................:%*.::::::::::::-:+*=#%%%%%%##%*##%=:::::::=#:::-*----:=%+:%+:-------------%*----------------=##----------------++****+++===-=-----==-=========-#+==+*=====**======================+=======+====+==+=++++++++++++++
:::::::::::::::-:=*:::-%*::::::::::::::::::::::::::::#=:::::::::...::::::::........:.:::....*#.::::::::::::::-#*-##%%%%#-#@*+**-::::::=#:-:++:--::+%=:*#:-:-----:----:*@+--------------=-+%=-------------------==+****+=------=-=====-======%==+*-===+#====================+==============+==+++++++++++++++++
:::::::::::::-:::+=:::#*::::::::::::::::::::::::::::-#-:::::::::..::::::::::..:..::::....::.+@-:::::::::::::-:**:*%%%%%=:-#@++%=--::::+#---*----=++*-:+%::-------:-----%*+----------------##:------==--------=------=+##=----=======--======#+-*+===+#+============================+=====+==+++=++++++++++++++
--::::::::::::-::*:::+#-::::::::::::::::::::::::::::+*-.:::::::::::::::::::.::..:::::...:::.+@=.::::::::::::-:-*--%%%@*::=%%%=#+:-::-:=#-:-+:-=+=--:--=%---------------+%+----------------+%-------------------=-------=*+=--==-===-=======-#*=#===*%+===========================+========+++==+++++++++++++++
::::::::::::::::=*::=#-:::::::::::::::::::::::::::::**::::::::::::::::::::..::::::::::::::::+@*::::::::::::::::**:*%%%=:-#%-#%#+-::--:=#::===+=::------%=:-------------=%+----------------=%=-------=---------==-===-==--+*#+-==============#***==+*+===-=================================+=+=++++++++++++++++
-:::::::::::::-:=*::#+:::::::::::::::::::::::::::::-*=:::::::.+#-.::::::::::::::::::::::::::=@#::::::::::::::::-*:=%%*-:+@+:-%@+-----:=#:-+*+---------:##--------------=%#------=----------#*:--------------=-===--==--==--+**==============#+#====+===================================+=+++++++++++++++++++++
---::::::::::--:+*:=*-::::--:::::::::::::::::::::::=*-:::::::::*#:::::::::::::::::::::::::::-#%:::::::::::::::::*+:#%+::##:--#@%+-----+%--+=-----------+%=-----------+###*=----------------+%-------------=======--==--=--=-=*#=-===========##+==+#===-=============================+==+++++++++++++++++++++++
::::::::::::-:::++.++::::::::::::::::::::::::::::::*+-::::::::::#*::::::::::::::::+-:::::::::+%-::::::::::::::-:-*:+%--=@=:-+%@@@=:----%--=--------*+=-=@*---------+##+=------------------=-%+------------===========-==-=====+*+-=========*%*=-*%*=================++=============++=+++=++++++++++++++++++++
:::::::-::::::-:+*:*=::::::::::::::::::::::::::::::*+:::::::::::-%*::::::::::::::-#-:::::::-:=%=:::::::::::::-::-*=:#=:*#:--#@@%#%----:%==-------*#*==-=%#-----=-=#%*=---=----------------=-#*---------==--====------=====-===-+#+=========%#-=*#+=+====================+=======+=++====++++++++++++++++++++++
:-::-:----:----:+#-#-::::::::::::::::::::::::::::::*+::::::::::::=%-:::::::::::::=*:::::::::::%+:::::-:::::-:::-:+*-=#=%+::+@@%%+*%----#*--:---=#@%**##+#%=-----=%#+*=----------------------**------====--=---=++++====--====-==+*+====-=+%#=+##=================================++==+++++++++++++++++++++++++
-:::::::-:::::::+#-*:::::::::::::::::::::::::::-::-*=:::::::::::::**:::::::::::::+*:::::::::-:**:::::::-:::::::::=*--+%%-:=%@@%%=-%#:--=%-----+#*%@@%+--=%+----+@%*##*****#=---------------**#----------===*####********+=--=====**+===+#%%*#*+====================+=+=+=+=====+++++++++++++++++++++++++++++++
-::::::--::-::::=*=+:::::::::::::::--:::::::::::::-#=:::::::::::::=#:::::::::::::**:::::::::::+#::-=--::::::------#=--%*--*@%%%*--=%*-=-#%---+@#:#@@@=---%#--=*@%%@%#*++++#%=--------------**#------==+*****++=========+*#*+======**==+##*++=-===-=================+++===+=+==++++++++++++++++++++++++++++++++
--:---:-::::::-:=#++::::::::::::::::::::::::::::::=#=::::::::::::::*=::::::::::::**:::::::::::=#-====-:::::-::----+*-:+*-=%@@%#=--=%@+---##=*%+%=+%@#----*%---+*##+=-------%*------------=-**#=---+****+==----====-===-===+*#*====+#+===============================++=+=======+++=+++++++++++++++++++++++++++
-:------:-::::-:-*++::-:::::::::::::::::::::::::::+#-::::::::::::::+=:::::::::::-#+:::::-::----#+==---------:-=----*=--#=+@%%%*---%#+%=---+*%+:#*-%@*----=%=----==---------*%=-------------**#=-+*#+===--====-===============##**==#*===============================+==+===+++++++=+++++++++++++++++++++++++++
------:::--:-::::++=:-::::::::::::::::::::::::::::+#:::::::::::::::=+:::::::::::-#=:::--:------#%##*+++*+=++=##:---*+--=#%@%%#---#%=-#%----#@*-+%-*@+-----%*---------------=@=----=--------#+#***+=--=-======-=====--==========*##+*#=======-=========================+===++==++++++++++++++++++++++++++++++++
--:-----:--::-:-:+*=-:::::::::::::::::::::::::::::+*:::::::::::::::-*-::::::::::-#=:--:--:---::=+=+*#%%%#*++*%+----=*---*%%%%+--+@+--*@#--+@@%=-%==%=-----*%----------------%*-==----------*=*#=-----==-=--==-====--===========-=**+*=================================+==++==+++==++++++++++++++++++++++++++++
:::----:---:-::::=#+::::::::::::::::::-:::::::::::**::::::::::::::::*=::::::::::=#=:-:::::-:----::::-=+*%%#*#%=----:*=--=%%%#---@#--*%%@+=%@%%*-**+#------=%=---------------#%--------=-=--*=+*-----=--===--==============--======+**================================++==+=++=++++++++++++++++++++++++++++++++
------------:::::-#+::::::::::::-:::::::::::::::::*+::::::::::::::::++:::::::-::=#=::::::------:----::::-*@#%*------++---+%#+--*@=-+%%%@#*%@%#%-*%#+-------#*--------=------*@=------------#++#--------===-=======---=----=========*#===================================+++==+++++++++++++++++++++++++++++++++
---------:::::::::+*::::-::::::--:::::::::--::-::-*+:::-::::::::::::=*-:::::::::=#-:--::--:-----:--------:-#%=:----:=#----*#---%*-=#%@@#%%@%##%+=@#=-------+%--------==-----+@*------=---=-#++#-------====-======--================+#===========================+=====+==+++++=+++++++++++++++++++++++++++++++
----------:--::-::-+-::::::::::::::::::-:::::::::-*+:::-:::::::-::::-*=:::::::::=#-:::--:--::----------:-+##---------*=----#*-+%=-*%%@%%%%%%%%%#=%*--------=%+-------=-----==%#====--==--==#+=#--------====-====--=================+%==============================++++==+++++++++++++++++++++++++++++++++++++
------------------:+=:-::-::::::-::::::-::::-::-:-#+:::::::::::::::::*=--:-:::::=#-:-:----:::-------:-=*%%*-:--------+*----=%+#*-=#@%%#%%%%%%%%%+%=---------*%------------==-#%=+==-===-===#+=#--=----=======--=--=-================#+=============================+++++++++++++++++++++++++++++++++++++++++++
------------------:=+:::::::::::::-::::-:-:::::-:=#+--:::::::::::::-:+*---::::::+*-::::::::---------=#%%+:::---------=#=----*%%=-*%%%##@%%%%%%%%%#----------=%+-----------==-+%++=-=====---#+=#=----==-=-=======-=================+=*+====================++=====+++=+++=+++++++++++++++++++++++++++++++++++++
--------------------+-:::::---:-::::::::-:::----:+#=:-:-:::::::-:::-:=#=--------+*--::::-:--------=*%%+-::-::---------*+----=%%==#@%%%%%%%#%%%%%%=-------=-=-#*--=-----=-=====%*=+-====-==-*==#=-=--===--===========================*===============+====++===+==++=++++++++++++++++++++++++++++++++++++++++++
---------------::-::-=::-:::::::::::::::::::--:-:+#=:::::::::::--::::-*+-:-----:+*-------:::----:=@%*-:---------------*#---=-*@**@%%%%%##%%%%%%%#=----=--===-+%--=----=--====-#%=*==-======#+=%=---=================================+==========+===+======+======+++++++++++++++++++++++++++++++++++++++++++++
------------------::--:::-::----:-:--:--:::::----+#=:::::-::::-:::::::++-:-----:*+:----::::-----:+%-::-:--------------=%=-=--=##%@%%%%%%%%%%%%%%+=---====---==%+----==--=====-*%=+======-==*+-#+-===========================================+=++==+=====+++++====+++++++++++++++++++++++++++++++++++++++++++*+
---------:-------:-:---::--::--:-::-::::---------+#-::-:--:-----:----:=#-:------*+:--::-::------:*#:--------:----------#*-=-=-=%@%%%#%%@*====+*%#+=---------=-##-------==-====+@+++-=======**-#+=================================================+==+==========+++++++++++++++++++++++++++++++++++++++++++++++
-----------------:-------::------:-:::::---::----*#-:-:::::::::::-::---#=:------#=:-:--::-:-----:*#--------------------*#-==-=-+%%@%%@%#%%*=====#%------==-==-+%=--====--======%*=*========**-#*-==========================================+==+=++======+====+++=+++++=+++++++++++++++++++++++++++++++++++++++
------------------------------:-------:-----:--:-*#-:::::::--:-::::--::**:------#-:----:::-------=%--------------------=%+---==-+@%#%@+-=+%%+-=-##-----=======-#+-----=========##=*========#*-**-============================================+==+++=++=++=+=+===++++=+++++++++++++++++++++++++++++++++++++++++
------------------------:--:-:::--:::-:-:-:------##--:::::::----:::-::-=#-----:-*-----:-------:---%*------------------=-#*--====-*%#@@%*=--#@#=-#*-----=---=-=-+%-=--==========*%**+=======#*-*#-=========================================+==+===+=+=====+++===+++++++++++++++++++++++++++++***+++++++++++++++
-----------------:-----:-----:---::--::-:--------##----::::::::::::::---#=--:::=*-----------------##--------------------+#-------=*%%@@@%*=-*@#-%+-------=-=====%=----=========*%**#+======#*=*#============================================+=++=++==+==++=+++++++++++++++++++++++++++++++++++++++++++++++++++
----------------------:-------------------------=##--:-::::::::---------#+:----=*-:---::---------:+%+--------------=----=%+--=--===%@@@%%@%+-=@#%+-------=--=---*#-============+%****======%*=*%=======================================+==++=+=+++==+++++=+=+=+++++++++++++++++++++++++++++*++++++*++++**+++++
-------------------------------------------------##--:--:::::----:::----+*--:-:=*-----------------=@*-----------------=--**---====+*%@@%@%%@#+=%@=--------=-=-=-+%=============+%*+**+=====%*=*%=================================+=====+======+++==+=++=====+++++++++++++++++++++++++++++++++++++++++++++++++*
-------------------------------:--::------:-----=##---::::::----:-----::=#-:--:=*:--::-:----------=%%=-------------------+%=-=----=+#@@%%@%%@@*+%=-------=-===-=-%*-============%#***+=*===%*=*%======================================++=+=+=++++++++++===++++++++++++++++++++++++++++++++++++++++++++++++++++
-------------------------------------------------##---::-:----:----:----=#=:--:++:--::-------------*%*------------------==#*-=--=-=+*%@%%%@%%%@%#--------=======-+%=============%#*##+*@+=+%*-+%+=====================================+==+==+++++===+++++=+++++++++++++++++++++++++++++*++++++++++++++++++++++
--------------------:----------------------------##---------------:------*+:---++:-:---------------+%%=---------------=-==*#-===-===+%%%%@%%%%%@*--------=========%+-===========*#****+@*=+%*-*@+===================================++=++++++++++=++==++++++++++++++++++++++++++++++++++++++++++++++++++*++++*
-------------------------------------------------*#----:-----------------+#---:++------------------=*%+--------------=-=--+#=========*@%%#*#%@@@+---------=---====##=====+======*%****+%#+*##=+%+==================================+==+++++=++++=+==++++++++++++++++++++++++++++++++*++++++++++*+*++++++++*+**
-------------------------------------------------*#=---------------------+#---:+*-----:------------=*%#-----------=------==#*-=-======%%%%@@@%%#+=--------------=-+%+===========+%****+*@**##=+%+=============================++++==+++=++++++++++++++++++++++++++++++++++++++++++++*+++++++++**++++*++**+++++
-------------------------------------------------*#---:-------------------#+---*+:------------------*#%=----------------===*#=-=======*%%@%%%%@*==------------=====%#============##+*#++@#*##=+%+=========================+==+===++====++++++++++=++++++++++++++++++++++++++*+++++++++++++++++++++++++*+++++++
-------------------------------------------------+#---:--------------:----*+:--*+:------------------+*@*------------------==#=========+@%%@%%@@%+-+=---------======+%============##***++@%*##=+%+===========================+==+==++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*++++++++++++
-------------------------------------------------*#-----------------:-----*#---*+-------------------=#%#------------------==#*-=======+%%%%%%@@%*=+*=---=----=======#*===========*%****+%%*#%=+%+==================================++++++=++=+++++++++++++++++++++++++++++++++++++++*++*+++*++**++*++++*++++++
-------------------------------------------------*%=----------------------+%=--#=--------------------*%@=---=-----==---=-==-*#========*%%%%%%@@@#==#+-=-----========*%===========+%****=#%*#%==#+=======================================+=++=++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++
-------------------------------------------------*#-----------------------+%=--#=:-------------------+#@*----=-------------==%+=======+%%@%%%%%%%+=*#==-----===-=====%*=========+=%#***+*@*#%+=#+=================================+++=+++=++=++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-------------------------------------------------+#=-----------------------%+:=#=--------------------=*%%=-----=------=-=-===#*=======+%%%%%%%@%@*=*#+=---===--======*%====++=====##***+*@##%+=#==============================++=++===++=====+++++++++++++++++++++++++++++++++++++*++++*++***++*++++++++++++++
-------------------------------------------------+#+-----------------------#*-=#=--------------------=*%@+---=--==--=---=--==+#=======+%%%%@@@@%%#=+**=---===-========%+==========*%***++%##%+=#+==============+======+==+===+==+===+++==+=+++++++++++++++++++++++++++++++++++++++++++++++***++*+**+++++++++++
-----==------------------------------------------+#+-----------------------**-=#=---------------------+#%#-----==------=-=====#+======*@%%%@#*++*%==+*+=-=----========*#========+=+%****+%##%+=#+=====================++++===++=+=+++++=++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++++++++++++
-------------------------------------------------+#+-----------------------+#-=#----------------------=+%@=---==--=-=--=======**======#@%%%*=---=%*=+#*==-=--=========+%+===+=====+%***++##*@+=#+=======+==========+++++++===+==+++===++=++++++=+++++++++++++++++++++++++++++++++++*++++++++++*++*++++++++++++
-=----=------------------------------------------+#+-----------------------+#-=#-----------------------=*@#-=-------=-===-===-+%======#%%*=-=====%%==+#+----=-=========#%====+=====##*+*+#%#@+=#*===============++===++==+++=++=+++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
---==--=--=--------------------------------------+#*------------------------#=+#------------------=----=+%%=---=----===========#+=====#%*====+#@@#%*=+##=-----==========%*===+===+=##***+%%#%+=#*-===========================+===+++=++++++=+++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++*
=---==-------------------------------------------=**------------------------#+*#--------------------=--==*@*---=-==============##====+##===-*@@#+=%*==***-===-==========*%==+======*#++++#%#%+=#*===================+=======+==++==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++**++++++++++++
=---=--------------------------------------------=**------------------------***#------------------------=+%%===================*#=====#*===*@%=-=-*%==+#*===---===-======%+==+====+*%++***%%%+=#*==========+================+=++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-==----------------------------------------------+#*------------------------+#*#=-----------------------==*@#-==-==============+%+====%*=*%@*=-==-+%+==*#*--=====--======*%==+==+++*%****+%%%*=%#-===============+====+==+===++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++
=====-===---------------=------------------------=**---------------------==-=###-------------------------=+%%=-====-============#*====%*#@%+-==-+#%@+==+##+-===-==========%*=+==+==+%****+%@%*+%%====================+==+=========++++++++++++=++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++
======-------------------------------------------=*#-------==---------------=#%#=--------------------=---++#%#-=================**====#%@#====+#@@@@+===##*+==========+===*%=++=====#*++**%@#**#%*=================+=====+==+++====+++++++++++++++++++++++++++++++++++++++++++++++++++++++*++***++++++++++++++
=====-----=-------=------------------------------=*#-------=+----------------*%#=--------------------=--==+*%%=-================+#+==+#@*====*@@@@%@#===+#**+-=============%*++++=+=##++*+#@#**###================+=====+=====++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++
======--------------=----------------------------=+#=------=#=------=--==-==-+%#----=--------=----==-----==+#@#==================%*=+=##===+#@@%@@@@%====***#==============+%+++====*#***+#@#+*%*%==================+++++===++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++***+*+++++++++++++++++
=====------------=----=--=-----------------------=+#+-------*+------------==-=%#-===-----------=---=-====-=+*%%+=================#*=+=##+=+%@%@@@@@%%+===+##*#+=============##+=====*#+**+*@#+*%+%+=============++======+==+=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*+++++++++++++++
==-=-===--======------------------=--------------=+#=-------=#----==-------=-=##=-------------==-------=====+#%#=================+#===*#=*@@@%%%@%%%@*====*#**#+============+%*+====*%+*+**@#+##+%*============+========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+**+++++*++++++++++++++++
===========--===-----=---------------------------=+#+-------=*+-----------=--=##-------------==---===--=====+#%@*================+%+=+*%#@@%@%%@@%%*##====+***#*+=====+====+=#%+====+%*++++%%+##+%*==========+=+=++==+=+++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++*++*++++++++++++++++
================--------------=---=---------------=#+--------=*-==-----------=*#---==-----==-=---============*#%%=++==============#*==*@@%@@%@@%%#=-*%=====*#**#*+====++====+*%*====+%+*++*%%*##=%#============+++===+=+++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
====-=========---==------==--=--===----=----------=#*---------#=----=---------*#---*=-----=--================+##@*=============++=##=++@@@@%@%%#+-==+%+=====***###***++++++***#%+===+%*+++*%%*##=#%===========+=+==++==++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
========-=--=--=----------=-==-==----=------------=##---------*+----------====*#-=-*=------====-=-==--========*#%%+===============+%+==#@@%@%%*=-====%*=====+*#**#####**###**+*%*++==%*+++*%%*%#=#%============+======++++==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=================-----==-==--======---------------=##---------+%=------=-=-===*#=--+*-----====-===============*##%#===============+#*==*@@@@%*======+%#=+====*##**########%###*%%+===#*++++#%#%*+*%+================+++====++=++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++
==============------=-====-==--====-----------=----*#=----=--=-%*-==----======*%=--+#=========================+**%%+=+=============*#==*@@%%+=====#%%%%=+====+*#***##%#########*%*=+=*#++++#%##*++%+=============++==++=+++=+++=+=+++++++++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=======-==========----===-=======------------------*%=------==-*%*+-===-==-=--*#=--=#+-=================-======*##%%+==============+#==+@%%+====*%%+=+%++=====*###*##***%#####*+#%===*#=+++*%##*+=%*=============+==+===++++++++++++==+++++++++++++++++++++++++++++++++++++++++**++*++++++++++++++++++++++++++
===============-============-=--==-=-===-----------+%+-----==--=%%*===---=-===+#====#*-========================+*##%*==============+#==+%%+===+%@#===+%*+=====+##**#####%*#####++%*==+#++++*%##*+=##=+=========+===+++++=++++++++++=+++++++++++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++
======================--====--=====-------------=--+%+---==-====###+====-==---+#====*#==========================*###%+==============#+==##===+@%+=====##+=====+*#**###*####*###+=*%+=+#+++**%#**++##=+======+=++++==+==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=====================--========-----=--------------=%*--=-======+%*#===-=======#====+%+=========================+###%#==============**==*#==*@#======+%#++=====+###*#*#####***#+==##=+%+++**%%#*++*%++=======+++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
==============================--==-=-----------=-=-=#*==--=======%##*==========%+====%*==========================*###%+=============+#++*%=*@*==+==+#%%%*+======*##*##**#####*#+==*%*+#*++**%@%*++*%+++==+++==+==+++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*
=============================-----==----------=----=##+==========*%##*=====-===%+====##==========================+###%%=========+===+#+++%#@+====+#%@@@@*+======+###*#**###*#**+==+#%=##++++%@@#++*%+=========++=++==++++++++++==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
================================-=---==-------=---==##+===========%%%*+=======+%*====*%+==========================*###%+====+========#*++%@+====*@@@%%@@#+======+*##*##**#*###**===+%**#+++*%#%@*+*%+========+++=+===++++=+++++==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
====================================--==--==---=====##*===========#%#%*========%+====+%*==========================+###%#==========+++**++##=+==#@@%@@@@%%+======++**#*#######***===+*%*%+++*%##@#+*%+======+==++++===++++=+++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++
====================================--=--=----======*#+===========+%%%#+=======%*=====##+==========================*###%*=========++=+#++*%===#@@@@@@%%%%*======+++*#*####*##***===++###++++%##%@**%++========++++=+++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
===================================--=----====--====*%*+===========#%%##=======#*=====*%*==========================*####%===========++%*++%++%@%%@%@%%%%%*=======++*##*#*##**#*++==+++%%*+++%%*#%%*%++===+========+++++=++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
===+==============================-==-=-=---========+#*+===========+%%%#*======#*=====+%*==========================+####%*======+==+=+%*+=%*%@%@@@@%@%%%%#+=======++***##*##***++===+=*@*+++#%*#%%#%+=+====+=====++==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
==============================-=====------==========+%*+============%##**+=====#*======##+==========================*####%+==+++==++++##+=#@%%%@@@%%@@%#%#+========+***##*##***++==+++*@**++#%*#%%@#+=========+==+++=+=++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
==++============================+====----==-=========#*+============*%###*=====##==+===#%*==========================+#*##%#====++++=++*#+++@@%%%@%%@@%%%%#+========+*#**##*#***+++=+++*%*+++*@##%#@%++=====++++======++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+=====+=====================================-========%#+============+%*###+====##======*%#+==========================*##%#%*=+====+===*%+++%@%@@%%@@@@%%%#++========+*#*##*##**+++=+++*%*+*+*@##%#*@*=+==+++=+==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++=++===============================================##*=============###*#*====##=======#%+==========================+#*#*##++==+====++#*++#@@%%%%%%%@%%%%*+=========+#**#*#**#+++==+++%#****@####*#%=+==========+++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++=+================================================+%*+============*#*###*===##=======*%*=======================+===*#*#*%*=+===+++++##+=*@%%%%@%%%@@%%%*+==========+#*##*#**++++++++%#*+**%%**#%*%*=+++=====+=+++++==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++===================================================%#+=============%*###*+==*#=======+##+==========================+#####%+++++=++=+*#+=+%@@%%@%%%%%@%%%*========+==***##***+=++++++%#**#*#@**##**@++====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++====================================================##+======-======#####**+=*%=======+*%*+============++========+++=*##%#%*======+==+%+=+*@%@%%%%@%%@@@%*+==========+#*##***+=++++++%#**##*@#*###*%#=+=++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
==++==================================================*%+=====--======+%*###++=*%========+##*+=========+=+===+++=+=+===+#*###%+=+===+==+%++++#%%%%%@@%@@#%%#*===========+**###*++++++++%###*##%%**##**%*=+====++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++=======================================-===========+%*==============%#####++*%+=======**%*+==========+=+++===========*#*#*%#=++=+==++%+=+++%@@@%%@@@*=*@##===========+*####*++++++++%*###******###*#%+====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++====================================================#%==============*%*##%#*#%+=======+*#%*+====+===++===++++=+++==+=+#####%*++==+++=#*=+=+*@@%%%@%+==*@##+===+=======+*###+++++++++%#*##*##***####*#%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++
++++===================================================*%+==============%#####*#%+======+=*#%#*+=======+=+++====++======+*###*%#=++++===##=+=+=%@%%%%+===+%%##+=++===++=++++*#*+==+=++=%%**#####*+*#*##*%#=++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++==================================================*%*==============*%####*#%+========+*#%#*+=+=+===+++++=+++++++====+####*%*++++=+=*%=+===+@@%%+===+=%%%#*+++==++=++=++++++=+=++++%@%*##*#***+#####*@*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++
++++++=================================================+%#=============+=%%#####%+=========*#%%#*+++=++=++=++=++=+=+++++++*#*#*#%+++=+++*%+++===#@%+=====*@%%%*#+++====+=++++===+=+++++%%%%*#####***#*#*##%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++====================================================+#%============+==*%#####%==========+#####*+++++=+=+++++++++====+==+####*%*+++++++%+=+===+@#=+=+=#%*%#%#*#+=++==+=++=+===+=++=++##*%%*#####*+*###**%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++=+==============================================+#@*=====+=========%###*#%+==========*###%#*++=++++++=++++======+=++*###*#%+++++++#*=++++=*@+=+=#%+=%#%%##*+++++=====+====++++++##**@#####**+*#*#*##%*+++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++==============================================*@#=++=+=+++====+=*%##**%+========+=+#%#%##++++++++++====++++++=++++####*%#=++++=##=++++==#%+=*@+=+#%#%%#*#+===++===+==+=+==++=#%*+#%####***+**#**##%++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++
+++++++==================+=============================+#%%=+#+==+=========%%###%==+======+==*##*%#*+=+++=+=+=======+==++++++##%#*%++++++##=++++++=%#=@*=+++%#####*#*+=+=+=++++==++==+=*%**+%%###***++**#***%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++==============+==+==============================*%%*=%*=+==========#%###%+====++++===+##%#%#*+++==++=+=+++=======++++*###*##++++=*%++++++=++%%%=+++%@%#%%#####*++==+++==+++++++*%**+*@####**++**##***@*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*
++++++==========+=====+=========================++======*%%#=*#===========++%##%%+============*#%#*##*+=++===+++=======+===+++####*%*+++=+%++++++++=*@*=++%@@@##%######*++++==++++=++++*%***+#%####**++******#%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++=+++====+===============================+===++=*#%%+=#*============#%*%%+========+===+##%#*%%*++++++=++++++++=====+++*#####%+++++%*+++++++++#%++%@@@@%*####%#*#*+++++++===++++*%##*+*@#*##*#*******#*%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*
++++++++++++++++====++++===============+============++==*##@*=*%++==========+%*#%+=++=========+*#%%##%%*+++==+++++=+===++++++++###*#%#++++%*=+++++++++%#*@@@@@@######%###***++++++=+++++%##*++%%###*#*++***#**#%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*
+++++++++=+++=+++++++===++=====+======++=====++====++===#**%#==##=+=+====+=+=#%*@*============++#%%###%%*++++++++++++=====++=++*###*#%+++=#*=++++++++++@@@%%%@@%#%%####%%#**+++++=++++++%##*++#%###*#*++******#@*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++===++++++++=======+========+=====+===++==+==+=**+%%+=+%+==++======+=%#%*===+=========+#%%%###%%*=+++++++++++=++=++==++**###%#=+=##=++++++++++#@%%%%@@@%#%%#%#%%##***++=++=++++##*#++*%######*+++****#%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++=++++++++++=+======+=+===+++===========+++==+=#*+#@*==%#+==+===+===++#@#===========++=+##%%###%%*++++++++++++=+=+++++++*####%+++##++++++++++++#@%%@@@%@%#%#%##%%##***+++++++++##*#++*%%#####*+++*****#@*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*
++++++++++++++++++++=====+++===+=======+====+====+=====+%*+*%%==*%++=====++====*@*====+=====++===*#%%#####%*=++++++=++++++++++++++*##*%#++#%+++++++++++++%@@@@@@%@%%%#%#%%%%#*#*++++++++#%##+++#@####**++++*****%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++=++++====++++=====+===++==+=========+=+#*++#%+=+%#+====++=====+%*==++=======++==+##%###%##%*=++++++++++++++++++++*####%++*%+++++++++++++*%@@%@@%%@%%%#%%###%###++++++++#%#%+++*%%##**#*++++*****@*+++++++++++++++++++++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**
++++++++++++++++++++++=++++++++=+=+=++==++===+=========*#++=#@*==+%*+=+++==+++=+%#==*%*+======++==*#%%###%##%*+++++=++++++++++++++*####%#=*%++++++++++++++*@%@@@@@@@%#%%%####%##*+++++++#%##*+++%%###***+++++***+%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++==+++==+==++++=======++==+++++=##*+=*@#=+=##+++++=+++=++%#=+#%%+=+========+*#%#%%%%##%#+++++++++++=++++++++#####%+*%*++++++++++++++#@%@@@@%%@%#%%%##%%%#*+++++++#%##%#++#%#####**+++++****@*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++=+++++==++++++====++++++%**+=+%%+==+%*+=+=+++==++#%==*%%*=++=+++++++*#%%#%###%%%#++++++++++++++++++++####%**%*++++=++++++++++%%%@%%@@%@%%%%@%%%%##*++++++#%###*+++%%*####*++++++**+#%+++++++++++++++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++=++++++++++++++==++++++++++=*%++++*#%+===*#==+++==++++#%++*%%#+++=++++++++#####%#####%%*++++++++++++++++++*###%#*%#+++++++++++++++*@@@@@@%@@@%%%%%%%#%%#*+++++#%#%%#+++#%*###***++++++***%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*
++++++++++++++++++++++++++++++++++++++==+=++++++++==+=#%++=+##@*===+%+=====+++++#%++*%%%#+=++=====++**########%#%%#+++++++++++++++++**##%%#%#++++++++++++++++#@%@@@%@@%@%%##%%#%%#++++++*%##%#+++*%######**++++++*+#%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*
+++++++++++++++++++++++++++++++++++++++++++=+==+++++++%#++++##%#==++%#===+++++++*@*++##%#+++==++=++++*############%#++++++++++++++++++*#%%%%%+++==+++++++++++*@@@@@@@%%%@@##%%%#%#++++++*%####++++%#######*+++++++**%#+++++++++++++++++++++++++++++++++++++++++=+++++++++++++++++++++++++++++++++++++++++**++*
++++++++++++++++++++++++=++++++++++++++++++=++++++++=+%#++++##%%+=+=*%*+==++++++*@*++*#%%*+==++++++=+*#############%%#*++++++++++++++++*##%#%+++++++++++++++++#@@%%@%%%%*#@%%%%#%%*+++++*%#%##*+++*%#####**+++++++*+#%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+*
++++++++++++++++++++++++++++++++++++++++++=+++++++=+=+%*++++##%%+=+=+%##*=++++++*@*+++#%##+=++++++++++#######%######%%%#++++++++++++++++##%#%*++++++++++++++++*@@@@%%%*+++#@%%#%#%#+++++*%####*+*+*%######*+++++++++*%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**
+++++++++++++++++++++++++++++++++++==+++=++++++++++++*%*++=*##%%*+===*%#**++=+++*%#+++*##%*+++++++++++*##%####%#######%%%*++++++++++++++*#%#%*++++++++++++++++*%@@%%%*+++++%@%%%##%*++++*%###**++++#######**+++++++++#%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**
++++++++++++++++++++++++++++++++++++++++++++++++++++++%*++++**%%*+=+++%#**+++++++%#++++####*=++++=+++++*######%#####%%%%#%*++++++++++++++*#*%*++++++++++++++*##*%@%@*++++*%%#@%%##%*++++*%#%##**+++#%*####***+++++**#@@@#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*
*++++++++++++++++++++++++++++++++++++++++=++++++++++++%+++++*#%%**=+++#%#**++++++%#++++*####++++++++++++##%#%%%####%#%%%##%*++++++++++++++#*%#++++++++++++*##%###@%%++++#%*++%@#%##+++++*%#%%#***+++%*#*##***++++++*%%*#%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**
+*+++++++++++++++++++++++++++++++++++++++++++++++++++*%*++++*#%#**++++*%#*#*+++++%#+++++#%##*+++++++++++*##%%%%%%##%%%%%%##%*+++++++++++++###%*****++++**#%%%%%%#%@#+++%%+++++%@%%#*++++*%####***+++%######***++++**%%**%#+++++==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**
*++*++++++++++++++++++*++++++++++++++++++++++++++++++*%+++++*%@%*+=+++=#%###*++++%%++++++####++++++++++++*###%%#%###%%%%@%#%%*++++++++++++**#%*#############%%%%##@*++#%+++++#@@@%%*++++*%####*+++++#%*#*##***++++++%%++##++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**
***+**+++++++++++++++++++++++++++++++++++++++++++++++*%*++++#%%*++++=+++%#**#*+++%%++++++#%##+++++++++++++*###%##%#%%%%%#%####++++++++++++*##%*#***#####%######%%#%#**@++++*@@@@@%%*+++++%####*+++++*@***###***+++++#@++*%++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***
******+*+++++++++++++++++++++++++++++++++++++++++++++*%#++++*##+++++++++#%####++*%%++++++*%##*++++++++++++*###%###%#%%%%%#%####++++++++++++*#%*##++++***#%#####%%%%@*%#+++*@@@@@@@%*++++*%###**++++++%#**###***+++++*%#++%*=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***
**++++++++++++++++++++++++++++++++++++=+++++++++++++++%%*+++***+++++++++*%####*+*%@+++++++####+++++++++++++*###%##%%%%%%%%%%#*%#++++++++++**#%*###*++++++*######%%##%%+++#@@@@@@@@@*++++*%###**++++++#%*#####**+++++*%%++##=+++=++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****
**++**++++++++++++++++++++++++++++++++++++++++++++++++#@*++++**++*+++++++#%%###*+%@+++++++*###*+++++++++++++##*%####%%%#%%%%###%*+++++++++**#%**####**+++++**####%%*@#++#@@%@@@@@@%%*++++#####*++++++*%*#*###***++++*#@*+##==+==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***
*****+*+++++++++++++++++++++++++++++++++++++++++++++++*%#++++++++++++++++*%%%%%#*%@*+++++=+####++++++++++++++#######%#%%%%##%##%%+++++++++**#%*+*#####**++++++***###%#+*@@%%@@@@@@@@%++++#####*+++++++%#**####**++++**@#+*%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***
******+++++++*++++++++++++++++++++++++++++++++++++++++*#%*++++++++++++++++%%%%###%@*+++++++*###*++++++++++++++###%#####%%%##%%%#%#+++++++++*#%++++######*++++++++**+#%*%@%@@@@@@@%@@@*+++#%##**+++++++#%***###***++++*%@++%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****
****++*+******+++++**++++++++++++++++++++++++++++++++++*%%++++++*+++++++++#%#%%#*%@#++++++++####++++++++++++++*%#####**######%%%#%#******++##%+++++*#%####*+++++++*+*%%%@@@@@%@@%%@@%%+++#%##**+++++++*%***##*#**++++*#@#+##=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*+***
***+******+++*++*+++++++++++++++++++++++++++++++++++++*+#%*++++++++++++++++#%%#%#%%#++++++++*####++++++++++++*+#######*###%%%#%%#%%****+++**#%*+*++**##%####*++++++++#@%@@@@@%@@@%%#+%*++####*#*+++++++%#*###*##*+++++*%%+*%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++*
***+****+++++**+++++++++++++++++++++++++++++++++++++++*+*%#*+++++*+++++++++*%%#%%%%%++++++++*#####+++++++++++++*#######*#######%%%%#*++*#****%+++++++*##%#####*++++*+*%%@@@@@@@@%*+++*%++#*###*++++++++#%**#**##**++++**%**%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****
**********+**+++++++++++++++++++++++++++++++++++*+++++*++#@*+++++*++++++++++#%%#%%@%+++++++++*####++++++++++++++*%##########%%##%%%%#***%*+*#%*++++++++#%%##*##*+*+++*%@@@@@@@@%*+++++%*+#####*++++++++*%#*#**##***++++*%%+%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++*
*********+***++++*++++++++++++++++++++++++++++++++++++++++%%+++*+*++++*+++++*%%#%@@%*+++++++++##%%#+++++++++++++*%%########%%%%#%%%%%#++*%+*#%*+*++++++*#########*++**#@@@@@@@%*+++++*#%+#*####*++++++++%%**##*##**++++**@**%+++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++*+**+**
*************+++******++*+++++++++++++++++++++++*+++++++++*@#++++*+++++++++++*###%%@*+++++++++*#%%%*++++++++******%##%*#%#######%%%%%#*+*%**#%++++++++++*###%##*##*+*+#%@@@@@%*++++*%%#%*#####*+++++++++#%*##**###**+++*+%#+%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++*+
************+*****++*++++++*++++++*++++++++++++++++++++++++#@*++++*+++++++++++*##%%@#++++++++++*##%#+++++++++++++*#%%%#########%%%%#@##*+#%+#%++++++++*++*#########*++*#%@@@%*+++*%@#++*%###***+++++++++*%**##***#*#*++*+##+##++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*+*
*****************+***++++++++++*+****++++++**+++++++++**++++#@*++**+++++++++++**%##@#+++++++++++#%##++*++++++++****%%#####%####%%###%%#*+*%*##++*+++*++++**########%#**#%@@@#+++#@@*=+++%####*#++++++++++%#*##**###%%++*++++#%+++++++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*
************+++**+***+++*+++*++++++++**+*+++++++++++++++++++*%%#*+++++++++++++*#%#%@%+++++++*+++*###*+++*+++****+**#%%%%%%@%%####%%%%%##*+####++*++++++*++**#######%##**#@@%+++#@%+=++++#%###*#*+++++++++#%*#*#*###*%#+++++**%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**
*************+*********+**+**++++++++*++**+++++++**++++*+++++*@#****++++*+++++*%%#%%%++*+++++++*+*##*++++*+********#%@@@@@@@@%*###%%%%%##**%%#++++++++++++*+*##%%###%##*#%%*++*@%+++++*+*%%##***+++++++++*%###***####%*++++++%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++
*********+***************+*++***++**+++**+++++++++++++****++++#@#**++*+++**++**%##%%%*++++*+++**+**#*++*+********#@@@@%%%%%@@@####%%%%%##**#@#+++++++++++++++*##%####%%#*%@#+*@@*++++++*#%%###*+++++++++++%###****##*#%++++++#%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++**
**************+************+*******++*++*+++++++*+++++**+++++++*@%*+**+**++***#%#%@%@#+++++**+++*****+*+*****+*#@@%#*#*#*++*+#@####%#%%%####%#**++++++++++++++*#####%%%%##@%*%@*+*+++*#@@@@###*+++++++++++%%*##*########+++++*%*=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
**************************+*********+*****+++++*++++++++++++++++#%@#++**++****#%#%%%%#+++*+***++**+**********#%%#**+++++++++++%%###%%#%%####%%**+++++++++++++++*######%%%#%%%@#+*+++#%@@@@@%##*+++++++++++#%*##***#####%++++*+#%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++*+
***************************************+*+++***++++++++++++**++**#%%%#*+**+***%##%%%%%*+++*++*+***++*+*****#%%*+++++++++++++++*%####%##@%####%**++++*+**+++++++*########%##@@#++*++#@@@@@@@%#**+++++++++++*@#*###*#*##*#%+++++#@*++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++*++
**********************************+***+***+**++++++**+++**++***+**#%%%%*****+*%##%%%@%+*+++*************+*#@#++***+++++++++++**%%###%%#%%####%***++*++++++++++***####%#%#%#@%++**+#@@@@@@%%%#*++++++++++++*%#*###***##**%*++++*%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++
***********************************++*********++++********+**+++***#%%%%#*++*#####%%%%******+****+***+**#%%*+++++++++*+++***++*#%###%%#%%%###%%+**+++++++++++++***###%%%###%%*+**#@@@@@@@%%@#**++++++++++++%%*##*#**###*#%++++*#%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*
***************************************************++++********+**++*%%%@@#**%####%%%@#+*++**####%###%%%##*+++*+++++++++****+***%%###%%#%%####%***+*+++++**+*++****######*%%%***#@@@@@@@@%%@#++++++++++++++#%**#########*%*++*+#%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++
*************************************************+*+**+***************###%@%#%#%##%##@#++*%%@%%%%%###**+++**++++*+++++*++++++**+%%###%%#%%%###%#+****++++**+++*+***####%%##%%%*#@@@@@@@@@@%%%++++++++++++++*%**#######%##%%++*+*%+=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*************************************************************************##%%%####%%%%%**%%%%#***+++++++*+++++++***+++*+++++***+#%#%%%%#%%%###%%+*++++++++++*******#*###%%#%%%#@@@@%@@@@@%%%%++++++++++++++*%#*#########*#%*+*+*%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
******************************************************+************+*******#%%###%%%%%%*****%*++++++*+++**+++*+++**++**++******+*%##%%%%%%%%##%%***++++*+*++*++***+*######%##%@@@@@@@@@@@@%%%*+++++++++++++*%%*#*##*####**%#++++%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
****************************************************************************%%#####%%%@#+**+##+*+++******++*+++*+*+**************%%#%%%%%%%%###%**++*+++++++++++**+**####%%##%@@@@@%@@@@@%%%%*++++++++++++++#%**#######%#*#%+++*%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++
***************************************************************************#%#####%%%%%%+**+##*++***+++****+******+*+*********+**%%####%%%%%%##%#+***+**++++*+****+***#*#%%###@@@@@%@@@%@@%%%*++++++++++++++#@#*#**#**###**%*++*%*=++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
***************************************************************************%%%#####%%%%%*****%*+***+*******+*********************#%#%#%%%%%%%%#%%+**+**++******+****++**##%%##%%@%@%@@@%@%%%%#++++++++++++++*%#*###**#####*%#+++%*+++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
***************************************************************************%%######%%%%%#****%*+**+*******+**********************#%%%#%%%%%%%%##@***+++++****++*+**+++++*##%%#%%@%@%@@@@@%%%##++++++++++++++*%#***#***####*#%++*%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**
*#*************************************************************************%%#*####%%%%%#****#%***+****+++***********************#%%%%#%%%%%%%##@#****+******+**+**++*+++**%%##%%%%%@@@@@%%%%%+++++++++++++++#%**#*##*#####*%*++##+++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++*++*+
##*************************************************************************@%#######%%%@%*****%#**********************************%%%%##%%%%%%##%#**++++++**+**++**+++++++*#%##%%%%%@@@@@%%%#%*+++++++++++++++#*****#**####*%%++#%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++
####***********************************************************************%%###*###%%#%@******%**********************************%%%%%%#%%%%%%%%%+**+++++++**++*+*+++++++++*#*%%@@%@@@@@%%%#%*+++++++++++++++****#*##**###**%++*%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
**************************************************************************#%########%%%%@#+****##*********************************%%#%%%#%%%%%%%%%****+**+**+*+*+*#*++**+++++**%%@@@@@@@@%%%%%#++++++++++++++++***#*###**###*%*++#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
**************************************************************************#@#%######%%%%%%******%*********************************%%%%%%%%%%%%%%#@*+**++++*++++*+***++*++*+***+%%@@@@@%@%%%%%%#+++++++++++++++++*#***###*****%#++**++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++
**************************************************************************%%##########%#%%******##+*******************************%%%%%%%%%%%%%%%%#+*+****++++*******+++++***+*#@@@@@@%@@%%%%%#+++++++++++++++++*#*****#*+***#%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
**************************************************************************%%#%#######%%%%@#******%********************************%%%%%%%#%%%%%%%%%****+*+++**++*+**+++*++*++++*@@@@%@%@@%@%%%#+++++++++++++++++**##***##****#%*+++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++
**************************************************************************%%#########%%%%%%******%#*******************************%%%%####%%%@%%%%%****+*++**+++++**+***+*+++++*@@%@%@%@@%%%%%#++++++++++++++++++*+**#****+*#*%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
**************************************************************************%%#########%#%%%%*******%*******************************@%%%##%##%%%%%%%%#+****++***++++*********+**+*@@%@%%%%@%%%%%*++++++++++++++++++*+**#*****+**#%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#*#***********************************************************************%%######*##%#%%%%#******%#******************************%%%%##%%##%#%%%#%#****++*******************++*%@@@@@@%%%@%%%*++++++++++++++++*+*++***#****+**%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#************************************************************************#%##%#####*#%#%%%%%******#%******************************#@%%##%%##%%%%%##%*****++**++*+******+*+**+***%@@@@@@@%%@@%%*++++++++++++++++*+*+++*#*#*+**+*##+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#######******************************************************************#@%#%##########%%%@*******%#***************************##%%%%###%##%#%%%##%*****+***++*******++***++*+**#%%@@@@%%%@%%#+++++++++++++++++++++++*#*****+**%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#######*****************************#************************************#@%*%%#######%%%%%@#******#%***********************#%%%%#########%#%%%%#**%#+**************++**++++**+++++**#%@@@%@%@#+++++++++++++++++++++++******++++#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#########*****#**********************************************************#@%#####%#####%%%%%%******#%*****************##%%%%##*******#######%###***%#****************+*++++**++++++++++##%@@@@#+++++++++++++++++++++++++****++++*#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
############**#***************************#*******************************%%#######%####%##%%#******%#***********##%%%##*****+*****************+***#%+*********+****+*+++++*++++++++++++++#@@%#++++++++++++++++++++++++++**+++++*#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
###############**************************************************#********#*##*###*#######%%%%******##********##%%##******************************+#%+**+**********++++++++++++++++++++++++*%@#++++++++++++++++++++++++++*#*+++++*+++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++
################*********************************#***************************#*###**##%####%#@#******%#****#%%%#************************************#**++**++****++++++++++++++++++++++++++++*%++++++++++++++++++++++++++++*+++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
####################*********************#********##*************************#***###**#%###%#*#******####%%##************************************+***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
####################*#*************#*************#**********************************#####**##******************************************************++++****+*++++*+++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#######################******************************#********************************##**********************************************************++*+***+++*+++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++
########################*#*********************************#***************************#********************************************************+++***+++++++++++++++*+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
##########################**************************#*****#*********************#************************************************************+*+******+*++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
##############################***********************************************************************************************************************+++++**+**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
###########################***##***************************************************************************************************************+*********+***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#################################********************************************#***********#***********************************************************+***+++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#################################*#**********************************************************************************************************************+**+***++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#######################################************************************#*****#***************************************************************************+**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
########################################***********************************#****##***********************************************************************+*+++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#########################################*#**************************************##********************#***********************************************++++++**+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#############################################************************************#*********************#********************************************+++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
##############################################**##*************************#**************************#**********************************************++++**+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++
##################################################**********************##*******#*******************#**#********#**********************************+**++*++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
####################################################**************#************************####*****##*********************************************++**+***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
######################################################********************************#***##******##*#********#*#************************************+****+*++++++++++++*++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#########################################################********##********************#****##***##**#*######**##***#*******************************+****+**+++++*++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++