@@@@@@   @@@@@@@    @@@@@@@              @@@@@@   @@@@@@@    @@@@@@    @@@@@@@  @@@@@@@@
@@@@@@@@  @@@@@@@@  @@@@@@@@             @@@@@@@   @@@@@@@@  @@@@@@@@  @@@@@@@@  @@@@@@@@
@@!  @@@  @@!  @@@  !@@                  !@@       @@!  @@@  @@!  @@@  !@@       @@!
!@!  @!@  !@!  @!@  !@!                  !@!       !@!  @!@  !@!  @!@  !@!       !@!
@!@!@!@!  @!@!!@!   !@!       @!@!@!@!@  !!@@!!    @!@@!@!   @!@!@!@!  !@!       @!!!:!
!!!@!!!!  !!@!@!    !!!       !!!@!@!!!   !!@!!!   !!@!!!    !!!@!!!!  !!!       !!!!!:
!!:  !!!  !!: :!!   :!!                       !:!  !!:       !!:  !!!  :!!       !!:
:!:  !:!  :!:  !:!  :!:                      !:!   :!:       :!:  !:!  :!:       :!:
::   :::  ::   :::   ::: :::             :::: ::    ::       ::   :::   ::: :::   :: ::::
 :   : :   :   : :   :: :: :             :: : :     :         :   : :   :: :: :  : :: ::