@@@@@@@    @@@@@@    @@@@@@   @@!
@@@@@@@@  @@@@@@@@  @@@@@@@@  !@!                .0######0..
@@!  @@@  @!@  !@!  @@!  @@@  !!@               0###########0.      .
!@   @!@  !@!  @!@  !@!  @!@  !!!              o####" "######0.    (## m#o
@!@!@!@   @!@  !@!  @!@  !@!  !!:              ####(    ######0  ._ ##.##"nn
!!!@!!!!  !@!  !!!  !@!  !!!  :!:              0####o   ###" ## (##o.######"
!!:  !!!  !!:  !!!  !!:  !!!   :      o00o.    0#####o,##. ,#"  "#######(
:!:  !:!  :!:  !:!  :!:  !:!   :    .0#####0.   0###########0     ########
 :: ::::  ::::: ::  ::::: ::       .0#######0.   "0#########"  _.o###'"00"
:: : ::    : :  :    : :  :    0 .0###########o._ ""################       _  .
                                 0####" "#########################0      .0#0n0
                                 #####.   ""#####################"    _  0#####
                                0#####.     "###################._.o##o.#####"
                               "0#####..##mn ""#############################
                                 "0#######""_    ""##################"#####"
                                    ""####m###m      ""############"   ####
                                   .########"""         .########"     "##"
                                    ####"##"###o        (0######"        ""
                                    "##".###,##     .o#o ""####.
                                         "##"      .0############.
                                                .n###############