::::::::::::::::::::::::::::ooooooo::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ooo:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ooo::::::::::::oooooooooooooooooo&&&&oooooo:::::::::::::::*********
:::::::::::::::::::::::::ooooo:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::oo:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::oo:::::::::::::::ooooooooooooo&&&&&&oooooo:::::::::::::::::*************
::::::::::::::::::::oooooo::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::oo::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ooo:::::::::::::::ooooooooooooooo&&&ooooooo:::::::::::::::::******************
:::::::::::::::::ooooo:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ooo:::::::::::::::::::::::::::::::::::::::::::::::::::::::::ooo::::::::::::::::ooooooooooooo&&&ooooooo::::::::::::::::::******************.....
:::::::::::::ooooo::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::oo::::::::::::::::::::::::::::::::::::::::::::::::::::::::::oo::::::::::::::::::oooooooooooo&&ooooo::::::::::::::::::::********************.........
:oooooooooooo::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::oo:::::::::::::::::::::::::::::::::::::::::::::::::::::::::ooo:::::::::::::::::oooooooooooo&&oooo::::::::::::::::::::**********************..............
:::::::::*  **:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::oo::::::::::::::::::::::::::::::::::::::::::::::::::::::::oo:::::::::::::::::::oooooooooo&&ooooo::::::::::::::::::*************************..................
::::**                .***::::::::::::::::::::::::::::::::::::::::::::::::::::oo::::::::::::::::::::::::::::::::::::::::::::::::::::::::oo::::::::::::::::::ooooooooooo&ooooo:::::::::::::::::::**************************......................
**                               .***::::::::::::::::::::::::::::::::::::oo:::::::::::::::::::::::::::::::::::::::::::::::::::::::oo::::::::::::::::::ooooooooooo&ooooo:::::::::::::::::::***************************...........................
                                            .****::::::::::::::::::::o:::::::::::::::::::::::::::::::::::::::::::::::::::::::oo:::::::::::::::::ooooooooooo&&ooo:::::::::::::::::::********************************.............................
                                                       .**::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::o:::::::::::::::::::::ooooooo&&oooo::::::::::::::::::*********************************..................................
                                                           **::::::::ooo::::::::::::::::::::::::::::::::::::::::::oo:::::::::::::::::::oooooooo&&ooooo::::::::::::::::*************************************...................................  
                                                      .****::::::::::::::::::::oo::::::::::::::::::::::::::::o:::::::::::::::::::oooooooo&&ooooo::::::::::::::::**********************************..*......................................     
                                                 .******:*:::::::::::::::::::::::::::::::o:o::::::::::::o::::::::::::::::::ooooooooo&ooooo::::::::::::::************************************...............................................     
                                             ***:::::::::::::::::::::::::::::::::::::::::::::::::ooooooo::::::::::::::oooooooo&&oooo:::::::::::***************************************.....................................................     
                                        .*:::::::::::::::::::::::::::::::::::::::::::::::::::o:***********::::oooooooooo&&ooo:::::::::::::***********************************.............................................................:o:***
                                   .**:::::::::::::::::::::::::::::::oo:::::::::::::::::::*********::::::::::::::o&&ooo:::::::::::***********************************........................................................... .*o&&ooo:::****
***********.....               .****::::::::::::::::::::::::::::::::::o:::::::::ooo:*************::::::::::oo&oo::::::::::******************************......................................................................&oooooo.**::::::&&
*:::*********************::::::::::::::::::::::::::::::::::::::::::::::::::oo:**************::::::::::ooo:::::::***************************.....................................................................................*..*:oo:::oo&&&&
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::oo:**************:::::::::oooo:::::::***********************.................................................................................................o&&&&o&&&&&&&
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*****************::::::oooo::::::*******************..........................................................................................................   .:&&&&&ooo&&
:::::::::::::::*::::::::::::::::::::::::::::::::::::::::::::::*****************:::::oooo::::*******************..................................................................................................................     ..o&&&o::o
:::::::::********:***:::::::::::::::::::::::::::::::::::*****************:::::ooo:::::*****************.......................................................................................................................        ....:oo&o:
::::**************::**:::::::::::::::::::::::::::::***************:::::::oo:::::****************............................................................................................................................................*:oo
:::::::::::*********:::::::::::::::::::::::::****************::::::oo::**:::::::***********........................................................ ...........................................................................................*
*****************:::::::::::::::::*&88&&o:.  .:::::::********:::::oooooo&88888&&&&&&&&&&oooooo:::o&&o::***...............                                             ......................................................................... 
**::::***********:::::::::::::: :o&&###8&oooo:::::**::::oooo:ooooooooo&&8888###########888888888##88888&&&ooo*.....  .                                                      ....................................................................
******::::::::::::::::::::::::::::::::::::*:::oo&&8##888&&&&&&888888888888888########88&&oooooo::::oo&&8888&&&&&&&o:...                                                        .................................................................
::::::::::::::::::::::::::::::::oo::::::::::::ooooo&&&&88#########8888888888888&&&oo::*********..........***::o&88888&&o. ..                                            ........................................................................
::::::::::::::::::::::::::::::::oo::::::ooooooo&8##8888#88888####888888888&&oo::*****......***********************::&888&o::..                                            ......................................................................
::::::::::::::::::::::::::ooo::oo::::ooo&ooo&&&&8888#888888#######88&&ooo:::******************************************::ooooo:.                                             ..................................        ..........................
:::::::::::::::::::::::::::o::o&o&&&oo&&&&&8888#####@@@@#####88&&&oo::::***************************************************.**:....                                             ............................                 ...................
**:::::::::::::::::::::::::::o##8888&&&&8888888#########88&&ooo:::::********************************:::::::::::::::::::::*****.....                                                                                                .............
::::::::::::::::::::::::::&&8##8&&oo&&&888###@@@###88&&&&oo:::::::****************************:::::::::::::::::::::oooooo&&&&&&o:..                                                                                                 ............
***********************:&&&&&o&8&8########@@####88888&&&ooo:::***************************:::ooooo&&&&&oooooooooo:ooooo&8888888&&&&&*.                                                                                          .................
*********************:&&&8##8888##########8888#8#88888&&&oo::::****************::oo&&88#########8888888&&&&oooo::::ooo&&&&&&&&&oooo*.                                                                        .:o..           ...................
*******...........*ooo&88###88888####888##########888888&&oo::::**********:o&888&&&&oooooooo&&&&&&&&&&&&&&&ooo::::::::o&&8&&ooooooo*.                                    ............                 .*&&&&&ooo&&o...   .......................
*****...........::ooo88####@@#####88##################88&&oo::::::***::oo&oooo::ooooooooooooooooo&&&&&&&&&&&ooo::******:oo&88888888&*...                        ..........................     .*o&&&&oo&&&&&&&&&&&&&:..  ......................
.............**.o::&8########@@@@@@#########@@@@@@####8&oo::::::**::::::::ooooooooooooooo::::ooo&&8##88&oooo:::::**********:::oooooo::*.....   .            ..............................*o&oooooo&&&&&&&&&&&&&&&&&&&&&:.......................
..........****:*::o88#8#####8##@@@##88888###########88&&o::********::::ooooooooooooooo&&&8##888888&&oo:::*****::****************:::::::**:*.....    .    ................................... :&&&&&&&&&&&&&&&&&&&&&&&&&&&&&:....................
...........:**:ooo&8##8######8&8@@@@###############888&oo::*********:::::::::::::::::::::oooooo:::::::*******:::::::::*************:::::::::oo:...........*.....................................o&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*.................
........*.*:oo&oo&8&8888####@@@@8#@@@@@@###888####88888&o::**************************:*:*****:::::*********::::oooo:::::::::::::::::::::::::oo:.*:*................................................&&oo&&&&&&&&&&&&&&&&&&&&&&&888**...........  
........*::ooo&&&88&8888####@@@@@&::o&888888##88#######8&oo::*********************************************::::oooo::oooo&&&&&&&&&&o:::::::::::ooo&::*................................................*&&&&&8###&ooo:o8&&&&&&&&888888**. ..******
. ....*o::oo&&o&&88&&88###88#@@@&o&888888888############88&oo:::::::**********************:::::*::*******:::::ooooo&&&888&&&&&&oo:::*****:::o&oooooo&*.........................................*o8############8o8:&####&&&&&&&:*****************
....*:::ooo&&oo&&&&&&&8#88888@@@#&&888&&&88#####8#####88888&&ooo::::::::::::::::::::::::::::::::::::::::::::::::::::oooooooooooo:::::******:oo8&&&&&&o:....................................*#@@#88######################***:***::::*************
....**:oooo&oo&&&&o&oo8888888@@@@@8&&&8&&88#######8&&&&&&&&&&&oooo::::::::::::::::::::::::::::::::::::::::**********::::::::::::::::::::::::oo&&&&&&&&&oo....................................#@@##8&#@@@@@8@@#@@@@@@#####o*::::::*******:ooooooo
....:::oo&o&&&&&o&&ooo&88&&&##########88888#####8&::::::ooooooooooo:::::::::::::::o:oooo:::::::::::::::::::*******:::::::::::o&&&&&&&88&&&oooo&&&&&&&&:.....**:&*...............         .....#@@@@@@@@@@@#8####@@@@@@@###@@@@#&&8&:&........*o8
8888&&&&&&&&&&&&&&o&&&&8&&88##8###########888888888&&&&&o:*:o&&&&oooo:::::::::::::::::::::::::::::::::::::::::::::::::::o&&8888##@###8&&oooooo&88&&&88o**.**:&:.....          .........********&@@@@@@@@@@@@@@@@@@@@@@@@####*o88.....**:o8&8@@8o
8888#&&&8&&&&&888888888&8&&8888#8#@@###########8888888&&&&888##88&oooo:::::::::::::::::::::::::::::::::::::::ooooooo&&888&&&&&&&&&&ooooooooooo&88&&&88o****::&####8*..............****..*:&*****:@@@@@@@@@@@@@@@@@@@@@@@@@@@@#88ooooooo&8888##@@
###88888&&&&&&&&888&&8&88&8&8888##8##############888888##########88&&oooo:::::::::::::::::::::::::::::::::::oooooooooooooooooooooooooo&&&&ooooo88888&&o:****::&@@@@###8o......*******o:****:o8888#@@@@@@@@@@@@@@@@@@@@#####8888&8#@#888888#&&&8@
8888&88##88&&&&&8888&&&8&88&&88#88###################88888888##888888&&&&oooooo:::::::::::::::::::::::::::oooooooooooooooo&&&&&&&&&&&&&oooo:::o&8888&&o:****:::o##@#&ooooooo&&oo:::::::oo&&&88oo::o#::::##########@#&oooo::oo&88888888:*&###@@&&
8&888&&88&8&&&&&&&888&&&88888888##88####888###############888888888######8&&&&oooooooooooo::::::::::::ooooooooooooooooooooo&oo&oooooooo:::::::o&888888&&ooo::oooo8o:::::ooooo:**:&&&oo8##8oo::****:&#@##@##8&o:o::::::ooo&8888888&&&&&8888#&o&o8
88&888&888&8&&&&8&&88888888888#888888888888#88#######88########88888888########88&&&&&ooooooooooooooooooooooooooooooooo::::::::::::ooo:::::ooo&8888oo&88&&&oo:ooo:::ooo&&88&&88###8oooo8#########8&::*:***.***::ooooo8888&&&&&&&&&&&&&##&&&##&oo
8888&88888888&&8&&&&888#88888&8#88888&888888888#88####8888&888#####888888888##########8888&&&&&&&oooooooooooooooo::::::::::::ooooooooooooo&8##888888&&&888&&&&ooooo:&8###@8ooo&8&o&::::*********:ooooooo&#@@@@@@#8&&&&&&&&&&&&&&&&&#8&&&&&&&8&#o
8888888888888888888&&8&&8&&88888888888888&8888##888888##888888888888###8888888888#####888888888888888&&&&&&&&&&&&&oooooooooo&&&&&&&&88#@#@@####8888#8888&&8&&&&&&&88&&8&o::******:oooooo88@@@@@@@@@@@@#&oooo#@@@@@@&&&&&&&&&&&&&&#8&&&&&&88&oo&&
8888#########88###88#888888&88#####888##8##8&&#88&###8888##8888&&888#888888888##8888######88&&&&&&8888&&&&&&&&&&&&&&&&8@@@@@@@@@@@@@@@@@###@@@#888888888888&8&&&&&&&&&###@######888&&&888&&&&&o:::::::::::oooo#@@@@@@&&&&&&&&&&&&&@&&&&8#&&oo&oo
############@####@@@@@@@###8#####@###@#@###@##888&8&8##88&88#88888&&888888888888####888##########888888888888&&&&&&&&#@@@@@@@@@@@@@@@@@@@##@@@@#8888##8888888&&8888&8&&88####@@@@@@######88888888888@@@@o::::::o8@@@@@@8&&&&&&&&&&&&&##88&8&o:::
####@@@@@@@@@@###@############8#######@@#@#@##@####88&&888#888888&&&&&&888888&&8888##88888########@@@@@@######888888@@@@@@@@@@@@@@@@@@@@@@#@@@@@####8##8&&8888&88###8&888#88#########@@#######88####888@@@@@8:::::&@@@@@@#&&&&&&&88&&&&&&ooo&:::
@########8888&8888888888888888#8####8########@@@@@@@@@###8&&8#888#&&&&&&&888888888888##888&88##########@@@@@##########@@@@@@@@@@###@@@@@@@@#@@@#########888&&&888#####&#######88#####@@@@@########8###88@#&&&888##8&&&8@@@@@o&&&&&8888&&&oooo&o:
&&&&8888888###############################################@@@##8888888&&&&88888888&&8888##8&&8888#888######@@@@@@@#@@@@#############@@@###########@#8####888&&&&8888###8##@@#@####88#####@@@@@@#####8#@###8888###888888&888###@@@##########88oo:
8#########@88888888888888888888###############@@@@@@@@@@#####@@@#####88&&&&&&&88&88&&&888888&&88888#888########@@#@#####@@@@#######@@#@@@@#################8&&&&&&888########@@@@@@@#######@##@@@######@#################@@@@@###8888888888888&&
####@@88#8888&888888888888888888##8888888################@@@@@@@######8888&&&&&88&&&&&&&88888888#888888888#####8###@@@@@######@@@@@@###@@@@################88&&&&&88888#######@@@@@@@@@@#####################@@#######@@@@@8888###88888888888888
@@8&&#88&&88888888888888888888888######################@@#######@@@@@###88888&&8888&&&8888&&888#8###88888888#######8###@@@######@@@@@@@@@@@@@@##############8&&&&&&88#8#######@@@@@@@@@@#####################@@#####@@@##@@@@@@@@@#########88888
&8#&8&&&&&&88888888888888888888##################88888888############@##888888888&&&&&888888&&8888####888888888###8###8####@#####@@@@@@@@@@@@@@@############888&&&&&88####@@@@@###########################@@@@@##@@@@##@@@@@@@@@@@#88888888#####
88&&8888888888888######8888888#########@@@@@@@@@@###############@#######8888888888&&&88888888&&&8888####8888#8888##################@@@@#@@@@@@@@@@@##########88&&&88&888##@##@@@@##########################@@@#@@@@#@@@@@@@@@#####8888##########
888888888888888888888#########################@@@@@@@@@@@##############8#########888&&&88###88&&&&88888####88###888####8####8######@@@@@@@@@@#@@@@@#######@@###&&&8888#####@@@@@@###########################@@@@@@@@@@@@#######################8
8888888888888888888888888888888888888888#8##########@@@@@@@@@@@##############@@##888&8888####888&&&888888####88###888#####8#####8#####@@@@@@@@@@@@@#@#########88&&888######8#################################@@@@@@@@@@@@@@#####################
8888888888888888888888888888888888888888888888#88########@@@@@@@@#@@########@@@##888888888#####88&&&8888888####88###88#######8######88###@@@@@@@@@@@@########8888888##########8#@@#######################@@@##@@@@@@@@@@@@@@@@@@################