____             __                                                         _  ___  
|  _ \ _ __ ___  / _| ___   _ __   ___  _ __  _ __ ___   ___   _   _ _ __   / |/ _ \ 
| |_) | '__/ _ \| |_ / _ \ | '_ \ / _ \| '_ \| '_ ` _ \ / _ \ | | | | '_ \  | | | | |
|  __/| | | (_) |  _|  __/ | |_) | (_) | | | | | | | | |  __/ | |_| | | | | | | |_| |
|_|   |_|  \___/|_|  \___| | .__/ \___/|_| |_|_| |_| |_|\___|  \__,_|_| |_| |_|\___/ 
                           |_|                                                       
    
***************************************###************************************************************************##:..:======:..#********************************#**************************************#######***######************************************************************
*********###*****************************************************************************************************#=..:========..*#**********************######****#####**********************************#######**#******************************************************************
******###***************************#****************************************************************************:..=========..=****************+-:...................:-+************************************#**###******************************************************************
******######************###*********##**************************************************************************...=========-..**#*************-----=============--::..........:=****#*****************###*************************************************************************##
*********###*************************************************************************************************#*...==========..:************#*#:.-==-:-======================-:........-****************###*************************************************************************##
*************************************************************************************************************#=..===========..+**************=..=====::::==========================-.......-**************###*********************************************************##********#****
************************************************************************************************************##...===========..***************..-========:.::-============================:.....:*###******************************************************************##********#****
************************************************************************************************************##:..===========..##************=..============:...:-============================-:....:*********************************************************************************
*************************************************************************************************************#+..===========..#*************..:===============-:...:-============================-.....=#****************************************###*********************************
***************************************************************************************************************:..==========..+************=..====================-:....-============================:....-**********************************************************#***************
*******************************************************************##*******************************************...=========..-#***********:..=========================:....:-==========================-....=**#********************************************************************
***************************************************************************************************************##=..:=======-..#*#*******##..=:...::::======================:....:-=========================....+*#******************************************************************
*****************************************************************************************************************##...=======..=********##-....#%%%%%=..-========================:.....:-=====================-...-******************************************************************
********************************************************************************************************#*********##+...======..****#**###...*%%#%%%%%%+..============================-:.....::-=================...+**#*************************************************************
*******************************************************************************************************=---==+*********...:===-..**=:.......#%%.:%%%##%%=.-==================================-:.:::::::-===========::-+**************************************************************
***********************************************************************************************#*#*-....-=============**#:...:==-==::====...%%#%%%%%.=%%%.:==========================================-:::::::::::::====+*************************************************************
***********************************************************************************************=....:=======================:....-====-.....%%:#%%%%%%%%+.:==========================================================-.-*************************************************************
******************************************************************************************#*-....-===============================--=:...-=:.-%%:::--#%%*..:==========================================================..-*************************************************************
*****************************************************************************************+....-====================================...=====-..%%%%%%%%........-=====================================================-..**************************************************************
**************************************************************************************#:...:=================:.........:==========..:========-.........:::::::....:=================================================..:#*************************************************************
************************************************************************************+....==================...:=======:..:=======-..================:...:::::::::......-===========================================:..##*************************************************************
*********************************************************************************#-...:==================...-===========-..-======..-==================:....::::::::::......-======================================..+#**************************************************************
********************************************************************************:...-==================:..:==========--:--..-=====:..-====================:....:::::::::::.......:-===============================..:****************************************************************
*****************************************************************************#:...-===================...=======......:-===-=======:..:=======================......::::::::::::........-========================:..#****************#***********************************************
**********************************##################************************-...-===================:..-====:....-===================....=========================:.....::::::::::::::.........:-===============-..******************##########**++++++**#######*********************
****************************#***#*+-:............::=*##*****************#*+...:====================...===:...:=========================....:==========================-.......:::::::::::::::..............::--=..=*************##*+-..........................:+********************
*************************#*=:..........:::::::::..........:=*************....=====================...=-...:==============================-....-============================-:........::::::::::::::::::::....::..:**********=:.........:--===================-.....******************
**********************=::...:-==========================-:......-*#****:...======================...:...====================================:....:================================-:.........:::::::::::::::::...******=......:-=================================:..:##**************
*********************=:--=====================================-.....==...:======================......=========================================-.....:===================================-:.............:::::...=***::...:=========================================-=#***************
********************#*============================================-.....=======================:...:===============================================-......-=========================================--:.........*=::.-==============================================:=***************
*******************#*==============================================.....=======================:..=====================================================-:......:-=======================================-....--..--=================================================::***************
******************-==============================================-....::======================---====================-::-====================================:.......:-==============================:....:====-..-=================================================:.:**************
*****************::-============================================:...================================================::=============================================:.........:-=================-:.....-========-..-================================================-..**************
****************+.:============================================...:================================================..-====================================================-:.......:::::::::......:-=============-..:================================================..=*************
***************#..:===========================================...-================================================:.-===============================================================-------========================..:===============================================:..#************
***************=..===========================================...-================================================-..===============================================================================================-..:===============================================..*************
**************#...==========================================...==================================================..-=================================================================================================..:==============================================..=************
**************=..==========================================. .==================================================-..==================================================================================================-..-=============================================..:#***********
**************...=========================================...===================================================..-===================================================================================================:..-============================================:..#***********
*************+..-========================================...===================================================-..=====================================================================================================:..-============================================..************
*************:..========================================...====================================================..:======================================================================================================...============================================..-***********
************#...=======================================...=====================================================..-=======================================================================================================...===========================================...*#*********
************+..-======================================...-====================================================:..========================================================================================================-..-==========================================...#**********
************:..======================================:..:====================================================-..:=========================================================================================================:..==========================================:..#**********
**********##...=====================================-...=================================--=================::..===========================================================================================================...=========================================:..#**********
**********#=..-=====================================...=================================::=================..#..====================================-=======================================================================..:========================================:..#**********
**********#...=====================================...=================================::=================..+=..===================================-:=======================================================================:..========================================:..#**********
**********#...====================================-..:================================..:===============-..#@:..===================================-:========================================================================...=======================================:..***********
***********..:====================================...================================:..===============:..%@@..:===================================-:===========================---==========================================-..=======================================:..#**********
***********..:===================================:..-===============================-..===============...%@@@..-===================================:.:===========================-::==========================================...======================================...*#*********
**********=..-===================================...================================..:==============...@@@@@..====================================..::===========================-::=========================================-..=====================-::........:-====...***********
**********:..===================================:..-===============================...=============-...@@@@@%..====================================..:..===========================:..=========================================..:=============-.........::----::...:=-..=*#*********
*********#...===================================...===============================-..:============:..:@@@@@@%..====================================..+-..===========================:..========================================-..========-.....:-===================:..-************
*********#...==================================-..:===============================...============...+@@@@@@@%..====================================..*@*..-==========================..:========================================.:-====-....-======================:...**************
*********#...====-:..................:-========...===============================:..-===========...%@@@@@@@@#..====================================..#@@@...==========================..-=======================================-::==:...====--:::--============-....+***************
*********#...-.....:================-:...:-====...==============================+...==========:...@@@@@@@@@@%..====================================..#@@@@:..:========================:..========================================::=-:==-:.................--.....+##****************
**********-....==========================--===-..-==============================:..-=========...-@@%=.....+@%..====================================..%@@@@@%...-=======================...=======================================--=====================-......:##*******************
***********:....:=============================:..===============================...=========...#....:#@@@@@@@..-==================================-..%@@@@@@@+...-======================..-=========================================--==================-::-=-....=#*****************
*************#+.....-=========================...==============================:..-=======:......+@@@@@@@@@@@..:==================================-..%@@@@@@@@@+...:====================:..=========================================-:.=========================-....*#**************
***************#**.......:=========-........:-...==============================...=======.....+@@@@@@@@@@@@@@..:==================================:..@@@@@@@@@@@@@....-=================+..:=========================================:..===========================...:##************
***********************-..:-===:......-=======:.:=============================-..-======...%@@@@@@@@@@@@@@@@@...==================================:..@@@@@@@@@@@@@@@=....================:..==========================================:..:==========================-..:#************
***************************=.....:============:.-=============================...=====:...@@@@@@@@@@@@@@@@@@@=..==================================...@@@@@@@@@@@@@@@@@%.....-=============. :===========================================...-=========================--=#************
************************-....:================-:=============================-..:====...-@@@@@@@@@@@@@@@@@@@@@..-=================================...@@@@@@@@@@@@@@@@@@@@#:....-==========...============================================-...:=========================*#************
*********************+....:==================::-=============================...===-...#@@@@@@@@@@@@@@@@@@@@@@...=================================...@@@@@@@@@@@@@@@@@@@@@@@@-.....-===--=-..-=================================:.===========....-=======================*************
******************#:....====================:..==============================...==:...@@@@@@@@@@@@@@@@@@@@@@@@=..=================================...@@@@@:..............:+@@@@@#........==..:=================================-..:===========-....:====-:-===========-:=#***********
*****************....-=====================-..==============================-..-+...-@@@@@@@@@@@@@@@@@@@@@@@@@@...================================..:@@@@##@@@@@@@@@@@#-.........:*@@@=.......===================================...:============+:.......-===========..=#***********
**************-....=======================-..:==============================...=...#@@@@@@@@@@@@@@@@@@@@@@@@@@@=..================================..:@@@@@@@@@@@@@@@@@@@@@@@@#:......:@@@@@#..-====================================.....:========:.....-==============..*************
************=...:=========================...===============================......@@@@@@@@@@@@@@@@@@*-........#@...===============================..-@@@@@@@@@@@@@#++++***%@@@@@@%=.....:@@@...====================================-:.-...........:-=================..:*************
***********+:.-=========================-...===============================-.....@@@@@@@@@@@@@@%- ....-*@@@@@@@@-..======..:=====================-..=@@@@@@@@@@%-.......... ...+@@@@@=....:@...=====================================..:==============================..=*************
*************==========================:..:================================:...-@@@@@@@@@@@@*.....-@@@@@@@@@@@@@@...===-.=...====================-..+@@@@@@@@@.....     ..........%@@@@-  .....::.....==============================...==============================..+*************
************+=========================...-=================================...=@@@@@@@@@@%.....=@@@@@@@@@@@@@@@@@%..:==-..@:...==================:..#@@@@@@@@.  .................. .@@@@@......:--==================================-..=============================-..**************
************+=======================:...===================================...@@%*+*%@@=.....@@@%=......=@@@@@@@@@=..-=-..@@@...-================. .%@@@@@@@-.....................  .-@@@@@@*..======================================..:============================:..#*************
**********#--=====================:...-====================================...@@@%*:......=@@=.... ........@@@@@@@@...==..@@@@#...:==============...@@@@@@@@..........  ...........  .:@@@@@#..-=====================================...============================...#*************
**********#::-==================....-======================================..:@@@@@#....=@@+....... ...::...*@@@@@@@...=..%@@@@@%....-==========-..=@@@@@@@+...........................:@@@@%..-=====================================...============================..:**************
**********#:.:==============-....:==============::-========================..-@@@@:....@@@........ .  . .....=@@@@@@@.....*@@@@@@@@=....-=======...@@@@@@@@=.  ...................... ..@@@@#..-=====================================...============================..=**************
**********#-..=========:......:==============:...:=========================..-@@@.. .=@@%..........+.. .......*@@@@@@@:..:%@@@@@@@@@@@-....-====..#@@@@@@@@#.. ...................... ..:@@@*..-=====================================:..===========================:..#**************
**********#*..==========:....-===========-.......==========================..:%%....%@@@. .....................@@@@@@@@@@@@@@@@@@@@@@@@@@%-...:@@@@@@@@@@@@@.... ....................... @@@=..======================================:..===========================...#**************
**********##..:============-................==..:==========================........#@@@:. ..  ............... .:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@... . ......................:@@@...======================================:..===========================..:#**************
**********##...===================----=======:..==========================:.......-@@@#............:........ ...@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*....... ............. .....#@@@...======================================...===========================..-#**************
************:..==============================..:=======================-:.:...@@@@@@@@... ..............  .... .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-.....::.................:@@@...=======================================...=====-::.......:-=========-..+##*************
************=..=============================...============================:..#@@@@@@%............. -:........ ..@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@%*+-:....-*-:......=@@@%..:=======================================...-......:------:......:-===...##**************
*************..-============================...=============================..-@@@@@@%.......... . .@. .. ......-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@...========================================. .:===================-...:...*****************
************#...========================--=:..-=============================...@@@@@@@........... ..*  .. .....-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@:..-========================================..:=================-.........**#***************
************#...=================-......:-=...==============================-..+@@@@@@ ............. .....  ..%@@@@@@@@@@@@@@@@@@@#:...............-@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@:..-========================================:..-===========-.......-+************************
*************:..=============.....:========...===============================...@@@@%@#.........   .. .....+@@@@@@@@@@@@@@@@@@:.....-+++++:...-+++++++@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@%@:..-=========================================...==-........-***##*****************************
*************=..-========:....:===========-..:===============================-...@@@%%%................:%@@@@@@@@@@@@@=:::......=%@*-:++++++....++++=...@@@@@@@@@@@@@%%%%%%%%%%@@@@@%%...===========================================......:----:.......=#****************************
**************..:=====-....========-.........-================================:..*@@%%%%:...........=@%%%%@@@@@@@@@@@@@@%##%@@@@@@@@....++++++-::-+++....@@@@@@@@@@@@@@@@@@@@@@@@@@@:..:============================-:::-==========-...==============-.....**************************
**************...===:...========-....:====...==================================...#@%%%%%%@%#++#@%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@*....+++++++++++-...@@@@@@@@@@@@@@@@@@@@@@@@@....=============================-.....==========...===================:...:***********************
*************#-..--...=======-....:=======...===================================...%@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-....+++++++++=...@@@@@@@@@@@@@@@@@@@%@@-...:==============================....-..-========-..:======================....#********************
***************+:...=======-....==========...====================================...*%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+.....++++++....@@@@@@@@@@@@@@@@@@*.....===============================....:+-..:========...=========================...********************
*****************............:============...=====================================:..:%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:.....:-....%@@@@@@@@@@@@@@@+...:-===============================:....--==-..:=======...:=========================-..********************
*******************##**+...:==============...======================================-...%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=:.::-#@@@@@@@@@@@@@@@@@@@@@@%+....-=====================:.....-**..:=:..:======:...===========================..********************
********************#*...:================...========================================...-%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=......:-========-:.......=##***=..==...-=====-...===========================-.:#*******************
********************=...==================...=========================================-...*@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+-:.........:-=*#*********:..==...=====:...============================:.:#*******************
******************#:..:===================...=========-...==============================:...:%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%...+********************#...+...:====....=============================..=#*******************
*******************..-====================...========..=...:==============================-.....:%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-...=***********************...=...====....=============================:..#********************
********************======================...=======...==-...-===============================-.:=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+....+*************************=.....-==:...-==============================..-*********************
******************--======================...=======...====-....-========================:...:%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-....=##****************************...-=:...:===============================...**********************
******************=::=====================-..:======..-=====+*=.....:-=============-:.....+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*.....=###****************************+...:....:================================:..+**********************
******************#:.-=====================...======..-======****#*-................:=***=:::#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=.....:*********************************#:.......-=============---:::::::--========:..-***********************
********************:.-====================-..:=====..:=====..:***#******########*********#=.....#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*.......-##**********************************=....+=+*+====-:...............:::.......-=-..:************************
********************-..=====================...=====...======..+#**************************#**#:.....-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*:........+##*************************************=....*#**+--=:....-============:...:======--:..-*************************
*******************#*:..-====================...====:..::====:..***********************************+.......:+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=:........:=*#***********************************************#*****=::::====================:........******************************
**********************...===============:........===-..:=====-..****************************************+-............:--=+++++++==:::..............-*..-************************************************************=.:========================:..-*********************************
***********************...==========-....:=-......===...=====:..**********************************************##*+=--:...............:-=+*%@@@@@@@@@@@..=****#*******************************************************#::=========================-...********************************
************************...======-....===:..:===...:==...====:..**************************************************************#***=...@@@@@@@@@@@@@@@%..:......********************************************************-......:-==================-..:*******************************
************************+..:===:...==--:..:======-....:...===...#************************************************************-....-...@@@@@@@@@@@@@@@#..@**##-..=###****************************************************#**#+:....:================:..=*#****************************
************************#=..:-...-.......===================-..************************************************************+...####:..*@@@@@@@@@@@@@@%..*::@@@#...#*************************************************************#....-==============...##****************************
************************#*+........--..:====================-.=***********************************************************...=%@@-.:..*@@@@@@@@@@@@@@%....#%%@@@...=*************************************************************#*=...-============:..*#****************************
*******************************#***:..-===============:...:=**********************************************************##:...@@@@@:....@@@@@@@@@@@@@@@@...%#####%@#...***************************************************************+:...===========-..=#****************************
**********************************:..===============...:**************************************************************=...%@@%###%...#@@@@@@@@@@@@@@*..:@@@@%#####%:..:#************************************************************-:=...==========-..+#****************************
*******************************#*=..:=============:..-#*#************************************************************...+@@######%@...@@@@@@@@@@@@@...=###@@@@@#####%-..:...-*******************************************************:.==...=========...##****************************
*******************************##...=============...************************************************************=:::..*@@#####%@@@@%...@@@@@@@@@@#...@@#####%@@@@@###:.:.........***************************************************..===...=======:..=******************************
*******************************#-..=============...*#*****************************************************#+.....::-..@####%@@@@%###%...%@@@@@@@...-@@@@@#####%@@@@@#..#=.-====:...+*********************************************##..:===:..======...-*******************************
********************************...============-..-*****************************************************:....:-==.:@..-##%@@@@%####%@@:..*@@@@#...%##%@@@@@#####%@@@...@+..=======:..-********************************************...====...====-...*********************************
********************************...============...*****************************************************..:======:.=@-..@@@@@%#####@@@@%+..-@@...+@@####%@@@@@%####%*..#@*..=======:......:+**************************************...====-..-==....=#*********************************
********************************-..:===========...#************************************************:.....=======..*@#..#@@%####%@@@@%##*%......%@@@@%####@@@@@@###%..:@@#..=======-.=@@*......=********************************:..:====:..-:...-*************************************
********************************#...-==========...#********************************************+.....#*..=======..@@@..:%#####@@@@@###*...@%#@:..#@@@@#####@@@@@@#-..%@@#..========.:@@###@#-....:**********************+.......:===-....++******************************************
*********************************#....=========-..=************************************#***+.....:@@@@-.-======-..@@@=..####@@@@@####-..... .......@@@@@####%@@@@@..-@@@%..-=======..@@###%@@@@#+.::=#*****************+:............:***#*******************************************
************************************....-=======...+*************************************+...:@%##@@@@:.=======:..@@@@..-#@@@@@%####...::::::::::...-@@@@%####%@@...@@@@%..-=======..%@###%@@@@##%@#..+#********************#*###****************************************************
**************************************:....-=====:...+*******.:**************************--%@@@###%@@%:.=======..-@@@@:..@@@@@####-...:::::::::::::...%@@@@####%-..%@@@@@..-=======..+@####@@@@###@@%..+*****************************************************************************
*****************************************:.....:-==:..........-***********************#+::%*@@@###@@@+..=======..+%@@@#..+@@%####....::::::::::::::....:@@@@@##+..=@@@@@@..-=======..-@%###@@@@###+%%*:.*#***************************************************************************
*******************************************#*+-:.......::--=***************************..#%=*@@###@@@:.:=======..#%@@@#:..%####=..:-..::::::::::::...@...#@@@@@...#@@@@@@..:=======...@%###@@@%##-##@@*::#***************************************************************************
**************************************************************************************..=%#%-@@###@@@..-======-..%@@@%##..:#%%...#@*..::::::::::::..=@@-..:@@@...##@@@@@@..:=======:..@%###@@@%#:*##%@@-.:***************************************************************************
************************************************************************************#...##@@-#@###@@@..=======-..@@@@%##+..+-...#@@@...::::::::::...@@@%#...%...%##@@@@@@:.:=======:..@%###@@@%=:@###@@@..=**************************************************************************
************************************************************************************-..###@@+:@###@@%..=======:..@@@@%###::...*##@@@*..::::::::::..#@@@####..:-@###@@@@@@:..=======:..@%###@@@%:@@%##%@@*..**************************************************************************
************************************************************************************..###@@@#:%###@@+..=======...@@@@%##%@+:=%###@@@@:............:@@@@###@@##@@###@@@@@@:..=======-..@%###@@@:*@@@###@@@...*************************************************************************
***********************************************************************************..:##%@@##=-###@@-..=======..-@@@@###%@@@@%###@@@@@... .......:@@@@@###@@@@@@###%@@@@@-..=======-..@%###@@+:%@@@%###@@%..-*#**********************************************************************
********************************************************************************#*-..%##@@%##%-###@@...=======..+@@@@###%@@@@###%@@@@*..::::::::..*@@@@###@@@@@@###%@@@@@-..=======-..@%###@@-%#@@@@###@@@:..*#**********************************************************************
********************************************************************************#*..+##@@@###@+###@@..:=======..#@@@@###%@@@@###%@@@@...::::::::...@@@@###@@@@@@###%@@@@@-..========..%@###@**###@@@%###@@@..:***********************************************************************
********************************************************************************#...###@@###%@%###@@..:=======..%@@@@###%@@@@###%@@@#..::::::::::..@@@@###@@@@@@###%@@@@@-..========..%@###@#@###@@@@###%@@+..*#*********************************************************************
********************************************************************************-..%##@@%###@@####@@..-=======..@@@@@###@@@@@###%@@@...::::::::::..=@@@###%@@@@@####@@@@@-..========..%@###@@@####@@@%###@@@...#*********************************************************************
******************************************************************************#*..-##%@@###%@@####@%..-======-..@@@@@###@@@@@###%@@%...::::::::::...@@@###%@@@@@####@@@@@-..========..%@###@@@@###@@@@###%@@#..+#********************************************************************
******************************************************************************#:..%##@@%###@@@#*##@#..=======-..@@@@@###@@@@@###%@@-. ::::::::::::..#@@###%@@@@@####@@@@@-..========..%@###@@@@###%@@@####@@@...#********************************************************************
*******************************************************************************..*##@@@###%@@%#-*#@*..=======:..@@@@@###@@@@@###@@@...::::::::::::..-@@###%@@@@@%###@@@@@-..========..%@###@@@@%###@@@@###%@@%..-********************************************************************
******************************************************************************...###@@####@@@#*:##@+..=======:..@@@@@###@@@@@###@@+..:::::::::::::...@@###%@@@@@%###@@@@@-..========..%@###%@@@@####@@@####@@@-..********************************************************************
*****************************************************************************=..%##@@@###@@@@#+:##@+..=======:..@@@@%###@@@@@###@@...::::::::::::::..#@####@@@@@%###@@@@@-..========..%%##*+%@@@%###@@@@###%@@@..:*******************************************************************
*****************************************************************************..-##%@@####@@@##-.##@=..=======:..@@@@%###@@@@%###@@...::::::::::::::..:@%###@@@@@%###@@@@@:..========..%%##+-#@@@@###%@@@####@@@+..*******************************************************************
****************************************************************************:..###@@%###@@@@##..##@-..=======...@@@@%###@@@@%###@-..:::::::::::::::...@%###@@@@@%###@@@@@:..========..%%##=:#%@@@%###@@@@###%@@@...#*****************************************************************
***************************************************************************+..+##%@@###%@@@###..##@-..=======..:@@@@%###@@@@%###@...::::::::::::::::..*%###@@@@@%###@@@@@...=======-..%%##-.##@@@@###%@@@####@@@*..+*****************************************************************
*************************************************************************##...###@@%###@@@@###..##@-..=======..:@@@@%###@@@@%###*..:::::::::::::::::...%###@@@@@%###@@@@@...=======-..@%##:.##%@@@%###@@@@###@@@@...#****************************************************************
**************************************************************************=..%##@@@###%@@@###%..##@-..=======..:@@@@%###@@@@%##%...:::::::::::::::::. .####@@@@@@###@@@@@..:=======-..@%##..###@@@@###%@@@####@@@%..-#***************************************************************
**************************************************************************..-###@@%###@@@@###@..##@-..=======..:@@@@%###@@@@%##%...:::::::::::::::::: .-###@@@@@@###@@@@@..:=======:..@%##..###@@@@%###@@@%###@@@@:..##**************************************************************
*************************************************************************:..%##@@@###%@@@####@..##@-..=======..:@@@@%###@@@@%##=..:::::::::::::::::::...%##@@@@@@###@@@@@..:=======:..@%##..%##%@@@@###%@@@####@@@@...***************************************************************
************************************************************************+..*##%@@%###@@@@###@@..##@-..=======..:@@@@%###@@@@###...::::::::::::::::::::..*##@@@@@@###@@@@@..:=======:..@%##..%###@@@@%###@@@%###@@@@+..+#*************************************************************
*********************************************************************#**...###@@@###%@@@####@@..##@-..=======:.:@@@@%###@@@@%##...::::::::::::::::::::..:##%@@@@@###@@@@@..-=======..:@%##..%###%@@@@###%@@@####@@@@...#*************************************************************
***********************************************************************-..%##%@@####@@@@###%@@..##@=..=======:.:@@@@%###@@@@%#+. :::::::::::::::::::::...##%@@@@@###@@@@%..-=======..=@###..%%###@@@@%###@@@%###@@@@#..+*************************************************************
***********************************************************************..+###@@@####@@@%###@@@..##@=..=======:.:@@@@####@@@@##...::::::::::::::::::::::..*#%@@@@@###@@@%%..========..%@###..%@###%@@@@####@@@####@@@@..:*************************************************************
**********************************************************************:..###%@@%###@@@@###%@@@..##%+..=======-.:@@@@####@@@@%#..:::::::::::::::::::::::..-#%@@@@@###@@@%%.:========..@@###..#@####@@@@%###@@@%###@@@@@.:#************************************************************