&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&@&%%%%%#%#%%%#############%&&%%#####%%%%%##########&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%&&&&%%%%%&&&&&&&&&&&#&&%%%%%%%#&&%######((&&&
##%#%%%%%##%%%%%%%#################################%%%%%%%%%%%#%##################%%%%##%%%%%#############((((((((((((((((((((((((((/(((((((/(((((#&&&&&&&&&&&&&&@@&&&&&%&&&&&&%%&&&&&%&&&%###%%%%%%#(//
#######%%%%%%%%&&&&&&&&&&&&&&&&&&%###############%%%%%%%%#%%%%########################%%%%&%%%%###############((((((((((((((((((((((((((((((((((%@&&&&&&@&&&&&&@&&&&&&&&&&&&&&&&&&&&&&&&%&%%%#(#%%%###(/
#####%#%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&#((##((##%%%%%%%%%%%%%%#############################.(((((#%%%%%%%%%%%%%#((((/////((((((((((((((((((((((#&&&&&&&@@&&&&&@&&&&@&&@@@&&&&&&@@&&&&&&&&&&&&%%##%%%%###(
####%%%%%##############%%%%%&&&&&&&&&&&&&((#%%%%%%%%%%%%%%%%%%##############################(((((((%%%%%%%%%%%##((((((((((((((((((((((((((((/#&&&@&&&&&&@@@&&&&&@@@@@@@@@@@&@@@@@@@&@&&&&&&&&%%%&&%%%%#(
###%#(((((/////////(((##%%%%%&&&&&&&&&&&&&&&&&%%%%%%%%%%%%###################################(((((##(%%%%%%%%%%#(((((((((((((((((((((((/(((/%&&&@@@@&@@&@&&&&&&@@@@@@@@@@&&&@@@@@@@&&&@@@&&&&&%%%&&%%%%%
%%%(//*,,,,,,,,,,,***//(##%%%%%%%%&&&&&@@&@@&%%%%%%%%%%%%%########%#################((((((((#(##((((#((%%##%####(((((((((((((((((((((((((((&&&@@@&&&@&&&&&@&&&@&@@@@@@@@@@@@@@@@@&&@@@@@&&&&&&&%%%%###%%
%#*,,,,.............,,,,**///((((###%%&&&&@&%%%#%%%%%%%%#############((*,. ...###(((#%%#%###,.,((((((##((((((##(###((((&&&@@@@&&&&&&&&&&&&&@@@&&@@@&@@@@@@@@@&@@@@&&&&&&&%&&%%%%%%##
#*,,,,,... ..............,,,,,,****///(#%&%%%%%%%#%#######/,.. /(((#(*,..,##(.. ./(#(((((((((((((((((&&&@@@@@&&&&&&&&&&&&&&&&&&&&&&&&&&&&@@&&&&&&&&&&&&&&%&&&%&&&%%
/*,,,,,,...............,..,,,,****/////(#%#%%%%%##*..... . ((#( ,,...... ((((((((((((((((((#&&@@@@&&&&%%%%&%%%%%%%%%%&&&&&&&&&&&&&&&&&&%%%%%%%%%&&&&&%#%%&
**,,,,,,,...........,,,,,,,,,,****/////((#%%#,... . . ,(((.,...... .#(((#(####((#(((((#&&&&&@&&&%%%%%#%%%#####%%%%%%%%%%%%%%%&%%%%%%###%%%%%&&&&&#%%%
****,,,,,,....,,,,....,,,,,,,,***//////* ... . #(##,........ .((((((((((((((((((((#&&&&&&&%%%%%%%##########%%%%%%%%%%%%%%%%%%########%%%%%%&%&%&
****,,,,,,..........,,....,,,,****////(( .. ..,*/(((((/..,&%###(,...... . .(((((((((((((((((((((((&&&&&%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%#########(#%%&&%%
***,****,,,,,,,,,*,.,,,,**,****//(((//((( ... . .*///////////////////(((((((##%&%&#####(( #&&&&&&&&%%%%##((((((#(((#&&&&%%%%%%%%########%#%%#%%%%%%%%%%%%%%%%%%%%%%###(((((##%%
/#%%%%%&&&&&%%##(/****//(#%&&&&&&&&&&%%##/ ... ... .//////////////////////////((((((((##%%&&%((((((#%%%%%&&&&&&&&&&&&&&&&%#((#((((((&&&%%%##############%%%%%%%%%#%%%%%%%%%%%%%%#####((////**(#
/(///(###%%%%%%%#######%%%%&&%%#####(####(* ..... ./(((((////////////****//////////((((((((###%%&&&#(((#%%#/,..,**////////(#%%&&&&&#((((((%&%%#################%%%%%%##%#%%##%%#%%%%#%%###((/*****,,#
*/(%%%%(%&&%(%%(/*,,,,/(#%&#(&@&%%&%%%%#(((##/(#%#(((((((((((///****************/////((((((((((###%%&&#///%/****************//////(#&&&%((((((%%#%%%%%%%%%%%###%%%##%%%%#%#%%%%%%%%%%%&%%%%%%##(//***,,/
*******///(((//*,,,.,,*////////////(((((((##%#(((#((((((((((////***************//////(((((((((####%&&&#(((**////**************////(((#&@&((((###%%%%%%%&&&&&&&%%%%%%%#%%%%%%%%%%%%&&&&&&&&%%#(((((((/*,,
,,,,,**////*,,,,,,..,,*///***////(//***//((####(((##(((((((((///////*//******/////////((((((#######%%%#/(**////**************/////((((#%&((((#####%%%%%%#%&&&&&&&%%####%%%##%%%&&&%&&&&&##%%%%%####((/,.
*,,,........**,,.. ..,,*////,,,,,**,***//((###//((###((((((((((///////////////////////////(((((####%%&((//////****************/////(((##%((((/#####%%%%%%%%%%&&&&%%%###%%###%&&&&&&&&&&%%#(###%####((*,.
*,,......,*//////**///((((((/*,,,,,,,**/((((#&########(((((((((((///////////////**///////(((((######%&#/////###%###(/****//#####((##(((#%%(((/#######%%%%%%%%%&&%%%%########%%&&&&&&&%%%%%%%%####(((/*,.
**,,,,,,*//*,/#####%%&&&&#///(/*******//(((#%&#########((((((((/////////////**////////(##%%%%%%%%%%#%%#(/*////(####((//*//((##((((((#(((#%((((########%%%%%%%%%%%%########(####%%%%%%%%%%%%%####((//*,..
*******///*,**(#%%##%%%%%%(//////**///(((((#%&########(((((((((//////////////////((#%%%&&%%%%%%%%%%##%#(**//(((%%%#%#(***/(##((/((((((((#%####(######%%%%%%%%%%%%%#%######((#####%%%%%%%%%%%####((/**,..
*****//(((((((/*,,,*****/(##%%#((//((((((##%&&#####(((((#####%%%%%%%##((((((/((((#####%%%(&#*(%&%%%###(/***/(#(###(((/***///(#%%%%%#**//##(((((#######%%%%%%%%%%%%########((((#%%%%%%%%%%%%#####((/**,..
//////(#%%%((##%%%%%%%%%%%%%%&&%#(((((((##%&&&%############%%%%%%%######(((//(((##((#(((#%#(#(###(####//***///////***/***////////**/(/////***/(##########%%%%%%#%######%##((((#%%%%%%%%%%%%####((//*,.,,
(////(%&&%#(///((((((((///(###%&%#((((###%&&&&&%%%%#%###%#%%&&#,,/###(####(///((##((((((((((((((((###((/***********/******////***(//*//*******/##########%%%%%#######%%%##((((((%%%%%%%%%%%####(///*,..,
##(/((##(////**///////(((((((((#%%####%%&&&@@&&%%%%%%%%%%#(%%#/*((((((((((((///((#(((//((####((((((##//(/********/((#########(//*/**********//*(##########%%%%%%%%#####%#(#&&%%%&%%%%%%%%%####((///*,..,
%%###(((//***/((###%%###((((((((#%%%%%%&&@@@&%%%%%%%%%%%#(((//((((((/(#(##((////((((((((((////////((##/(#/**///////((#%%#%%#((((/((##////////***/#######%#%####%%%%%%%%%%%%%%%%%%%%%%%%%%%####((//*,,..,
&&&%%#(///*******//(#(///////((##%&&&&&&@@@&&%%%%%%%&%%%#(((((((////((((((((/////(((((/////*///////((###((((((//(##(###########%%##%%#(//*****/**/########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####(((/**,..,,
&&&&&&%#(//***,,,,**//////((###%&&&&@@@@@@@&&&%%&%%%&&&&%(((((///////((((((///**///////(((((//////(((((((///////((/(((//////(((/((#%%&%/((///#(//*#######%%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##(((/**,,*.,
#%&&&&&&&%#((((//(((((###%%%&&&@@&@@@@@@@@@&&&&%%%%%%&&&%///////////((((((////**////////(///(((((((###((((((////(////////////////////////((////#((/#%###%%%%%&&&%%%%%%%%%%%%%&&&&&&&&%%%%%%##(((/*,*/*.,
//#%&&&&@@&&&&%%%%%%%&&&%&@&&&%#####%&&%%@&&&&&%%&&%%%&&%/////(((//(((////////***////((((//(((((######(///(////////////////////////////////(/////////####%%%%%%%%%%%%&&&&&%%%%%%##%%%%%%%%%##((//*(//,,,
(///(#&&&@@@@@@@@&&%%%%%%%%%%%%%%%%%%%%%####%%%%%%&&%%%&%(((((((/////((((((((//////(##%%%###%%&&&%####(///////////////////////////////////////////////(###%%######%%%%%%%%%%%%&&&%%%%%%%%%%###(/(((/*,/*
%(////(%%&&&&&&&&&&&%%%%%%%%%%%%%%&&&&&&&&&&&&%##(#&&%%&%(((((((((((###%##########%%%%%%%%###%###((####///////////////////////////////////////////////**%%%%%#%%%%%%%%%%%%%%%%%%%%%&&&&%%&&%%%%%%%%%#///
/(#((((((#%&&%%%%%%%%%%%%%%%%%%&&&&&%%%%%%%%%&&&%%%##%%%%(#%%%%%#%%#%%%%%%%%%#####(((######((((((####(#(////////////////////////////////(((/((/////////(/#%&&@@@@@@@@@@&&&&%%%%%%%%%%%%%%%%%&%%&&%%&&&&%
#,%/#((%%%%%%%%%&%&%%&&&%%%%%%%%##((//////////((#%&&%%#%%#%&&%%%%######((((((((((#((/,.,/(((((((####(((#//////////////////////////////((((((((////((((%&&&@@@@@@@@@@@@@@@@@@@@@@@&&&&%%%%%%%%%%%%&&&&&&&
%/(#%%%%%%%%&&&&&&&&&%%####((((///**,,,,,,,,,*****/(#%%%########(#/*,.,.,,,.,.... . .,,((((((((####((((#////////////////////////////(((((((//((((((&&&&&&&&@@@@@@@@@@@@@@@@@@&@@@&&&&%%%%##%%%###%%&&&&&
#%&&&&&@@@@@&&&%##((///////////******,,,,,,,,,,,,****/(##%##((((((((((((((/**,,,,,/(((((/(((((####(((((#(/////////////////////////((((((/(((((//#%&&&%####%%&&&&&&&&&&&&&&&&&&&&%%%%%####((((//((/(#%%&&
&&&&@@@@&&%##((/////*//*///**************,,,,,,,,******/(#%&##((((((#((((//(///////////((((((######(#((##//////////////////////////*/((((((((#%%%%%(//////(##%%%##%#########((((/////////////**/**///(#%
&&&&@@&%((////***************/////***********************/(%%%##(((((((#((((/*//////(((###(((#######((###////////////////////////////((((///(&&%#/////***************/*****,,......,,,*,,*********,*,,,*
&&&&&#///*******************//////////////////////////****/(#%%##((((((((########%####((((((#############(((((//(///////////////////((((((/#&&#/////******,,,,,*,,,,,,,,,,,...........,,,,,,,,,,,,,,,,,,
&&&(/********************///////////////////////////////////(#%%##(((((((((((/////////(((((######(((((###(((((((((//////////(/((///(((((((%@&(////*/*****,,,,,,,,,,,,,,,,,,,..........,,,,,,,,,,,,,,,,,,
&%/*****************////////////////////////////////////////(#%%%%##(((((((//**//////((((########(((((###(((((((((((((((((((((((/((((((((#&&%(//////******,,,,,,,,,,,,,,,,,,,,,...,,,,,,,,,,,,,,,,,,,,,,
%/*****************//////////////////////////////////////////(%%%%%%%#((#(((((((((((((###########(((((((#((((((((((((((((((((((((((((((((%@&(///////**************,,,,*,,,,,,,,,,,,,,,,,,,***,******,,,,
(*****************////////////////////////*/*////////////////(%&%####%%%%%###########%%%%%%#####(((((((((((((((((((((((((((((((((((((((((%&#/////////*///*******,,,,,,,,,,,,,*,*************************
/********************////////////////////////////////////////(#&%###########%%%%%##############(((((((((((((((((((((((((((((((((((((((((#&%(////////*************,,,,,,,,,,,,,,,,,,,********************
/***********************////////////////(((((((((((#(((((/////(%%#############################((((((((((((#((((((((((((((((((((((((((((((%%(///////*********,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,**************
//********************//////////////((((((###%%&&&&&&&%%%%####%%%%%#############################(((((/(((((##((((((((((((((((((((((((((((%#((///***********,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*,*********
(/******************/////(((((((((((####%%&&&&&&@&&%%###%####%&%#(((((###%%%###%%###########(((##(((((((((((##(((((((((((((((((((((((((((##(/////**************,,,,,**,,,,,,,,,,,,,,,,,,,,,,,,,*********
#(//***********////(((###%%###########%%%&&%%%%%%%%%%%%%%%%%#%&%##((///(((((((###########%&&&&&&&&%%%%%%#(((((((((((((((((((((((((((((((#%((((((##########((//*****************///////////**************
%#//*******/((#%%&&&&&&&&&&%%&%%%%&@@@&&%%%&&&&&&@&&&&&&&&%####(/(###////((((((((((#%%%%&&&&&&&&&&&&&&%%&&&&%#((((((((((((((((((((((((//(#(((#((((###%%&&&&%%##((//*****//((###%%%%&&&&%##(((((((///****
%#(/*****/((####%&&%%%%%%%%%%%%%%#####%%%%%&&&&&&%%%%%%%#((((((///(##((##((((((#%%&&&@@&&@@@@@@@@@@@@&&&&%%&%%%###((((((((((((((((((((#(#((((((#&&&&&&@@@@@@&&%%#/******/((##%%%%&&&%%%##(((/(((((((///*
&%(/****/#&@%(((((##%%%%&&&&&%%##((//((#&&%%%%%%%%%%####(((((((///(##(/#######%&&&&&&&@@@@@@@@@@&&&@&&@@@&&&%&&&@&%###((((((((((((((((#(((/((###%%####%%%&&&&&&&#**,,,**/(#%%&&&%%((&&@@&&%&&&%#((((///*
&&%(/##%&&%#%%%%##%&@@@&%&&&%%%%%#/*//((#%%%############(((##(/////(#(/#(#((%%&@@&&@@&&@@@&&&@&&@@&&@&&&&&&&%&&%&&@@&%%##(((((((//((((((//////((((((((((((#####(/*,,,,***//((((##(((((((((((#####((///**
&&&(///#%&%%%%&&&&&&&%%%%%%%#####/*/////((#%###((((#####((((((((///((/((((((%&&@&&&&&&&&&&%%%%%%%%%%%%&&&&&&&&&@&&@@@@&&&%%#((((((((((((/////****////(((////////*,,,,,*******///(//(((((((((//**********
#%&&%////////////(((######(((((((*/**//**//((####((((((((((((((/////(/((((#%&&&&@@@&&&&%##((((((////////(((####%%%&&&@@@@@&%#(((((((((((///******************//*,,,,,,*,********************************
##%&#/****////*//////((((///(##/******///////((#####((((((((/((((//((/((((%%&&&&&&&&&%%##(((((///////***********//(##%&&@@@&%%((((((((((///****,,,,*******///**,,,,,,,,,,,,****,,,,,,,,,,,,,,,,,********
#(#%%#/****/////////(((((((###(/****///((####(((########((((((((//(((//((#%&&&&&&&&%%###(((((////////***************/(#%&&&@&%#(((((((((/////*********//////***,,,,,,,,,,,,***/**,,,,,,,,,,,,,,,*,******
#//#%%(***********/////(((####/**//((##%%%%&&&%%###########(((((((((((((#%&&&&&&%#(((((((((/////////*******************/(%&&&&###(((((((((//////////((#(((((//**,,,,,,*******/((((/***,,,,,,,,,,,*****//
((/#%%(/***********///(((#####((#%&&&&&&&&&&&%%%##############(((((((//#%&&%%&%#((((((((((//////////************,,,,,,,,*/#%%%#(###(((((((((((((((((((//((###(///////((#%%##(/*/(###(//*************////
//*/(##(/**********///(((#####((####%%%&&%%%%&&&%%%%%%##############(/(%&&&&&%#(((((((###(((((#((((///***********,,,,,,,,*/####((((####(((((((#(((((((/((((##%%%###%%%#(((///****//(###((///////////////
/////(##(/********////((#####(((((#%%%%%%%%%%&&&&&&&&&&%%%#####%%###(##((%%%%#((((((####%%%%%%####%##((///*******,,,,,,,,,*(#%#(((((#####((((((((((((((((((###%%%%%%#(//////////*///((###((((((/////////
/////*/(##//*****/////((###(((((##%%%%%%%%%%&&&&&&&&&&@&&%%%%%%%%%%###((((%%#((((((//((((((%&&#*/###%%#(//***//////*,,,,,,*/##(((((((((##((((((((######(((((########((//////////////((((###(((((((//////
/////**/#(((////////((((#(((###%%%%&&&&&&&&&&&&&@@@@&&&&&&&%%%%%%%%%(((####%#((((////////(((((((((((###(/*,,*/((((##(//**,,/#((((((((((####((((#######%%%###((((///****//////////////((((((/((((((//////
////////(#((((///(((((((((#%%&&&&&@@@@&@@@&&&&%#######%%%&&&%%%%%%%%#(###(##((((((((///*////////(((((((/**,,*/(#%&&#((/****/#((((((((((######(((((((((((###(###%%%###%%%%%%%%%%%%(((((((((((((((((//////
*//*/***/###((((((###((((#%&&&@@@&%##(((((((#############%%%%&&&&&%%#((#####((((((((/////////////(((((//**,,,,*////****//**(((((((((##%&&&&&%#(((((((((((((((((/////**////////(((/((((((((((((((/////((/
***///*/*(#####(((####((##%&&&%##(////((###%%%%%##########%%%&&&&&&&&#(((#####(((((((//////////((((((///**,,,,.,,**,*,,,,,*#%&&&&&&&&&&&@@@@@&%##((((((((((#####(((((((((((#((/(/////((((((((((((((((((/
*//////*///(##(((#########%&%##((///(((#%%%%%%%%%%########%%&&&&&&@###(((########(((((////////((#######(/**,,,,,,,,,,....,%&&&@@@@@@@@@@@@@@@@@@%#(((((((((((###%%%######(((((///////(((((((((((((((((//
****//(%%((#%%%%%%%%%%%%%%%%%#(////(((#####%##############%&&&&@@&&&%%%%%####(###((((((//////////(#%###((/(#(*,,,,,...,,,(&@@@@@@@@@@@@@@@@@@@@@@@%##(((((((((((((((((//////////////((((((((######((((//
##%%&&%%%%%%%%%%%%%%%%%%%%&&&&&&%%%%##(/////(((((((((####%%&@@@&&&&&&&&%%%%###(((((#(((((((#(((((((((////**,,.,,,,,,,,,,,&@@@@@@@@@@@@@@@@@@@@@@@@@%###(((((((((((/////////**/////(((((##########((((///
%%%%%%%%%%%%%&%&%%%&&&&%%%%%%%%%%%%%%%%%%%%####(((((###%%&&@@@&&&&&&%%##(%%#####(((########%##((((//***//****,,,,,,,,,,,%@@@@@@@@@@@@@@@@@@@@@@@@@&#(###########((((((//////////((#####%%%%%#####((((///
%%%&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%%&%&&@%&%%%%%(((//(%%############(((((####((((((////****/**,,*,,(@@@@@@@@@@@@@@@@@@@@@@@@@@%#((#####%%%%%##########((((###%%%%%%%#########(((/((#
%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%&&&&&&%%%%%&&&%%%##########%##%%%####%%%%#(((((((((((///*,,,,,*/((*****,/&@@@@@@@@@@@@@@@@@@@@@@@@@@%#((######%%%%%%%%%%%%%%%%%%%%%%%%%###########((((#%@@
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%&&@@@@&%%%%%%%%%%%%%%&&&&%####%%%%###%&%%%#((///////(///**,,,,,****,*/&@@@@@@@@@@@@@@@@@@@@@@@@@@@&#((((#####%%%%%%%%%%%%%%%%%%%%%%%############((#&@@@@
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%&&@@@@@@&%%%%%%%%%%%&@@@@@&%%%%########%%%%%&&&&%##((////**/***,,,,,,*/***(&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@&%#((((#######%%%%%%%%%%%%%%###%##############%@@@@@@@
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&@@@@@@@@&&&&&&%%%%&@@@@@@&&&%%&&&%############%&&&&&&&%%###//**///*,,,**/((((#&&@@@@@&@@@@@@@@@@@@@@@@@@@@@@@@&%##(((######%#%%%%%%%%%##########%%######%&@@@@@@@@@@
&&&&&&&&&&&&&&&&&&&&&&&&@@@&@@@@@@@@@@@@@&&&%%&@@@@@@@@@@&&&&&&%%%#(((###############%%&&@@@&&%#((((((/////###/*%&&&&&&&&%%%%%%%&&&@@@@@@@@@@@@@@@@&%%##((#########%##%#########%%%%%#%#%&@@@@@@@@@@@@@@
&&&&&&&&&&&&&&&@@@&@&@@@@@@@@@@@@@&&%%&&@@@@@@@@@@@@@&&&&%%%&@@@@&#(#((##########((((((###%%%%%%%%%%&%%%%#(/,,,#&&@&&&%%%&&&%&&&&%%%%%%%%%&@@@@@@@@@@&%%####%%%%%%%%%%#########%%%%%&@@@@@@@@@@@@@@@@@@@
****(%%%%%%%%%%%%%%%#########((((((((((((########%%%%%%%#####((@@@@@&##((######(((((/////((((((((///**,,,,,,,(%&%%%&@&&&&%%&&%%%%%%%%%%%%%%%%&@@@@@@@@@@@@@@@@@@@@@&&&&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
****(%%#%%%%%%%%%%##########(((((((((((((######%%%%%%%%%%%#####@@@@@@@@@@@&%##(((((///////////////*****/(#%&%%%%%&%%%&&&&%&&%%&%%%%%%%%%%%%%%%%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
*,*/##%%%%%%%%%%%%%#########((((((((((########%%%##%%%%%%%%#%##@@@@@@@@@@@@@@@@@@@@@@@@@@&&&&&&&&&&&&&&&&&%%%%%%&&&%%%%&&&&%%%%%%%%%%%%%%%#%%%%###&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@