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