####################################################################################################
######,+-,,,,--+######,+++-#################--++----++++############################################
######/╮(/+++\||######/╮╮╮(################,||╭╭||||╭╭╭╭,###########################################
#####)||))))+///)-+(++\|╮)(\\\)|######+(++++////|\//((\/++/),########/)),/)),####\|\\)╭╭╭/##########
###,\(\\\\\\+++/\++\++/\(\///\))#####/()(/+++++/\/++///+++/\,#####,\-/\\+/(|\(\+-/\//(((|)/#########
###,\((\\/+++++/)))(+++++++/\\()####,\(((/++++\))))(/+++++/(,####-/)///+++/)()(/+++++\\/|╭)-########
#####)╭||\+++++/(|||+++++++/)/(|####+////+++++/))|╭|/++++/\╭,####(|\\\/+++/\+++++++++/\\╭╭|\,#######
######\╭(/++++++++++++++++++++(|#####(|||\++++++++++++++\(\#####)|)\++++++++++++++++++++\(|╭/,######
######,+-,,-\//(|\++++/\\\((+---#####-\)\/++++(||\++((/+/+-#####-(╭||\++++++()||)((+++++())(//+#####
###########,+--/╭(\\\\\\\(\/-,########,+,,,,,,+\\-,,++-,,########+\\\+-+++++\(|))((++//+\))/(/-#####
###############,(()|))\+/(/,#########                                 #///+++++++++/+//++\\+)+######
##################+)+++/()╭|#########                                 ,||\++++++++/\+++++,##########
#################/\/+++///()########                         --       ,/()(,,/(\\///\)(,,###########
#################+\(++++++\)##,-###  ,,   -/\\\\/,,\\\\/\\+  ,----   ,++/))/,-+------/+#############
##################+)///+++\(--+\###  --\  +(\()))-#\(())(\/   -/\--  +\++()(,#######################
###################,||(++++/|||(##    -/                        /\+  +\++\/#########################
####################,,\|++/(|)(\//-    \//-          -+         /))///+))+,#########################
######################-+,\((++/\\)(-   /\)\-        --,       ,\\)|(+,,++,##########################
#########################/\\##-/\||(,/ \\))/      \,/+/      \+)()))(/-#############################
######################,--------+\\)╮\, /\))/      ,\\\+      -\\)((╭╭|(--------#####################
######################,/(((((((((\(|╮(\\|())     +(|\\\\/   /))\)((\|)\\\\\\\\(╭,###################
######################,/((((((((\))))((|╭|)\   /+\\())(\/,++))(\|)()((\\\\\\\\(╮,###################
#####################,+\(((((((\\))(()))||)\+\\-(((())(\-/\\)(\()(()(\\\\\\\\\(╭,###################
#####################-\((((((\\\()(()╭|()|)\|++(╭)))\((\\((\\\(|\\\\\\\\\\\\\\(╭,###################
#####################-\((((\\\\(|||)\\)╮|╮|\\╭|(|(()\)|\)(()\((\\\\\\\\\\\\\\\(╭,###################
#####################-\((((((\\\(((\\\(((((\\((())(\))(\|))|)((\\\\\\\\\\\\\\)|╭,###################
####################-/\((((((\\\\\\\\\\\\\\\\\\((((\)(\\)(()(((\\\\\\\\\\\\\\)||,###################
####################+\((((((((((((((((((((((((((((\\\\\\\\\\\\\\\\\\\\\\\\\\\(||,###################
####################+\((((((((((((((((((((((((((((\\\\\\\\\\\\\\\\\\\\\\\\\\\(|╭,###################
####################+\((((((((((((((((((((((((((((\\\\\\\\\\\\\\\\\\\\\\\\\\))||,###################
##################,-+///////////////////////////////////////////////////////|||╭,###################
##################-\((((((((((((((((((((((((((((((\\\\\\\\\\\\\\\\\\\\\\\\\\||)),###################
##################+|╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╰╮|||\#####################
##################+|(((((((((((((((((((((((((((((((((((((((((((((((((((((((||╭)#####################
##################+|((((((((((\/-------------------,,,,,,,,,,,,,/\\\\\//\\(||(+#####################
##################+|(((((((((\+,                               ,/\\\\|╮╮(\(|╭/######################
##################+|(((((((((/,                                +(((((((((((|╭/######################
##################+|╮╮╮╮╮╮╮╭+.                                -\╭╮╮╮╮╮╮╮╮╮╭|,#######################
##################,-------+/.                                ,+-------------########################
#########################,,,                                 ,-#####################################
########################,+-----------------------------------+-#####################################
########################+++++++++++++++++++++++++++++++++++++,######################################
########################,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#######################################
####################################################################################################