::::    ..  ..      ..        ..**::++  ..--******::..----..                ..  ....  --..          --      ..--..  ::--      ::****..::++**++========--    

    ::++........  ..----------------**********::++******++++**++**::..          ....      ..        ..  ..    ::++::    ..  ..  ..::**::--    ..  ..::..    ::==

    --::        ..::::::::::----....::**++%%++::++******====**++++++**::....::****::    ..    ..      ....    ..        ..  ..----..    ........**--......::==%%

....::::..........--::::::::::::----::::++%%**::==**::======++******++**--::%%++==--          ..--..  --..  ....--........--..::    ..------..--**--------..::--

--::++++::--::**::****::**::::******++::++==**++++--====%%==%%++********::--**==**              ..          ..----  ..**  ....----  --::..----    ------::--....

    --**..    --::--::::::::**--....**::++==**++--::====++==**==++********::--++..    ..        ..  ....    ......--  ..--..  --..  ....----..  ..--------..**--

..  ..::..    ::------::::--..    ..**::++==++****++****==**--++======++**++**::    ......  ..  --..        --      ..      ..----      ..----..--........--....

    ----    ..::------**--        --::::**====++==++**====....::==++++====++++::    ....    ..      ..              ..  ..**  **::..  ..  --..    ..  ....      

    ----    ..::----::::..        --::--++%%====++++====..  ..::::**==**++++++::    ....          ..--..                ......--..            ..  ..--**..      

    ----      ..::..::::....    ..--::::==%%==%%==%%%%++++**--..**..****::====++--......  ..                            ..--      ..----..    ----..  **..      

    ----        ..::----::----------::....++==++%%%%**++==%%--....**  **==++====**....        ..                              ..------::::::::++----..**..      

    --::          ----------------------::++==%%%%**    --::..    ----++**::====++    ..--        ..            ..          ..--......      ..::::..  ::..    ..

    --::                ----::::::****::++======%%::    ....        ..**--**%%**==--    **..    ....          ......  ....  ..                --..    **..      

    --::            ----..------------::++%%%%++%%**  ..      ..  ..  ..--==%%**++==    ::..  ..--..          ..--......                      ..      ::..      

    --::          ------::--..--::::--..::====%%==**..  ..  ..            ++%%**..++--  --..  ....              --....                        --..    ::..      

    --::      ..--..--....--..::..--::--  ::++%%%%**  ..                **%%**    ::::  ..    ..--....  ............--..  ..                          **--      

  ..--::..    ::  ::--  --..----....::::....++%%==++--....--        --==@@++..    ..::        ..--::--::::--..........................      ..--  ..----..--    

::--::::----::....::------..**::--**------..**%%==++**::--..::==**++@@%%==..      --..    ....--::******::::::::--------........                              ..

    ::--    ::  ::..  ::--..--  ..::--::....++==++==**::**--++@@@@@@==++          ::......----::::::::::::::**::--------....        ......        ....          

    ::::    --..--........::..  --..::::..--++++++++==++++**::==::====**      ....::......--::::****::::--::::--------........          ....  ........          

    ----    ..--..--..--::------..--::....**==++++**====++++****++++==++::::**------......--::----------....----..----..........  ..    ....  --..        ....  

    --::      ----..----..--::--::--....++==++****++**++==**==++::++====::..        ......----................--............----..--..  ......::--....    ----  

    ----          ::--    ..--------::::++==++********::******==++::--..    ..      ..........................................--------........::--            ..

    ----          ..----::----::::::::--++%%++********::**::::::..............            ..  ..................--....------....------..  ....::--..    ..    ..

    ..--      ----............****::----++==++********::::::..------------....    ..  ..................----....----..::::::--..----..........::::..  ..    ..  

    ----......****::::::::::::++::--++--**==++::****++**::--....--------....          ..--------..--..--------..------::**--**--..----........::--  ....        

    ----      ..**  ++::..::++::++  ++****====++++******::::--....::--..........    ....--::::::..**--....--::::::::::****--****----........  ::--........      

    --..      ::::..++::****::--**..++::--++++++********::**::::--..--::------..    ----::**--**--****----::::::::++::::++--..++::--........  ::--      ..      

    ----      **--**::::++******::..::**++++**==++++**************--..--::::::..    --::****--**::::++::----****::::::::::....--::--........  ::::....          

    --::....--**..**..  ..::**::**--++::++%%==++**++++****++**::::**::..--::::--....--::::**--::++********::::**::..::++%%++++++**::----....  ::::----          

--------------**--++++::..------**..++::++##@@++::++++++**********::**++----::--..----::**++....--::::::**::--**::..::%%@@%%==**::**::::....  ::::--::----------

....--::----::**--++****..--..--**::**::**@@%%%%::::**++****************++::----------******..--++==++::------::--    ::******..--****::......::::..--..........

    --::----..**::****--..::::::**..****++%%@@%%****==++********++++********::..--::::**++**++@@@@%%==::                ..----..--::++::..--  ::::----          

  ..--::--..  **..--**::**--::::**....::::====%%====++++++++************::::--..----::::++**==++====++--                  ..    ..**++::....  ::::----          

    ..::--    --::  ++::**::**::**--++**::..++++++==++++****++****++++**::::::--::----::****--..--......      ..  ..            ..++++----....**::----          

    ..::--      ::****  --**::::::****..++++++++++++====++**++************::::::::--..--****::  ......                ..        ::==++----..--::------          

    --::..          --..--..------::::--**%%++++======++==--..++************::::----....::**++::    ..        ..::::    ..    ::====++..::..::::------          

    --::            ::::..--..      ----++==++++++====::++==++**++******::::::::--::....--****==::..          ..----      --**==%%==**--::--++::::----  ......--

    ..::..    ......  ::..::::::::::--..**++++++++++==++====++************::::----**----..::==++==++::..              ..--==%%==++++**::::::++**------  ..--..--

    --::..  ..::----::--..::::--::**::--++++++**++++**++++++++++************::::**::::----::++====++====%%++++------------++++----**::++::**++++------..----....

    --::..    ------::..::::::::--....--::******::**++++++**++++++++++****::::::**::**::::..++++======++++==%%::..------..--  ..--**::++::++++==------....------

    --::    ....--::::--**::------..::------**::--****::::::::**++++++==++::--::**..::**::--::======++::----------..--....  ..--..--****::::::++------  ..----..

    ----..........::..**----**::::----**++::::::--::::--::::--..**++******----**--..**++::::--++==****::----..    ----..  ..--....--::::::--..::::----....----..

............  ..::--::::....::----::--****::::......--::::--......****::----****..**********::::==::::--..--..--..--..  ..--......----::--....::----::----------

    ..      ..::----**----::::::..::**::**--::--......------..--....--**..::::::::++****++++++::::::--......  ..----....--..........::..    ..++------..........

    ....    ..----**----------::..::::--++**::++**--..--------..........--::::--++****++**++++**::::--........    ..----..      ....--....  ------::--          

    ....  ..----::--::--::::--::..::::--..**++++**::--****--....  ....  ::..--::++::::****==**--..------......      ..--          ..  --------..--::--          

                  ..------------..****::----++++++**--..--..--  ..--  --....--****::::::****................  ..    --            ..------::......----          

--                    ::----::--::------**++==++**++**::--....  ..  ----..--**++**--**::**--..  ....        ..........          ..::::::::::--..--::::          

          ..    --::..  ....----::--::..++++==++++++++++**....--....--------****--::**::**......                ..::      ..  --::::::....--::::--::--          

                ------....    ..--..::--**++++++++++++++++::--........----::**----::**--**....--..              ::::....--..::::--......::****==::----          

    --        ..--..::::----..::--..**::..--**++++++++++++**..::::--..----**--..--::--::**  ..--::--........----**::::**::::++****++====%%@@==--::----          

..        --------::::..--------....--------::::**++**++**..::****::----::::  --::::..**--    ..--****::--....----::**==++%%%%%%%%%%@@####==..--**----          

  ..  ..  ::::..--::..--------------....::--..  --++++**--**++****------::....--::--..++....  ......::::----++++==%%@@%%%%%%%%%%%%%%@@%%**....--**----        ..

    ..::    ..--......**--..------::--..----..--::++**--++==++**--....::--  ....--..--++............--**@@##@@####@@%%%%====%%@@@@@@@@::....  ++::--::        ..

            ..::----::..----------..----..----::++**::++++==++::....--++--  ..----  ::++--......--....**%%########@@%%@@%%========%%::  ....++==::--::          

..**--    ::----..----....::----....--::..::--..--**++++++++**......**++--  ........**++--  ..  ......--**==++**::::------------::....    %%##%%----::----------

++**    ....------..--::----..----....--..::....::++++++**++--....**++**--  ....  --**::      ..  ..--::::..                    ....  ..==####%%----::----------

    ......  --..--..----::..----::....::....--****++++****--  ..::++++**..  ......::++--..........--::::    ....            ....--**++%%##@@##%%----::          

..        ..--..::..----..::..--..::----..--::++++++++**::....::**++****..........****::......    ----............        ....  ..####@@@@@@%%%%::::::          

        ..--..::::..--::--::----------::..--::**++******....--++::****--  ..  ..--**++**--....  ....    ........        ........--%%%%%%%%%%%%==----::          

....::  ..--::----  ::  ....  ----::----..----**==**++..  ..****++****..        ::**++::**--......  ....    ..            ........%%%%==========::::::          

  ..::..  ----  ----::..    ..    ..----..::--::++**::  ..::****++**::      ....**++::::****......----................    ......--%%%%==%%++==%%::::::          

        ..        ..::              --::::::--++****..  --==****::++--  ....  --++**::::******----..--::**::........--------..  ::%%====++++@@++::::::..        

      ..    --------::::------------::****::::**::..  ..::**++**::::  ..      ****::::::::::::::--::++++::::----..------::::--**==%%%%++++%%%%++::::**          

  ..  --::  ********::::++::**::--++--::****--++**    ::++::**++**--  ..    --**::----------::----::::::::----....----::::::::%%%%====++**++==++::::::          

--..**..--::::********--**::**--..**----**--::++--  ..****--******..        ::**------..--::::------**==++++++****--::::******%%%%====++++++++++::::::..        

--::::--  ++**::**::::::**..**::--++--::++..**::    --::  ..------        ..**::..--::--..--::------::**++++******++++%%%%**==%%======++++++++++::::::..        

  ..  ..    ++::::**--::++..++----++--::**..**..    ....  ..              --**..----::--..--::----++++++++****::--++@@==@@**==%%%%==++**++++++++::::::..        

      ......********::::++::::**::****::::::**..        ..--              ..--  ....--------....--++++++====**--::==++%%====%%%%%%==++**++++++==::::::----....--

..  ..  ....::**::**::....::..****::::**..**--    ....        ......        ........--::::::----..--****--::::..--::**@@==%%%%%%++++****++++++==******::::::::::

      ..    ..********::--....********::..**    ..--                        ....    ..--::----::--....----..--......::++%%==%%++++++++****++++==****::....      

      ..    ++::******--==**..****::**::..++..                          ..  ..      ..--..  ..::::....--****..  ..  **%%%%%%==**++++****++++++==**::::..        

    ....    ::**++****--****--**::..**::::****::..                ..    ..      ....::::      **++**--**++::..      ==%%%%==**********++++++====++****::::**--  

    ....  ..::++****::--::****::::..******----++--  --            ..    ..--  ......**--      ****++--..::::..    ::%%%%==****::******++++****++++++****::::..  

        ..**++::::::::++::....--**..++--::++++--          ..      ..    ..::..------::      ..****--....--::--  ::======++**************++++******++****::::--  

    ----  ..--::******--        **--**::**....      ..    ..--          ..--..----::::  ..  --::::**--  ..--::..++%%==++**++******::**==++**++++**++**::::**::  

    ----        --      ..--    ::==::          ..::--      ..                ..--**--      ::::--**::..::----**==%%==********::::++++****++==%%****--........  

  --****..        ..                    ..  ........            ....            ..::..    ..::::::::**::..----++%%==******::**++++++::::++====%%**::--          

..++++==::--..            ..    ..      ::++++++      ..::..    ..--      ..      ....    ..::::::::::++**--..++==++++**::++++++++::::++======%%::::::