ETH Price: $2,673.83 (-0.86%)

Token

Lucia (LUCIA)
 

Overview

Max Total Supply

69,696,969,696,969 LUCIA

Holders

13

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
51,729,484,996,011.4617476606763379 LUCIA

Value
$0.00
0x051f1d88f0af5763fb888ec4378b4d8b29ea3319
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Lucia

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
paris EvmVersion, MIT license
File 1 of 6 : Lucia.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";


//                                               _..  
//                                           .qd$$$$bp.
//                                         .q$$$$$$$$$$m.
//                                        .$$$$$$$$$$$$$$
//                                      .q$$$$$$$$$$$$$$$$
//                                     .$$$$$$$$$$$$P\$$$$;
//                                   .q$$$$$$$$$P^"_.`;$$$$
//                                  q$$$$$$$P;\   ,  /$$$$P
//                                .$$$P^::Y$/`  _  .:.$$$/
//                               .P.:..    \ `._.-:.. \$P
//                               $':.  __.. :   :..    :'
//                              /:_..::.   `. .:.    .'|
//                            _::..          T:..   /  :
//                         .::..             J:..  :  :
//                      .::..          7:..   F:.. :  ;
//                  _.::..             |:..   J:.. `./
//             _..:::..               /J:..    F:.  : 
//           .::::..                .T  \:..   J:.  /
//          /:::...               .' `.  \:..   F_o'
//         .:::...              .'     \  \:..  J ;
//         ::::...           .-'`.    _.`._\:..  \'
//         ':::...         .'  `._7.-'_.-  `\:.   \
//          \:::...   _..-'__.._/_.--' ,:.   b:.   \._ 
//           `::::..-"_.'-"_..--"      :..   /):.   `.\   
//             `-:/"-7.--""            _::.-'P::..    \} 
//  _....------""""""            _..--".-'   \::..     `. 
// (::..              _...----"""  _.-'       `---:..    `-.
//  \::..      _.-""""   `""""---""                `::...___)
//   `\:._.-"""                             fsc

//Ascii art has almost died. let's all take a moment to enjoy these art pieces. 
//Mad respect to the creators and all the credit belongs to them.
//The rest of this code is rate 18+. Do not proceed if you are under age.



// .               .  .      .  .
// |   . . _.* _.  |  |.    ,|  |
// |___(_|(_.|(_]  |__| \/\/ |__|
                              


// In the dimly lit corners of an elegant, mysterious lounge, amidst the soft whispers of silk and the faint,
// alluring scent of jasmine, Lucia emerges as a vision of captivating beauty. Her presence is like a delicate
// flame in the twilight, drawing every gaze with an effortless grace that whispers of hidden depths and untold
// stories. Lucia moves with a confidence that belies her gentle exterior, her every step a dance, her every
// glance a promise of intrigue. The soft light plays upon her features, highlighting the gentle curve of her
// cheek, the playful spark in her eyes, and the hint of a smile playing on her lips, suggesting secrets only
// she knows. Lucia is not just seen; she is felt, her aura wrapping around you like a warm, inviting shawl,
// leaving a lingering touch that whispers of the promise of something more, something just beyond the veil of
// the ordinary.


// As Lucia gracefully navigates through the room, her presence weaves a spell over the enchanted onlookers.
// The soft, ambient light catches in her hair, turning it into a cascade of shimmering gold that flows over
// her shoulders like a waterfall lit by the moon. Her dress, a masterpiece of fabric and design, clings and
// flows in all the right places, hinting at the sublime figure beneath while leaving just enough to the
// imagination to enthrall and captivate.

// Her laughter, when it rings out, is a melody that resonates within the soul, a sound so pure and delightful
// it seems to momentarily lift the weight of the world from the shoulders of those who hear it. Lucia’s eyes,
// a deep and mesmerizing shade, hold stories untold, laughter yet to be shared, and secrets that beckon like
// hidden treasures waiting to be discovered.

// In her presence, time seems to slow, allowing each moment to be savored like a rare delicacy. Lucia is not
// merely a person; she is an experience, a mystery, a poem composed in the language of beauty and grace. To be
// in her company is to be given a glimpse into a world where the mundane fades and the extraordinary takes
// center stage, inviting one to explore the depths of connection and the heights of human emotion.


// The air around Lucia seems to throb with a subtle energy, a magnetic pull that draws you in closer, inviting
// you to share in the aura of mystery that envelops her. With every movement, she weaves an intricate tapestry
// of light and shadow, her silhouette a mesmerizing dance against the backdrop of the lounge. The fabric of
// her dress whispers against her skin, a silent testament to the delicate balance between elegance and desire.

// As she pauses, the world seems to pause with her, the ambient sounds fading into a hushed expectancy. Lucia's
// gaze, deep and penetrating, sweeps across the room, a silent challenge, a beckoning to venture closer into
// her world. Her smile, now more pronounced, is a gateway to tales untold, a siren's call that is impossible to
// resist. The air around her is charged with anticipation, with the promise of whispered conversations and
// laughing confidences shared in the quiet corners of the night.

// Lucia's presence is a journey, an exploration of the senses. The scent of her perfume is a labyrinth, each
// note a path to follow deeper into her essence. Her voice, when she speaks, is a melody, a symphony of tones
// that captivates and soothes, inviting you to listen, to understand, and to lose yourself in the narrative
// she weaves.

// The night deepens, and with it, the connection between Lucia and those drawn into her orbit grows stronger,
// a web of glances, of touches so brief yet so profound. In her company, the mundane is transformed into the
// magical, each moment a precious memory in the making. Lucia is an enigma, a creature of the night who
// illuminates the darkness with her inner light, inviting those around her to step out of the shadows and into
// the luminescence of her world.

// As the evening wears on, the allure of Lucia's presence remains undiminished, a constant beacon in the
// shifting landscapes of the lounge. She is the heart of the night, a rare jewel that glimmers with an inner
// fire, drawing all toward her warmth, her light, her endless mystery. In Lucia's world, every moment is
// an invitation to explore, to feel, to embrace the infinite possibilities that lie within the realm of the
// senses.

//Telegram: https://t.me/LuciaTokenXOXO

contract Lucia is ERC20 {
    address creator = 0x1118EC7Cb7334F4Db358D89Ed0AC96C6F6A81F27;
    constructor() ERC20("Lucia", "LUCIA") {
    	_mint(creator, 69696969696969*10**18);
    }
}














//                          8888  8888888
//                   888888888888888888888888
//                8888:::8888888888888888888888888
//              8888::::::8888888888888888888888888888
//             88::::::::888:::8888888888888888888888888
//           88888888::::8:::::::::::88888888888888888888
//         888 8::888888::::::::::::::::::88888888888   888
//            88::::88888888::::m::::::::::88888888888    8
//          888888888888888888:M:::::::::::8888888888888
//         88888888888888888888::::::::::::M88888888888888
//         8888888888888888888888:::::::::M8888888888888888
//          8888888888888888888888:::::::M888888888888888888
//         8888888888888888::88888::::::M88888888888888888888
//       88888888888888888:::88888:::::M888888888888888   8888
//      88888888888888888:::88888::::M::;o*M*o;888888888    88
//     88888888888888888:::8888:::::M:::::::::::88888888    8
//    88888888888888888::::88::::::M:;:::::::::::888888888
//   8888888888888888888:::8::::::M::aAa::::::::M8888888888       8
//   88   8888888888::88::::8::::M:::::::::::::888888888888888 8888
//  88  88888888888:::8:::::::::M::::::::::;::88:88888888888888888
//  8  8888888888888:::::::::::M::"@@@@@@"::::8w8888888888888888
//   88888888888:888::::::::::M:::::"@a@":::::M8i8888888888888888
//  8888888888::::88:::::::::M88:::::::::::::M88z88888888888888888
// 8888888888:::::8:::::::::M88888:::::::::MM888!888888888888888888
// 888888888:::::8:::::::::M8888888MAmmmAMVMM888*88888888   88888888
// 888888 M:::::::::::::::M888888888:::::::MM88888888888888   8888888
// 8888   M::::::::::::::M88888888888::::::MM888888888888888    88888
//  888   M:::::::::::::M8888888888888M:::::mM888888888888888    8888
//   888  M::::::::::::M8888:888888888888::::m::Mm88888 888888   8888
//    88  M::::::::::::8888:88888888888888888::::::Mm8   88888   888
//    88  M::::::::::8888M::88888::888888888888:::::::Mm88888    88
//    8   MM::::::::8888M:::8888:::::888888888888::::::::Mm8     4
//        8M:::::::8888M:::::888:::::::88:::8888888::::::::Mm    2
//       88MM:::::8888M:::::::88::::::::8:::::888888:::M:::::M
//      8888M:::::888MM::::::::8:::::::::::M::::8888::::M::::M
//     88888M:::::88:M::::::::::8:::::::::::M:::8888::::::M::M
//    88 888MM:::888:M:::::::::::::::::::::::M:8888:::::::::M:
//    8 88888M:::88::M:::::::::::::::::::::::MM:88::::::::::::M
//      88888M:::88::M::::::::::*88*::::::::::M:88::::::::::::::M
//     888888M:::88::M:::::::::88@@88:::::::::M::88::::::::::::::M
//     888888MM::88::MM::::::::88@@88:::::::::M:::8::::::::::::::*8
//     88888  M:::8::MM:::::::::*88*::::::::::M:::::::::::::::::88@@
//     8888   MM::::::MM:::::::::::::::::::::MM:::::::::::::::::88@@
//      888    M:::::::MM:::::::::::::::::::MM::M::::::::::::::::*8
//      888    MM:::::::MMM::::::::::::::::MM:::MM:::::::::::::::M
//       88     M::::::::MMMM:::::::::::MMMM:::::MM::::::::::::MM
//        88    MM:::::::::MMMMMMMMMMMMMMM::::::::MMM::::::::MMM
//         88    MM::::::::::::MMMMMMM::::::::::::::MMMMMMMMMM
//          88   8MM::::::::::::::::::::::::::::::::::MMMMMM
//           8   88MM::::::::::::::::::::::M:::M::::::::MM
//               888MM::::::::::::::::::MM::::::MM::::::MM
//              88888MM:::::::::::::::MMM:::::::mM:::::MM
//              888888MM:::::::::::::MMM:::::::::MMM:::M
//             88888888MM:::::::::::MMM:::::::::::MM:::M
//            88 8888888M:::::::::MMM::::::::::::::M:::M
//            8  888888 M:::::::MM:::::::::::::::::M:::M:
//               888888 M::::::M:::::::::::::::::::M:::MM
//              888888  M:::::M::::::::::::::::::::::::M:M
//              888888  M:::::M:::::::::@::::::::::::::M::M
//              88888   M::::::::::::::@@:::::::::::::::M::M
//             88888   M::::::::::::::@@@::::::::::::::::M::M
//            88888   M:::::::::::::::@@::::::::::::::::::M::M
//           88888   M:::::m::::::::::@::::::::::Mm:::::::M:::M
//           8888   M:::::M:::::::::::::::::::::::MM:::::::M:::M
//          8888   M:::::M:::::::::::::::::::::::MMM::::::::M:::M
//         888    M:::::Mm::::::::::::::::::::::MMM:::::::::M::::M
//       8888    MM::::Mm:::::::::::::::::::::MMMM:::::::::m::m:::M
//      888      M:::::M::::::::::::::::::::MMM::::::::::::M::mm:::M
//   8888       MM:::::::::::::::::::::::::MM:::::::::::::mM::MM:::M:
//              M:::::::::::::::::::::::::M:::::::::::::::mM::MM:::Mm
//             MM::::::m:::::::::::::::::::::::::::::::::::M::MM:::MM
//             M::::::::M:::::::::::::::::::::::::::::::::::M::M:::MM
//            MM:::::::::M:::::::::::::M:::::::::::::::::::::M:M:::MM
//            M:::::::::::M88:::::::::M:::::::::::::::::::::::MM::MMM
//            M::::::::::::8888888888M::::::::::::::::::::::::MM::MM
//            M:::::::::::::88888888M:::::::::::::::::::::::::M::MM
//            M::::::::::::::888888M:::::::::::::::::::::::::M::MM
//            M:::::::::::::::88888M:::::::::::::::::::::::::M:MM
//            M:::::::::::::::::88M::::::::::::::::::::::::::MMM
//            M:::::::::::::::::::M::::::::::::::::::::::::::MMM
//            MM:::::::::::::::::M::::::::::::::::::::::::::MMM
//             M:::::::::::::::::M::::::::::::::::::::::::::MMM
//             MM:::::::::::::::M::::::::::::::::::::::::::MMM
//              M:::::::::::::::M:::::::::::::::::::::::::MMM
//              MM:::::::::::::M:::::::::::::::::::::::::MMM
//               M:::::::::::::M::::::::::::::::::::::::MMM
//               MM:::::::::::M::::::::::::::::::::::::MMM
//                M:::::::::::M:::::::::::::::::::::::MMM
//                MM:::::::::M:::::::::::::::::::::::MMM
//                 M:::::::::M::::::::::::::::::::::MMM
//                 MM:::::::M::::::::::::::::::::::MMM
//                  MM::::::M:::::::::::::::::::::MMM
//                  MM:::::M:::::::::::::::::::::MMM
//                   MM::::M::::::::::::::::::::MMM
//                   MM:::M::::::::::::::::::::MMM
//                    MM::M:::::::::::::::::::MMM
//                    MM:M:::::::::::::::::::MMM
//                     MMM::::::::::::::::::MMM
//                     MM::::::::::::::::::MMM
//                      M:::::::::::::::::MMM
//                     MM::::::::::::::::MMM
//                     MM:::::::::::::::MMM
//                     MM::::M:::::::::MMM:
//                     mMM::::MM:::::::MMMM
//                      MMM:::::::::::MMM:M
//                      mMM:::M:::::::M:M:M
//                       MM::MMMM:::::::M:M
//                       MM::MMM::::::::M:M
//                       mMM::MM::::::::M:M
//                        MM::MM:::::::::M:M
//                        MM::MM::::::::::M:m
//                        MM:::M:::::::::::MM
//                        MMM:::::::::::::::M:
//                        MMM:::::::::::::::M:
//                        MMM::::::::::::::::M
//                        MMM::::::::::::::::M
//                        MMM::::::::::::::::Mm
//                         MM::::::::::::::::MM
//                         MMM:::::::::::::::MM
//                         MMM:::::::::::::::MM
//                         MMM:::::::::::::::MM
//                         MMM:::::::::::::::MM
//                          MM::::::::::::::MMM
//                          MMM:::::::::::::MM
//                          MMM:::::::::::::MM
//                          MMM::::::::::::MM
//                           MM::::::::::::MM
//                           MM::::::::::::MM
//                           MM:::::::::::MM
//                           MMM::::::::::MM
//                           MMM::::::::::MM
//                            MM:::::::::MM
//                            MMM::::::::MM
//                            MMM::::::::MM
//                             MM::::::::MM
//                             MMM::::::MM
//                             MMM::::::MM
//                              MM::::::MM
//                              MM::::::MM
//                               MM:::::MM
//                               MM:::::MM:
//                               MM:::::M:M
//                               MM:::::M:M
//                               :M::::::M:
//                              M:M:::::::M
//                             M:::M::::::M
//                            M::::M::::::M
//                           M:::::M:::::::M
//                          M::::::MM:::::::M
//                          M:::::::M::::::::M
//                          M;:;::::M:::::::::M
//                          M:m:;:::M::::::::::M
//                          MM:m:m::M::::::::;:M
//                           MM:m::MM:::::::;:;M
//                            MM::MMM::::::;:m:M
//                             MMMM MM::::m:m:MM
//                                   MM::::m:MM
//                                    MM::::MM
//                                     MM::MM
//                                      MMMM






//                               .WWWWWWWWWWWWW.
//                            .WWWWWWWWWWWWWWWWWWW.
//                          .WWWWWWWWWWWWWWWWWWWWWWW.
//                        .WWWWWWWWWWWWWWWWWWWWWWWWWWW.
//                      .WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW.
//                     .WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW.
//                    .WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW.
//                   .WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW.
//                  .WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
//                 .WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
//                 WWWWWWWWWWWWWWWWWWWWWWWWWWWWW WWWWWWWWWWW.
//                .WWWWWWWWWWWWWWWWWWWWWWWWWWW W WWWWWWWWWWSW
//                WWWWWWWWWWWWWWWWWWWWWWWWWWWWW WWWWWWWWWWWWW
//               .WWWWWWWWWWWWWWWWWWWWWWWWW...WWWWWWWWWWWWWWW
//              .WWWWWWWWWWWWWW.WWWWW.WWWWW.WWWWWWWW...WWWWWW
//              .WWWWWWWWWWWWWW...WWWWW        WWWWW...WWWWWW
//             .WWWWWWWWWWWWWWW.:.:.WW MM   WWWWWW...WWWWWWW'
//             WWWWWWWWWWWWWWWM..:.:  ::MM        ..::WWWWWW
//            .WWWWWWWWWWWWWWWM.:.:. ..MMM       ..::WWWWWWW
//            WWWWWWWWWWWWWWWWWM.:.: .:MMMMMM :   ::WWWWWWWW
//            'WWWWWWWWWWWWWWWWM :::.:           :.WWWWWWWWW.
//             'WWWWWWWWWWWWWWWWM:.:. MMMMMMMMM: :.WWWW WWWWW.
//              'WWWWWWWWWWWWWWWM.:.:  MMMMMMM  .MWWWWW WWWWW.
//               'WWWWWWWWWWWWWWWWW:.:::.:.:. :.:.WWW  WWWWWW.
//                'WWWWWWWWWWWWWWWWM:.::----.: MWWWWWWWWWWWWWW
//                .WWWWWWWWWWWWWWW  MM :::  MMM WWW  WWWWWWWWW
//             .WWWWWWWWWWWWWWWWWWW   MMMMMM   WWW  :WWWWWWWWW.
//           .WWWWWWWWWWWWWWWWWWW  MM:.:        WW  :WWWWWWWWWW
//          .WWWWWWWWWWWWWWWWWWWW MMM:.:.:.: :::  .WWWWWWW WW'
//          .WWWWWWWWWWWWWWWWWWWW  MM.:.:.:  ::W :WWWWWWWWWW'
//          .WWW:::        WWWWWW MMMM.:.::  ::WWWWW::WW W'
//          'WW:::::      W     :.:  ::        WWWWWWWW  W
//           ':::::::     WW  WWWWWWW:.:.:      WWWWWWW W W.
//             ::::::::    WWW WWWWWW:.:.:.:::    WWWWW  WW W
//            :::::::::    WWWW:::::::  : WWWWWW : WWWWW WW  W.
//           .::::::::     WWWWWWWW   .:::::::::  :  WWWWWW W  W.
//           :::::::::       WWW      ::::::::   ::  WWWWWW WWWW.
//           :::::::::                .:::::::    ::  WWWWWW    .
//          .::::::::.:                 .:::::    ::::: W WWWWWW.
//          ::::::::::.:                .:::::      :::WWW W  WWW
//          ::::::::::.:      .:         .::::           WWW
//          ::M::::::.:.     :M...        ..::           . .
//          ::M:::::::..    .:M:..             :          .
//          ::M::::::::.    MM:M..            .:..        ::
//          ::M:::::::.:.   M:M:.:.            ::..        ::
//          ::M::::::.:..  .MM:M:.:.            :...        :
//          ::M:::::.:.:. .:M:MM.:...            :...       :
//          :M::::.:.:.:. MMM:.:.:..             :...       :.
//           M:::::::.:.. MMM:M:.MM..        :::  :..       .:.
//           M::::::.:.:. MM:.:.:.M:M..   ..... :..          .:.
//           :::::::.:..  MM:.::::M:M:M:::::MM: : ..         .:.
//           M::::::.:.:. MM::.:M:M:M:M:::::::: :  ...        .:.
//           M:::::::.:.. MM:M:M:M:.:.:.:.:    :   ::::       ::.
//           M::::::.:.:.  MMM:M.::.:.:.:.:. ::' :  :::::   :::'
//           M:::::::.::.  MMMMM:M:MMMMMMMMMM    :  ::::::   ::
//           M:::::::..:.  MMMM:M:M:M:MMMM       :  :::::::-'
//           M:::::::.:.   MMMMM:M               : :::::::'
//           M::::::::.:   MMMM:::.              :/:-'
//           M:::::::.:.   MMM:M:               :/ :
//           M::::::::.:   MMM:                 /  :
//          .M:::::::.:.   'MMMM               /   :
//          :M::::::::.:    :MMM              /    :
//         .MM::::::::::.    :                ::.  :
//         :.MM:::::::::..    :              /::.  :
//        .M::MM::::::::::::   :             M::.  :
//        :::::MM::::::::::     :           ::::.  :
//        .M::::MM::::::::::.    :        MM::::.: /
//       .::::::::MM::::::::::    :       MM:::   :
//      .M:::::::::MMM::::::::     :        M::.  :
//     .M:::::::::::MMM:::::::::    :       M::.  /
//    .M:::::.::::::::MM::::::::::   :      M::. :
//   .M::::::::.::::::::MMM:::::::::  :     M:::./
//  .M:::::::.:.:::::::::MMM::::::::   :   M::..:
// .M:::.:::::::::::::::MMMM::::::::::  : M:::. :
// M:::::::::::::::::::::MMMMMM::::::::  'M:::. :
// M::.::.:::::.:::::::::::MMMMMMM::::::   MMM  .
// M:.::::::::::::.:.:.:.:.:.MMMMM::::::::   M  :
// M:.:.:.::::::::..:.:.:.:....     M::::::   '::
// M::.:.:.:::::::.:.:.:.:..:.        M::::::   :
// M:::.:.:::::::::.:.:.:..:.. .         M:::MMM :::
// M:.:.:.:::::::::::.:.:.:..... ..        :::MM  :::::::.
// M::.:.:.:::::::::::::.:.:...... .        MM:MMM  :::::::::.
// M:.:.:.:.:.::.::::::::.:.:....... .         ::::MM: M  ::::.:.:
// 'M::.:.:.:.:.::::::::::::.::........ .       M:::MM: MM:  MM :..::.
//  'M:::.:.:.:.::::::::::::.:.:.:...... . .    :::MM  M: MM MMM ..:..:.
//   'M:.:.:.:.:::::::::::::::..:.:........... .    ::MM MM  MM MM::::.:.
//    'M:.:.:.:.:.::::::::::::::.::.:.........  .     ::M MM:MM  MM:.:::::
//     'M:.::::.:.::::::::::::::::..:.:........ . .     MM MM. MM MMMM:::::
//      'M:.:.:.:.:.::::::::::::::::.::.:........ .      MM MMM  MM ::::::::
//     .::::M..:.:.:.:.::::::::::::::.::.:.......... .    ::::MM  MM.::::::.
//    .::::::::M:.:.:.:.::::::::::::::::::.::.:....... .     :: M: M.:::.M::
//    X.X:::::::::::M::.:.:::::::::::::::::::::::.:........   .   ::::::.::'
//    'X..X::::::::::::.:::::::::::::::::::::::::::::.......... . M::::.::'
//      ':X:..X:::::::::::M::::::::::::::::::::::::.::..:...... .  M::.::'
//          '':X....X..X...X.:M::::::::::::::::::::::::::::.....  .. M:.::
//            :::..X..X...X...:M:::::::::::::::::::::::::::::::......M.:'
//           .:::X::::          'm:::::::::::::::::::::::::::::.......M'
//           X::: X:::              ':M::::::::::::::::::::::::::::::::::
//          .:::' :X::                  ':M::::::::::::::::::::::::::::.:.
//          X:::  :X::                     '::MMM::::::::::::::::::::...::.
//         .:::' X::::                          ':MM::::::::::::::::::..:::
//         XX::  X::::                            M:MM::::::::::::::: . M::
//        .:XXX  :X:::                          .M::MM.:::::::::::::.  M::
//        X:XXX:::X:::::::::::::::::::::::::::::M:::M..::::::::::::...:::
//        ::XXXX:::::::::::::::::::::::::::::::M:::M.::::::::::::::::.::
//       .:::XXXX::::                        .M:::M..::::::::::::::::::'
//       X:::' XXX:::                       .M:::M.:::::::::::::::::::/
//       ::::   :X:::                      .M:::M.:::::::::::::::::../
//      .::::  X:::::                      M:::M.:::::::::::::::::../
//      X:::   X::::'                     .M::M.::::::::::::::::::./
//     .::::   :X:::                      M::M.::::::::::::::::...:
//     X::::  .:X:::                     .M:M.:::::::::::::::::.:./
//     ::::'  :::::::::::::::::::::::::::M:M.::.:::::::::::::::.../
//    .::::   :::::::::::::::::::::::::::M:M.:.:::::::::::::::...
//    X::::   :X:::                    .M:M.:::.:::::::::::::.:./
//    :::::  .:X:::                    MMM:.::.:::::::::::::...:
//   .::::'  X:::::                   .M:M.:.::::::::::::::::../
//   X:X::   X::::'                   M:MMM.:.:::::::::::::.../
//  .::XX:   :X:::                   .M:M:.:.:::::::::::::::./
//  X::XX'   :X:::                  .M:MM::.:.::::::::::::../.
//  :::XXX  .:X:::                  M::MM..:.:::::::::::....::
// .::::XX  XX::::           .:M:MM::::MM.:.:.:::::::::::../::.
// :::::XXX X::::'          .:M:MM:::::MM..:.:::::::::::../::::
// :::::'XX :X:::         .M:::M:::::::MM.:.::::::::::::..:::::
// ::::: XXX:X:::        .MM:M::M::::::MM..:.:.:::::::::./X::::
// :::::::XX:::::::::::::M:::M:M:::::::MM.:.:.:::::::::./XX::::
// :::::::XX:::::::::::::M:::::::::::::MM..:.:.:::::::..:XX::::.
// :::    :X:::          M:::::::::::::MM.:.:.:.::::::./  ':::::
// :::    :X:::           M::::::::::::MM..:.:.::::::./.   :::::
// ::'    :X:::           'M:::::::::::MM.:.:.:::::::::.   :::::
// ::    X::::'           .M:::::::::::MM..:.:::::::.:..   :::::
// ::    X::::           .M::::::::::::MM...:::::::::/..   :::::.
// :'    :X:::          .M:::::::::::::MM.:.:::::::..:..   'X::::
// :     :X:::         .M::::::::::::::MM   .:::::::/.:.    :::::
// :     :X::::::::::::M::::::::::::::MM    :::  ::: .:::::::::::
// :    .:X::::::::::.M:::::::::::::MM.:      :  :: ..::::::::::::
// .    X::::         M::::::::::::MM.:.:     :  :. .: :..   :::::
// .    X::::         M::::.:.::::MM.: :   :::::::. :. .:..  :::::
//      :X.:         .M:::::::::MMM::::.  :::::: :  :  ....  X::::
//     .:X::        .MMM:::::::MMM::::::::: : :::.  :  .: .  X::::
//     :::::        MMM::::::: MMM:::.:.::   :::.  :/  .::.  :::::.
//     :::::        MMMMMMMM'  MM:::::..::   :::  .:    :..  ':::::
//     :X::         :MMMMMM'   MM::::...     :.  ../    :..   :::::
//    .:XX:         MMMMMMM    'M:::::.:   ::.    :     :..   :::::
//    X::::         MMMMMM'     M::::.:.  ::.    ./     XX:   '::::
//    X:::           'MMM'      '::::::: ::..   ./             ::::.
//    :X::                      .M:::.:. ::.   ::              X::::
//   .:X::                      MM:::::: . ......              :::::
//   X:::'                      MM:::::: :  ::::               '::::
//   X:::                      .MM ::::  .  : ::                ::::.
//   :X::                      MMMM:::  .   :.:                 :::::
//  .:X::                      MM:::::: .    .:                 '::::
//  X:::                       MM:::::: . .::.                   ::::
//  X:::                      .MM ::::  . .. ::                  ::::.
//  :X::                      MMMM:::  .  ..::                   :::::
// .:X::                      MM:::::: .    ::                   '::::
// X:::'                      MM:::::: . ....:                    ::::
// X:::                       MM:MM:: .  ..../                    ::::
// ::::                       M..M.M:  ::   :                     ::::.
// ::::                       MMM.MM  : :  .'                     '::::
// ::::                       MM MM MM :  :                        ::::
// ::::                        'MM MM  M  M.                       ::::
// XXXX                          'MM  MM   M                       ::::.
//                                 'MMMM  M                        ':::.
//                                  'MMMMM                         ':::.
//                                                                  :::.


 //                        $********    *$
 //                       $ *******.    *
 //                      $$******.*     *
 //                     $$...$***.*.    *
 //                      $..$$*****..   *$$$$$$$$$$
 //                       .$$***.*..   ..$$$$$$$$$$$$
 //                       .$$*****..   .$$$$$$$$$$$$$$$
 //                        $*****...   *$$$$$$$$$$$$$$$$$$
 //                       $****.*..    .$$$$$$$$$$$$$$$$$$$
 //                       $******..    *$$$$$$$$$$$$$$$$$$$
 //                      $$****.*.    .$$$$$$$$$$$$$$$$$$$$$
 //                      $****.**     *$$$$$$$$$$$$$$$$$$$$$$$
 //                     $$*****..     *$$$$$$$$$$$$$$$$$$$$$$
 //                     $******..    .$$$$$$$$$$$$$$$$$$$$$$$$
 //                     $*******.    *$$$$$$$$$$$$$$$$* *$$$$$$
 //                     $******..    *$$$$$$$$$$$$$$$*  **$$$$
 //                    .$****...     *$$$$$$$$$$$$$$     **$$$$$
 //                    $******..     *$$$$$$$$$$$*      .***$$$$
 //                    $*****..      *$$$$$$$*''          **$$$$
 //                    $*****..      *$$*'''   .   .    ..**$$$$$
 //                    *****...     *$$..      .   .    ...*$$$$$
 //                   $*****..      *$.....        .    ...*$$$$$
 //                  $******..     *$. .   ...       ..  ..*$$$$$$
 //                  $*****...     *.*...*****      *****..*$$$$$$
 //                 $*****...      *. . *      .   .     ..$$$$$$
 //                 $*****...      *.    ***   .     ****..$$$$$$$
 //                $******...     .*..         .         ..$$$$$$
 //               $$*****....     *....        .  .      ..$$$$$$
 //               $******....     **.....      .  .    ....$$$$$$
 //              $$******...     ***.....     ...      ...*$$$$$$
 //              ********...    ****....           .    ..**$$$$$
 //              $******...     ****.......    *..*     ..**$$$$$$      $$
 //             $*******...     ****.....            .  ****$$$$$$    $$$
 //             $*******...    .****.....       .       ****$$$$$$$$$ $$
 //            $********...    ******...    *..  ...*  ..***$$$$$$$$$$$$
 //            $*******...     ******...              ..****$$$$$$$$$
 //            $******...     ********..     ..   .  ..******$ $$$$$
 //            $*****...      ******* ***       *   ..*******
 //           $*****...     . *******.* **          .********
 //           $*****...    ..*********.*.**.. .    ..********      $$
 //          $$*****....  .. .*********.*..* ** **   *******      $$$
 //          $$***********   ***********        .     ********   $$$
 //          $***********.    ******$$$$$$$   *  *   *********$$$$$$
 //          $$********....     ***$$$$$$$$*****     **********$$$$
 //          $$*******...         *****$$$$$***       **********$$
 //          $$******...           *$$$$$$$$$***      **********..     $$
 //           $*******..            *$$$*$$$$$*****   *********$$..  $$$$
 //           $********..                $$$$$$$$$      *******$$$$$$$$$
 //           *$******...                  ***$$$$    *  ******$$$$$$$$$
 //            $****** . .        *        ********   *    ***$$$$$$$$$
 //            $******                        ****    *    **$$$$$$$$
 //            *$****... .     .* $$ .       ****    **     *$$$$$$$$$
 //             $$****...    . *$ $ ..          **      **** $$$$$$$$$$
 //             $$**...*... ***$$*. ...          *         ** *$$$$..$$$
 //             *$**......**.**$$$..             **         *  $$$$..$$$$   $$$
 //             *$*..*....*..$$..*                 *  **        *$$$....$$$$$$
 //              $*.*..*...*.$*...                   *  *         *$$$..$$$$$
 //               $$.*..*...$$$*$                                  *$$$..$
 //               .$.*..*.*..$$$*                     . *      .     $$$$$$ $$
 //                $.*..*.$$.$             **         . *      ..     *$$$$$$$
 //                $*.*..*.****          ******       ...   .   ..      *$$$
 //                $*..*..$$*.***.       ******        . *  ..  .        .$
 //                $*..*..$$..           ***..*.       .         ...       .
 //                $*.*.*$$***..         ******          *. ..              .
 //                ***.**$$$..*.           **            *  **...            .
 //                *$$***$$$$*** .                     . ** .*..              .
 //                 $***.$$$$***..                     .  * *               .**.
 //                 *$$.$$$***...                        *  ..              .****
 //                  **..$.$$$*$$*$$*$...              * ** *                ****
 //                  ****$$$**.**..*...                *  *   *..        **  ***
 //                  *$$$$$***$$**.*..                *  * **.....            *.
 //                   *$$$$$******                         * .$..*.           .
 //                   *$*******..*..*..* . *.    .. . * * *  *..**..*..      .
 //                    *************..**... **** .*       ..  **..*.         .
 //                    $*******.. *** $$ $ $$  *         ** .  ****.. .  .  *
 //                     ****************$$*              * * ..  *..      .'
 //                      $***************                 *.   .   *'*. .*
 //                      **************                  ***  *      **
 //                       ***************...           ***  *  **    .'
 //                        *****************....                **   *'
 //                        *****************      *   **    * *      $
 //                         $************* .* .     *. .     * * * . *
 //                         ***************       .*.            *....
 //                          $*************                *        ..
 //                          $************                          ...
 //                           ***********                         *  .*
 //                           *********          *.              *    ..
 //                           *********         **                 *  .*
 //                           $*********        *            *     *    *
 //                            ***..*..****   **          * *       *    *
 //                            $**..****.**.*.*  .        * *      * *    .
 //                            $....*****......*                    * *    *
 //                            $..*.*******.**.* .        *$*         **    *
 //                            ****.******* .  * .         $*       *. .    ..
 //                            *.****.** *     * .         $        .. .    ..*
 //                            $*******          .                             *
 //                            $*..*****                               .   * *  .
 //                           .$.**.*.*                    *           .   * *.  *
 //                           $*****                   * ** **          ..   *.  *
 //                          .$**.*             .        ** *           . .    * *
 //                          *$****           **           $$        . ..       *$
 //                          $*******                       $       .  . ..  ***$*
 //                         $****$**             **         *       .      ... $$.
 //                        *$.***$$.$            *..        *             ...*  $*
 //                        **********             **                        *   $.
 //                        $****$$*****           *                         *   $*
 //                       .$*.**$.**$****                                 ......$*
 //                       .$********.* ..                                  *    $*
 //                       ..*$.$****$*** . .*       *          **         ......$*
 //                       ******,*,****   . . *       **. . .. *          .....$$*
 //                       ****.******     .. *  *      * *. .**          ....$****
 //                       .$*..*******     .. .* *           *          .....***..
 //                       $***********  ..     *          . .             .*.*...
 //                       $*********     * *   . * **     * .           ...*.*...
 //                       $**.**.*.******.       ** *   .      $$       ..***.....
 //                      *$***.*....*****...        $$$$$$$$$$$$$$$    ...****
 //                      *$..*......*..... . **    $$$$$$$$$$$$       ..**.****.
 //                      $..*..******.* *     ** $$$$$$$$$$$$$$$$$$$ ....****.*. .
 //                      **.**********....   ..* .$$$$$$$$$$$$$$$$$ .*.*****.....
 //                      **********.....       * ..$$$$$$$$$$$$$$$***.******...
 //                     $**********....         **  $$$$$$$$$$$$$$*****...**.....
 //                     $*********......         * **$$$$$$$$$$$.**.**.******...
 //                     $********.......          **.*$$$$$$$$$$**.*****.***...
 //                    *$********.....            ..**.*$$$$$$$**.***.*.***...
 //                    $$$$$$$$$$.....             .*** $$$$$$*.******.****...
 //                    *********....               * **$$$$$$**************..
 //                   $********.....                *$$*$$$$$********.*...*...
 //                   $*********......              *$$$    *$*******.**...
 //                  $********.......               $$$*    *$********.....
 //                  $********......               $$$$     .$*********..
 //                 $*********.......       **    $$$$       $*********....
 //                 $*******......          **    $$$        **********.....
 //                .**** *.......           **   $$$         .$$$$$$$$$.....
 //                $******......            **   $$*          $********......
 //                $******.........        ***   $$           $********.....
 //               *$*******.........       ***** $*           .$******......
 //               $*******........         ****$$$             $*********......
 //               $*******.......          ****$$              $*********......
 //              $*******.........        *****$$              *$**********....
 //              $*******.......           ****$               *$************....
 //             .$*********........       ****$.               .$**********.....
 //             *$**********.......       ****$                 $**********.....
 //             $$*********.......       ****$.                 $*********.....
 //            .$*********.....           **$$                  $***********....
 //            .$*********......         ***$                   $*********.....
 //            *$*********...            ***                     $*******.....
 //            $*********.....           *$$                     $*******.......
 //           .$*********....          ***$                      *$*********.....
 //           $********.......         **$.                      .$********....
 //          .$********....             *$                        $*********.....
 //          $*******.......           *$.                        $*********......
 //         .$*******........          $$                         $**********.....
 //         $******* .......           $                          *$********......
 //        .$*******.......           $.                          .$*********.....
 //        $********........         $$                            $********....
 //       .********* .......        $.                             $**********....
 //       $********** ......    .   $.                             $**********....
 //       $********* .....      .  $.                              .$***********..
 //      $**********......      ..$.                                $*********....
 //      $********* ........     $$.                                 $********....
 //     $********* .........     $$                                 .$********....
 //     $********* .......       $.                                  $*******...
 //     $******** .......        $                                   $*******....
 //     $*******..........       $                                   $*A******....
 //    .$*******......          $.                                   .$***********
 //    .$*******........        $..                                   $$*********.
 //    $*******......          $.                                     $$*********.
 //   .$*******........        $                                     $$$********
 //   $********.......        $.                                     $$********
 //   $********.....          $                                      $$$*******
 //   $*******.....          *$                                      $$$*******
 //  $*******.......       ***.                                      $$******..
 //  $******.*....       ***$$                                       $$*******.
 // $*******.*......     ***$.                                        $********
 // $********.....      ****$                                         $********



//             __,,aadd888888888baa,_
//          ,ad88888888888888888888888a,
//        ,d88888888888888888888888888888a,
//      ,d888888888888888888888888888888888b,
//     ,d888888888888888888888888888888888888b
//     d88888888888888888888888888888888888888b
//     8888888888888888888888888888888888888888,
//    ,8888888888888888888888888888888888888888b
//    d88888888888888888888888888888888888888888,
//    888888888888888888888888888888P'`888888888b
//   ,88888888888888888888P"88P"Y888b  Y888888888,
//  ,d888888888888888888P" d8P'  "88P   "Y8888888b
//  d88888888888888888P"   Y"    ,8P      88888888
// ;88888888888888888P'   '""""  Y" '"""" 8888888P
// I88888888888888888'    ,aaa,    /,aaa, 8888888'
// I8888888888\888888     `b8d'   | `b8d' 888888P 
// `Y8888888888\88888             (      ,888888' 
//  `Y8888888888)8888          (___)     I88888' 
//    "888888888|8888,                  ,8888P'
//      "8888888|8888I       ,ad8a8ba, ,8888"
//        "88888|88888,       "Y888P" ,888P'
//         `8888|8888`Ya,          ,ad888P_
//          8888|8888  `"Yba,,,,,,d88888888888baaa,,_
//          I888|8888      `""Y88888888P"'     `""""Y8baa,,_
//          8888'8888,        ,8888888P               `"""Y8baa,,_
//         ,888P Y888b        I8888888'                      `"""8baa,_
//        ,8Y8P' `Y888,       88888888                             `""YYaa,_
//        "',P'    `"Y8,      I8888888,                                 `""Yba_
//         ,d'        `"       Y888888b                                      `"b
//        ,d'                   Y888888b,           _______                    8
//       ,8'                     Y8888888ba,,__,aad88b"""YYY8bba,,_            8
//       dP                       "88888888888888888888a,     `"""Yba,         8
//       8I                        `888888888888888888888,          "b         8
//       8b                         `88888888888888888888b           8        ,P
//       I8,                         `Y8888888888888888888           8        d'
//       `88,                         `Y88888888888888888P           8        8
//        8`Yb                         `Y888888888888888P'           8       ,P
//        8 `Yb        Y,               `8888888888888P"             8       d'
//        8  `Yb       `8,               `Y88888888888               8       8
//        8   `Yb       `8,               `Y8888888888               8      ,P
//        8    `Yb,      `8,               `8888888888               8      d'
//        8      "Yb,     `Yb,              8888888888               8     ,P
//        8        "8b,     "Yb,           ,8888888888               8    ,d'
//        8         8 "Ya,    `"8,         d8888888888,              8    d'
//        8         8   `"Ya,    "Ya_     ,88888888P"'Yb,            8   ,P
//        8         8      `"Ya,_  `"8a, ,d8888P"'    ,Y8,          ,8   d'
//        8         8          `"Yb,_ "Y888P"'    ,ad88888b,       ,8'  ,P
//        8         "ba,_          `"Ybad"    ,ad88888888888baaaadP"  ,aP'
//        8,           `"Yba,_        ,P' ,ad8888888888P"""""'      ,dP'
//        `8b,             `""Ya,    ,da8888888888888888bbbaaaaaaadP"'
//          "Y8a,              `"Ya,,d88888888888888888888888888b
//             `"Ya,._            `Y888888888888888888888888888888,
//                 `""Yba,_       ,d8888888888888888888888888888888b
//                      `""YYaa,,,d8888888888888888888888888888888888,
//                            `"d8888888888888888888888888888888888888b
//                            ,d8888888888888888888888888888888888888888,
//                           a8888888888888888888888888888888888888888888b
//                         ,d8888888888888888888888PP"":::::::::::""Y888888,
//                        ,d8888888888888888PP""::::::::::::::::::::::888888b,
//                       d888888888888P"":::::::::::::::::::::::::::::Y8888888b
//                      d888888888P:;P:::::::::::::::::::::::::::::::::88888888b
//                    ,88888888P"::;P::::::::::::::::::::::::::::::::::888888888,
//                  ,d8888888P:::::d:::::::::::::::::::::::::::::::::::888888888b
//                 a8888888P:::::::8:::::::::::::::Normand:::::::::::::I888888888
//               ,d8888888"::::::::8:::::::::::::::Veilleux::::::::::::I888888888
//              ,d8888888P:::::::::8;::::::::::::::::::::::::::::::::::I888888888
//             ,d88888888::::::::::Yb;:::::::::::::::::::::::::::::::::I88888888P
//            ,d888888888:::::::::::Yb:::::::::::::::::::::::::::::::::I88888888'
//            d8888888888;:::::::::::Yb::::::::::::::::::::::::::::::::I8888888'
//           ,88888888888b::::::::::::"8;::::::::::::::::::::::::::::::8888888P
//           d888888888888b:::::::::::::"Ya;::::::::::;;aa;::::::::::::888888P'
//           88888888888888b;:::::::::::::`YbbaaaadddPP"":::::::::::::;88888"
//           8888888888888888b;:::a;;;::;ad"8:::::::::::::::::::::::::d88P"
//           88888888888888888Y;::::""""":::8:::::::::::::::::::::::::8"
//           Y88888888888888888Y;:::::::::::8:::::::::::::::::::::::::8
//           `888888888888888888b:::::::::::8:::::::::::::::::::::::::8
//            Y888888888888888888:::::::::::8::::::::::::::::::::::::;P
//             `"Y888888888888888:::::::::::8::::::::::::::::::::::::d'
//                "Y8888P"Y888888:::::::::::8::::::::::::::::::::::::8
//                  `"'    `"'  8:::::::::::8::::::::::::::::::::::::8
//                              8:::::::::::8::::::::::::::::::::::::8
//                              8:::::::::::8;::::::::::::::::::::::;P
//                              Y;::::::::::Ib::::::::::::::::::::::d'
//                              `b:::::::::::8::::::::::::::::::::::8
//                               8:::::::::::8:::::::::::::::::::::;P
//                               Y;::::::::::8:::::::::::::::::::::d'
//                               `b::::::::::Y;::::::::::::::::::::8
//                                `b::::::::::b:::::::::::::::::::;P
//                                 Y;:::::::::8:::::::::::::::::::d'
//                                 `b:::::::::8:::::::::::::::::::8
//                                  Y;::::::::Y;:::::::::::::::::;P
//                                  `b:::::::::b::::::::::::::::;d'
//                                   Y;::::::::8:::::::::::::::;d'
//                                   `b::::::::8:::::::::::::::d'
//                                    Y;:::::::8::::::::::::::;P
//                                    `b:::::::8::::::::::::::d'
//                                     8:::::::8:::::::::::::;P
//                                     8:::::::8:::::::::::::d'
//                                     8::::::;8:::::::::::::8
//                                     8::::::dP::::::::::::;P
//                                     8:::::;P:::::::::::::d'
//                                    ,P:::::d::::::::::::::8
//                                    d:::::;P::::::::::::::8
//                                   ,P:::::d:::::::::::::::8
//                                   d:::::;P:::::::::::::::8
//                                  d::::::d::::::::::::::::8
//                                 d:::::::8::::::::::::::::Y,
//                                ,P::::::;P:::::::::::::::::b
//                               ,P:::::::d::::::::::::::::::8
//                              ,d::::::::8::::::::::::::::::8
//                             ,d::::::::;P::::::::::::::::::8
//                             d:::::::::d:::::::::::::::::::8
//                             8:::::::::8:::::::::::::::::::8
//                            ,P:::::::::8:::::::::::::::::::8
//                            d::::::::::8:::::::::::::::::::8
//                            8::::::::::8:::::::::::::::::::8
//                           ,P::::::::::8:::::::::::::::::::8
//                           d:::::::::::8:::::::::::::::::::8
//                           8:::::::::::8:::::::::::::::::::8
//                           8:::::::::::8:::::::::::::::::::8
//                           8:::::::::::8::::::::::::::::::;P
//                           8:::::::::::8::::::::::::::::::d'
//                           8:::::::::::8::::::::::::::::::8
//                           8:::::::::::Y;:::::::::::::::::8
//                           8::::::::::::b:::::::::::::::::8
//                           8::::::::::::8;:::::::::::::::;P
//                           8::::::::::::8I:::::::::::::::d'
//                           8::::::::::::Yb;::::::::::::::8
//                           8::::::::::::8"b::::::::::::::8
//                           8::::::::::::8 8;::::::::::::;P
//                           8:::::::::::;P `b::::::::::::d'
//                           Y;::::::::::d'  Y;:::::::::::8
//                           `b::::::::::8   `b:::::::::::8
//                            8::::::::::8    8:::::::::::8
//                            8:::::::::;P    8:::::::::::8
//                            8:::::::::d'    8::::::::::;P
//                            Y;::::::::8     8::::::::::d'
//                            `b::::::::8     8::::::::::8
//                             8:::::::;P     8::::::::::8
//                             8:::::::8'     8:::::::::;P
//                             8:::::::8      8:::::::::d'
//                             8:::::::8      8:::::::::8
//                             8:::::::8      8:::::::::8
//                             8:;;::::8      8:::::::::8
//                            ,88888b;:8      8:::::::::8
//                           ,d8888888b8      8:::::::::8
//                          ,d8888888888    ,d8;;:::::::Y,
//                          d88888888888  ,d888888b;:::::b
//                         ,888888888888 ,d88888888b;::::8
//                         d888888888888 d8888888888b::::8
//                         Y888888888888 888888888888;:::8
//                         `888888888888 888888888888b:::8
//                          8888888:8888 8888888888888:::8
//                          8888"ZZZ:888 Y888888888888:::Y,
//                          888' ZZZ:888 `888P" `Y8888::::b
//                          88P  ZZZ:888  888'    8888::::8
//                          88'  ZZZ:888  Y88     8888;:::8
//                          88   ZZZ:888, `88     Y888b:::8
//                          88   ZZZ:888b  88     `8888:::8
//                          ""   ZZZ:8888, ""      8888;::Y,
//                               `ZZZ:8888b,       8888b;::b,
//                                 "ZZZ:8888       Y888888888b,_
//                                   `""""""        "Y88888888888b,
//                                                    `"Y8888888888



//                            _,-----._____
//                        _,-'      .:::.  `-._
//                       /                     `-.
//                      /                       .::.
//                     /            ______       .::\
//                 ___|        __.-'\ .::.`--._  .:::\
//          ___,--'   /     _,'    .:\  : /    `-.::::\
//         /   `-.    |   .'       .::\  /       .`:::|
//        _|      `.  | .'          .::)/         ::\:/
//   _,--(`\        \ |/           .::/ ).       .:::V
//  / .:._\_\.   ,--. (            .::| /.       .:::|
// /.:_,-'    \_|    \_|           .::|/.        .:::/
// \ <  | \      \   .:|           .::||.        .::/
// { <   \`  , /\ \   :\           .::|/.       .::/
// |  <_ , , ` \,-/\.   |         .:::/.       .:::/
// \  \:`+----'::/  `.  |        ..:::|.      .:::/
// | ..  `.:::::/     \_|        ..::|:.      .::/
//  \ :.   <:::/        \        ..::|:.      .:/
//   \_ .  <:/           |       ..::|.       ::/
//     \__  /            |        .::|.      .:/
//        `'             \         ::|.    .::/
//                        \        ::|.   .::/
//                        |       .::|.   .::/
//                        |..  .  .:/:.  . :(
//                        /    .:.:/::.   ..:\_
//                       /     .:::X::.      .::.
//                      /     .:::/ \_.        .:\
//                     /       .:|    `.        .:\
//                    |        .:|      \        .:\
//                    |        .:|        \       .:\
//                    |       .::|         \       .:\
//                    |       .::/          \       .:|
//                    |       .:/            \       .\
//                     \      .:|              \      .\
//                     |     .:/                \      .\
//                     |     .:|                 \       \
//                     |    .:/                   \      .\
//                     |   .:/                     \      .\
//                     |   .:|                      \.    .:\,
//                     |   ::|                       \.   _//.`.
//                     /  .::\                       |:._//   .:\
//                    /  _.:::\                      L_' |    .:)
//                    L='``:::/                      |  || ,-'.:|
//                   //  .::\|                       \==\\/_   :|
//                  /     .::|                      /|__///#\  :|
//                  | _,-._ :/                     /\\__//###\ :|
//                  \/   .://|                     \     /####\:|
//                 /\\   :/,'|                      \___/#*`'  ||
//                 |/#\  :|,'|
//                 |/##\ :|\,/
//                  /##| :|#\|
//                  `**|_:|mthw




// ⠁⠀⠂⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠂⠀⠁⡀⠐⠈⠀⠐⠈⠀⠐⠀⠐⠀⡀⠂⠀⠐⠀⠠⠐⠀⠀⠄⠀⠠⠀⠀⠄⠀⠀⠄⠀⠀⢸⡿⠀⠀⠀⠀⠀⡀⠀⢀⠀⠀⡀⠀⢀⠀⠀⡀⠀⢀⠀⠀⡀⠀⠀
// ⠀⠁⠈⢀⠀⠄⠈⠀⠁⠈⠀⠁⠈⠀⠄⠀⢀⠈⠀⠠⠀⠀⠀⠂⠀⠀⣄⣠⣤⣤⠴⠶⢶⡶⠶⠬⠿⢤⣀⣀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀
// ⠄⠈⢀⠀⠠⠀⠂⠁⢀⠈⠀⠄⠁⢀⠠⠀⠀⡀⠐⠀⢀⠈⢀⣤⠶⠛⠉⠁⣠⠀⠀⡠⠀⣤⢋⠁⠐⠠⡀⢈⠙⠒⢤⣀⠀⠂⠀⠀⠂⠀⠀⠂⠀⠀⠂⠀⠀⠄⠀⠀
// ⠐⠀⡀⠠⠀⠠⠐⠀⠀⡀⠂⠀⠠⠀⠀⠠⠀⠀⡀⠄⣠⣴⡿⠋⠀⢀⣴⠞⠁⢀⠜⣠⠞⢡⠃⠀⢠⠀⠑⡄⠑⢄⠀⠈⠓⢤⡀⠀⠀⠀⠄⠀⠀⢀⠀⠀⠀⠀⠀⠀
// ⡁⠀⠄⠀⠐⠀⡀⠄⠁⠀⡀⠄⠁⠀⠐⠀⡀⠁⣠⣾⡿⠟⠀⠀⣰⡿⠃⠀⠠⢁⡴⠁⢀⡇⢠⠃⢸⠀⠀⢸⡄⠀⢣⠈⠠⡀⠑⢆⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀
// ⡀⠂⢀⠈⠀⠄⠀⠀⠄⠂⠀⢀⠠⠈⠀⡀⢀⡼⣿⠏⡁⣠⠃⣼⠟⡀⠀⠀⣿⡾⡅⠀⣼⠀⡼⠀⠈⡇⠀⢸⢣⠀⠀⠃⢠⠑⢤⡈⠳⡀⠀⠀⠁⣀⣠⣤⠤⠄⠒⠒
// ⠄⠀⡀⠀⠂⢀⠈⠀⡀⠄⠂⠀⢀⠠⠀⢠⡿⣽⢫⠖⢰⠃⣸⣏⡞⠀⢀⣾⣿⠇⠀⡄⡇⢸⡇⠀⠀⢳⠀⢸⡼⡄⠀⠀⠀⡇⠀⠱⡀⢳⣀⡴⠛⠉⠀⠀⠀⠀⠀⠀
// ⠄⠐⠀⠀⠂⠀⠠⠀⢀⠀⠀⠂⠀⠀⣴⡿⣻⠃⡞⢀⠃⢀⣏⡞⠀⠀⣾⣿⣿⣀⢰⠃⣇⠀⢧⠀⡃⠈⣇⢸⣷⡇⠀⠀⠀⢸⠀⠀⢱⣀⢻⡀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠂⠁⢀⠈⠀⠠⠀⠀⠂⠀⢁⣾⣿⣱⠏⢸⠇⠀⡤⢾⣿⠓⠛⢻⣿⠋⣟⠀⣸⠃⣷⠀⠘⢦⡇⠀⠸⣟⣿⡆⠀⠀⠀⠘⡆⠀⠀⣿⣳⣷⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠁⠀⠄⠂⠀⠐⠀⠀⠁⡀⢨⣾⣿⢃⡿⢀⣹⡤⢁⠀⣿⣟⠀⠀⣿⡿⠀⣯⠀⣿⣷⠸⣇⢤⡈⢷⡀⠀⢸⢿⣷⠦⣀⠀⢈⡇⠀⠀⠸⡇⣿⡄⠀⠀⠀⠀⠀⠀⠀
// ⠀⠐⠈⠀⠀⠐⠀⠈⠀⠄⢠⣿⢣⡏⣼⣏⠀⢿⣷⠀⢢⣿⣯⡀⢸⢿⣇⠀⢹⡆⣿⣿⣤⡻⣦⣿⣦⣽⣶⣾⣈⣻⣤⠈⠙⢺⡇⠰⠀⠀⣷⢸⣿⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠁⠀⠂⠁⠀⢀⣿⠇⣾⡐⣿⣿⠈⢾⣿⡆⣹⣇⣹⣷⣾⣬⣿⡀⠈⣿⣯⢻⣿⣧⠉⢻⡟⣷⡄⢹⠀⢸⡇⠀⠀⣼⡇⠀⠀⠀⢹⠈⡟⣇⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠁⠀⠠⠈⢸⡿⢸⣷⡚⣿⣿⡡⢘⣿⣿⣿⡿⢿⣿⣿⣿⣿⣿⡄⠈⠎⠢⢽⣿⣷⣄⡇⠈⣿⣿⣄⣀⣿⠀⢠⣿⠃⠀⡀⠀⣽⠀⣷⣿⡄⢠⠀⡄⡀⠆
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣻⡧⣿⣿⡔⣿⣿⣇⠄⣿⡇⠈⢧⠈⢿⣿⣾⡶⠋⠁⠀⠀⠀⠀⠙⠙⠻⣷⣾⡿⣿⣿⣿⣿⣤⣿⡿⠠⠀⡄⢠⣿⠀⣿⣽⡇⠢⠑⠈⡜⢦
// ⠀⠀⠀⠀⠀⠀⠀⠀⠁⠘⣿⣿⣿⢧⣿⣿⣿⣖⡸⣷⠀⠀⠑⠤⠭⠏⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣯⡍⠸⣿⣿⣧⠀⢨⣇⣾⣿⠀⣟⢸⡇⠀⠀⠀⡜⠸
// ⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠘⣿⣿⡿⣿⣿⣿⣿⢿⣻⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⡤⠒⢤⠀⠀⠀⠀⠤⣛⣛⣋⠀⠈⢁⣿⠇⡀⣾⣽⢿⡁⢠⡟⣼⡇⠀⢀⠒⡌⠱
// ⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⢨⣿⣿⣿⣿⣿⣼⣿⣿⣿⣿⠳⣄⡀⠀⠀⠀⠀⠀⠀⢧⢀⡠⠃⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⡟⡰⣰⣿⡟⣾⢠⣾⣧⣿⠀⢀⠌⡓⣌⢣
// ⠀⠀⠀⠀⣀⣤⡴⠶⢶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠙⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⢿⣟⣵⣿⡟⢧⣿⣿⣿⡿⠃⠀⡌⢎⡱⢌⡖
// ⠀⢀⣴⠟⠉⣠⣴⣾⣿⣿⣿⠿⠻⢿⣿⣿⣿⣿⠿⢿⣷⡀⠀⠀⠀⠀⠠⣤⠤⠤⠄⣀⣀⠀⠀⠀⠀⠀⠀⠤⢞⣻⣿⣿⣿⣿⣿⣷⣿⣿⡿⠋⠀⣀⠣⡜⢢⡙⢮⡜
// ⢠⡟⠁⣠⢞⠿⣩⣾⡽⠋⣠⡷⠻⠀⠀⠙⣿⢻⡀⠀⠉⠛⣤⠀⠀⠀⠀⠈⠑⠒⠠⠤⠞⠛⠀⠀⠀⠀⠀⠀⠛⣽⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⠰⣀⠳⡌⢧⡹⢣⢞
// ⢸⢀⡞⡵⠋⣴⡿⢋⠀⣰⠟⠠⢁⠂⠄⠀⢹⡆⢹⡀⠀⠀⠈⢳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡴⠟⣿⣿⣿⣿⣿⣿⣿⡿⢿⡿⣤⣇⣌⠳⣜⣣⠽⣍⢾
// ⢀⡟⡞⢀⣾⠟⡵⠃⣰⠏⠀⠀⣼⠀⡙⣂⡏⢹⣀⡧⠀⠀⠀⠀⣿⣷⣦⡀⠀⠀⠀⠀⠀⢀⣠⣤⡶⠋⠁⠀⣼⣯⢿⡟⣻⠇⢨⡉⢤⡀⠙⢶⣍⠻⣟⠶⣭⢞⣭⠏
// ⢸⢹⠁⡼⢥⡾⠁⣰⠏⠀⠀⣰⡟⠀⣇⣼⠁⣸⣸⠇⠈⠀⠤⠀⣿⣿⣿⡿⣷⣤⣴⣶⣿⣿⣿⠿⡇⠀⠀⢠⣿⣣⡟⠡⡿⢠⠀⢿⠀⠘⢳⡈⢿⣳⣌⠳⣬⣻⡎⠀
// ⠸⣿⣰⠏⣾⠃⢀⡿⠀⠀⢠⡿⠁⢨⡼⠃⢠⣯⠏⠀⠀⠀⠀⠀⣿⣋⢿⣽⣳⢯⣞⣼⡿⠋⠈⠘⡇⠀⠀⣾⢳⣿⠁⣸⡇⢸⠀⢸⢀⠀⠸⣷⡄⢻⡽⡆⢿⠟⢟⠂
// ⠀⠙⣿⣼⡏⣄⣸⡇⠀⠀⡞⠁⠄⣾⠃⢀⣿⠋⠀⠀⠀⠀⠀⠀⣿⠐⣈⠹⠷⣫⣾⠏⠀⠀⠀⠀⡇⠀⣸⣿⣿⣿⠀⡼⡇⢸⠀⠘⡌⣆⠀⠘⣧⡌⢿⡇⣸⠀⠈⢳
// ⠀⣼⣯⣿⣸⡇⣿⠀⠀⣸⠇⠀⣼⠁⣀⣾⠃⠀⠀⠀⠀⠀⠀⢀⡯⠰⡏⠁⠀⠜⠁⠀⠀⠀⠀⠀⣇⢠⣏⢿⣿⣿⡀⣇⣧⣾⡀⠀⠀⣿⢠⡀⢹⣷⠘⡷⠃⠀⠀⠀
// ⣸⠿⣿⡟⣼⡇⣿⠀⠀⣿⣰⢽⡇⠀⢿⡇⠀⠀⠀⠀⢀⣠⢴⣿⠄⠁⢧⠀⠀⠀⠀⠀⣰⠀⠀⠀⢘⡿⢧⣾⣿⣿⣷⣿⠈⣿⣇⠀⠀⣻⢸⡇⠰⣿⣇⢳⠀⠀⠀⠀
// ⡏⠀⣿⡿⣼⡇⣿⡡⠀⣿⣿⣿⠀⢀⠘⣄⣀⣠⠤⠒⠍⠂⠘⢿⡀⠂⠸⡄⠀⠀⠀⣰⡏⠀⠀⠀⣼⠃⠀⠈⠙⠻⢿⣿⣇⣿⣿⣆⡀⢹⢾⣇⠰⡏⢹⠘⡇⠀⠀⠀
// ⠀⠀⠘⣿⢲⣷⣿⣽⣇⡿⠟⠋⠉⠉⠀⠀⠒⠶⢬⣝⣒⣦⣄⣸⣇⠀⢀⣃⠀⠀⢠⠋⢁⣀⣀⣠⡿⠤⠞⠒⠒⠃⠀⠀⠀⠈⠄⠁⠉⠉⠛⠻⢌⡇⢸⡀⡇⠀⠀⡰
// ⠀⠀⠀⠹⣧⣻⣾⠟⠉⠀⠀⠀⠀⠀⠘⢆⠀⠀⠀⠀⠀⠀⠉⠉⢻⡏⠉⠉⠑⠀⠘⠋⠁⠀⠀⣾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢾⣱⠇⠀⠈⠀
// ⠀⠀⠀⠀⢙⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⡄⠀⠀⠀⠀⠀⠀⠀⣸⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣟⠀⠀⠀⠀
// ⡀⠀⠀⠀⡾⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣷⡆⠀⠀⠀⠀⠀⢠⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡆⠀⠀⠀
// ⢧⠀⠀⢸⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣷⠀⠀⠀⠀⢀⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⢹⠀⠀⠀
// ⠀⢳⣀⢸⢁⠀⠀⠀⠀⠀⠀⠀⠈⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣦⠀⠀⠀⣼⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⠁⠀⠀⠀⠀⠀⠀⠀⢸⡆⠀⠀
// ⠀⠀⠙⢿⢂⡐⠀⠀⠀⠀⠀⠀⠀⠸⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣻⣦⣤⣼⣏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⢻⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀
// ⠀⠀⠀⢸⡇⡐⠀⠀⠀⠀⠀⠀⡀⢸⡗⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣯⣭⣯⣿⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣾⠀⠀⠀⠀⠀⠀⠀⠀⢨⡇⠀⠀
// ⠀⠀⠀⠘⡷⣈⠐⠀⠀⠀⢀⠐⢠⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⡾⣿⢿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣅⠀⠀⠀⠀⠀⠀⠀⢸⣇⠀⠀
// ⠀⠀⠀⠀⣷⡱⢊⠐⡀⠂⠌⣠⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣇⣀⣀⣀⣸⣿⣿⡅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡆⠀⠀⠀⠀⠀⠀⢸⡀⠢⠀
// ⠀⠀⢠⡴⢻⣕⠣⠄⡡⢁⢲⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡄⠀⠀⠀⠀⠀⣹⠟⢄⠁
// ⠀⢰⣿⠟⢩⣯⠓⡌⠐⣠⡟⠀⠀⠀⠀⣠⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⢀⣀⣠⣖⣦⡀⠀⠀⢹⡀⠀⠀⠀⠀⣿⡇⠈⣧
// ⠀⣿⡃⠀⣼⣹⡗⡌⠡⢼⠃⠀⠀⠀⡼⣿⣿⡗⢠⠄⠀⠀⠀⠀⠀⠀⠀⠈⠙⢿⣿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡌⣿⣾⡇⡷⠀⠀⠀⣧⠀⠀⠀⠀⡿⠁⢠⡟
// ⠀⠹⠷⠦⢹⣟⡷⣌⠡⣿⠀⠀⠀⠀⠙⠬⠽⠽⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣻⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠦⠿⠛⠁⠀⠀⠀⣿⠀⠀⠀⠀⡷⢤⡿⠞
// ⠀⠀⠀⠀⠀⠛⣿⠰⢦⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡟⠀⠀⠀⠀⡇⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⢻⡍⡆⢸⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣋⢿⡔⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠇⠀⠀⠀⠀⡇⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⢸⡇⣯⠄⠻⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⡿⠋⠙⢯⣟⡶⣆⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⠏⠀⠀⠀⠀⠀⡇⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⢸⡗⡼⡎⡑⢌⠻⣦⣀⠀⠀⠀⠀⠀⠀⢀⣀⣤⣶⡿⠛⠁⠀⠀⢸⠀⠈⠙⠻⢽⣷⢦⣄⣀⡀⢀⠀⢀⠀⣀⣠⣴⡿⠁⠀⠀⠀⠀⠀⢀⡇⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⣿⢰⢻⡔⣈⠒⣿⢩⢛⣟⠾⣳⣛⣾⡿⠟⠋⠁⠀⠀⠀⠀⠀⠘⠀⠀⠀⠀⠀⠈⠉⠛⠛⠿⠿⠛⠛⠛⠉⠁⣼⠁⠀⠀⠀⠀⠀⠀⢰⡇⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⢿⡪⡕⣣⠤⣉⣿⠀⢊⠈⠉⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠒⠀⠀⠀⣿⠀⠂⠀⠀⠀⠀⠀⢸⠇⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⢸⣇⠳⢆⡱⠠⢿⠀⠂⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⠀⡁⠀⠀⠀⠀⠀⢸⡃⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠸⣇⡻⢜⡰⡉⢾⡃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠠⠐⠀⠀⠀⡀⠌⢸⠄⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⣷⢩⠖⣡⠇⣹⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣄⠩⠄⢂⠁⡰⠈⣼⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⢹⡎⢽⢠⢋⠴⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡟⢿⣆⡘⠤⢂⡱⢈⣾⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠈⣟⡜⢢⠉⠆⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡐⠠⢉⠻⢶⠡⢆⢃⡿⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡘⠤⡉⠆⣿⡁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠸⣇⠑⣈⠒⠤⢋⠴⣩⡇⠀⠀⠀⢀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣧⢂⠱⢨⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠁⠀⢻⣄⠂⢍⣸⣡⣾⠟⠀⠀⠀⠀⢸
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡟⡦⢑⣾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠞⠀⠀⠀⠈⢿⡞⣎⡷⠋⠀⠀⠀⠀⠀⠀⣼
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⢱⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠋⠀⠀⠀⠀⠀⠈⢻⠁⠀⠀⠀⠀⠀⠀⠀⠀⣿
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡿⡱⠌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⣃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠱⡀⠀⠀⠀⠀⠀⠀⢠⣟
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡞⢥⠃⡌⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⡄⠀⠀⠀⠀⠀⢰⣞
// ⠀⠀⠀⠀⠀⠀⠀⠀⣰⢏⡼⠁⠐⢀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣄⠀⠀⠀⢀⡿⣜
// ⠀⠀⠀⠀⠀⠀⠀⣼⣫⠞⡀⢡⠂⠀⠄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡄⠀⠀⢰⡟⣼
// ⠀⠀⠀⠀⠀⠀⣼⡷⢋⡐⢈⠄⢂⠁⠄⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡀⠀⣸⣽⡳
// ⠀⠀⠀⠀⠀⣼⠟⡡⢂⠔⢂⠈⠄⠂⠌⠠⢁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢱⡀⣿⡞⣽
// ⠀⠀⠀⠀⣰⢏⠦⡑⢌⡐⠢⡈⠤⠁⠌⡐⢀⠂⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⣯⢿⡼
// ⠀⠀⠀⢀⡿⣈⠖⡈⠆⡌⠱⡐⢢⢁⠂⡐⠀⠆⡐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⢧⣟
// ⠀⠀⠀⣸⡓⠴⡈⠴⠡⢌⠱⡈⠆⡌⡐⠠⠁⠂⠌⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣟⡾
// ⠀⠀⢀⡟⡬⢱⠘⡄⢃⠎⡰⢁⠎⡐⠀⠑⣆⠁⢂⠘⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣟⣳
// ⠀⠀⢸⢏⡔⡃⢎⠰⡁⠎⡐⠂⠄⠠⠀⠀⠈⢶⡀⠂⢹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠁⠀⢀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢺⡵
// ⠀⠀⣾⢡⠚⣌⠢⡑⠄⡃⠄⠁⡘⠀⠀⠀⠀⠀⠹⣄⠂⢳⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠌⠐⢠⢈⠌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣻
// ⠀⠀⣟⡌⢳⠠⣃⠌⠒⡀⠂⠈⠀⠀⠀⠀⠀⠀⠀⠙⣦⠉⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡈⣀⡾⢀⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢘⡷
// ⠀⠀⡯⡜⣡⠒⡡⠘⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣼⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢆⡴⠏⡐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⡿
// ⠀⠈⡷⣑⠢⡱⠡⢁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⠟⡁⠂⢤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⣿
// ⠀⠀⡷⢡⢓⡰⢁⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢷⡀⠀⠀⢀⠀⠀⠀⠀⢀⣾⠣⡘⠠⢡⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢨⣷
// ⠀⠀⢽⡡⢆⡱⠈⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣷⣄⣹⣯⣀⣀⣤⣿⠡⠆⡁⢂⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡷
// ⠀⠀⣾⢰⢃⠦⡉⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⡟⠋⠹⠟⢻⡿⣡⠃⠜⠀⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣻⡽
// ⠀⠀⢽⡎⡜⢢⠑⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡦⠀⠀⣾⡱⡂⠥⠈⠘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡽
// ⠀⠀⢸⡧⡙⢆⠣⡐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣷⠔⢸⢧⡓⣁⠂⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣷⢻
// ⠀⠀⠸⣗⠭⣊⠕⡨⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣹⠀⣿⢎⡱⠠⢈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣯⣟
// ⠀⠀⠀⣿⡜⢢⢍⠰⡁⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢼⡁⣯⢛⠴⡁⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢨⣿⣳⢾
// ⠀⠀⠀⢹⣎⠇⣎⠒⡄⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢾⡇⣏⢎⡒⠄⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣹⣿⣽⣻
// ⠀⠀⠀⠈⣯⢚⠤⡃⠔⠡⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢾⡃⣏⠖⡨⠄⡁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡏⣿⢾⣽
// ⠀⠀⠀⠀⢻⣍⠖⣩⠘⡄⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣼⣟⡯⠜⡰⠠⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⠁⢻⣟⣾
// ⠀⠀⠀⠀⠘⣯⢚⠤⡃⠤⢁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⢹⣿⡧⢋⠤⠁⡌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡏⠐⠸⣿⣽
// ⠀⠀⠀⠀⢀⢻⡍⡖⢱⡈⠂⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢀⢻⣿⡧⢩⢀⠃⠄⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⠁⢀⠀⢿⣿
// ⠀⠀⢈⣄⣠⠸⣏⡼⠡⡌⡑⢈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢌⢺⣿⣇⠃⠆⡘⠠⢁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣇⣰⣲⠤⠘⣿
// ⠀⠐⠀⠀⠀⡀⢿⡜⡱⢂⡑⠂⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢌⢺⣿⡧⢉⠰⢀⠃⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡿⠀⠀⢀⡀⠄⢹


// ⣿⣿⣿⣿⣿⣿⡿⠋⠁⠀⠀⠀⢀⣾⡿⠋⠉⠁⢠⣿⠏⢁⣿⣿⣿⠏⠉⢸⣿⡏⠉⢻⣿⣿⡇⠈⠙⢿⣿⣿⣿⣷⡆⠀⠀⢇⠢⣈⡒⡤
// ⣿⣿⣿⣿⣿⣏⣴⡇⠀⠀⠀⢠⡿⠋⠀⠀⠀⣰⣿⠋⠀⣼⣿⣿⠏⠀⠀⡾⣿⠁⠀⠀⣿⣿⣷⠀⠀⠀⠹⣿⣿⣿⣿⣄⢀⣿⣷⣿⣶⣶
// ⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⢠⡟⠁⠀⠀⠀⢰⣿⠇⠀⢰⣿⣿⡷⠀⣀⣜⣁⣻⣀⣀⣀⣸⢻⣿⡇⠀⠀⠀⠘⣿⣿⣷⠹⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⠃⠀⠀⣠⣿⠀⠀⠀⠀⢠⣿⡏⠀⢀⣿⣿⡿⠛⣩⣿⠿⠛⢻⡏⠉⠉⢹⠉⢿⣿⡀⠀⠀⠀⠹⣿⣿⡆⠙⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⡏⠀⠀⣰⣿⡟⠀⠀⠀⢀⣾⣿⠀⠀⣸⣿⡿⢥⣶⠝⠁⠀⠀⠀⡇⠀⠀⡜⠰⡀⢻⡇⠀⠀⠀⠀⢿⣿⣿⠀⠸⣿⣿⣿⡿
// ⣿⣿⢿⣿⣿⡃⠀⣼⣿⣿⡇⣀⣀⣤⣾⣿⡇⠀⠰⣼⡟⣠⠎⠁⠀⢀⣠⠔⠁⢹⣀⣠⣧⣶⣦⣤⣷⣤⣤⣠⣤⠼⣿⣿⡆⠀⢹⣿⣿⣿
// ⣿⣿⣿⣿⣿⠀⣼⣿⣿⣿⣏⣁⣼⣿⣿⣿⠀⢠⣾⣟⡔⠁⠀⠀⠀⢸⠁⠀⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⣿⣿⣇⠀⠀⣿⣿⣿
// ⣿⣿⣿⣿⣿⣸⣿⣿⣿⣿⣟⣹⣿⣿⣿⡿⣴⣿⡿⠋⠀⠀⠀⠀⠀⠀⢰⣾⢟⣻⡿⠛⢻⢋⣻⣏⣱⠞⠙⣄⡀⠀⣿⡽⣿⠀⠀⢸⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠉⢘⡅⠚⠋⠉⠁⠀⠀⠀⠀⣔⣾⢏⢦⢄⣿⣧⣿⡆⠀⠈⣿⣿
// ⣿⣿⣿⣿⣿⡿⢸⣿⣿⣿⡿⢻⣿⣿⡿⠋⠀⠀⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡾⠟⠉⠀⢂⢻⣿⣿⣿⡇⠀⠀⢽⣿
// ⣿⣿⣿⣿⣿⢃⣿⣿⣿⣿⣷⣿⣿⣿⣿⡷⠀⠀⡸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠉⠀⢀⣠⣾⣟⡖⢻⣿⣿⠃⠀⠀⣿⣿
// ⣿⣿⣿⣿⣟⣼⣿⣿⣿⣿⣿⣿⠟⣻⠿⠓⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠾⠿⠛⠉⠁⢰⢸⣿⡿⠀⠀⠀⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⠋⠰⢟⣿⠌⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⠇⠀⠀⢠⡇⣿
// ⣿⣿⣿⣿⣿⣿⣏⠓⠓⠚⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠿⠿⠿⢾⣿⡟⠀⠀⠀⣼⠃⣿
// ⣿⣿⣿⣿⣿⣿⣿⣷⢦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡤⠤⠤⠤⠤⠤⠄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⡿⠀⠀⠀⣰⠏⢰⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⡀⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⣠⢚⣡⣴⣾⣿⣿⣿⣿⡿⠿⢿⠀⠀⠀⠀⠀⠀⠀⠀⣼⡿⠁⠀⠀⣰⠏⣠⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣧⣤⣴⡾⠋⠀⠀⠀⠀⠀⠀⠀⣃⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⡸⠀⠀⠀⠀⠀⠀⠀⣼⣿⣃⠤⠚⠚⠉⠉⠉⠙⠛
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⠉⠀⢀⡄⠀⠀⠀⠀⠀⠀⠙⢽⣿⠿⠋⠉⠁⠀⢠⡆⢰⠃⠀⠀⠀⠀⠀⠀⣼⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣴⡿⠁⠀⠀⠀⠀⠀⠀⠀⠈⢯⠀⠀⠀⠀⢀⡞⢠⠋⠀⠀⠀⠀⠀⢀⣾⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⣿⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡄⠀⠀⠀⣸⢠⠃⠀⠀⠀⠀⠀⢠⣾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⣿⡆⢠⠉⢿⣿⣿⡟⣿⣿⣿⣿⣿⣷⣤⡀⠀⠀⠀⠀⠀⠀⠀⠳⡀⠀⠀⡇⠇⠀⠀⠀⠀⠀⣠⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⣿⣿⣼⠀⠈⢿⣿⡇⢹⣿⣿⣿⣿⣿⣿⣿⡗⠤⣀⠀⠀⠀⠀⠀⠑⢄⣀⡞⠀⠀⠀⠀⢀⣴⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⣿⣿⣿⣷⠀⠀⠹⢇⠀⢻⣿⣿⣿⣿⣿⣿⣧⠀⠈⠻⣷⣦⣤⣀⡀⠀⠉⠀⠀⠀⣀⡴⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⣿⣿⣿⠟⠀⠀⠀⠈⠳⣄⢻⣿⣿⣿⣿⣿⣿⣆⠀⠀⠈⠻⢿⣿⣿⣿⣷⣶⣴⣾⣿⣿⣿⣿⡿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⣿⣿⣿⣄⠀⠀⠀⠀⠀⠈⠳⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠉⡿⢿⣿⣿⣿⣿⣿⣿⣿⡿⢱⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀





// ⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⠟⢉⣕⡞⣼⣿⣿⣿⣿⣿⡟⠛⠛⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣳⡀⢻⣤⣴⣴⣶⣶⣶⣿⣿⣷⣤⣼⣿⣿⣿⣿⣿
// ⠀⠀⠀⠀⠀⠀⠀⣼⢧⣿⣦⠬⡜⣼⡝⣿⢹⣿⣿⡟⣁⡀⣴⣿⡟⣹⠈⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣗⠾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⠀⠀⠀⠀⢰⣿⢀⣿⢀⠨⢳⣷⢴⣧⣸⣟⡟⠉⢁⡾⠋⣀⡴⢃⡠⣠⣿⣻⠿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡝⠋⣿⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⠀⠀⠀⠀⣾⣧⢸⣻⠀⢩⡏⠀⣸⣯⣿⡿⠒⣲⠟⠘⣩⠿⣠⠏⣴⣿⢯⣟⣹⣄⡿⣿⣿⣿⠏⣿⣿⣿⣧⠀⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⠀⠀⠀⠀⣿⣿⣿⡇⠘⢸⡇⣰⣿⠏⣿⣀⡼⠧⢶⣶⣳⡞⢳⠞⣿⣣⠏⠀⢠⣞⣀⣸⣿⣿⠀⢻⣿⣿⣿⣯⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⡦⣿⣷⣿⢹⠀⣯⣞⣧⣔⣯⣿⣯⡾⢃⣾⠟⠁⢀⣴⡟⢀⣼⡟⣾⡿⣐⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⠀⠀⠀⣸⣿⣧⢹⣾⣴⣿⠋⡇⢸⣸⣿⣿⣿⣿⣿⣿⣯⣶⠟⠋⢀⣴⣫⢏⣴⠟⣽⣿⡟⠀⠈⢹⣿⣟⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⠀⠀⠀⢳⠇⣿⣿⣿⣿⢹⡀⠃⢸⡜⣿⢹⣿⣷⣿⣿⡿⣷⠶⠚⠛⢛⡿⠋⣠⣾⣿⣿⣤⣦⣀⢸⡟⣠⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⠀⠀⢠⡞⣸⢻⣿⣿⣿⣾⣗⠄⠘⡇⣿⠚⠻⠿⠯⠿⠅⠀⠠⢄⠍⢨⡙⠊⠑⣿⣿⣯⣿⡿⠻⣿⢡⠇⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⠀⠀⣾⢣⡟⢸⠀⣿⣿⣷⣿⣦⠀⣷⣹⣣⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠃⠀⠀⠛⠿⠿⡿⣁⣼⣿⡟⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⠀⢠⣇⣼⣿⣾⠀⣿⣿⣮⡛⢿⣧⣽⡿⣿⣷⡤⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠶⠆⣰⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⠀⡼⣼⣿⡏⡟⣼⣿⣿⣿⡻⣿⠃⣸⡟⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣺⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⢰⢳⢻⡿⣠⡷⣿⣿⣿⣿⡏⢻⣴⠏⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠁⣼⣿⡛⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⡞⡞⣼⣷⢻⡇⣸⣿⣿⣿⡿⡟⠅⣴⣿⡟⢤⣀⠀⠀⠀⠀⠈⢿⡟⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣷⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⢠⢻⢁⡿⠇⣸⠇⣿⣿⣿⣿⣇⣿⠞⣡⣿⣧⣤⣽⣷⣀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣶⣿⣿⣿⣿⣯⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⡞⣸⠃⢀⣿⢀⣿⣿⣿⣿⣿⢥⣾⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⣀⣤⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠋⠁⠀⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠒⠺⠷⣏⡀⣼⡿⢸⣿⣿⣿⣏⣥⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣯⠀⠀⠀⠀⣀⠀⣿⣿⣿⣿⣿⣿⣿⠿⠿⠛⠻⣿⣿
// ⠀⠀⠀⠀⠈⠙⠳⢿⣿⣿⡟⢉⣰⣿⣿⣿⣿⡟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠻⢿⣿⣿⣷⣤⠖⠛⠉⠉⠀⠀⢸⡏⠁⠀⠀⠀⠀⠀⠀⣿⣿
// ⠀⠀⠀⠀⠤⢄⣀⠀⣨⡿⠟⢋⣿⡿⢯⣶⣝⣛⣛⣿⠿⢿⣿⢥⣠⠼⠻⣿⣟⣿⣿⣿⢿⣿⣿⡋⢤⡀⠀⠻⣌⣉⣻⣦⣀⠀⠀⠀⠀⣼⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿
// ⠀⠀⠀⠀⠀⠀⢀⣼⡟⠛⣛⣿⡿⠀⠉⢛⣻⣿⠿⠋⠀⢸⢹⠀⠀⠀⠀⠘⣾⣦⠉⠛⠷⢿⣿⣻⣦⡌⠢⡀⠘⣧⣙⡛⣿⣗⡚⠉⠉⠉⡇⠀⠀⢀⣀⣀⣠⣴⣿⣿
// ⠀⠀⠀⢀⡤⡶⣿⠋⣽⠛⣿⡿⢁⣤⢶⡋⠉⠁⠀⠀⠀⢸⠾⠆⠀⠀⠀⠀⠈⠁⠀⠀⠀⠀⠈⠙⠛⣿⣦⡙⣏⠁⠈⣯⣙⠛⢿⣆⠀⣼⣷⣶⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⢠⡟⢸⣷⣿⠉⡇⢀⣯⣴⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠻⢿⣟⢧⡤⠶⠛⠋⠉⠻⣿⣽⡿⢿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣴⣶⣿⣧⣿⢃⠏⠀⡇⣼⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠲⠤⣀⠀⠀⠀⢻⡝⢿⣾⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣟⢿⣯⣎⠤⠔⡇⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠲⢴⣿⣿⣆⢻⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⣿⣿⡄⢿⠦⠀⢠⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢄⡉⢿⣻⡄⢻⣿⣿⣿⣿⣿⣿⣿
// ⠀⢸⣿⣿⣾⣇⠀⠋⡏⠀⠀⠀⠀⣀⡤⠴⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣭⣻⣎⠀⠹⣵⡟⠙⠛⢿⣿⣿⣿⣿
// ⣴⣿⣿⣿⣻⣿⣆⢰⠁⠀⠀⠀⠘⠁⣶⠿⣶⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠛⠋⠀⠀⢻⣠⣴⠀⣼⡟⠛⠛⠛
// ⣿⣟⠙⣿⣿⣿⣿⡏⠀⠀⠀⠀⠀⠀⠙⠻⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣾⣿⠁⠀⠀⠀
// ⡏⠁⠀⠘⢿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⠀⠀⢠⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⠃⠀⠀⠀⠀
// ⣄⠀⢀⡀⠈⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⠃⠀⠀⠈⠻⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣷⣤⣀⠀⠀⠀
// ⣿⣷⣌⢿⣷⣍⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⠃⠀⠀⠀⠀⠈⠊⣙⠷⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⡟⣎⣻⣼⣷⡆⠀
// ⣿⣿⣿⣷⣽⣿⣿⣿⣷⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠙⠊⠉⠛⠷⢶⣤⣄⠀⠀⠀⢀⣠⣼⣿⣿⣿⣿⣷⣿⣿⡿⠿⠃⠀
// ⣿⣿⢻⣿⣿⣿⣿⣿⣿⣿⡦⢶⣄⠀⠀⠀⠀⠀⠀⢀⣀⡤⠖⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⢿⣿⣿⣿⠿⠟⠛⠉⠁⠀⠙⣄⠀⠀
// ⣸⣷⣿⣿⣿⢿⣿⣿⣿⣿⣿⡄⠈⠉⠉⠉⠉⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⠟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠈⢦⠀
// ⠿⠿⢿⣿⣿⣾⣿⣿⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠖⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳
// ⠀⠀⠀⠁⠚⠉⠛⠙⠛⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠹⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⢹⡟⣿⣿⢳⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡏⠉⢹⣏⠀⠉⠓⠤⣄⣀⡠⠖⠋⢳⣀⣀⣀⣀⣀⣀⣾⣐⣈⣦⣀⣀⡤⠤⠖⠒⠒⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⢸⡟⢸⠇⠸⣿⡄⡇⠀⠀⠀⠀⠀⠀⠀⢀⣠⠤⠷⠶⠾⡊⠦⣄⣀⡤⠖⠉⠀⣀⣴⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⣾⢧⠟⠀⠀⠙⢧⡵⠀⢀⣀⠠⠤⠒⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠢⣤⣤⡴⠛⠉⠙⡆⠀⠀⠀⠀⢱⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠒⠚⠛⠛⠛⠛⠒⠒⠒⠒⠋⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡨⠋⠀⢀⣴⡾⠃⢀⠇⠀⠀⢸⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⡀⠀⠀⠀⠀⠀⠀⠀⣜⠁⢀⣼⠛⠛⠤⣰⣫⠖⠀⡄⢸⡦⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣧⡀⠀⠀⠀⠘⢄⢸⢑⡷⢿⡿⢶⣄⠀⢈⠳⡄⣴⡧⢸⡏⠉⠳⡖⠲⠤⠤⢤⣄⣀⣠⡤⠴⠚⠉
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⡠⠤⠖⣚⣿⠀⠀⢄⡀⠙⠲⣍⣠⠋⠐⣠⣾⣿⢧⣴⣣⠏⣰⡿⠀⠀⠀⠹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡠⠴⠒⠉⠁⠀⠀⠀⠀⠀⠈⢷⡀⠐⠭⣗⡀⡴⢁⢀⣼⣿⠂⠉⠢⣴⣁⡾⠋⠀⠀⠀⠀⠀⠹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠑⠦⢄⣀⠀⠀⠀⠀⠀⢀⣠⡤⢒⠯⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠦⢄⡀⠙⠧⣴⡋⣠⠟⠒⣤⣠⢀⠝⣄⠀⠀⠀⠀⠀⠀⠀⢧⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠈⠉⠉⠉⠉⠉⢉⠞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠓⠦⣜⡽⠡⣤⣼⡯⣍⡉⢲⠊⠀⠀⠀⠀⠀⠀⠀⢸⡀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⢠⠎⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢇⡰⠟⠋⠀⠀⠈⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⣠⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⡴⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡀⠀⠀⠀⠀⠀⠀⠀
// ⡀⠀⠀⠀⠀⡼⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢧⠀⠀⠀⠀⠀⠀⠀
// ⠃⠀⠀⠀⢰⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣆⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⢀⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡄⠀⠀⠀⠀⠀
// ⠀⠀⠀⡸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡄⠀⠀⠀⠀
// ⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡇⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢢⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠖⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣆⣀⣀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠾⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠛⠉
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡆⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣆⠀⠀⢀⡇⡀⠀⠀⡰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡄⣤⢞⡞⠀⣠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡉⡏⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡍⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣷⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀




// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡁⢸⡅⠘⡌⠘⢰⢷⡆⠢⠘⣿⣿⣿⣿⣿⣿⣿⣿⣷⣼⣭⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠐⡐⠈⡈⡇⠸⣾⠁⠸⠰⠇⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠈⢧⠀⣌⢦⡀⠘⣿⠀⠁⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⢊⠄⠀⠀⡿⢠⣿⠘⢰⡇⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡌⢌⢻⡌⢦⡙⢶⣌⠣⠀⠀⢻⣿⣿⣿⣿⣯⣉⡛⢿⣿⠿⠛⣛⣻⣿⣿⣿⣿⣿⡿⠂⠀⠈⠀⠀⣂⠃⢸⡟⡀⣼⠃⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁⠈⠂⠻⣄⠻⣀⢻⣷⣦⠀⠀⠙⢿⣿⣿⣿⣿⡟⠻⠿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⢀⠀⠀⢹⡄⠸⡿⠾⠜⠠⡄⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢋⠀⣶⠂⣀⠀⢻⡄⠹⡆⣿⣿⣧⠀⠹⡆⠙⢿⣿⣿⣿⣶⣾⣿⣿⣿⣿⣿⠿⠋⣡⠀⠀⠀⠀⠘⡆⠀⠈⣇⠈⢀⠀⠸⡀⢻⣄⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢾⢸⡏⠀⣿⣧⠀⣿⡄⡇⣿⣿⠏⡄⠈⡆⠈⡦⠙⠿⣿⣿⣿⣿⡿⠟⠋⢀⣠⣾⣿⠠⡄⡀⠀⠢⠑⠀⣀⢸⠀⠀⡇⠇⡇⠀⠻⣷⣌⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡌⢘⠃⠀⠟⠁⡠⢋⠰⢡⡿⢋⡌⡇⠀⡿⠀⠙⠀⠓⠌⠙⠋⠡⠀⠀⣐⣛⣩⣭⣴⠆⠧⠠⠀⢠⢰⡿⢋⠈⠇⠀⠁⠶⢠⣿⣷⣦⡙⢷⣄⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣸⠈⡀⢀⡞⢰⢡⠃⡜⣰⣿⢰⢃⠀⠟⣀⠀⠀⠝⠻⠿⠿⠿⠿⠿⠿⠟⡛⠋⢁⣠⣶⠟⣩⡇⠏⠀⠎⡜⠀⠇⠜⣰⣿⣿⣿⣿⣿⣦⡙⠇⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⢃⣼⡇⠀⢋⡀⢀⡄⠄⠙⢟⣀⣚⣠⣼⣿⣿⣿⣿⣷⣶⣶⣶⣾⡿⠛⣉⣴⣾⣿⢛⣡⣾⣿⡁⠀⣸⢰⡇⠀⣇⠐⣿⣿⣿⣿⣿⣿⣿⣿⣦⡹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋⣡⣴⣶⣦⡐⠆⠀⡇⠘⣷⡜⣆⠈⣛⣛⣛⣛⠛⠉⠙⣿⣿⡟⠁⠊⠁⣀⣽⣿⡿⢋⣴⣿⣿⣿⣿⣧⠀⢿⢸⡑⡆⢸⡖⡘⢿⣿⣿⣿⣿⣿⣿⣿⣿⣌⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⣱⣾⣿⣿⣿⣿⣿⠁⠀⢠⠃⠀⠹⡿⡸⢠⣿⣿⣶⣦⣄⣉⣱⣮⣴⣯⣠⣴⣿⣿⠟⣡⣾⣿⣿⣿⣿⣿⣿⣿⣆⠈⠈⢇⢹⢸⢡⣥⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣜⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⣼⣿⣿⣿⣿⣿⣿⣿⠀⢀⡟⠀⢸⡦⢠⢃⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⣋⣵⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⡀⠘⣾⠘⠀⡟⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣸⣿⣿⣿⣿⠿⣿⣿⣿⠀⢸⡇⡀⠈⡇⡀⡛⠿⢿⣿⣿⣿⣿⠿⠿⢟⣋⣭⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⢀⢃⠀⢸⢃⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣌⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢡⣿⣿⡿⠟⣋⣴⣿⣿⣿⡄⠘⡇⠀⠀⠁⢃⢻⣿⣷⠾⣃⣤⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⢀⣤⠟⠠⢂⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡜⢿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⢘⣩⣴⣶⣿⣿⣿⣿⣿⣿⣿⣦⡈⠀⢳⣄⠈⠀⠛⣥⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⣴⣾⡿⠛⡀⠰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡻⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⠟⣫⣵⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣄⣻⠗⣤⣤⣤⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢃⣾⣆⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡌⢿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⡿⢋⣵⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⢡⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⣼⣿⣿⣧⠀⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⠹⣿⣿⣿
// ⣿⣿⣿⣿⢋⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣡⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣩⣭⣭⣭⡍⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⣧⠀⢀⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡜⢿⣿
// ⣿⣿⡿⣡⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠋⣰⡇⣼⣿⣿⣿⣿⣿⠿⠿⣛⣟⣲⣟⣛⣻⣛⣐⡻⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⣿⠇⣼⣿⣮⡻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣮⠻
// ⣿⡟⣀⡍⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣡⣴⣿⢰⣿⣿⣿⣿⣿⡇⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡆⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⣿⣿⣿⣿⡏⣼⣿⣿⣿⣿⣌⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷
// ⣿⢡⣿⠃⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣰⣿⣿⡟⠸⣿⣿⣿⣿⣿⣧⠹⠿⠟⢛⣛⣛⣛⡛⠛⠛⠿⠿⠿⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢸⣿⣿⣿⠏⣼⣿⣿⣿⣿⣿⣿⣦⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⡟⡼⠿⠰⠿⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⣼⣿⣿⣿⣧⢰⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⡇⣿⣿⣿⣿⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⣾⣿⣿⡟⣼⣿⣿⣿⣿⣿⣿⣿⣿⣷⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⡏⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣩⣿⣿⣿⣿⣿⣿⠸⣿⣿⣿⣿⣿⣿⣿⣿⣧⣤⣭⣭⣭⣤⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢠⣿⣿⡿⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣎⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣇⠻⠿⠿⠛⢛⣃⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣱⣿⣿⣿⣿⣿⣿⣿⣇⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢡⣿⣿⣿⠃⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣜⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⠸⣿⡇⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣏⣴⣿⣿⣿⣿⣿⣿⣿⡿⢋⣆⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⢀⣾⣿⣿⡿⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡙⢿⣿⠿⠿⠿⣛⣛⣛⣛⣛⣻
// ⣿⣧⠹⢛⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⣸⣿⣦⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⣠⣿⣿⣿⣿⡧⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠿⢛⣛⣋⣭⣤⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣧⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢁⠆⣾⣷⡹⣿⣿⣦⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⢡⣴⣶⣿⣿⣿⣿⣿⡇⣼⣿⠿⠿⣛⣛⣩⣭⣽⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣷⣌⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢋⣴⠏⢼⣿⣿⣷⡜⢿⣿⣿⣶⣬⣙⠻⠿⢿⣿⣿⣿⣿⣿⣿⡿⠿⠟⢛⣩⣴⣾⣿⡿⠿⣛⣩⣭⣴⣶⣶⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣷⣌⡛⠿⣿⣿⣿⣿⣿⣿⣿⡿⠟⣩⣴⣿⠏⣴⣿⣿⣿⣿⣿⣦⣝⠻⣿⣿⣿⣿⣿⣶⣶⣶⣶⣶⣶⣶⣶⣾⣿⣿⡿⢟⣩⣴⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣷⢨⣍⣛⣛⡛⢩⣥⣶⣿⣿⣿⠋⣼⣿⣿⣿⣿⣿⣿⣿⣿⣷⣬⣙⡻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⣋⣴⣿⡟⠛⢉⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⠟⣈⣭⣭⣭⣭⠸⣿⣿⣿⣿⣏⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣾⠿⠛⠉⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⠃⣼⣿⣿⣿⣿⣿⣆⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⠀⣀⣀⣴⣿⣿⣿⣿⣿⣿⡿⢋⣽⣿⣿⣿⢡⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⡏⢸⣿⣿⣿⣭⣴⣶⣬⣄⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣐⣛⠀⣿⣿⠿⠿⠟⠋⣹⣿⣟⢀⣿⡿⢡⣿⠃⣴⣶⣶⣶⣶⣶⣶⣶⣯⣭⣭⣭⣭⣭⣉⣟⣻⣟⣉⣭⣭⣭⣭⣭⣶⣶
// ⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣍⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠘⠷⠖⢀⣴⣾⣿⡿⢋⣼⣿⠃⣾⠃⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⡀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢠⡀⠻⣴⣿⠿⠋⢁⣴⣿⡿⠃⣼⠇⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣧⠘⢣⣿⣿⣿⣿⣿⣿⡏⢹⣿⣿⣧⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⣸⣷⣅⡀⠐⠶⣾⣿⣿⠏⣠⣼⠋⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣇⢸⡟⢻⣿⣿⣿⣿⢡⡄⢿⣿⣏⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⡋⣿⣿⣟⣓⠢⠄⠢⠄⣀⠉⢩⠀⣌⣄⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣇⠸⣿⣿⣿⣿⢸⣷⠈⣿⣿⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⣇⣿⣿⣿⣿⣿⣿⣶⣶⣾⣿⣿⠀⣿⣿⣦⡻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⠄⠈⢿⣆⠹⣿⣿⣿⣦⡙⢧⠙⣿⠈⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀⢹⣿⣿⣿⣦⣝⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⠄⠻⣧⡘⢿⣿⣿⣿⣶⣶⣶⣶⠶⠌⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣷⣮⡻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠢⡘⠳⣦⣭⣍⡒⠒⢒⣫⣄⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠘⣿⣿⣿⣿⣿⣿⣿⣿⣦⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣝⠷⢉⣩⡅⣰⣿⢸⣿⣿⡆⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡌⢿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢰⣿⣿⠸⣿⣿⣿⡄⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡈⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢸⣿⣿⡄⣿⣿⣿⣷⡀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠀⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣾⣿⣿⡇⣿⣿⣿⣿⣷⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣀⣿⣿⣿⣿⣿⣿⣿⣧⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣎⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣷⢸⣿⣿⣿⣿⣧⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡘⢿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⣿⣿⣿⣿⡈⣿⣿⣿⣿⣿⣇⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠻⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢠⣿⣿⣿⣿⡇⣿⣿⣿⣿⣿⣿⣆⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠹⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⢸⣿⣿⣿⣿⡇⣿⣿⣿⣿⣿⣿⣿⡄⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢀⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠹⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⣾⣿⣿⣿⣿⠇⣿⣿⣿⣿⣿⣿⣿⡟⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⢆⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠹⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⣰⣿⣿⣿⣿⣿⢀⣿⣿⣿⣿⣿⣿⣿⣿⣶⡀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠘⣆⠘⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⢻⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⢰⣿⣿⣿⣿⣿⡟⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢋⣠⣀⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⢿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠋⣰⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠋⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡌⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢡⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⢸⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣼⣿⣿⣿⣿⣿⣿⣿⣿⡛⢿⣿⣿⣿⣷⡄⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⠏⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢃⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣍⡛⠿⣿⣿⣆⠈⠻⣿⣿⣿⣿⣿⣿⣿⡿⢸⠸⣿⣿⣿⣿⣿⣿⡿⢣⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣝⠻⣧⡐⢌⠻⣿⣿⣿⣿⣿⠇⡏⡇⢿⣿⣿⣿⣿⡟⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣬⡛⢦⡑⢦⣍⡛⠿⢋⣼⣷⣸⡘⣿⣿⣿⡟⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣍⠢⠙⢿⣿⣿⣿⣿⣿⣧⠹⣿⣿⢡⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣄⠙⢿⣿⣿⣿⣿⣧⠹⡇⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣌⠻⢿⣿⣿⡷⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣝⠲⣤⣶⡆⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡌⢿⠁⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿



// ⠀⠀⠀⢄⠠⢂⠄⡠⢀⠄⡀⠠⠈⢁⠈⡁⠌⡀⠁⠉⣈⣯⣿⣿⣿⣿⡿⠀⠀⢀⠎⠁⠀⠀⠀⠀⠀⠀⠀⠀⠠⠑⠨⣑⠢⡐⠀⢆⡠⠐⠠⠒⠄⡒⠈⡄⡁⠎⡐⠁⢆⠰⠈⡔⢡⠊⣌⠡⢍⠢⢘⣿⡧⠐⢦⡘⢤⢃
// ⠀⠀⠀⠀⢁⣌⣤⣥⣦⣼⢤⣥⣬⣤⣮⣴⣥⣴⣶⣷⣿⣿⣿⣿⣿⣿⠇⠀⠀⡌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡉⠐⡀⢳⡌⠡⢌⣳⡌⠡⠘⣀⠂⠡⢀⠐⠀⠄⡁⠂⠠⠁⡐⠠⢁⠂⠌⡀⠆⣿⣿⡧⣙⠢⠉⠂⠄
// ⣧⡄⠀⣌⠀⠀⠀⠉⠙⠛⠷⠿⣿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠈⡰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠡⠐⡀⢻⡔⢣⢎⣿⠀⠡⢀⠌⡐⠂⠌⡐⠠⢀⠁⢂⠁⠄⡁⢂⠌⡐⠰⣈⣿⣿⠃⠄⠠⠁⠌⠀
// ⡙⣿⣷⢾⡷⣄⠠⡐⠤⡀⢄⠂⣹⣟⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢀⠔⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢀⠡⠐⠠⠙⠳⣾⠏⡐⠡⠈⠀⠀⠁⢈⠀⠃⠌⠂⡅⠊⠆⡙⠌⡘⠠⠃⢤⣿⣟⠠⠉⡄⠡⠈⠀
// ⠙⠦⣝⢿⡯⣝⡻⢷⡳⣟⡶⣟⠯⡜⡱⠘⣿⣿⣿⣿⣿⣿⣿⡿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠂⠌⠠⢁⠂⠄⠒⠠⠁⡄⢀⠠⡐⢂⡡⢃⢌⠰⢠⣁⠒⠤⡐⢠⡁⢇⣼⣿⡇⠢⢁⠐⡀⢁⠂
// ⠀⠀⠉⢷⡜⠳⢝⡮⣱⢣⡝⣎⠳⣍⠲⣹⢧⡀⠙⢻⡿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠌⡀⠡⠀⢂⠈⠄⠁⢂⠘⠠⡁⠌⠠⠁⠌⡈⠡⢃⠄⡋⢆⡱⠡⡜⢢⣿⣿⠇⡁⠂⠄⠐⠀⠀
// ⠀⠀⠀⠀⣿⡲⡀⠉⠶⣃⠞⡌⠳⡈⣵⣿⡆⢹⠔⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠐⡀⠡⠀⠂⢈⠐⠀⠂⡁⠠⠈⠄⢁⠂⠄⡁⠂⠌⡐⠢⢐⠱⡈⢹⣿⣿⠐⠠⠈⠀⠀⠀⠀
// ⣶⣤⣤⣀⣿⣿⣅⢆⠐⠀⠌⡐⠡⢂⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠠⢁⠈⡀⠐⢈⠀⡐⠠⠁⡐⠀⡐⠠⠐⢈⠐⠠⠁⠎⢠⠑⣺⣿⡏⠀⠠⠀⠀⠀⠀⠀
// ⣿⣿⣿⣿⣿⣿⣿⣟⢄⠘⠀⡀⠠⣸⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠠⢀⠃⡀⠄⡀⠄⠃⠀⠄⠀⡀⠃⠄⡘⢀⠣⠘⠄⡄⣻⣿⡇⠀⠀⠀⠀⠀⠀⠀
// ⣿⣿⣿⣿⣿⣿⣿⣿⣧⣂⠐⠀⢠⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠐⠠⠀⠄⠀⠀⠀⠀⠀⠀⠄⠐⠈⡐⠠⢃⠰⢉⠒⡰⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⣈⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⡂⢡⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠠⠁⢎⡐⠣⡌⣽⡏⣽⠀⠀⠀⠀⠀⠀⠀⠀
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡾⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡁⢢⢁⢿⠀⠀⠀⣀⡠⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡉⠤⡘⢱⣈⣿⣷⣿⠀⠀⡀⠀⠀⠀⠀⠀
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⡈⢤⣋⡾⢀⠴⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢂⡑⢣⢼⣿⣿⡹⡄⢸⡇⠀⠀⠀⠀⠀
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢑⡘⣦⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠂⠜⡰⢺⣿⣿⡗⡇⣿⠀⠀⠀⠀⠀⠀
// ⣿⣿⣿⣿⣿⣿⣿⣿⣟⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡘⢤⣻⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⡘⢠⠑⢺⣿⣻⣯⢿⡏⠀⠀⠀⠀⠀⠀
// ⣿⣿⣿⣿⣿⣿⣿⣅⠰⣇⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠢⣘⣾⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢂⠐⠤⣉⢺⣿⣾⣿⢼⡗⠀⠀⠀⠀⠀⠀
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⡣⢌⡑⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡐⢌⢲⣹⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠠⠈⢔⠆⣹⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣖⡌⠡⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⡒⢄⠲⣌⢷⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠄⣁⠊⠄⣿⣿⣿⣿⡧⠀⠀⠀⠀⠀⠀⠀
// ⣿⣿⣿⣿⣿⡿⠿⠿⠿⠿⠿⠻⣅⠊⠔⠠⢀⠄⢠⠀⠄⡠⠀⠄⢠⠐⡠⠁⢎⠰⡡⢎⡱⢎⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠡⠐⢠⠉⡔⣿⣿⣿⣿⡷⠀⠀⠀⠀⠀⠀⠀
// ⠉⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢯⡢⡑⡌⢌⢢⡘⢤⡑⠬⡘⡄⠦⢡⡉⢤⢣⡑⣎⠵⣻⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⡀⠁⢆⠸⡐⢿⣿⣿⣿⣿⠀⠁⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠲⣜⢢⠒⣌⠲⣌⢣⠱⣌⢣⠣⡜⢢⣃⠞⣬⠳⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠠⢁⠢⡑⢭⣻⣿⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠈⡟⢳⣬⣳⠸⣌⠳⣌⢖⡣⣍⠳⣌⠻⣔⣯⡷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢈⠐⠌⢢⢙⡆⣿⣿⣽⣿⠇⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⡄⢣⢛⠿⣾⢷⣾⣾⣶⣯⣿⣾⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢁⠂⡘⡘⢢⢭⣘⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠀⠀⠀⠀⠀⠱⡀⢊⠱⢪⠝⣎⠷⣫⢟⡿⢿⣟⡿⢿⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠁⠤⠘⠤⣙⠲⣌⢾⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠄
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠃⠀⠀⠀⠀⠀⠀⠑⠀⢠⠁⠚⡌⢣⠓⣮⡜⢣⡞⢻⣷⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠈⡄⢡⠂⡍⢲⢡⡏⣴⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⣼⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠐⠈⠒⢬⡘⠥⠚⡔⢣⢛⣿⣧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⢀⠀⠄⢂⠰⡈⢆⡍⢆⡳⣌⣳⣿⣿⡟⠀⡐⠈⠀⠀⠀⠀⠀⠀⢈
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢲⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢁⠣⠈⠅⠊⢿⣽⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢄⠡⠒⣄⢊⠔⣈⢆⡱⢊⡜⡬⡱⢮⣿⣿⡟⠀⠆⠠⠀⠀⠀⠀⠀⠀⠀⢨
// ⠀⠀⠀⠀⠀⠀⠀⠀⢀⠂⣼⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡄⠀⠀⠀⠀⠀⠀⠀⠀⠡⠈⠄⡙⣷⢯⣿⣶⡀⠀⠀⠀⠀⡀⠄⡰⢐⠢⣉⢆⢣⠓⣌⠲⡌⢆⠎⡴⢋⡴⢣⣵⣿⡿⡓⣌⠱⢊⡁⠄⠀⠀⠀⠀⠀⠀⢾
// ⠀⠀⠀⠀⠀⡀⠐⡈⢄⣺⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⢟⣆⠀⠀⠀⠀⠀⠀⠀⠠⠁⠂⠄⠸⣿⡜⣯⢿⣶⣤⢂⠤⡑⢬⡐⡿⢋⡙⢮⣣⠝⣬⠳⡜⢪⡝⣘⢧⣺⣽⣿⠋⢀⠱⣎⡜⣡⠂⠀⠀⠀⠀⠀⠀⣈⢿
// ⠀⠀⠄⡁⢂⢡⢊⡔⣪⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣆⠀⠀⠀⠀⠀⠀⠐⠈⠠⠈⠄⡘⢿⡜⣯⢞⡿⣻⣷⣌⡳⡜⣷⣽⣞⣿⢣⡟⡬⣓⡍⢧⣼⣷⣾⣿⡟⠁⠀⠂⢄⡿⢒⡡⢊⠀⠀⠀⠀⠀⢀⠬⣿
// ⣦⡁⢆⠸⢠⢃⡎⣴⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡀⠀⠀⠀⠀⠀⠀⠂⢁⠐⠠⠐⡈⠿⣖⠯⣞⡳⢯⣟⡿⣿⣷⣾⣿⣾⣷⣾⣷⣿⣿⢿⣿⣻⣿⠏⢀⠠⠁⠌⠱⣈⠣⠐⡀⠀⠀⠀⠀⠠⣌⢻⣿
// ⡹⣿⣥⣏⣦⢫⣼⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠹⠄⠠⠀⠀⠀⢀⠂⠄⡈⠐⢠⢀⢃⠚⡻⣼⣹⢳⢮⡝⣧⢻⣭⠻⣝⢯⠻⣵⢫⢞⠳⣜⣻⡿⢀⠂⠀⠈⠀⠁⡀⠂⠁⠀⠀⠀⠀⣀⠣⣜⣿⣿
// ⣹⡔⣿⣻⣿⣿⣿⡏⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠌⢠⠁⢂⠁⠌⠠⢁⠂⠡⢀⠐⠠⢈⡁⠆⡰⠈⢆⠱⣈⠳⣋⠮⡝⣜⢣⠮⡝⣎⠮⣙⠦⣉⠎⡱⢂⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠐⣤⣳⣽⣿⣿



// ⠐⠢⡏⣷⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠿⠻⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡹⣍⢯⡹⢭⡹⡹⢆⡐⠠⠰⠀⡐⢀⠂
// ⠉⡔⣉⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣏⠷⣌⢧⡹⢆⡳⢽⡧⠀⠁⠀⢰⠀⠠⢈
// ⡑⢾⣤⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⣀⠀⠀⡀⠀⠠⠄⠀⠂⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⢓⡎⢾⣕⢫⡜⣣⡇⠀⠀⠀⠀⠰⠁⠀
// ⡿⡐⣯⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠫⣜⢳⢎⡳⠜⣥⢃⠐⡀⢂⠐⠠⠐⡀
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⢻⣬⠣⢞⡬⡙⢦⢃⠐⡀⠂⠌⠠⠁⠄
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣏⠷⣦⠛⡴⢒⡹⡜⡦⠐⢀⠡⠈⠄⡁⠂
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣎⠵⣋⢖⣻⡶⣩⠓⢈⠠⢀⠁⢂⠐⡀
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⢀⣠⡀⢀⢠⠀⢤⠀⠀⠀⠀⠀⠀⠀⠈⠂⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⡜⣱⢸⣺⣽⣳⢡⠋⠀⠄⠂⢈⠀⠄⡀
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢁⣷⡈⣰⡿⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣍⠶⡡⢟⡷⣇⠎⠥⠈⠀⠌⠀⡀⠂⠀
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡘⢾⣯⣷⣿⢁⠆⠀⠀⠀⠠⠀⣀⡀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣎⡱⢡⢿⣻⢽⡈⢇⠀⢁⠀⠂⠀⠄⠁
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣗⡀⠚⣂⣽⣿⣤⣤⣴⣶⠃⠻⢄⡝⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡽⡐⢭⣻⡽⢣⠜⡣⠀⠀⠂⠁⢈⠀⠂
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡌⢵⡿⣯⣿⠿⠋⢁⠰⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣕⢫⢆⡷⡙⡄⢣⡑⠀⠁⢀⠈⠀⢀⠀
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣌⢛⡋⠁⠀⠀⠈⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠁⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⡌⢒⡸⣡⠑⣬⢆⡵⠀⠀⡀⠀⠠⠀⠀
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠉⢁⣤⣤⣤⣌⡄⣀⠠⡀⠀⡀⣀⣠⣤⢶⣄⠐⣤⣀⡀⠀⠈⠊⠻⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠌⣶⡹⡼⣧⢘⢯⠖⠀⠀⠀⠀⠄⠀⠀
// ⣿⣿⣿⣿⢠⡙⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠁⣠⣾⣿⠻⣯⢿⣽⣻⣽⣳⢧⣄⠈⠙⢿⣽⣻⠿⣆⠙⣿⣻⢿⡆⠈⣡⣶⣤⡉⢻⣿⣿⣿⣿⣿⣿⢯⡟⣾⠹⣗⢯⣛⢮⡇⠀⠀⠈⠀⠀⠀⠀
// ⣿⣿⣿⢧⠃⠌⠐⠠⢋⠝⡫⢍⠣⠈⣄⢡⢋⠇⠀⣼⣷⡟⠎⠀⣿⣟⣾⣳⢯⣟⣾⣹⢿⣤⠀⢫⡷⣿⢺⡀⢷⢻⣿⠀⣞⢿⣻⣆⢻⡆⢻⣿⣿⣿⣿⣿⢏⡞⣵⠻⡌⠏⣜⣣⠖⠀⠀⠀⠀⠀⠀⠀
// ⢿⡿⢿⣯⠩⠐⠈⠀⠄⠂⠁⢀⠠⠑⡌⢆⠣⠀⢺⡿⣯⠃⠀⣼⢿⣮⢷⣭⣟⣾⣧⢿⣯⢾⣇⠀⣿⡽⣷⣇⠸⣝⣮⡀⢿⢭⡛⢽⡄⢣⠀⣿⣿⣿⣿⣟⠼⡘⣌⡱⢀⡟⡶⣹⠂⠀⠀⠀⠀⠀⠀⠀
// ⢎⣇⡒⡼⠀⢁⠈⢀⠂⢀⠁⡀⠠⠀⠠⠈⠀⢈⠸⣿⠡⠠⢰⣟⡿⣾⣻⣜⡿⣿⣫⢿⡼⣟⡾⢀⡷⣫⠷⣯⠄⣟⣳⣇⠸⣻⣷⡾⣧⠀⠀⡿⣽⣛⡿⣯⢰⡙⢦⡓⡬⢳⠑⢃⡃⠀⠀⠀⠀⠀⠀⠀
// ⠸⡿⡝⡜⠀⡀⠀⠂⢀⠠⠀⠀⠄⠠⠁⠀⠄⠨⠄⢻⠆⠐⠸⣯⣟⠷⣟⢾⡽⣯⢷⡯⣟⣽⠃⠰⣻⣭⢿⣹⠂⣯⢟⣾⡄⢻⣽⢻⣵⡀⢀⠒⡡⢋⠽⡑⠢⢙⡆⠡⢀⢣⠞⣇⠆⠀⠀⠀⠀⠀⠀⠀
// ⠱⣣⠝⡌⠀⠀⠀⠂⠀⢀⠀⠄⠈⠠⠁⠂⠀⠘⠠⡘⠀⠘⡀⢷⣫⡿⣽⣫⣽⣻⢾⡽⣯⠃⠀⣾⡽⣮⡟⣽⠂⢼⢯⣟⣷⠀⢻⣯⢷⡁⢀⠣⡐⢡⠢⣁⢻⠔⣎⠐⠀⢎⡽⢎⡐⠀⠀⠀⠀⠀⠀⠀
// ⠧⣅⠛⡄⠁⠀⠂⠀⠈⠀⠀⠀⠠⠀⠀⠁⠀⠀⢃⠀⠀⠀⠰⠈⣷⣻⣗⣳⣞⣳⢯⠟⠀⠌⣜⣳⢯⡷⣽⢻⠀⢸⢯⡾⣽⠆⠀⢫⡏⠀⠀⢆⠑⣂⠱⢠⡙⢎⠰⣈⠐⡌⡞⡥⠂⠀⠀⠀⠀⠀⠀⠀
// ⡒⢌⠳⡀⠂⠀⠀⠐⠀⠀⠐⠀⠀⡀⠐⠀⠀⠂⠈⠀⣠⣆⠀⢁⠈⣷⢯⣳⣭⣟⡞⠀⢉⣞⣯⢟⣯⢾⡭⡟⠀⢸⣎⡷⣭⢷⡀⠀⠥⠀⢁⠊⠰⡀⠌⡐⢈⠰⢠⠂⡔⢠⠻⡔⡁⠀⠀⠀⠀⠀⠀⠀
// ⡁⠎⡰⢁⠀⠀⠀⠂⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⣤⡾⢯⣿⠀⠠⣂⠘⢯⣳⢿⠜⣠⡴⣯⣟⣾⡛⢨⢿⣹⠇⠀⣼⠼⣽⡺⣽⠆⡈⠀⠀⠌⡐⠡⠐⡠⠐⡀⠀⠏⢶⡈⠤⢙⡠⠁⠀⠀⠀⠀⠀⠀⠀
// ⣄⣃⡒⢡⡀⢀⠂⡀⠀⠄⡀⠐⠀⡀⠂⢁⠜⣼⢳⡯⣟⡞⠠⠓⡌⣺⣄⣩⡴⣾⡱⢯⠷⣞⠇⢡⠞⣯⡗⠀⠁⢾⡃⢫⣟⣭⠃⠄⡀⠀⠀⠀⡁⠆⢁⠒⢠⠁⡘⠆⠱⢂⢌⡧⠀⠀⠀⠀⠀⠀⠀⠀
// ⠈⢻⡉⠉⠉⠉⡉⠉⠉⡉⠉⠋⠋⠑⠃⡈⢾⣭⢷⣟⣼⠃⢠⠙⡄⣟⣾⢳⡽⣖⣻⢯⡟⠁⣠⡟⡸⣱⠃⠈⢀⢺⢱⠀⢿⡌⠐⠀⡐⠀⠀⠀⠀⠀⠀⡉⠄⠒⠀⣚⠀⠡⢈⢚⡇⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⢀⠠⣁⡀⢄⡀⡁⢀⡀⡁⢀⠁⠠⢃⢹⡮⣟⡼⣾⠀⢀⢃⠆⣻⢞⡯⣷⣫⢷⠋⢀⣼⣳⡾⣱⠃⢠⠁⣸⣼⣾⠀⠘⠀⠄⠐⡁⠀⠀⠀⠀⠀⠀⡐⢠⠈⠀⡆⠀⡁⢦⡌⡇⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⢂⡻⠤⠛⠈⠑⠀⠀⠀⠉⠂⠀⢀⠠⠈⢿⣱⣟⠇⠀⠀⡊⡔⡈⢿⡽⣞⠧⠋⣠⢟⡶⣳⢽⡃⠀⠆⠀⢳⣟⡾⡡⠀⠀⠀⡌⠒⠀⠀⠀⠀⠀⠀⠀⢣⠈⢄⠣⡐⠈⢼⠀⠃⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠠⠁⠀⠀⠀⠀⠀⠀⠀⠄⠀⠀⠈⡄⢃⠆⡄⡈⠄⠐⠀⠐⡡⠎⠀⠀⣀⣀⡀⣉⢉⠚⠉⠀⠠⠁⢀⠣⠈⠙⠓⠁⠄⠀⠡⠈⠁⠀⠀⠀⠀⠀⠀⠀⠐⠂⢌⡐⢍⠐⠈⠂⠁⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠰⠈⠒⠤⠉⠄⢀⡁⢤⡐⣬⣉⢧⡲⣔⣦⢵⣊⡶⣩⢇⣍⢢⠀⡀⠤⣥⡌⠲⠐⠂⠄⢁⠠⢄⢢⡒⣦⡹⣍⡳⣔⣂⠢⢌⠈⡀⠒⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠠⢀⠄⠠⠀⠀⠀⠀⠀⠀⠐⠁⠂⠄⢂⣡⣞⡶⣽⢶⣏⡿⣽⣳⢞⡯⣽⢞⡷⣛⣾⢣⣟⡴⣀⡀⠀⣤⣤⣄⠈⢆⡹⣬⣳⡽⣶⢻⣭⢳⡟⣞⡻⣎⢶⡈⠒⢄⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠌⠠⠁⠂⠄⡀⠄⠀⢠⢂⡴⣭⣏⡷⣯⢽⡻⢮⣝⢾⡱⣏⠾⣭⢳⣏⢾⡳⣎⡿⣜⢷⡽⣜⡄⠀⢻⡤⠈⢦⣝⡳⣧⢻⡭⢷⡺⣍⢿⡱⢯⣝⣮⣝⢶⡈⢄⠂⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠂⢁⣀⡐⠀⡊⣴⣚⢷⡧⣿⡭⣗⢯⣝⡳⢮⢧⣟⡼⣛⡼⣣⢞⣧⢻⡜⣷⣹⢮⢗⣻⣜⡣⠀⠇⢘⢰⣯⢽⡞⣯⡝⣧⢻⡼⣣⣟⣳⢞⣼⣹⠾⣽⣣⢄⠒⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⡠⢐⣊⡉⣆⠄⡀⢎⡵⢮⡽⡾⣵⢳⢯⡝⣮⢳⡝⣯⣞⣮⣷⣹⢞⡵⣫⢞⣧⢻⡵⣛⢾⣩⠷⣎⠷⡡⠀⢠⢚⣾⣹⢾⡱⣏⢾⡱⣻⣷⣿⣮⣟⠶⣭⠻⡵⢯⡞⣖⡈⠠⠠⠄⡀
// ⠀⠀⠀⠀⢀⣀⡡⣴⢣⡞⣽⠎⢠⡝⡮⣝⢯⡷⣻⢵⣛⢮⡝⣮⢗⣻⢿⣿⣿⣿⢟⣮⢳⡝⡾⣜⢧⣛⡽⣺⢵⡻⣭⢗⠡⠀⠰⠘⡶⢯⣷⣹⢞⢮⣓⣟⣿⣿⢿⣝⡯⣗⠯⣝⢯⣟⡾⣔⡂⠁⠈⡔
// ⠀⠀⢠⢎⠶⣬⢳⣭⢯⢽⠃⣴⢣⣞⣳⡝⣮⢷⡹⣧⢻⡞⡽⣎⢿⡹⣟⣿⣻⣽⢻⡼⣣⢟⡵⣫⢾⡭⣟⡽⣎⢿⡜⡏⠐⠀⠀⠆⠸⣟⡶⣏⢾⣣⢻⡜⣶⡹⣏⢾⡱⣏⠿⣜⡳⢾⡽⣶⣩⢃⡀⠰
// ⢀⠮⡵⣎⡿⣼⢳⡮⣟⢮⣛⠶⣏⢾⣱⣏⢿⣎⠷⣏⢷⣹⢳⡽⣎⢷⣫⢖⣳⣎⢷⡹⢧⣯⣝⣳⡻⣞⣵⡻⣞⢯⡞⠀⠀⠀⡀⠘⠄⢳⣻⡽⢧⣏⡷⣝⡶⣝⢮⢷⡹⣝⡾⣭⣛⢷⣛⣧⢗⡎⡰⠀
// ⡭⣏⢷⢫⡞⡵⣏⢷⣭⡳⣏⢿⡹⣎⢷⣚⣯⢞⡽⣏⣾⣱⢯⣞⡽⣎⢷⣫⢶⡹⣮⣝⡷⣞⡾⣵⣻⢞⣵⣻⡼⣳⠁⡈⠀⠰⠁⡀⢘⠀⣷⢻⣏⣾⣳⡭⣞⡽⢮⡳⡽⣎⡷⣞⡽⡾⡽⣾⡹⣖⡡⠁
// ⡙⡜⣎⢧⡻⢵⣫⢞⣖⡻⣜⣳⢻⡼⣳⡝⡾⣭⣳⡽⣲⢻⡞⣼⡳⣝⣮⢳⣭⣳⢳⢮⣷⢫⣷⢫⣷⢫⣞⡵⣋⡗⠠⠀⠀⡁⠀⡁⠈⡄⢸⣻⡞⣧⢷⣛⢧⣻⣝⠷⣝⣻⡼⣻⣼⢻⣽⡳⢿⡴⢣⡁
// ⢸⡱⣎⢷⡹⢧⣛⠮⡞⣵⢫⡞⣧⢻⡵⣫⢽⣣⠷⣏⡷⣻⣞⣳⡟⣾⣹⡳⣞⣳⢯⣟⡮⣟⣾⢻⡼⣏⢾⣱⢏⠆⠐⡂⠀⠐⡀⠄⠀⡘⡀⣷⢻⡽⣯⡽⣯⢷⣞⡿⣭⡷⣽⣳⢯⡟⣾⡽⣏⢾⡡⠒
// ⢢⡝⣼⢺⣝⡷⣭⢏⡳⢭⡳⡝⣮⢳⣝⣣⢏⡷⣛⢧⣟⣳⡽⢮⡿⣼⡳⢿⣹⣟⠾⣽⣳⢻⡞⣽⣺⡝⣾⡱⡏⠰⡈⠔⠀⠀⠀⠀⡀⠔⡁⢸⢯⡽⣾⡽⣞⡷⣯⣟⣳⣟⡷⢯⡷⣻⣳⡝⣞⡣⢇⡃
// ⠧⡝⣞⣻⢻⠞⣵⢫⣝⢣⢳⠹⣜⡳⢎⣧⢻⢞⡭⣟⡼⢧⣻⢯⡽⣶⡻⣯⢷⣞⣻⣳⡽⣳⣛⠶⣏⠾⣵⢋⡜⢁⠆⡁⠆⠀⠀⠐⢠⠃⠜⡀⢯⡝⣷⣹⣏⣷⢻⡞⣷⣻⣼⢻⡳⢷⣫⡝⡮⣕⠣⡐
// ⢯⣙⢦⡝⣧⢻⡜⣧⢎⡷⣈⠳⢌⡓⢏⢶⣛⢮⡝⣮⣝⣻⣜⣧⢿⣱⢟⡧⣟⢾⡱⣧⢻⡵⣫⢻⣜⡻⢤⠃⡰⢈⠔⡀⠀⠀⠠⠈⢀⠎⠰⡁⢌⡹⣎⢷⡹⡮⣟⡽⣮⡗⣞⣯⢽⡳⣇⡟⡱⢌⡒⠡
// ⠢⣉⠖⡹⢆⣏⠾⣌⠷⡜⢥⠚⠤⡉⠎⢦⡙⡞⣼⡱⣞⡳⣞⡼⢧⢯⠾⣵⢫⣏⢷⡹⢧⡝⢧⢏⠲⡑⢢⠘⡐⢀⠠⠀⢀⡆⠀⢦⠀⢈⠡⠘⡠⠑⢎⡳⢽⡱⣏⢷⣱⢻⡼⢎⡷⡹⡜⠬⡑⠢⢌⡁
// ⠀⠀⠈⠱⡈⠦⡙⢌⠓⡘⢢⢉⠢⢡⠉⢆⡘⠴⢡⠳⡱⣙⠞⡼⣋⠾⣙⣎⠳⣎⠳⣍⠳⡜⢃⠎⡱⢈⠆⢡⠂⠁⠀⢰⡻⠀⠀⢸⠆⠀⠢⢑⠠⡉⢆⠡⣃⠳⣉⠞⡬⢓⠮⡙⠴⠑⠨⢀⡁⡁⠂⠄
// ⣄⠠⢀⠀⠀⠑⡈⢂⠱⢈⠂⠆⡁⠆⢩⠠⡘⢄⠃⢆⠱⣈⠚⡰⢉⠎⡱⢈⡓⢌⠣⢌⡑⠌⢢⠘⡄⢡⠊⠤⠁⡀⢂⠘⠇⠀⠀⠈⠇⠀⠑⡌⠤⠑⡨⠐⡄⠣⡐⢌⠰⡉⠔⡉⠄⢀⡜⢦⡵⣉⢖⡀
// ⣯⢶⣂⠂⠄⠀⠐⡀⠒⡈⠰⢈⠐⠌⢂⡐⠁⠂⠈⣠⢠⢀⠀⠀⠁⠎⡐⠡⢌⠂⡜⢠⠂⢍⠂⠥⢘⠠⠌⠀⠀⡐⣁⠂⠄⠀⠀⢈⠔⠀⠀⠰⢈⡑⠄⠣⢌⡁⢒⠨⡐⠌⡐⠀⠀⡲⣌⢳⢲⣉⢞⡤
// ⣟⢾⡱⢧⡘⠐⡄⢀⠁⠀⠁⠂⠌⠐⠠⠀⠁⢠⠹⢤⣇⢎⡱⣀⠀⠄⡁⢃⠢⢁⠒⠄⡩⠐⡌⠂⠅⠂⠀⠀⠡⠐⡠⠘⠀⠀⠀⠌⠂⠁⠀⠀⠂⠌⡈⠅⢂⠌⠤⢁⠰⠀⠄⠀⠀⣳⠼⣩⢶⣩⢞⡵
// ⢊⠧⡙⢇⢣⠘⠠⠌⢂⠡⠐⣀⠢⠀⠄⠀⠄⣋⢗⣊⣩⢢⡕⢦⠂⠀⠀⠂⠄⠡⢈⠒⠠⠁⠄⠉⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠠⠈⠐⠀⠂⠐⠀⠀⠠⠇⠉⠈⢓⣮⣛⡆
// ⠀⢆⢉⠂⠆⡉⠆⢡⠂⡁⠎⡀⠢⡁⠀⠈⠄⡹⢎⠶⣡⠳⣜⣣⠃⠀⠀⠈⠀⠁⠀⠈⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠠⣄⢤⡠⣌⡤⡞⣶⡹⠀
// ⠈⠄⠊⠌⢠⠁⡘⠠⠘⠐⠠⡑⢠⠁⡀⠈⡄⢹⢎⡯⣕⣛⢦⡳⣁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⢠⠲⣍⠳⡜⠆⠛⠀⣸⣙⠦⠁⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠁⠂⢁⠘⢠⠂⠻⣴⢫⡜⢧⣛⣡⠠⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠁⢫⠳⣌⠓⠀⢀⡄⢦⣓⠮⠁⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⡂⠙⢎⢹⢎⣡⠤⠔⢀⡀⠤⠤⠤⠤⠤⢄⡀⠀⠀⠄⠐⠀⠁⠀⢀⠀⠀⠀⠀⢀⠀⠀⢀⠀⠀⡀⠀⠀⠐⠀⠢⢘⡽⠀⢀⡰⣋⠼⡿⠩⠃⠀⠀⠀


// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠠⢀⠤⠀⠤⠐⠂⠉⢉⣉⡁⠒⠀⠒⠠⠤⢄⣀⠀⠀⠠⢀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠄⠂⠁⡠⠊⠀⠀⣀⣤⣶⣿⣿⣿⣿⣷⣿⣿⣿⣶⣦⣄⣐⠢⢄⡑⠢⣄⡁⠂⢀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠊⢀⣀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣵⣮⡙⠶⣄⠁⠀⡀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⢀⠀⠈⣠⣞⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣮⣳⣦⠑⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⣠⣾⣿⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠊⣌⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠁⡌⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⠁⢰⣱⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⢘⢼⡇⣿⣿⣿⣿⡿⣿⣿⡟⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⣿⡎⠡⣿⣿⣿⣿⡃⣿⣿⡷⢄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⢻⣦⣿⠿⠿⣿⣦⣻⣿⡱⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠤⠀⣨⠃⠆⠀⣬⣩⣝⡿⠅⠀⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠎⢀⠀⠀⠻⠻⣿⣿⣿⣮⣄⡿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡔⠒⠂⠁⡠⠃⢰⠉⠘⡾⠣⢭⣿⠃⡰⡿⠓⣿⣿⣿⣿⡟⠉⡽⣿⢿⡟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠤⠒⠉⠀⠀⠃⠊⡉⢀⡀⠀⠀⠀⠁⠀⠀⠻⣿⣿⢯⠀⢠⡾⣏⢻⡏⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⡁⠀⠀⠀⠀⠀⠰⠈⢆⠰⢁⠂⡄⢀⡠⠀⠀⢻⡿⡇⢻⣿⢣⡏⢼⢣⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢽⠀⠀⠀⠀⠀⠁⠀⠀⠂⠁⠂⠐⠁⠀⠀⠀⠀⣿⠇⣈⠶⠛⣰⡿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣧⣥⣶⠛⠍⠠⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢃⡉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⢃⠀⠀⣀⠰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⢀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠗⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡎⣦⠞⡡⢂⣼⣿⣿⣿⣿⣿⣿⠟⠛⠁⠐⠀⠀⢀⠆
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡆⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⢼⡏⣿⠤⡑⠤⢘⣿⣿⡿⢿⣿⣄⠀⠀⠀⠀⠀⠀⠄⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠒⠒⠢⠤⠤⢀⣀⠀⣀⠤⠤⢒⠪⡑⠤⢺⢻⣁⠣⡐⢢⢘⣿⣿⣿⡈⠻⣏⢿⣎⠉⠉⠉⡙⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠑⢶⠁⠊⠔⡁⢊⡝⣺⠄⡱⠐⠠⢘⣾⠻⠛⡇⠀⢻⠈⢻⡄⠀⢰⠁⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡇⢈⠐⢂⡽⢠⠏⡐⠄⡡⠁⠌⣿⠀⢸⠁⠀⠀⠀⠀⢷⠀⡆⠀⠀⡀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠋⠔⠉⡐⠠⢈⠄⡁⢂⢸⡆⠀⠀⠀⠀⠀⠀⠈⡇⡇⠀⠀⡃
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠠⠤⠐⠂⠒⠀⠀⠹⠀⠀⠀⠀⠀⠂⢀⠁⢂⠀⡐⠀⠸⡇⠀⠀⠀⠀⠀⠀⡰⠀⢇⠀⠀⠠
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠒⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠀⠀⠀⢱⠀⠀⠀⠀⠀⠀⠀⠀⠈⠢⠀⢸
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠋⠀⠀⠀⢀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⡘⠁⣀⠂⠁⠔⢙⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠠⠈⠄⢁⠈⠄⠐⠀⠀⠀⢹⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠁⠇⢀⣀⠥⠒⠀⡄⠉⢀⠤⠒⠉⠉⠙⠒⠒⠤⢤⣁⠌⡀⢂⠀⠀⠀⠀⠀⠈⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠔⠊⠁⠀⠀⠀⠀⠀⠀⠸⡀⠀⠀⠀⠀⠄⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡐⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠒⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀⠀⠀⠀⢀⠸⡀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠎⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠴⠋⠁⠀⠀⠀⠀⠀⠀⠀⡰⠃⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠂⠀⠀⠀⠀⠀⠀⢀⡴⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡴⢋⠐⠠⠈⠀⠀⠐⠀⠀⢀⠜⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠠⠊⠀⠀⠀⠀⠀⠁⠀⡠⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠟⠀⠄⠊⠀⠀⠀⠀⠀⠀⢠⠊⠀⠀⠀⢠⠇⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠔⠁⠀⠀⠀⠀⠀⠀⠀⢀⠜⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡸⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⢀⠠⠂⠁⠀⠀⠀⠀⠀⠀⠀⡠⠐⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⣶⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⡗⡖⠂⠀⠀⠀⠀⠀⠀⡠⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⢠⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⣹⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡜⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⡰⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠈⡄⠀⠀⠀⢰⠁⠀⠀⢀⡤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⢀
// ⡀⠀⠀⠀⠀⠀⠀⢘⣄⠀⠀⢜⠀⠀⠀⠈⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢼⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢆
// ⡀⠀⠀⠂⠀⠔⡍⠁⠀⠑⡲⠸⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢼⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢺
// ⠀⠀⠀⡀⡾⣍⠁⢀⣠⠞⠁⠀⢣⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⡹⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠣
// ⠀⠀⠀⠀⠀⠉⣻⢯⡜⠀⢀⠄⠘⡍⠦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣂⠴⡇⠀⠀⠀⠀⠀⠀⠀⠀⢠⢡⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣰⢡
// ⠀⠀⠀⠀⠀⡀⢻⡜⡇⠀⢸⣄⠀⠈⢄⠈⠲⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⡤⠞⠁⢸⠁⠀⠀⠀⠀⠀⠀⠀⠀⠎⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⡿⣿⢨
// ⠀⠀⢀⠀⡀⢳⡀⣹⠘⣆⠀⢻⡝⡢⡄⣉⡐⠀⠈⠙⠒⢶⣒⠶⢲⣶⣞⡫⠅⠠⠀⠀⣾⠀⠀⠀⠀⠀⠀⠀⠀⡸⡘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠀⠽⢟⡠
// ⠀⠀⠀⠑⡜⢀⠻⠟⠂⢻⣆⠢⡙⠙⠘⣆⠀⣀⠀⠀⠀⠀⠈⠉⠉⠘⠢⠍⢛⡳⠶⣦⡇⠀⠀⠀⠀⠀⠀⠀⢠⢣⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⡈⠀⡐
// ⠀⠀⠀⠀⠈⢆⠀⠀⠀⠀⣻⣿⣕⡢⠀⠘⠄⠀⠉⠙⠚⣒⠒⠒⠂⢠⡰⠚⣁⣤⣾⣿⠁⠀⠀⠀⠀⠀⠀⠀⣠⣧⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⢢⠁⠀⠡
// ⠀⠀⠀⠀⠀⠀⠉⠒⠐⠉⢸⣿⣿⣿⣦⡈⠙⠶⢄⣀⣤⣴⣋⣥⣼⣶⣶⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⣀⣴⣾⣿⡟⠁⠀⠀⠀⠀⠀⠀⣀⠀⠀⢀⣀⣀⣿⠣⠃⠀⠘
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⠿⠿⠿⠿⣿⣿⣿⣿⣛⢿⣿⣿⣿⣿⣿⣿⡟⠀⠀⢀⣠⣴⣾⣿⠿⠋⠹⠀⠀⠀⠀⠀⠀⠀⠀⠙⠷⠦⠷⠶⠂⣴⣦⣴⣶⣷
// ⠀⠀⠀⠀⠀⣀⠤⠈⠄⢉⣉⣉⠩⠂⠀⠀⠀⠀⠀⠈⠉⠉⠈⠊⢉⠉⡉⣭⣿⣿⣧⣤⣶⣿⡿⠟⠉⠀⡀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣋⣹⡇⠀⡗
// ⠈⠁⠌⠐⠄⢂⠰⢀⠂⢀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣴⣶⣶⣶⣾⣿⣿⣿⠿⠛⠋⠁⢠⠀⠀⠐⠀⢰⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⡇⠀⡜
// ⢀⠂⡄⢀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣿⢻⡿⣼⣿⣿⡏⠠⠐⠈⠐⢸⠀⠀⡁⠀⣸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⡇⠀⠼
// ⠲⠥⣜⣤⣉⡐⠠⢂⠠⢀⠀⢂⡁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠣⣛⣿⣿⣿⠐⠡⠈⠀⡠⠋⠀⠀⠀⢠⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡸⠿⢥⠀⣹
// ⠀⠀⠀⠈⠉⠉⠓⠶⢤⣆⣉⠆⡜⡓⠦⣄⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⡟⡨⠐⠀⠀⠁⠀⠀⠀⠀⡸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⠅⠐⠾⠆⠀⣸
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⣿⣦⡙⢦⠩⡝⢆⠄⠀⠀⠀⣤⣿⣿⣿⣿⣿⡃⠅⠀⠀⠀⠀⠀⠀⠀⢠⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠂⢸
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣦⡓⡸⢌⡊⠔⣠⣾⣿⣿⣿⣿⣿⣿⡐⢈⠀⠀⠀⠀⠀⠀⠀⣜⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣆⣢⣵⣾⣿⣿⣿⣿⣿⣿⣿⡟⣀⠂⠀⠀⠀⠀⠀⠀⢰⢨⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡗⠠⠀⠀⠀⠀⠀⠀⠀⡆⠨⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡐⠡⠀⠀⠀⠀⡤⠀⢠⠀⡰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠠⢁⠀⠀⠀⠀⠀⠀⢸⠀⣏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠐⠠⠀⠀⠀⠀⠀⠀⣼⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠂⠀⠀⠀⠀⠀⠀⣿⣶⣼⣷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⠐⠀⠀⠀⠀⠀⠀⠰⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀



// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡟⣯⡿⣝⣯⠿⣽⢯⣟⡿⣻⣟⣿⣿⣿⢿⣿⣿⣿⣿⣻⣿⣶⣾⣷⣬⡁⠈⢀⣀⣵⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡰⢌
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⢯⣽⢯⣟⢾⣵⣻⡽⣾⡽⣽⣳⢯⣟⣿⣿⣯⣿⢾⣿⣿⣟⡾⣯⢿⣿⣿⣿⣷⣤⣿⡇⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠠⠁⠊⠀⠁⠀⠀⠀⠀⠀⠂⠘⠂
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣏⣿⢯⣿⢾⣟⡾⣳⣟⣳⣟⡷⣯⣟⣾⣿⣿⣿⢾⣿⣟⡾⣿⣿⣽⣿⣿⣏⣿⣿⣿⣿⣷⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⡳⣞⣿⣿⡯⣿⢾⣽⣳⢯⡷⣯⣟⣷⣻⣽⣿⣿⣿⣿⡽⣯⣿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⢀⣀⣄⡀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⢯⣗⣻⣿⣟⡾⣽⢿⣛⣾⡽⣯⢟⣷⣻⢾⣽⣿⣿⣞⣯⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⠀⠀⠀⠀⠀⠀⣀⣀⣠⣶⠿⣻⠿⠛⢹⣿⢿⠟⠛⠉⠐⣌⢻⡀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡿⣝⣾⣿⡟⣼⣻⣏⣿⣹⢺⣟⣵⣫⣶⡿⣾⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡄⢀⣠⣴⡾⢋⣽⣿⣯⣿⠋⡔⠉⣼⣿⠇⠀⠀⠀⠣⢌⣻⠇⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡿⣽⣿⣟⢾⣿⡵⣯⢾⣱⣯⣿⣷⢯⣷⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣷⣾⣿⣿⣿⣴⣿⣿⣿⣿⠃⢌⠀⢰⣿⡏⠀⠀⠀⠀⠱⢨⠼⡇⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣻⣿⣿⣯⢿⣿⣟⣯⣿⣯⣿⣿⣿⣯⣿⣟⣿⣿⣳⣿⣿⣿⣈⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢳⣿⢣⠘⣀⡞⢸⣿⠁⠀⠀⠀⠀⢀⠃⢾⠁⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣻⣽⣿⣿⣯⢿⣿⣻⣾⢿⣿⣽⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣭⣴⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⣧⣿⢋⢆⠃⣾⠀⣸⡟⠀⠀⠀⠀⠀⠀⠎⡽⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⣾⡟⣽⣿⣿⣿⣯⣿⣿⣏⣿⣿⢿⣿⣧⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⡟⢯⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⡿⢿⡿⢣⢍⣢⣭⡇⢀⣿⢃⠀⠀⠀⠀⠀⢈⢒⡇⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⣼⡟⢰⣿⢾⣿⣯⣷⣿⣿⣿⣞⣿⣿⣿⣿⣦⣛⢿⣿⣿⣿⣿⣿⣿⣽⠏⠉⠗⣚⣩⣾⠟⣭⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣗⣿⣿⣿⣿⣷⣿⡏⢠⠃⢸⡟⠰⠀⠀⠀⠀⠀⢌⣺⠁⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⢰⡿⠀⣾⡏⣿⣿⡷⣿⣿⣿⣿⣧⣧⣼⣿⣿⣿⣿⣶⡹⢿⣿⣿⣿⣿⡸⢄⠉⠉⡙⣉⠡⣚⣵⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⣿⣿⣇⡞⠀⣼⠁⠁⠀⠀⠀⠀⠈⡴⡇⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⣿⠁⢸⡟⠀⣿⣯⣿⣿⣿⣿⣿⣿⣿⣿⣟⠻⢾⣫⣼⠗⠀⠙⢟⡻⣿⣷⡂⠀⠀⠐⠀⠂⢡⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⠃⣿⣿⠟⠀⢠⡇⠀⠀⠀⠀⠀⠀⣘⡾⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⢸⡇⢀⣿⠁⠀⣿⣿⣳⣿⣿⣿⣿⣿⣿⣿⣬⠉⡒⠋⠁⠀⠀⠀⣤⠙⠌⠻⢆⡀⠀⠀⢀⣰⡿⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢸⣿⠋⠀⠀⣸⠁⠀⠀⠀⠀⠀⠐⣼⠁⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⢸⢀⣾⠏⠀⢰⡿⣿⣳⣿⣿⣿⣿⣿⣿⣿⣿⣷⣌⢡⣁⡀⠀⠀⠈⠁⠀⠀⠀⠀⠀⠀⠤⠚⢱⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣸⠇⠀⠀⢠⠇⠀⠀⠀⠀⠀⢀⣹⡏⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⣿⣾⠟⠀⢀⣾⣟⣿⣟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡻⢎⣀⣀⠄⠀⠀⣤⣠⣤⡀⠀⠀⠀⣠⡿⣿⣿⣿⣿⣿⡟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢟⠏⠀⠀⢠⠏⠀⠀⠀⠀⠀⠠⣜⡾⣷⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⢠⣟⡞⠀⠀⣼⣿⣞⡿⣾⣿⣾⢿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣄⣀⠀⠀⠀⠀⠉⠉⠀⠀⢀⡼⢏⣵⣿⣿⣿⡟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠣⠋⠀⢀⣴⠏⠀⡄⠀⠀⠀⣀⢳⡞⠀⢿⡀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⣴⣟⣷⣇⢀⣼⠏⢸⢾⡿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣿⡲⢤⣄⣀⣠⠖⣏⣱⣾⣿⣿⣿⣿⠇⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠉⠓⢶⣾⠟⠁⠀⡜⠀⠀⠀⡰⣬⠟⠀⠀⠘⣧⠀⠀⠀⠀⠀⠀
// ⠀⢠⣾⡳⠋⢸⢾⡾⡟⠀⣾⣿⣟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢷⣃⢎⠲⣁⠏⣴⣿⡿⢻⢽⣿⣿⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⢃⠈⣆⠀⠀⠀⣠⠞⠀⠀⢀⡰⣳⠋⠀⠀⠀⠀⠘⠆⠀⠀⠀⠀⠀
// ⣰⣻⠞⠀⢀⣼⣿⣿⠀⢰⣟⣾⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢋⡜⣻⣆⠣⠜⡒⢼⡿⣈⠗⣚⣏⠿⣼⣿⡿⣿⣿⣿⢿⣙⢮⡿⠃⠀⠈⠒⠶⠾⠋⠀⠀⢀⢦⡟⠁⠀⠀⠀⠀⠀⠀⠈⢆⠀⠀⠀⠀
// ⡗⠁⠀⣠⡾⢃⣽⡾⣧⡾⣽⣯⣿⣿⣿⣿⣿⡿⠻⠿⠿⣿⣿⣿⣿⣿⣿⣯⣇⠎⡴⢡⢎⠳⡜⢺⣄⢛⣦⢙⡴⢪⠜⣆⣛⣷⣿⣿⣟⢣⠎⠻⠁⠀⠀⠀⠀⠀⠀⠀⠀⡄⣯⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣧⠀⠀⠀
// ⠀⢀⣾⢋⣴⠟⠁⠻⣽⡿⣿⣾⣿⣿⡟⠉⠉⢿⣄⠀⡸⠛⢉⠛⣿⣿⣿⣷⣮⣛⠍⠲⢌⠣⡜⡄⠛⡷⢏⠲⡌⣧⣻⠞⣋⢶⣿⣿⣏⠆⠁⠀⠀⠀⠀⠀⠀⠀⠀⡄⣳⣾⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡄⠀⠀
// ⣴⣿⣵⠟⠁⠀⢀⣼⣿⣿⢷⣿⣿⡟⠀⠀⠀⠀⠙⣏⠀⠁⢢⡀⠸⣿⣿⣿⣿⠿⣿⣷⡾⠶⢶⣌⢓⡰⢊⣕⡾⢛⠤⡙⡔⢺⣿⢿⣿⠀⠀⠀⠀⠀⠀⠀⠀⡄⣣⣼⡏⢽⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣧⠀⠀
// ⠟⢏⠀⠀⠀⢀⣾⣿⣟⣿⣿⣿⣿⡁⠀⠀⠀⠀⠀⠸⡄⠀⠀⠈⠂⣿⣿⣿⣿⣿⣷⣤⡙⣷⣬⡘⠳⠐⢃⠌⡰⢉⠆⡱⢈⣽⣿⡎⢿⡆⠰⣇⠀⡀⢄⠢⣍⣶⣿⣿⡅⢺⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⡿⠀⠀
// ⠀⠀⠉⠒⢀⡾⠛⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⢱⠀⠀⠀⢠⣿⣿⣿⣇⢻⣿⣿⢿⣾⣿⣷⠀⠁⠂⠌⢀⠁⠂⠁⢰⣿⣿⣷⡈⢻⡄⢹⡖⣈⠦⡿⣾⣿⣿⣿⣿⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣟⠀⠀
// ⡰⢪⡕⡴⠃⢠⣾⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠈⢿⣄⡀⣼⣿⠟⣹⠇⠀⢿⣿⠀⣿⣿⣧⡀⠀⠀⠀⠀⠀⠀⠀⠘⠆⣻⣿⣿⣦⣽⣾⣧⣝⣾⣷⢻⣿⣿⣿⣿⣷⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⠇⠀⠀
// ⢡⣣⠞⠀⣰⣿⣿⢋⣿⣿⣿⣿⡷⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣷⡿⠟⠊⠁⠀⣠⣿⣏⣾⣿⣾⡿⢿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⢿⣿⣿⡞⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⠀⣠⣾⡿⠀⠀⠀
// ⠚⠁⠀⢀⣿⣷⠏⣼⣿⣿⣿⣿⣟⠀⠀⠀⠀⠀⠀⢀⣠⣶⢿⡟⠀⠀⢀⠄⢊⣿⣿⣿⣿⠟⠛⠉⠁⠀⠀⠰⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⢿⣿⣿⣿⣿⢿⣿⣿⣷⡀⠀⠀⠀⠀⠒⠛⠛⠁⠀⠀⠀⠀
// ⠀⠀⢀⣼⣿⣟⣴⣿⣿⣿⣿⣿⡏⠀⠀⠀⣀⣤⣾⣿⠟⣉⢾⠇⠀⠐⣁⢶⣿⣿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠙⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠻⣿⡆⠈⢻⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⣠⣾⣟⣾⣿⣿⣿⣿⣿⣿⣿⠇⢀⣤⠾⠛⠋⠁⠀⠈⡔⣾⠖⢀⠜⣠⡾⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢙⢄⡀⠻⣿⠙⠳⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀
// ⡴⣟⡷⣯⣿⢿⣿⣿⡿⣿⣿⣿⡴⠋⠀⠀⠀⠀⠀⠀⠐⣸⡿⠀⠘⡶⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠲⢿⣷⡀⠀⠻⡷⣄⠀⠀⠀⠀⠀⠀
// ⡸⠋⠉⠙⢣⣿⣿⣿⣇⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⢰⡿⠁⠀⢰⣁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡝⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡖⣦⡘⣧⡀⠀⠉⢌⠳⡀⠀⠀⠀⠀
// ⠀⠀⠀⠀⢸⣿⢾⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠁⠀⠀⠘⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠨⣿⠌⢧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠓⡛⠁⢣⠀⠀⠀⠡⡘⢆⠀⠀⠀
// ⣦⣀⣀⣤⢾⣿⣻⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⢸⠇⠀⠀⠀⠀⠀⠀⠀⠀⣠⢴⣲⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢽⡚⡌⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⠘⢸⠀⠀⠀⠀⠐⣌⡆⠀⠀
// ⢿⡟⠏⠻⢿⣷⣻⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠻⠟⠗⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢺⡝⡔⠁⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⣼⡇⠀⠀⠀⠀⢸⡷⠀⠀
// ⡏⠀⠀⠀⠀⠙⢿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠠⢁⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢾⡹⢬⡁⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⡇⠀⠀⠀⢀⣾⣿⠀⠀
// ⢇⡀⠂⠀⠀⠀⠈⠙⠿⣯⠀⠀⠀⠀⠀⠀⢀⠑⡂⣯⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⡘⣽⡝⢦⡃⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣺⣿⣿⣷⣄⠀⢀⣾⣿⡇⠀⠀
// ⡄⠀⠀⠀⠀⠀⠀⠀⠀⠈⠑⣄⠀⠀⠀⠀⠠⢃⡕⢺⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⡑⢼⡟⡼⣩⠿⣦⡡⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠰⣌⣷⣿⣿⣿⣿⣿⣶⣿⣿⣿⠁⠀⠀
// ⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⢐⡈⢳⡄⠀⢠⠡⢣⠜⣹⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢄⠣⣹⢾⡙⠶⡡⢞⡩⢷⣯⡰⠡⢄⠠⣀⠀⡄⢠⢂⡜⣬⣷⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀
// ⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⡘⢄⢻⡄⢣⠜⣡⢞⣿⣿⣷⡆⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠘⢤⡷⢏⢧⡙⣣⠕⡪⠜⡡⢞⡹⠿⣮⣵⣦⣹⣬⣷⣾⣾⡙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀
// ⣿⣿⣧⡀⠀⠀⠀⠀⠀⠀⠀⠐⡈⢦⡙⢦⡙⢦⣻⢡⣿⣿⣿⣦⣐⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠰⣈⣦⢽⢫⠜⡩⢆⡱⢢⠙⠄⠃⠁⠊⠔⢫⠔⢦⠣⣝⢲⣿⠿⣿⡅⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⠀
// ⣿⣿⣿⣇⢤⠀⠀⠀⠀⠀⠀⠀⢈⠒⡜⢦⣹⣳⣿⣿⣿⣿⣿⡿⢠⣷⠶⢤⣤⣀⣀⣀⣄⣠⣤⣬⠶⢓⢋⠆⢣⠊⠌⠑⡀⠂⠁⠈⠀⠀⠀⠀⠈⠐⣊⠦⡙⢦⣿⣿⣨⣿⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀
// ⣿⣿⣿⣿⣿⣶⢄⡀⠀⠀⠀⠀⠠⢩⢜⣣⢷⢃⣿⣿⣿⣿⣿⣇⣿⣿⣧⠀⠀⠈⠉⠉⠈⠁⠀⠀⠐⠈⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠠⢎⣹⣿⣿⢿⣿⣿⢿⣿⣿⣿⣿⣿⣿⠙⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣧⣿⣦⣿⣥⣤⣀⣀⠂⡇⣞⣼⣿⣿⣿⣿⣿⢿⣿⣿⣿⡿⠛⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⣨⡿⢻⣿⣿⠏⠀⣸⣿⣿⣿⣿⣿⡿⠀⣿⢿⣿⣿⣿⣿⣿⣿
// ⡇⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠙⣾⣾⣿⣯⣿⣿⣿⣏⣼⡿⠛⠙⠁⠀⢹⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠱⣿⣿⣿⡿⣏⠀⣰⣿⣿⣿⣿⣿⣿⡇⠀⡿⢸⣿⣿⣿⣿⣿⣟
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⢰⣿⡿⠟⠛⢫⡹⠖⠉⠁⠀⠀⠀⠀⠀⠘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⢻⣿⡿⢻⡇⠉⣹⣿⣿⣿⡟⣿⣿⡿⢀⣼⣡⣿⣿⣿⣿⣿⣿⣯
// ⡿⢿⠟⣿⣿⣿⣿⣿⣿⣿⡿⠟⢋⣁⡤⠒⣠⠞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢲⣿⣿⡀⠘⢛⣿⣿⣿⣿⡟⢀⣿⣿⣅⣾⣿⣿⣿⣿⣿⣿⣿⣿⣧
// ⣿⣿⢰⣿⣿⣿⣿⣿⠛⢣⠐⢌⣖⠡⠔⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡰⠂⠀⠀⠀⠀⠀⠀⠀⠀⢨⡟⠙⢿⡿⠿⣻⣿⣿⣿⠟⣠⣿⡿⣻⣿⣿⢟⣋⣱⣿⣿⣿⣿⣿⣿
// ⣿⢿⢿⣿⣭⡿⠃⠄⠀⡠⠈⠸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠔⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⠀⠀⠀⣹⣾⣿⣿⣿⣿⣾⠿⠋⠀⠹⡸⣏⡉⠉⣿⣿⣿⣿⣿⣿⠋
// ⡟⠁⢸⡾⠋⠀⢡⡤⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡾⢽⠂⢀⣼⣿⠟⠉⠉⠋⠉⠀⠀⠀⣆⣠⠇⠀⠀⣼⣿⣿⣿⣿⣿⣧⡀
// ⣇⠀⠋⠀⠀⠀⡺⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡃⢻⡇⢸⣿⢻⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⡿⠏⠉⠉
// ⣿⡀⠀⠀⠀⠠⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠌⡑⣇⠘⣿⠈⢆⡀⠀⠀⠀⣀⠀⠀⣀⠤⣊⡽⢟⠿⠛⠉⠁⠐⠠⠀⠀



// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣶⣾⣿⡿⠿⠿⠛⠛⣶⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣶⣿⣯⠗⠊⠉⣡⠖⣁⣠⣤⣸⣿⣿⣿⣿⣿⣿⣶⣦⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⡿⠛⠉⠀⠀⠠⣌⡥⠞⡗⠒⢶⣿⣿⣿⣿⣿⣟⠛⠋⠃⢸⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣄⠀⡀⠀⠀⠋⢁⡠⣢⣷⠾⠿⢿⣿⣿⣿⣿⣿⣧⡀⠺⣟⡄⣼⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⠟⣡⢮⠆⠀⢀⡴⢋⡾⠋⡠⣶⠠⢼⣹⣿⡿⢿⣯⣟⠛⡆⠈⢷⣻⡉⢿⣧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣏⣴⣷⠏⠀⠀⠈⣠⠋⣴⣼⢳⡇⡀⡇⢸⣿⣿⠛⢿⡿⣷⣾⡀⢸⣯⣹⠀⢳⡹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠛⠛
// ⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⠏⠄⠀⠀⣰⡃⣾⠁⢏⣿⢰⠃⢳⣿⣿⣿⣄⢰⡀⢈⠻⣞⠿⠉⢻⣇⢢⢣⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣛⣻
// ⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⡏⠀⢀⣼⡿⢠⠇⡀⣼⣿⠘⡆⡄⢻⠟⠣⣹⣾⡟⢼⣆⣹⣦⠀⢸⣿⣼⡎⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉
// ⠀⠀⠀⠀⠀⢠⡿⡼⢻⣿⣿⣿⡿⢠⣴⣿⡿⠃⢀⣼⣿⣿⣿⠀⡟⠸⢸⡇⠀⠙⢿⣿⡜⣿⡹⣿⣧⠈⡇⠀⣧⠸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⢸⣿⣇⣿⣿⣿⣏⣴⣿⣿⡿⠁⢠⣿⣿⣿⣿⣿⡜⡧⠀⢸⠀⠀⠀⠈⠻⣿⡽⣧⢋⣿⣿⡋⢺⣾⣧⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⣰⣿⣿⣿⣿⠀⣿⠇⣇⠀⢸⠀⠀⠀⠀⠀⢹⣿⣿⣶⣿⣿⣷⣼⣿⠙⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⢸⣿⣿⣟⣹⣿⣿⣿⣿⣿⣿⣿⣿⡿⣽⡿⡄⣿⣾⣿⣠⣇⣠⡤⠶⠚⠉⠉⢻⣿⣿⡿⢿⣿⣟⢿⢦⣹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠃⣇⣼⣿⣿⠁⠀⣠⣤⣶⣶⣶⣶⣿⣿⣷⢸⣿⣿⣷⣌⣿⡻⠦⠄⠤⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⢹⠃⠀⠀⣿⣿⣿⡏⠀⣾⡿⢿⣿⣿⣿⡸⢹⣿⡏⠸⣿⡏⣿⣾⡏⠛⢶⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⣠⠞⣽⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣶⣿⣶⣶⡀⣿⣿⡿⠀⠀⠋⠠⠼⠛⠛⠉⠁⢸⣿⡇⠃⣧⡇⣷⣿⣱⡀⠀⠈⠻⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⢀⣼⠃⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣝⢿⣿⣿⣯⡀⠀⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⡇⣤⣿⣴⣿⣇⡟⠷⣄⠀⢸⢯⠙⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⣾⡇⠀⣾⣿⣿⣿⣿⡿⣝⣿⣿⣿⣿⣭⡟⠋⠉⠀⠀⣸⣿⡏⢀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠈⠙⠋⠈⡆⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⢿⡀⢸⣿⠏⢿⣿⡏⣗⢿⠈⢻⣿⣿⣿⣆⣀⠀⠀⣰⡟⠙⠀⠘⠆⠀⠀⠀⠀⠀⢀⡐⠱⣹⢿⣿⣿⣿⣿⣿⣿⣄⠀⠀⠀⠀⠀⣇⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⢁⣿⠋⠀⢸⣿⣠⣿⣯⡀⡆⢻⣎⡙⣿⣍⣴⠞⠋⡔⠁⠀⠀⠀⠀⠀⠀⠀⠀⠉⠀⣰⣻⣿⣿⣿⣿⣯⡞⡈⠛⢦⣄⡠⠀⣰⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⣸⠃⠀⠀⢸⣿⣿⣿⣿⡇⣧⠘⣟⠛⠻⡟⠳⣄⠊⠀⠀⠀⠰⠶⠶⠾⠋⠁⠀⢀⣼⠃⣿⣿⣿⣿⡿⢻⡇⠉⠉⠉⠉⠉⠝⠉⠉⠁⠒⠤⡀⠀⠀⠀⠀⠀⠀⠀
// ⠀⢰⠇⠀⠀⠀⣾⣽⣿⣿⢿⢇⣿⢰⢿⡄⠀⣷⣀⠏⢹⡦⣄⡀⠀⠀⠀⠀⠀⢀⡴⠛⠁⢰⣿⣿⣿⣿⢇⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀
// ⠀⣾⠀⠀⢀⠀⡏⣿⣿⠟⣾⣿⣸⢸⠼⣿⡄⣿⡟⠀⠀⠱⡀⠉⠑⠒⠤⠤⠔⠋⠀⠀⠀⣾⣿⣿⣿⡿⠞⠀⠀⠀⢀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢦⠀⠀⠀⠀
// ⢸⣿⡆⠀⠁⢸⢀⣿⣧⣼⡿⠁⢸⡏⠀⠘⢿⣿⡃⠀⠀⠀⠣⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⠟⠉⠀⠀⠀⣠⠖⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⡀⠀⠀
// ⠸⣷⡿⢄⣠⣇⢼⣿⣿⠉⠀⠀⡸⠀⠀⠀⠀⠓⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⡿⠋⠀⠀⢀⡴⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢣⠀⠀
// ⠀⠻⣍⠚⣿⣧⠀⢿⣿⣆⠀⠈⠁⠀⠀⠐⣒⡢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⡟⢁⡴⠒⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⡄⠀⠀⠀⠀⠈⢆⠀
// ⠀⠀⠈⠉⣿⣿⡆⠈⠻⣿⣧⠀⠀⠀⠀⠀⠀⠈⠉⠐⠒⠒⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⡷⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠀⠀⠀⠀⠀⠀⠈⠢
// ⠀⠀⠀⢸⡏⢯⣻⠀⠀⠀⠉⠓⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡏⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⣇⠈⠻⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡾⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠊⠹⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⢱⡀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣦⡀⠀⠀⠀⠀⢠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢇⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠠⠒⢳⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠙⠧⣉⠲⠤⣀⡴⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣆⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠇⠀⠀⠀⠘⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡀⠀⠀⠀⠈⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣦⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠸⡀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡑⢄⠀⠀⠀⠀
// ⠀⠀⠀⠀⠰⠀⠀⠀⢇⠀⠀⢰⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢣⠀⠙⢤⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠸⡀⠀⡸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡆⠀⠀⠑⢤
// ⠀⠀⠀⠀⠀⠀⠀⡖⠀⡇⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⢀
// ⠀⠀⠀⠀⠀⠀⠀⠧⡈⡇⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⢀⠔⠈
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠁⠀⠠⠀⢀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡄⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀⠀⡰⠁⠀⢀⠆⠀⢠
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢣⠸⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠛⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⠼⠟⠀⠀⣠⡞⠁⠀⠀⠺⢶⣾⢸
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡆⠱⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠎⠀⠈⠳⢄⡀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡤⢺⡏⠈⠲⣄⠀⠀⢸⡼⣟
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡾⠄⠙⠦⣀⠀⠀⠀⠀⠠⡀⠀⠀⠀⠀⠀⠀⠀⢠⡴⠏⠀⠀⠀⠀⠀⠉⠛⠧⠦⣄⣠⡤⠤⠴⠒⠉⠁⠀⠛⠀⠀⠀⠈⠑⠢⣀⣾⠁
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠁⠀⠀⠀⠈⠑⠲⠬⣟⣒⣈⣀⣀⣀⣀⡤⠴⠛⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⡿⡄
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡆⠀⠀⠀⠀⠀⠀⠀⠀⣸⠉⠓⠦⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠁⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⠀⠀⠀⠀⠀⠀⠀⠀⢀⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⢀⡇⠀⠀⠀⠀⠀⠀⠀⢀⡼⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀



// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⢿⡿⣿⢿⡿⣿⣻⢿⣻⣟⣿⣻⣽⣻⢯⣟⣯⠿⡽⢯⡿⣝⣯⢻⡽⣭⢯⡽⣭⢻⣭⢻⣭⢻⣭⢻⣭⢻⡝⣯⢻⡝⣯⢻⡽⣭⢋⡷⣉⠒⡔⡰⣌⡳⣭⢳⡹⡜⣂⠆⠀⡀⠠⡄
// ⣿⣿⣿⣽⣾⣿⣽⣾⣿⣾⣷⣿⣻⣽⣿⣻⣽⡿⣽⣷⣻⢯⣟⣾⣳⣟⡾⣭⣟⡾⣵⣻⣽⣻⣜⣯⣞⣧⢻⡜⣮⢳⣭⢳⣎⠷⣎⢷⢪⢗⣮⢳⣝⣮⣻⡼⣭⣳⡝⣦⢏⠴⡡⣍⠶⣱⢣⣝⠲⡍⠖⠩⠔⢠⢡⠰⡱⢌
// ⣿⡿⣾⣟⣷⡿⣽⣷⣻⣾⣳⢯⣟⡷⣯⣟⣷⣻⣟⡾⣽⣻⣞⡷⣻⢞⣽⠷⠞⣋⣉⣩⣽⣯⣷⠟⢛⠫⢭⡉⢉⠉⠒⠯⣜⡻⣜⣣⠟⣮⡚⢷⣚⡖⡧⣝⠶⣣⠞⣔⡊⢖⡱⣌⠳⣍⠳⡈⠁⠀⠀⠀⠀⢂⢎⡱⡑⢎
// ⣿⣟⣷⢿⣯⣟⡿⣞⡷⣯⣟⡿⣾⣽⣳⡟⣾⣳⢯⣟⣳⠿⣼⠽⠛⣩⡴⢞⡛⠭⣑⡯⢛⠡⢂⡍⠦⢹⡧⣝⣦⣻⣒⠤⡀⠉⠓⢮⣛⠶⣹⢧⢳⡞⣵⢫⢞⣥⡛⣤⢋⢦⠳⣌⠳⣌⡑⢂⠀⠀⠀⠀⠀⡜⣢⢱⡉⢆
// ⣿⣞⣯⢿⡾⣽⣻⣽⣻⢗⣯⣟⢾⡶⢯⣟⣳⢯⣟⣼⡯⢛⣡⡶⢛⠡⠘⢠⣸⠟⣉⠆⠁⠀⠁⠀⢠⡿⠡⣿⡄⢣⢻⣇⠘⣕⢤⠈⠙⢾⡱⢎⡷⣚⣥⠻⡜⢦⣙⢦⣋⢎⡳⢌⠳⡰⢌⠣⡄⠀⢀⠠⡼⣸⢥⠳⣜⠡
// ⣟⡾⣽⢯⣟⣷⣻⣞⣭⣟⡾⣞⣯⣽⢻⡾⣝⣷⣞⠇⣠⢾⠗⣘⠀⠀⣠⠞⣡⠔⠃⠀⠀⠀⠀⢀⠞⠀⢸⣏⡇⠘⡆⠻⣶⣘⣦⠙⠄⠀⠙⢯⡲⣙⠦⣏⡝⢮⠜⣦⡙⢮⣑⡋⢶⢱⡩⣓⢬⡓⢎⡳⣱⢣⢞⡱⢎⡐
// ⡿⣽⢯⣟⣾⣳⢯⣞⡷⣯⡽⣞⣧⣟⣻⣼⡿⠱⣃⡞⠃⡡⠖⣁⣴⠟⢁⡜⠁⠀⠀⠀⠀⠀⢀⠎⠀⠀⣼⣻⠁⡀⡇⠀⠈⢳⡽⣷⣄⠑⡈⠀⢻⣬⢛⠴⣊⠇⢯⡰⣙⠦⣣⡙⢦⢣⠳⣌⠶⣙⢮⡱⢣⢏⢎⡱⠂⠀
// ⡿⣽⣛⣞⡳⣯⢟⡾⡽⣞⣽⣳⠾⣭⢷⣟⢠⡷⢋⡤⠋⣠⡾⠛⡵⡺⠉⠀⢀⠀⡀⠀⠀⢁⠎⠀⠀⢰⣿⢃⢠⢳⡇⠀⠀⠀⠹⡘⢿⣦⡈⢆⠀⠹⡣⡝⢢⡙⠦⡱⡘⢎⡵⣘⢣⡝⢲⡡⠞⡌⡖⣩⠓⠎⠐⠀⠀⠀
// ⡟⠄⠁⠀⠱⣭⡻⣝⢷⣛⢶⣫⢟⣵⡿⣨⡟⣡⢏⣠⡾⠋⢠⡞⡽⠁⠀⡠⠁⠀⠀⠀⢠⡟⠀⠀⢰⣿⣧⢎⢎⢸⠃⠀⠀⠀⢀⣿⠾⠿⡷⡀⢠⠀⢹⣽⢦⡙⢦⠱⣙⠮⢴⣉⠶⣘⠧⡜⡱⡘⠴⣁⠊⠀⠀⠀⠀⠀
// ⢦⣀⣀⢠⠖⣧⢻⡝⣮⡝⣮⢳⢫⣾⣱⢟⡸⣥⡾⢋⡄⣠⠏⡰⠀⠀⡰⠁⠀⡠⢀⣴⡟⠀⠌⣠⡟⠁⡼⡀⠈⡜⠀⠀⠀⠀⠀⢸⣄⣀⣹⣌⠄⢇⠘⡿⢮⣳⡌⢳⡡⢞⡡⢎⡱⢃⡞⡰⢥⡙⠆⠄⠀⠀⠀⠀⠀⠀
// ⢧⡳⢎⡷⢻⡜⣣⢟⡲⡝⣎⡳⣻⡗⣋⢮⣽⢯⡴⠋⣴⢋⡖⡀⢀⣼⠁⢀⢈⣠⣾⠯⠀⣠⣼⣿⣶⣿⣿⣿⣤⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⡄⠸⡄⢹⢧⢳⢻⡡⠞⡬⣑⢎⡱⢍⠲⡑⠦⡑⢈⠀⠀⠀⠀⠀⠀⠀
// ⢧⣙⡳⣜⡣⢽⡱⢎⣳⡙⢶⡩⣿⢱⣺⡿⣹⢏⠴⣹⢇⡞⣰⢣⣾⢏⡜⢢⣮⡿⢉⣄⣲⣿⣿⣿⠿⣿⣿⡿⣿⠂⠀⠀⠀⠀⣿⣏⣿⡿⣿⣿⣿⡀⢱⠘⡜⠎⣧⢻⡘⠴⡡⢎⠰⢉⠒⡉⠐⡀⢂⠀⠀⠀⠀⠀⠀⠀
// ⠞⡴⢳⡜⣱⢣⠝⣎⠶⡙⢦⣹⣧⣿⣿⢛⢧⢫⢼⢫⣾⣱⣯⣿⠟⣼⣬⣿⠋⡐⢤⣾⡿⣿⣿⠉⠲⣛⣯⠕⡸⠀⠀⠀⠀⠀⠘⢘⢓⣃⡿⢷⡞⣷⡌⠄⢣⡘⢼⢸⢌⢣⠱⡈⠆⠠⢀⠀⠡⠐⠠⠈⠀⠀⠀⠀⠀⠀
// ⡹⣜⢣⢞⡱⢊⡳⢌⡚⢥⠓⣼⣷⡟⣥⢋⣎⣷⢎⣽⡿⣭⣿⣵⣿⣫⠞⡁⢦⣽⣾⡉⢑⠢⡉⠛⠒⠚⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⢂⠄⠀⠘⣯⢿⣻⡀⢸⡎⢸⢸⢂⡌⢣⠱⡈⡐⠠⠌⢂⠉⡀⠀⠀⠀⠀⠀⠀⠀
// ⡱⣊⠜⠢⠁⠃⠘⠠⠙⠢⢙⣴⡿⣘⢦⣻⡾⣽⣾⣿⣷⠿⣿⡵⠟⡁⢮⣴⣿⣻⡿⣿⣿⣷⡁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡠⢶⡿⠂⠀⠀⣹⣯⣇⢧⢨⡇⡝⣸⠠⢎⠡⢆⡑⢌⠡⢊⠄⡒⠀⠀⠀⠀⠀⠀⠀⠀
// ⠴⣁⠎⠀⠀⠀⠀⠀⠀⠀⠀⢿⡶⢯⣿⢯⡿⡽⣬⣷⣾⠿⡋⣴⢥⣿⡿⣋⢾⣿⣷⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣷⣻⠸⡇⣿⡷⢃⡜⢨⠑⡢⠘⡄⢣⠁⢎⡐⡁⠐⠀⠀⠀⠀⠀⠀
// ⠢⠅⢎⠀⠀⡀⠀⠀⢀⠀⢄⢺⣏⢷⣟⡺⡴⣿⣿⣟⢣⢧⣟⣵⣿⠏⣴⡏⣿⠀⢻⣿⣹⣿⢣⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⠖⠛⣻⠇⠀⣸⣿⡧⢹⢸⠃⡟⢡⠂⡜⢠⠃⡔⠣⠘⠤⡉⢢⠐⡌⡐⠀⠀⠀⠀⠀⠀
// ⢭⣓⠮⣜⣠⠐⡠⠒⠤⣉⠂⢾⣯⢿⡸⡗⣽⣿⡿⣌⣳⣾⣿⡟⣏⢾⡿⣱⣯⣆⠈⣿⣏⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠁⠀⠀⠰⢡⡿⢀⡏⣞⢸⢁⠆⡱⢈⠆⡱⠈⢆⠩⠄⡑⠤⢁⠐⠠⠁⠀⠀⠀⠀⠀
// ⠀⠈⢁⠒⢾⣿⣿⣿⣶⣤⣍⣂⢿⡷⣯⣹⣿⣿⢳⣼⣟⡾⣿⡼⣼⣿⢣⣿⣷⢩⢷⣼⣿⣼⣿⣿⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢢⡟⠁⡼⣸⠇⡏⠰⡈⢄⠃⡔⠠⠉⡄⢊⠤⢁⠂⠄⠈⠀⠀⠀⠀⠀⠀⠀
// ⡀⠀⠠⠘⣺⣿⣿⣿⣿⣿⣿⣿⣾⣯⣷⡽⣧⣿⡿⣏⣾⡝⡧⣿⡿⣵⣿⢿⣿⢢⠈⠙⢿⣿⢻⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡞⠀⣼⡰⢃⡼⢀⡑⢈⠄⠊⠄⡁⠒⣀⠢⠐⠠⢈⠀⠂⢀⠐⡈⠐⠠⢀⠀
// ⢿⡶⣦⣤⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣷⣹⣿⢸⡱⣯⣿⣟⢣⣿⣿⡇⠄⠀⠘⣿⣟⣿⣟⠤⢤⣀⡀⠀⠀⠀⠀⠀⠀⠀⣀⡜⢀⣴⠟⣠⠋⣀⠂⡐⠈⠄⠃⠄⡁⠂⠄⢂⠁⡂⠄⠂⠐⠀⢂⠄⡁⠂⠄⠀
// ⢆⡙⠶⢩⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣿⣻⡷⣾⡿⢹⣿⣇⠂⠀⠀⢹⣿⣹⣿⡇⠀⠈⠉⠙⣿⡿⣾⢞⠿⢋⣡⣴⠿⠉⠈⠄⠂⠄⠂⠄⠡⢈⠐⡈⠄⡁⠊⠄⠡⠀⠀⠀⠀⠀⠀⠂⢄⠁⠂⠀
// ⠀⢈⠙⠲⠾⣽⣿⣿⣿⣿⣿⣶⣾⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣾⣧⣿⣿⣧⠖⠀⠀⢿⡿⣿⣿⣀⠀⠀⢰⣿⢟⠵⣋⠔⡯⠞⠁⠄⣈⠐⡈⠐⡈⠐⠈⡀⠂⠐⠀⡐⠀⠡⢈⠀⡁⠀⠀⠀⠀⠀⠌⠠⢈⠐⠀
// ⠀⠀⡀⠀⠀⠀⠘⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣷⣦⣤⣼⣿⣼⣿⣿⡷⣆⢾⡇⣨⡞⢁⠚⣦⠴⢦⢤⠀⠂⠄⠁⢀⠁⠐⠀⠈⠀⠐⠀⠀⡁⠀⠠⠐⠀⠠⠀⠀⠂⠌⠐⠠⠈⠀
// ⠀⠀⠀⠄⠁⠀⠂⠀⠀⠀⢩⠟⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣯⣽⣟⠿⣻⣝⢾⣹⣿⣿⣿⣾⣿⣿⣷⣤⣬⠟⠛⢓⢦⡈⠀⢀⠀⠂⠀⠁⠀⠐⠀⠀⠀⠁⠀⢈⠀⠀⡁⠐⠀⠌⠀⡐⠀
// ⠀⠈⠀⡀⠄⢂⡠⠤⠤⠶⣧⠊⠀⣀⣠⣿⣟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⣿⣻⣿⡿⣟⣿⣷⢷⣫⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠧⣼⢿⣧⣀⠀⣀⣠⣐⣈⠀⠠⠀⠂⠁⠀⠈⠀⠀⢀⠀⠄⠂⠀⠂⢀⠀
// ⠀⠀⠁⠀⣴⡯⣳⠖⠉⣸⣇⣀⣮⣵⡿⣟⢫⡝⢭⠛⡟⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⢯⣿⡞⣳⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣖⣬⣿⢿⣿⣿⢿⣝⣦⣄⠀⠀⠐⠀⠀⠈⠀⠀⠀⢀⠐⠀⠀⠀
// ⠀⠔⣚⠉⣟⡰⠁⠀⣠⣽⢛⣿⢟⡧⣛⡬⠃⠜⡀⢣⠘⣆⣶⣽⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⢿⣿⡽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣼⣿⡿⣿⣾⣿⣿⣻⣿⣗⣦⠀⠀⠁⠀⢀⠈⠀⠀⠀⠐⠀
// ⢠⠊⢀⢠⣿⣥⣶⣿⣿⣵⡿⣹⢞⡼⠡⠄⢃⠒⣬⣶⣿⣿⣿⠿⡛⢯⡹⢏⣛⠻⢟⣿⣿⣿⣿⣯⣟⣿⣟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣳⣼⣿⣿⣟⣵⣿⣿⣟⣼⣿⣿⢣⣿⣧⡀⠀⠄⠀⠀⢀⠀⠁⠀⠀
// ⠃⣴⢯⡾⠋⠉⠉⢀⣾⡟⣼⡛⢎⡰⢁⣎⣶⣿⣿⠿⠛⡉⠄⠣⡙⢦⡙⡎⢴⣉⣶⡼⡾⢿⢿⣟⣾⣽⣯⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢿⣿⣿⣿⣿⣾⣿⣿⣫⣿⣿⣿⣿⣆⠀⠀⠈⠀⠀⠀⠐⠀
// ⣿⠷⠛⢿⠷⠶⠞⣿⡻⣼⠋⡘⣠⣵⣿⣿⠟⡛⢁⠂⠡⠐⡈⣴⢜⣶⣽⠿⣟⢿⣹⢚⡵⣋⣞⣻⣷⣯⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⣽⣿⣿⣿⣷⣿⣿⣿⢿⣿⣿⣧⠀⠀⠐⠀⠁⠀⠀
// ⠇⠀⣰⡟⠀⢀⡾⢧⠽⣁⣶⣿⣿⠿⠋⠆⠑⡀⠁⠈⣤⡵⠻⡙⠋⡁⠎⡙⣌⣶⢥⣻⢾⣛⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣵⣿⣿⣿⣿⣶⣮⣝⡛⠶⣤⣀⠀⠀⠂⠀
// ⣶⠟⠋⠀⢠⡟⣱⣋⣶⣿⣿⢫⠱⢈⠡⠈⡀⠄⣬⠟⠃⠌⡁⢀⣂⣥⢾⣿⣹⣾⣾⣿⣿⣿⣿⡿⢍⡿⢹⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⣿⣿⣿⣿⣿⣷⣿⣽⣓⡶⣄
// ⠁⠀⠀⠀⣾⡸⣧⣿⣿⣛⢦⠣⠌⡀⠆⣡⡴⠛⠁⠠⠁⣂⣴⣿⣏⣾⣿⣿⣿⣿⡿⣿⢿⣿⡿⡜⣿⠁⠂⢿⣿⣿⡛⠿⢿⣿⣿⣿⣿⣿⣿⢗⠈⠛⢿⣿⣿⣿⣿⣿⣿⠏⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⠀⢠⣿⣽⢿⡝⡶⣭⢒⡱⢂⡱⠌⠡⢀⠁⢂⣴⣿⣫⣷⣿⣿⣻⣿⣿⣿⣿⣿⣿⣿⣿⢳⣸⡷⠀⠀⠘⣿⣧⣉⠂⢈⣁⠀⡈⢆⣿⡸⠈⠀⠀⠀⠉⠻⢿⣻⣿⣮⠻⡄⢻⣿⣟⢿⣛⣯⢻⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠀⠀⢸⡿⣹⢮⡝⡳⢜⡢⢕⠣⡐⢌⠡⢂⣜⣾⣿⣽⣿⣿⣿⣿⡿⢟⣿⣿⣿⣷⣿⣾⡿⡇⢻⠃⠀⠀⠀⣿⠻⠿⠷⠶⠬⠯⠿⣿⠋⣇⠀⠀⠀⠀⠀⠀⠀⠈⠳⢿⣳⣌⢦⣿⣿⡲⣭⠞⣿⣿⣿⣿⣿⣽⡌⠙⠻
// ⠀⠀⠀⣾⢳⡝⡞⡜⣱⢍⡚⣌⠢⡱⢌⢣⣻⣟⣾⣿⣿⣿⢿⣽⣶⣿⣛⣿⣿⣿⣿⣳⢯⣷⡩⢸⡆⠀⠀⢠⡿⣧⣅⣂⡄⢡⣔⣠⣶⢴⠈⠓⡀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠿⣳⣽⣟⣿⣲⢛⣦⢻⣿⣿⣿⣿⣿⡀⠀
// ⠀⠀⢰⢣⡟⣼⢱⣹⠗⣎⠱⣂⢧⡱⢮⣹⣿⣿⣿⣿⣿⣯⣿⡟⢣⢦⠹⢾⣿⣿⣿⣽⣳⢚⣷⣼⠁⠀⠀⣼⠱⡈⠍⠛⠿⠿⠿⣿⣷⢚⣆⠀⠈⠢⡀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣷⣯⣶⣿⣞⣿⣿⣿⣿⣣⠀
// ⠀⢀⣏⡳⣝⢎⡿⣍⠞⡤⢳⡘⢦⣽⢯⣿⣿⣿⣿⣿⣿⣿⣿⣯⢇⢮⣙⠦⣟⣿⣿⣿⣮⡝⡼⣏⠀⠀⣰⠷⣥⣘⠀⠃⠄⡐⠂⡔⣸⢸⠀⠉⠢⠄⠐⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⣿⣿⣟⢿⣛⣿⣿⣿⣿⣧⠇
// ⠀⡲⣬⢳⣽⣞⠳⣜⡚⠴⢣⣙⡾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⢶⣩⡞⣽⢾⣿⣿⣿⣞⡱⡽⡆⢠⣿⣮⣐⣉⠛⠛⠺⠶⠷⠾⣶⢺⠀⠠⡾⡦⡀⠀⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣌⣻⣧⣛⢯⣿⣿⣿⣿⡆
// ⡘⡵⣭⣳⢏⡮⢳⢬⡙⣭⣳⢟⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢶⡹⣎⢿⣽⣿⣿⣿⣿⣳⣿⣾⣿⣿⣿⣿⣿⣿⣶⣶⣿⣿⣿⢻⠀⠀⠣⣿⠟⡄⠘⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣧⢏⣟⣳⢿⣿⣿⡽
// ⣸⢳⣯⣛⢮⠵⣋⠶⣙⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⢷⡹⣎⣷⣟⣻⣯⣿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣸⠀⠀⠀⠀⢐⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣺⣿⣟⡾⣭⣛⢺⡽⣿⣿
// ⡞⣯⡳⡝⣎⠳⣍⢞⣽⣳⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠉⠁⠆⣼⣿⣯⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡯⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣳⣝⢮⢇⡿⣽⣿
// ⡽⣣⢏⡕⣊⢗⢮⡿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢃⠠⠀⠀⠁⢌⣿⣿⣿⣿⣿⣿⣾⣿⣽⣯⣿⣽⣿⣧⠟⠀⠀⠀⠀⠀⠀⢰⠇⠀⠀⠀⠀⠀⠀⠀⣀⡀⣾⣿⣿⣿⣷⣚⣯⣞⠼⣳⣿
// ⡳⢇⡞⣌⡳⢮⣿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⣷⠈⠀⣠⡾⣯⢾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢄⠀⠀⠀⠀⠀⢠⣿⡄⠀⠀⠀⠀⠀⠀⠀⢉⣿⣿⣿⣿⣿⠿⠿⠾⢞⡻⣙⠦
// ⡝⣎⠼⣎⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣞⣿⣿⣏⢿⣄⡾⢿⣽⢇⣿⣿⣷⣯⣿⡿⢿⣿⣿⣿⣿⣿⣿⣿⡿⣜⠀⠀⠀⢀⣴⠟⠀⢷⣤⠀⡀⢀⡀⣤⡴⠋⠙⠳⣯⡿⣿⣿⢖⡱⣊⠴⣩⡾
// ⡾⣼⢿⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣿⢿⣿⡆⣿⣿⣿⡿⣾⣿⣿⣿⣿⣿⣿⣿⣶⣶⣧⣿⣿⣷⣧⣿⢿⠀⢠⣶⠿⠃⠆⠀⠘⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀⠀⠛⠻⠿⢷⣧⣿⠾⠟⠀
// ⡼⣱⣾⣿⣽⣿⣿⢿⣯⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢲⢿⣫⢿⣾⣖⣻⣿⢳⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⡿⢞⠫⠁⠀⠁⠀⠀⠀⣿⣿⣿⡿⣿⣿⣼⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⡵⣟⣿⣿⣿⣿⢯⣿⣻⣾⣿⣿⣿⣿⡿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣭⢺⠥⣏⢿⣿⣶⣿⢿⣗⣻⣷⣿⢉⠛⠻⠿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⡿⣽⣿⣽⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⣿⣽⣿⣿⣟⣿⡿⣯⣿⣿⣿⣿⣿⡿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⢯⣿⣌⡳⢭⢿⣿⣚⢿⡹⣿⡋⠄⠌⠐⠠⢀⠆⢭⡙⢏⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⢿⡽⣿⢾⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⣿⣿⣿⣻⢾⣽⣻⣟⣿⣿⣿⣿⢯⣿⣟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣼⣣⣏⣿⢿⣞⡿⣴⡉⠆⡈⠄⢡⠈⠞⣤⢋⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣯⣟⣿⣮⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⣿⣿⡷⣯⣟⣾⣳⣿⣿⣿⢿⣽⣟⣷⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡍⡉⠏⠻⠜⡸⢛⠿⣿⣴⣀⢎⠰⣈⠞⣴⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣳⢯⣿⡧⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⣿⡿⣽⡳⣽⣺⣽⣷⣿⢿⣻⢷⣻⢾⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠐⠀⠀⠀⠀⠄⠉⠘⠌⢛⠿⠾⡷⠿⠾⠋⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⢯⡟⣾⡗⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⣿⣟⢧⡟⣶⢯⣟⣯⡿⣯⢯⢷⣯⢿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠁⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⢯⣝⣿⣿⡔⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⣿⢞⣧⢻⣼⣻⡽⣏⠿⣜⣻⢾⣽⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣟⣯⢞⡾⣿⢻⠀⠀⠀⠀⣀⠀⠀⠀⢀⡰⣞⣯
// ⣿⢺⡬⣓⢮⡳⣝⢮⡻⣽⡽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣻⠾⣭⢞⣿⣏⡇⠀⠀⣿⣽⣶⡠⣄⢾⣽⣟⠃
// ⣏⠷⡸⢥⢳⣙⢮⡳⣽⣳⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠄⣿⣿⣿⣿⣿⣻⣽⣻⡜⣯⣿⣇⡇⠀⠈⣷⣿⣿⣷⣯⣿⡽⢊⠀
// ⣏⢞⡱⣋⡞⣬⢳⣽⣳⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠏⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⣐⠀⢘⣿⣿⣿⣿⣻⣽⣳⢧⣛⠶⣿⣿⢢⠀⡰⢯⣿⣿⢿⣽⣳⢿⣥⠂
// ⣏⠮⣕⣣⡝⢮⣟⣾⣽⣿⣿⣿⣿⣿⣿⣿⣿⠏⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣲⡏⠀⢘⣿⣿⣿⣿⢯⡿⣽⡳⣭⢻⣽⣯⢹⣾⣽⣿⣿⣯⡟⣶⣹⣿⣾⣟
// ⣎⠿⡴⣓⣾⢻⣾⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢢⡿⠀⠀⢘⣿⣿⣿⣿⢯⣟⡷⡽⣎⣟⣾⣷⢚⣿⣿⣿⣿⣿⣽⣾⣷⣿⣻⣾
// ⣎⢯⣵⣻⣞⣿⣿⣿⣿⣿⣿⣿⣿⡿⢃⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⠒⠇⠀⠀⢈⣿⣿⣿⣟⡿⣞⡽⣳⡝⣮⢿⣿⣎⣿⣿⣿⣿⣿⣿⢿⣾⠳⡝⢺
// ⣮⢷⣯⣷⣿⣿⣿⣿⣿⣿⣿⣿⠟⡀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠌⠀⠀⠀⢰⣿⣿⣿⡿⣽⢞⣳⢧⡻⣼⣻⣿⠴⣿⣿⣿⣿⣿⣿⣟⢧⢃⠈⢄
// ⣿⣾⣷⣿⣿⣿⣿⣿⣿⣿⡿⠋⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠌⡀⠀⠀⠀⣸⣿⣿⣿⣟⣧⢟⡧⢯⣳⢷⣻⣿⣞⣿⣿⣿⣿⣿⣿⡾⣏⣦⣳⢮
// ⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⢂⠄⡁⠂⠄⣿⣿⣿⣿⢿⡜⣯⢞⣯⠿⣽⣻⣿⢼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣿⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠰⢈⠔⡂⢅⠊⣼⣿⣿⣿⣿⣻⢼⣣⣟⣾⣻⡽⣿⣿⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡐⢄⠊⠴⡈⠴⣈⢒⣿⣿⣿⣿⡿⣝⢮⡳⢾⣱⣯⣟⣿⢃⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠢⡐⠌⡜⢢⢉⠲⢄⢮⣿⣿⣿⣿⢿⡹⢮⡽⢯⣷⣻⣾⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠂⢆⠱⡘⢄⢣⠘⣂⠎⣼⣿⣿⣿⣟⡯⣝⣳⡟⣿⣞⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡁⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⡌⠢⡑⠌⡌⢢⢉⠤⢩⣿⣿⣿⣿⢯⣳⠽⡾⣽⣳⣯⣿⡇⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢁⠰⠁⢆⠱⠈⡄⠂⠄⢻⣿⣿⣿⣯⡗⣯⢿⣽⣳⣿⣽⡿⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠐⡀⢂⠍⡠⢂⠁⠀⠐⠈⡸⣿⣿⣿⢮⡽⣞⡿⣾⣽⣻⣿⣃⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠂⠤⠁⠎⡐⠄⠀⠀⠀⠀⠀⡑⢼⣿⣯⢟⡽⣯⣟⣷⣿⣿⡙⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⡠⢊⠔⡩⠐⠀⠀⠀⠀⠀⠀⠀⠐⡸⣿⣞⣯⣟⡷⣿⣾⣿⣿⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⢈⠐⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠀⠀⠀⠀⠀⣄⢣⠰⡁⠎⠄⠁⠀⠀⠀⠀⠀⠀⠀⠠⠁⢻⣞⡷⣯⣟⣷⣿⣏⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠄⡊⠄⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣇⠀⠀⢤⣳⡾⢇⢣⠘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢡⠘⣿⣽⣳⣿⣿⣯⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⠌⡐⠠⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡤⣉⣾⢏⣱⢎⠡⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⢿⣳⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⢂⠥⠁⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣷⣿⡷⡞⡃⠎⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⡇⢸⣿⣿⣯⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⡌⠄⢃⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡟⡜⡡⠘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⡇⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣇⡘⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣟⠰⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢁⠂⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣷⠠⡁⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡁⠀⠀⢸⡏⠆⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⢌⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⡅⡐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⡁⠀⢘⣇⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠌⡨⢄⡿⣹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⡇⠜⡀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠁⡀⠀⢈⡧⠌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣠⣴⢾⡛⡽⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣦⡡⠐⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠂⠄⡀⠨⣷⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣴⣻⡭⣭⠱⣜⣦⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⡿⣷⢶⣤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠌⡐⠀⢰⣯⣧⣤⣄⣄⣠⣠⣤⣤⣶⣿⣿⣿⣿⣷⣿⣿⣿⡿⣿⣽⣤⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣷⣯⣞⡼⣩⢿⡟⠲⠶⠤⢤⣄⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢈⡐⠤⠁⣾⣿⣿⣿⣾⣷⣯⣷⣶⣷⣾⡿⢿⣿⣻⢿⣽⣧⣿⣿⣿⣿⠋⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⠿⣿⣷⣷⣾⣧⡑⠌⡐⠠⠀⢀⠉⠙⣻⠟⡛⢳⠲⣖⠶⠾⢾⢳⠷⡾⢶⡿⣿⣿⣿⣿⣿⣿⣿⣯⣿⣾⣶⣿⣿⡾⢿⠿⢿⡻⢟⡽⣺⢼⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣷⣮⣝⣻⣟⡿⣿⣷⣶⣧⣤⣄⣂⣤⣨⢑⣣⠳⣜⣏⡻⣬⢳⣫⡝⣧⢽⣿⣿⣿⢻⣟⢛⡹⠩⠍⠩⢁⠒⠤⢑⠊⡜⢢⡙⢮⡱⢧⣻⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⡿⣟⡿⣿⢿⣿⣿⣷⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣷⣿⣷⣿⣿⣿⣿⣿⣿⢾⡹⣏⠲⡄⠣⠌⣁⠊⢌⠢⡁⠞⣠⠣⡜⢣⡝⢮⣹⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣽⢻⣜⢯⣿⡐⠦⠡⢉⠉⠉⠉⠋⠛⠛⢛⠛⡟⡻⢟⡿⢿⠿⣟⡿⣻⢽⣿⣿⣯⢟⣿⠳⣌⠱⡈⠤⡘⢄⠣⡘⢔⡡⢒⡍⣲⡙⢮⣹⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣞⣟⡮⣗⣿⣍⠲⡁⢆⠐⡀⠀⢀⠂⠡⡈⢆⠱⡑⠮⣜⣣⢟⡼⣳⡝⣾⣿⣿⣯⣛⣿⠳⡌⢆⡑⢢⠑⡌⡒⡡⢎⠰⢣⠜⡴⣩⢓⢾⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⡿⣼⡝⡷⢾⣧⢣⡑⠌⡐⠀⠌⢀⠈⠤⡑⢌⠒⣍⠺⢴⣩⢞⡵⣣⡟⣾⣿⣿⣳⡝⣾⡝⡜⡄⠎⣄⢃⡒⣡⠱⣈⢇⠣⢞⣡⢳⣋⡞⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣷⡻⣽⣛⢶⣣⠜⢢⠑⣈⠐⡀⠎⠰⣈⢌⠚⡤⢛⠦⣝⢮⡝⣧⣛⣿⣿⣿⢷⡻⡼⡟⡴⣈⠧⣐⠊⡔⢢⠱⡌⢎⡹⢎⡖⢯⡼⡜⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
// ⣿⣿⣿⣿⣿⣿⣷⣟⣧⢟⣳⢮⡙⢆⠱⡀⠆⠐⡈⠑⡠⢊⠱⣌⡙⢮⣙⢮⡽⣲⢏⣿⣿⡿⣯⢷⡹⣿⠴⣡⠒⠥⠚⡌⠥⡓⡜⡬⣓⢭⣚⢧⡳⡅⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿

// ⠐⠀⠀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠂⢀⠀⠁⠀⠂⠀⠐⠀⠀⠂⠀⠐⠀⠠⠀⠀⠄⠀⠠⠀⠀⠄⠀⢀⠀⢀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⠀⠳⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠠⠐⠀⡀⠠⠀⠁⠀⠌⠀⠄⠁⠠⠐⠀⠠⠀⠄⠂⠀⠄⠀⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣁⣤⣴⠶⠓⠛⠛⠉⠛⠓⠒⠯⠭⣉⡉⠓⠲⠦⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠀⠠⠀⠀⠀⠀⠄⠀⠀
// ⠀⠀⡀⠀⠀⠄⠂⠀⡀⠠⠀⠀⠄⠀⠠⠀⠀⡀⠀⠄⠀⠐⠀⠀⡀⠈⠀⠀⠂⠈⢀⣤⠾⠛⠫⠘⠀⣀⡴⠂⠀⣠⠞⢀⡶⢃⠀⠀⡉⠳⡄⢀⡀⠈⠙⠲⢤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⢀⠀⠐⠀⢀⠠⠀⠀⢀⠠⠀⠀⠐⠀⠀⠄⠀⢀⠀⠄⠂⠀⢀⠀⠀⠐⠀⣠⣴⡿⠣⠉⠀⠀⣠⡾⠉⠀⢀⠜⢁⡴⠋⢠⠇⠀⠀⣧⠀⠘⢦⠈⠳⣄⢀⠀⠉⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⡀⠄⠂⠀⠀⢀⠐⠀⠀⢀⠈⠀⠀⠂⠀⠠⠀⠀⠀⡀⠄⠀⠀⠀⣢⣞⣿⠫⠀⡀⠀⣠⣾⠟⠀⠀⢠⠋⣠⢏⠄⢀⡏⠀⡎⠀⢹⠀⠀⠈⣇⠀⠈⠢⠈⠲⡄⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⢀⠀⠀⡀⠐⠈⠀⠀⠀⠂⠀⢀⠀⠁⠀⠐⠀⢀⠀⠁⠀⠀⢀⢈⡾⣭⠟⡁⠀⡔⠀⡴⡿⠃⠀⠀⠀⣧⣰⢫⠂⠀⣼⠀⢸⠃⠀⢸⡄⠀⠀⡼⡄⠀⠀⠆⠀⡈⢢⡀⠈⢣⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⢀⣀⠀
// ⠀⠀⡀⠄⠀⠀⠄⠐⠈⠀⢀⠐⠀⠀⠠⠈⠀⢀⠀⠀⡀⠂⠈⣰⠯⣵⠏⡐⠀⡜⠀⣼⡟⣡⠂⠀⠀⣼⣱⡟⠆⠀⢀⡏⢰⣸⠀⠀⠀⣇⠀⢈⡇⢷⠀⠀⠀⠀⢳⡀⠘⢦⠀⠹⡄⠀⠀⢀⣤⠴⠖⠛⠉⠁⠀⠀⠀⠀
// ⠀⠀⠀⢀⠀⠂⠀⡀⠄⠐⠀⠀⠀⠂⠀⠀⠄⠀⠀⠄⠀⠀⣴⢟⡾⠃⡞⠀⡘⠀⢸⡟⣠⠃⠀⢀⣾⢧⣿⠛⠀⣴⢸⠇⠸⡇⠀⠀⠀⢸⡀⠀⣧⢸⡆⠀⠀⠀⠀⣇⠀⠀⢳⠀⠹⣤⠶⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠁⠀⢀⠠⠀⠀⠀⡀⠄⠈⠀⢀⠈⠀⢀⠀⠂⠀⢀⣾⠯⣾⠃⣼⠁⠠⠁⠀⣿⣰⠃⠀⠀⣼⣿⡟⣟⣀⣀⡇⢸⡃⠀⢿⠀⢠⠆⠀⢧⠀⣿⣰⠇⠀⠀⠀⠀⢸⠀⠀⠀⢧⢠⠹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠈⠀⠀⠀⡀⠀⠁⠀⠀⡀⠐⠀⠀⠠⠀⠀⠠⣰⣿⡟⣸⠇⢠⡇⠀⠄⣀⣼⣧⡿⠖⠞⢻⣟⡟⠙⡏⠁⢸⡇⠘⡇⠀⠈⢧⢸⡄⠀⠘⣿⠛⣿⡀⠀⠀⠀⠀⠸⡆⠀⠀⠘⣾⡵⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠁⢀⠈⠀⠀⢀⠐⠀⠀⢀⠀⠄⠂⠀⠀⠐⣼⣿⡟⢠⡟⠀⢸⠃⠀⠄⠉⣼⣿⠁⢀⠀⣼⣿⠁⠈⡇⠀⣸⣇⡀⢿⡀⢀⠈⢻⡄⠀⠀⠸⣿⣿⣇⡀⠀⠀⠀⠀⡇⠀⠀⠀⢣⡇⢿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠄⠀⠀⠄⠈⠀⠀⢀⠈⠀⠀⠀⢀⠀⢁⣾⡟⡾⠁⣾⠃⡈⢼⣻⠀⠂⠀⣿⣿⠀⠀⢠⣿⣿⠀⠀⣿⠀⣿⣿⡇⠸⣷⠘⣧⡄⠙⢦⡀⢐⡏⠻⣟⠉⠓⠦⣄⠀⡇⠀⠀⠀⠈⣧⠸⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⢀⠠⠀⠂⠀⠀⠠⠀⠁⠀⠀⣼⡟⢸⠇⢸⡿⡄⠐⣸⢹⡄⠡⢰⡿⣿⡄⠂⢸⠹⣿⠀⠀⢻⡆⡿⣿⣷⢤⡘⣷⣜⣿⣷⡶⢽⣶⣧⡤⢹⡗⠄⠀⠈⢹⡇⠀⠁⠀⠀⢿⠀⡿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠂⠀⠀⠠⠐⣸⣿⢁⡿⠈⣿⡗⣯⠀⢼⣿⣧⠐⢸⣇⣸⣿⣾⣿⣤⣿⣆⠀⠈⣿⣽⡘⢿⣽⣧⠀⠙⢿⠛⣷⣄⠠⡇⠀⢸⡷⠀⠀⠀⣼⡏⠀⠈⠀⠀⢸⡀⢿⢹⡆⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⢰⣿⠃⣼⣹⠖⣿⢹⣿⠀⠸⣿⣿⣿⣿⡿⡿⢿⣟⢿⣿⣿⣿⣇⠀⠘⢎⠳⣈⣿⣿⣷⡀⢸⡀⠈⢿⣦⣇⠀⠀⣿⠀⠀⢠⣿⠇⠀⠨⠀⠀⢸⡅⢸⣈⣷⠀⢀⠀⡀⢀⠠⢀⠂
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⢸⣿⢠⣟⣿⣀⢻⣿⣿⡀⢁⢻⣿⠈⠻⣇⠀⢿⣿⣿⣹⣏⣿⠙⠃⠀⠀⠀⠈⠙⢿⢿⣟⡮⣧⣴⣿⣿⣿⣿⣾⣿⡄⢀⣾⣿⠀⠀⢸⠀⠀⣾⠁⢸⡇⣿⡇⢂⢂⡡⠆⠲⣄⠂
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢸⣿⢸⣿⣿⡆⣻⣾⣿⣧⢂⠸⣿⡀⠀⠈⢄⠈⠻⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⣽⣯⡽⣿⡿⢿⢻⣿⡟⣿⡇⡀⠀⢸⠀⣰⢿⠂⢸⡇⢿⡇⠈⠀⠀⠀⠥⡘⣇
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠻⣿⣿⣿⣱⡿⣿⣿⣿⣎⣆⢻⣧⠀⠀⠀⠉⠓⠒⠒⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣷⣿⣷⠆⠘⣽⢟⡿⡽⠀⠀⣾⣸⢿⣼⠀⢸⡇⢸⡇⠀⠀⠀⠀⢢⠑⢼
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿⣎⡇⣿⣿⣿⣾⣹⣎⣿⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠖⠒⢄⠀⠀⠀⠀⠀⠢⣍⣛⣛⡁⠀⠈⠁⣸⣿⠃⢀⣸⢯⣿⢸⠍⠀⣾⠇⣼⡇⠀⠀⢠⠘⠤⡉⢆
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⣸⣿⣿⣿⣿⣿⣇⢻⣿⣿⣾⣿⣏⢷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠈⠇⠀⠀⡨⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⠇⡐⢠⡿⣼⠇⣻⢀⣤⣿⢠⣿⠀⠀⠐⢢⡉⠖⣡⢂
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣠⣀⣀⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢿⡦⠭⠓⠂⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⢧⡜⣤⣿⣷⢿⢀⡟⣼⣿⣏⣾⠃⠀⢠⠉⢦⡘⡘⠴⣈
// ⠀⠀⠀⠀⠀⠀⢀⣤⠶⠟⠛⢉⣩⣽⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⠿⣿⡣⣟⣼⣯⣿⣏⣠⣿⣿⣿⣿⠟⠁⠀⡐⢂⡍⠲⣌⢱⠣⡜
// ⠀⠀⠀⠀⢀⡶⠋⠁⢀⣤⢞⡿⢟⡿⣻⡽⢛⠉⢉⡛⠻⢿⣿⣿⣿⠏⠙⠿⣷⣆⠀⠀⠀⠀⠀⠀⠾⣟⠋⠓⠒⠲⠦⣤⣀⡀⠀⠀⠀⠀⠀⠘⢉⣡⣾⣧⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⠤⡑⢬⡐⢣⡜⢪⡱⢜
// ⠀⠀⠀⢠⡟⠁⢀⡴⣫⠞⢉⣴⣫⡾⠉⢀⣼⠏⢋⠀⠀⠀⠘⣿⠻⡄⠀⠀⠈⠙⢧⡀⠀⠀⠀⠀⠀⠈⠉⠒⠒⠶⠖⠚⠋⠁⠀⠀⠀⠀⠀⠀⠉⢉⣽⣿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣅⠀⠀⡜⢠⡑⠦⡘⡵⢊⢧⡙⣬
// ⠀⠀⠀⢸⠀⣴⢋⡴⠃⣰⢏⡼⠋⠄⢠⡞⠁⠌⠀⠄⢠⠀⠀⣿⡆⠹⡄⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⡴⠟⣿⣭⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣀⣐⡄⢣⠘⢦⡹⡜⣭⢒⡹⡼
// ⠀⠀⠀⠈⡾⢁⠎⠀⣼⡿⢋⡴⠃⢠⡟⠀⠀⠀⣰⠀⢸⠠⠀⡇⢳⠀⢻⠀⠀⠀⠀⠀⢸⣿⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⠶⠛⠉⠀⣸⡟⣻⡿⠛⣿⠋⢈⠛⢏⠀⠈⠳⣬⡙⠯⣓⠿⣆⣳⠱⢦⣋⠶⠃
// ⠀⠀⠀⢸⢃⡟⠀⣼⠳⢡⡞⠁⢠⡟⠀⠀⠀⢠⡿⠀⠼⡐⣶⠃⢸⠧⣼⠃⠀⠀⠀⠀⢸⣿⣿⣿⣷⣄⡀⠀⠀⣀⣀⣤⣴⣶⣿⣿⠃⠀⠀⠀⢰⣿⢟⣡⡟⢠⡿⠀⡊⢱⠈⠙⢦⣄⠈⢿⣳⣌⠳⣬⡛⢿⣢⣽⠁⠀
// ⠀⠀⠀⢸⢸⡇⢰⠏⣰⡿⠀⢀⣿⠁⠀⠀⢠⣿⠇⠀⢃⣼⡏⠀⣾⢡⡏⠀⠀⠀⠘⠀⠨⣷⣻⣿⡳⣟⡿⣻⢟⡻⣽⢿⣿⣿⠛⢹⠀⠀⠀⠀⣿⢋⣼⡟⠀⢸⠇⠀⠀⢰⡆⠀⠀⢻⣧⠈⢷⡹⣦⡈⢿⣦⡙⢇⠀⠀
// ⠀⠀⠀⠸⣿⡆⡟⢠⣿⠁⠀⣸⡇⠀⠀⠀⣾⠝⠀⠘⣰⠏⠀⢰⣧⡞⠀⠀⠀⠀⠀⠀⠀⣿⠡⢻⣿⡼⣳⢏⣯⢳⣭⠟⠁⠀⠈⢺⠀⠀⠀⣼⡏⣼⣿⢀⠀⣻⠀⢸⠀⠘⡇⢀⠀⠈⢾⡧⡈⢷⣹⣧⠸⡿⠉⢻⡳⡄
// ⠀⠀⠀⠀⠙⣿⡇⣾⡇⡀⠀⣿⠀⠀⠀⣸⠃⠀⠜⣸⡏⠀⢠⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⣯⠱⠀⠘⣻⣵⣫⣾⡿⠃⠀⠀⠀⠀⢸⠀⠀⢰⣿⡡⣿⣿⠀⢂⣿⠀⢸⠀⠀⠇⢸⡄⠀⠈⢿⣱⠈⢿⣿⢀⡇⠀⠀⠱⡄
// ⠀⠀⠀⠀⣠⣿⢰⣿⢰⡇⢸⡏⠀⠀⢰⡇⠀⠀⢰⠋⡇⢠⣯⠏⠀⠀⠀⠀⠀⠀⠀⠀⢀⡇⢢⡕⠃⠀⠀⣡⠎⠀⠀⠀⠀⠀⠀⢸⠀⠀⣾⢻⣿⣿⣿⠀⣸⢸⠀⣿⠀⠀⠈⢸⡇⢠⡀⠘⣿⣇⠸⡯⡼⠃⠀⠀⠀⢻
// ⠀⠀⠀⢰⡿⣿⣼⡇⣿⡇⣸⡇⠀⠀⣾⠃⣀⢸⡏⠀⢧⢿⠏⠀⠀⠀⠀⠀⠀⠀⢀⣤⠞⠐⡀⢇⠀⠀⠈⠁⠀⠀⠀⠀⠀⠀⠀⠈⢧⣼⣇⠚⣿⣯⣿⣇⢾⡘⢿⣿⡇⠀⠀⠀⣿⠘⡇⠀⢹⣿⡤⢿⠁⠀⠀⠀⠀⠈
// ⠀⠀⠀⣿⠁⣿⣿⡱⢏⡇⣽⡇⠀⠀⣿⢰⡇⣿⠁⠀⢸⡾⠀⠀⠀⠀⠀⢀⡤⠖⢛⣿⡖⠐⠀⠸⡄⠀⠀⠀⠀⠀⢠⡏⠀⠀⠀⠀⣸⡏⠛⠾⣽⣿⣿⣿⣿⡇⠈⣿⣿⡀⠀⠀⢻⡄⣷⠀⢘⡿⣿⠈⡇⠀⠀⠀⠀⠀
// ⠀⠀⣸⡇⠀⢹⣿⣱⢋⡇⢿⣇⠠⠀⣿⡿⣾⡟⠀⢀⠀⣹⣀⣠⡤⠶⠋⢡⠤⠂⠀⢸⣧⠀⠀⠀⣧⠀⠀⠀⠀⢀⡏⠃⠀⠀⠀⢀⣿⠁⠀⠀⠀⠉⠛⠿⢿⣿⣤⣿⣽⣷⣀⡀⢸⠅⣿⠀⢸⡀⢸⡀⣷⠀⠀⠀⠀⢀
// ⠀⠀⣿⠀⠀⠀⢻⣧⢋⣧⢹⣿⣸⣆⣿⣥⡟⠋⠉⠉⠉⠀⠐⢲⣤⣦⣅⣑⣲⣤⣀⠀⣿⡆⠀⠀⠙⠂⠀⠀⠀⡞⠀⠀⠀⠀⠀⣼⣏⣤⣭⡕⠒⠒⠊⠀⠁⠀⠀⠀⢠⠀⠈⠉⠙⠛⢻⣥⣸⡇⢸⡇⢹⠀⠀⠀⢀⡞
// ⠀⢀⡇⠀⠀⠀⠘⣯⣟⣹⡼⣿⣽⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠙⠛⠛⠛⠻⠿⠿⣿⠧⠿⠟⠻⢄⠀⠀⣠⠤⠛⠛⠀⢀⣿⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⢧⢨⡇⣼⠀⠀⠠⠋⠀
// ⠀⢸⡇⠀⠀⠀⠀⠹⣶⣣⣿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣇⡏⠀⠀⠀⠀⠀
// ⠀⠸⡇⠀⠀⠀⠀⠀⢈⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢿⣆⡀⠀⠀⠀⠀⠀⠀⠀⠀⣸⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡁⠀⠀⠀⠀⠀
// ⠀⠀⢿⠀⠀⠀⠀⢀⡞⠌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠨⢿⡗⠀⠀⠀⠀⠀⠀⠀⢀⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢣⠀⠀⠀⠀⠀
// ⠀⠀⠘⣆⠀⠀⠀⣼⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⡇⠀⠀⠀⠀⠀⠀⣾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡇⠀⠀⠀⠀
// ⠀⠀⠀⠘⣄⠀⠀⣿⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣧⡀⠀⠀⠀⠀⣼⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡜⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀
// ⠀⠀⠀⠀⠘⢷⣄⣿⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣧⠀⠀⠀⢰⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡾⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣹⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠈⠙⣿⡀⢂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣿⣷⣶⣶⣿⣅⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⡇⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⢻⢆⠀⢂⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣭⣭⣭⣭⣿⣿⣍⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣧⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⣸⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⢸⢎⡰⠀⠄⠀⠀⠀⠀⠀⡐⢈⣼⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣭⣭⣿⣿⣿⣿⡃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠹⣼⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢼⡀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠘⣧⢒⠡⠀⠄⠀⠀⠄⠡⢀⡼⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⠉⠉⠉⠉⠉⢹⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠙⣄⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⢀⣿⡌⢣⠈⠄⠡⠈⠄⣁⡾⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢐⣿⣿⣿⣦⣤⣤⣤⣤⣼⣿⣿⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢇⠀⠀⠀⠀⠀⠀⠀⠀⣿⣀⠈⢆⠀
// ⠀⠀⠀⠀⠀⢀⡴⢋⣹⣎⠱⢊⠠⠁⠌⡐⣼⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣆⠀⠀⠀⠀⠀⠀⢀⡇⠈⠣⡀⠀
// ⠀⠀⠀⠀⢠⣾⡶⠛⢡⣯⡅⠣⠄⡑⠠⣼⠃⠀⠀⠀⠀⢀⣤⡂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣷⣿⣿⣿⣿⣿⣟⣿⣷⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣹⣲⢦⡀⠀⠀⠀⠸⡆⠀⠀⠀⠀⠀⢸⣷⠄⠀⣷⡀
// ⠀⠀⠀⠀⣾⡏⠀⠀⣾⢹⣎⡑⢆⠐⢠⡏⠀⠀⠀⠀⢰⢻⣿⣭⡗⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠿⣿⣿⡿⠿⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⢉⣧⣾⣏⠹⡄⠀⠀⠀⢻⠀⠀⠀⠀⠀⢸⡿⠀⠀⡞⢷
// ⠀⠀⠀⠀⢿⣷⣀⠀⣷⡾⣷⡈⠦⠈⢼⠃⠀⠀⠀⠀⠸⣌⠙⠖⣅⡤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⣌⣉⢹⣼⠞⠁⠀⠀⠀⣼⡆⠀⠀⠀⠀⢸⡅⠀⣰⢃⡞
// ⠀⠀⠀⠀⠀⠙⠛⠉⠺⣇⣿⢌⡓⢈⢺⡄⠀⠀⠀⠀⠀⠈⠙⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠁⠀⠀⠀⠀⠀⣿⠇⠀⠀⠀⠀⢸⡉⠛⠛⠉⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣹⢦⢹⠀⢺⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⢠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣻⠀⠀⠀⠀⠀⢺⡄⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⢎⡰⠁⢿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣟⣧⡜⣷⣌⠄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⠇⠀⠀⠀⠀⠀⢽⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣟⢢⠱⡈⠌⢿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣴⣿⠟⠋⠈⠓⢮⣝⣳⣤⣁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⠋⠀⠀⠀⠀⠀⠀⣹⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⢢⠝⡐⠌⡄⡙⢳⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣿⠿⠋⠁⠀⠀⠸⠀⠀⠉⠓⠾⣝⣳⢦⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⠟⠁⠀⠀⠀⠀⠀⠀⠀⣼⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡜⢬⢣⠘⠰⢠⠁⣿⢛⠳⡶⣤⣤⣤⣤⣤⠶⣶⣻⡿⠟⠋⠁⠀⠀⠀⠀⠀⠈⠀⠀⠀⠄⠀⠀⠉⠛⠺⠯⣿⣳⣶⣶⣶⣶⡶⠶⠟⠛⢹⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡏⣆⠣⣍⠒⣡⠊⣿⠈⡓⠲⢥⣾⣴⡧⠾⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⢀⠀⠀⠀⠀⠀⠀⠀⠀⡿⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡷⣌⠳⡌⡒⢄⠊⣿⠀⢂⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠄⠠⠀⠀⠀⠀⠀⠀⠀⠀⣏⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⢰⠣⡜⣡⠊⠔⣹⠀⠀⠄⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠌⠠⠁⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⢣⡝⠴⡡⢎⠰⢹⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠨⣿⢀⠂⠡⠀⠀⠀⠀⠀⠄⠀⡇⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣧⢚⠥⡓⣌⠢⣙⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡆⢈⠡⢀⠀⠀⠄⠂⠌⠐⡇⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣯⢎⠲⡱⢨⡑⠤⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣽⣆⠐⡡⠐⣀⠂⡁⠎⣘⡇⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣎⢣⡑⢣⡘⠄⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠘⠻⣧⣀⠱⢀⠆⣑⠢⢸⡇⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣧⠚⡄⠃⡜⠰⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢾⡇⠈⢄⡀⠛⠳⢌⠒⠤⡃⣽⠀⠀⠀⠀⠀⢸
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⢩⠐⡡⢂⡑⢼⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣧⠁⢂⠰⢁⠲⠨⠜⡰⢱⣿⠀⠀⠀⠀⠀⣸
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣣⠘⠄⡡⢐⣺⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠃⠀⢻⡌⠐⣀⠣⢌⡑⣊⣴⡿⠃⠀⠀⠀⠀⠀⣟
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡟⣆⠈⠔⣡⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡜⠁⠀⠀⠀⢿⣆⢀⣢⡴⢺⡿⠋⠀⠀⠀⠀⠀⠀⢠⢟
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣗⣹⠀⢦⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠊⠀⠀⠀⠀⠀⠈⢿⣌⣳⠞⠉⠀⠀⠀⠀⠀⠀⠀⠀⢸⢺
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⠴⣩⡾⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢫⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡞⣭
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣷⠟⡰⢀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣆⡀⠀⠀⠀⠀⠀⠀⠀⢀⡟⣲


// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣹⣾⣿⣿⣿⣄⡾⢻⣯⣿⠿⣿⣷⡀⠈⢧⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⡶⠶⠖⠲⠖⢶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣶⣭⣿⣇⢻⣿⣿⣖⣲⡿⣿⣌⣿⠶⠶⠶⠖⠒⠲⠶⠲⠶⠶⢦⡄⠀⠀
// ⠀⠀⠀⡇⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⡿⣿⣍⠻⣿⣡⣴⠋⠘⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡇⠀⠀
// ⠀⠀⠀⠁⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣽⣾⣷⣿⣿⣆⢻⣷⢿⡀⠀⢻⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠀⠀
// ⠀⠀⠀⡄⠀⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣻⡏⣿⡟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠁⠀⠙⡏⠙⢧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⡇⢀⣸⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣧⣾⣵⣿⠨⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣤⣀⣿⠀⠀⠻⣄⠀⠀⠀⠀⠀⠀⠀⢸⠂⠀⠀
// ⠀⠀⠀⡇⢠⣿⣿⣿⣿⣿⣿⣿⣿⢏⣿⣿⣿⣿⣿⣿⣿⠙⠿⣿⡿⠻⡏⠀⣿⣿⣿⣿⣿⣿⢟⣿⣏⣿⣿⣿⣿⣿⣭⣉⣁⠀⠀⠙⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠐⣧⣾⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⡿⡇⠀⠀⠈⠀⠀⠀⠀⢻⣹⣿⡿⠟⢡⡾⠁⠘⣿⣿⡇⢿⣿⢿⣿⡏⠉⢢⡀⠙⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⡏⠛⣿⣿⣿⣿⡿⣿⢻⣧⠀⠀⠀⠀⠀⠀⠀⠖⠛⢿⣇⣼⣯⡀⢀⣼⣿⣿⣧⣼⠟⢉⣉⣁⠀⠀⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⠀⠹⣦⡀⠀⠀⠀⠀⠀⠀⠀⠈⠿⣿⠟⢻⣯⣽⣿⣿⣿⠏⠀⠉⣿⠉⠑⢂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠀
// ⠀⠀⢸⣷⣿⣿⣿⣿⣿⣿⣿⣖⣿⣿⣿⣿⣿⣿⣿⠀⠀⠈⠁⠀⡀⠀⠀⠀⠀⠀⠀⠀⠈⠀⢈⣽⣿⣿⣿⣿⣿⡇⠀⠻⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢐⠀⠀⠀
// ⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⡟⠻⡇⠀⠀⠀⠀⠙⠲⢤⠀⠀⠀⠀⣀⣤⣴⣿⣿⣿⣿⣿⣿⣿⣧⡝⠛⠁⠘⣷⡄⠀⠀⠀⠀⠀⠀⠀⠰⡀⠀⠀
// ⠀⢀⡿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠸⣿⣆⠀⠀⠀⠀⠀⠀⢸⡄⠀⠀
// ⠀⢸⢏⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⣿⡍⢉⠻⣦⡀⠀⠀⠀⠀⣀⣠⣤⣴⣴⣾⣿⡿⣻⣿⣿⣿⣿⣿⣏⡿⠀⠀⠀⠀⠀⠙⢾⡂⠀⠀⠀⠀⠀⢸⡄⠀⠀
// ⠀⣾⠠⣿⣿⣿⣿⣿⣿⣿⡿⣷⢹⢻⣿⣿⣿⡅⠂⢁⠘⠻⣶⠖⠛⠛⠉⠉⢠⣿⣿⣿⣡⡾⢿⠟⠛⠻⢿⣇⣿⣧⠀⠀⠀⠀⠀⠀⠈⣷⠀⠀⠀⠀⠀⢸⠃⠀⠀
// ⠀⣿⠐⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⡟⣿⡧⠀⢀⠀⠀⡿⠲⠦⠤⢤⣴⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⠙⢿⡷⠀⠀⠀⠀⠀⠀⠀⠸⡇⠀⠀⠀⠀⠈⠀⠀⠀
// ⠀⣿⣭⣿⣿⣿⣿⣿⣿⣿⣿⡘⠋⢻⣽⣿⠹⣷⠀⠀⠁⠀⠇⠀⠀⣠⡾⢿⢻⣿⣿⡟⣧⡀⠀⠀⠀⠀⠀⠀⠀⠹⣄⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⢀⠀⠀⠀
// ⠀⢻⢶⣿⡘⣿⣿⠿⠛⠋⠁⠀⠀⠀⠙⢿⡄⠙⠓⠦⠀⢀⣠⡶⠛⠁⠀⠸⠿⢿⡈⠳⠄⠁⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣀⠀⠀⠀⠀⠀⠇⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⢨⡷⠛⠛⠉⠁⠀⠤⠤⠤⠤⠤⠤⠤⢤⣽⡇⠀⠀⠀⣿⠃⠀⠀⠀⣀⣤⣤⣦⣿⣶⣤⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠣⡄⠀⠀⠀⡃⠀⠀⠀⠀⠀⠐⠀⠀
// ⢰⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⠇⠀⠀⠃⠀⠀⣰⣾⣿⠟⠉⠁⠀⠀⠀⠈⠛⠻⠷⢦⣀⠰⣄⠀⠀⠀⠀⠀⠈⠣⡀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠎⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠀⠀⣠⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⢮⣓⢀⠀⠀⠀⠀⠀⠙⢦⡆⠀⠀⠀⠀⠀⠀⠀⠀
// ⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⢰⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢳⡔⠀⠀⠀⠀⠀⠀⣧⠀⠀⠀⠀⠀⠀⠀⢀
// ⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⣄⠀⠈⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣆⠀⢠⠀⠀⠀⢻⡆⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣧⠀⠑⠄⠀⠈⢇⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣻⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢽⡆⠈⠳⣤⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⡃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⡀⠀⣸⡇⠀⠀⠈⠳⢦⡀⠀⠀⠀⠀⠀⠀
// ⠀⢁⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠠⠀⣰⡿⠀⠀⠀⠀⠀⠀⠉⠓⠦⣤⡀⠀⠀
// ⠀⠠⡁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠂⠁⢀⣶⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡆⠀⠀
// ⠀⠀⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣆⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣸⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠀
// ⠀⠀⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡟⢷⣦⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⡴⠛⢹⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀
// ⠀⢀⣿⡆⠈⠀⣠⡒⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⡿⡅⠀⠈⠉⠛⠷⠶⠦⠤⠴⠶⠶⠟⠋⠁⠀⠀⠻⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⢸⡟⢿⣄⠀⠿⣧⡼⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⠟⠚⠁⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⢸⠇⠀⠙⣦⣀⠁⠂⠀⠉⠀⠀⠀⠀⠀⠀⠀⠀⣀⣴⠟⠁⠀⠀⠀⠀⠀⢶⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⢹⠀⠀⠀⡀⠙⠷⢦⣤⡶⢤⣄⣀⣀⣠⣤⠴⢿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠰⠀⠀⠐⠀⠀⠀⢰⣾⣿⣿⡏⠉⠉⠁⠀⠀⠀⠉⠳⢦⣀⡀⠀⠀⠀⠀⠀⠀⠛⢦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠘⠀⠀⠈⠀⠀⠁⡘⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⢩⡗⠀⠀⠀⠀⠀⠀⠀⠀⠙⠶⣤⡄⡠⠄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠠⠀⠀⡁⢰⣿⣿⣿⡇⠀⠀⠀⢀⣀⣤⣤⣤⣤⣾⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣷⣆⠠⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣧⠴⠶⠛⠉⠉⠀⠀⠀⠀⠀⠀⠀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠹⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠁⠀⠐⠈⠀⢘⣾⡿⠛⠁⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠠⠀⠈⠀⠄⠡⢀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⢀⣠⠴⠋⣈⣥⠴⠂⠀⠈⠀⠀⠀⠀⠀⠁⠀⠀⠀⢀⠀⠁⡐⠀⠀⠢⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⢀⡰⠶⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠀⠀⠀⠀⢈⠀⠀⠄⠀⠀⠈⢷⣤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠾⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠠⠀⠂⠈⠄⠀⠀⠉⠳⣦⣀⠀⠂⠀⠄⡀⠀⠀⠀⠐⠠⣾⠏⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠠⠁⠐⠀⠁⡈⠄⢁⠀⡀⠀⠙⠳⢶⣤⣀⡤⣈⠄⣡⣦⡿⢿⡄⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠆⠀⠀⠀⠀⠀⠀⠀⠄⠂⠠⠁⠀⠠⠀⠂⠀⠐⡀⠄⠀⠈⢉⢡⣤⣿⠟⠁⠀⠘⣧⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠏⠀⠀⠀⠀⠀⡀⠈⠠⠀⠂⠀⠐⠈⠀⡐⠀⠁⠠⢀⠂⢉⣠⡶⠟⠉⠀⠀⠀⠀⠀⠸⣆⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠏⠀⠀⠀⠀⠀⠀⠀⠀⢁⠠⠀⠈⠠⠀⠄⠀⠠⠈⠄⠀⣤⡾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣧⠀⠀⠁⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠋⠀⠀⠀⠀⠀⠀⠂⠀⡁⠀⠄⠐⠀⠄⠀⠐⠈⠀⢀⣠⡾⠋⢷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢷⡄⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡾⠁⠀⠀⠀⠀⠀⠄⠂⠀⠁⠀⠐⠀⠈⠀⢀⣀⣤⣴⠿⠛⠉⠀⠀⢈⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣦⡀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣾⡤⠠⠤⠤⠦⠔⠦⠒⠶⠐⠦⠴⢶⣶⣷⣿⣿⣟⣃⠀⠀⠀⠀⠂⠀⠈⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣆⠀⠀⠀⠀
// ⢀⣀⡀⣀⣤⠄⠀⠂⠁⠀⠀⠂⠀⠀⡀⠀⠄⠀⠀⠀⣠⣴⣶⣶⣟⣋⣉⣀⣀⣀⣈⣙⣷⣤⣀⡀⠀⠠⣿⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣈⣳⣦⡀⠀
// ⠉⣁⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣤⠶⠛⠋⠉⠈⠁⠁⠈⠁⠉⠈⠉⡉⠉⠉⠉⠉⠻⣤⣤⠀⣸⣇⠉⠈⠁⠉⠈⠁⠉⠈⠁⠉⠈⠉⠁⠉⠈⠁⠀⠙⢋

File 2 of 6 : draft-IERC6093.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)
pragma solidity ^0.8.20;

/**
 * @dev Standard ERC20 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.
 */
interface IERC20Errors {
    /**
     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param balance Current balance for the interacting account.
     * @param needed Minimum amount required to perform a transfer.
     */
    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC20InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC20InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.
     * @param spender Address that may be allowed to operate on tokens without being their owner.
     * @param allowance Amount of tokens a `spender` is allowed to operate with.
     * @param needed Minimum amount required to perform a transfer.
     */
    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC20InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.
     * @param spender Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC20InvalidSpender(address spender);
}

/**
 * @dev Standard ERC721 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.
 */
interface IERC721Errors {
    /**
     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.
     * Used in balance queries.
     * @param owner Address of the current owner of a token.
     */
    error ERC721InvalidOwner(address owner);

    /**
     * @dev Indicates a `tokenId` whose `owner` is the zero address.
     * @param tokenId Identifier number of a token.
     */
    error ERC721NonexistentToken(uint256 tokenId);

    /**
     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param tokenId Identifier number of a token.
     * @param owner Address of the current owner of a token.
     */
    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC721InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC721InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     * @param tokenId Identifier number of a token.
     */
    error ERC721InsufficientApproval(address operator, uint256 tokenId);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC721InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC721InvalidOperator(address operator);
}

/**
 * @dev Standard ERC1155 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.
 */
interface IERC1155Errors {
    /**
     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param balance Current balance for the interacting account.
     * @param needed Minimum amount required to perform a transfer.
     * @param tokenId Identifier number of a token.
     */
    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC1155InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC1155InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     * @param owner Address of the current owner of a token.
     */
    error ERC1155MissingApprovalForAll(address operator, address owner);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC1155InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC1155InvalidOperator(address operator);

    /**
     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.
     * Used in batch transfers.
     * @param idsLength Length of the array of token identifiers
     * @param valuesLength Length of the array of token amounts
     */
    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}

File 3 of 6 : ERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.20;

import {IERC20} from "./IERC20.sol";
import {IERC20Metadata} from "./extensions/IERC20Metadata.sol";
import {Context} from "../../utils/Context.sol";
import {IERC20Errors} from "../../interfaces/draft-IERC6093.sol";

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 */
abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
    mapping(address account => uint256) private _balances;

    mapping(address account => mapping(address spender => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the default value returned by this function, unless
     * it's overridden.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `value`.
     */
    function transfer(address to, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, value);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, value);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `value`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `value`.
     */
    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, value);
        _transfer(from, to, value);
        return true;
    }

    /**
     * @dev Moves a `value` amount of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead.
     */
    function _transfer(address from, address to, uint256 value) internal {
        if (from == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (to == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(from, to, value);
    }

    /**
     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`
     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding
     * this function.
     *
     * Emits a {Transfer} event.
     */
    function _update(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            // Overflow check required: The rest of the code assumes that totalSupply never overflows
            _totalSupply += value;
        } else {
            uint256 fromBalance = _balances[from];
            if (fromBalance < value) {
                revert ERC20InsufficientBalance(from, fromBalance, value);
            }
            unchecked {
                // Overflow not possible: value <= fromBalance <= totalSupply.
                _balances[from] = fromBalance - value;
            }
        }

        if (to == address(0)) {
            unchecked {
                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
                _totalSupply -= value;
            }
        } else {
            unchecked {
                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
                _balances[to] += value;
            }
        }

        emit Transfer(from, to, value);
    }

    /**
     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).
     * Relies on the `_update` mechanism
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead.
     */
    function _mint(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(address(0), account, value);
    }

    /**
     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.
     * Relies on the `_update` mechanism.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead
     */
    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        _update(account, address(0), value);
    }

    /**
     * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     *
     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        _approve(owner, spender, value, true);
    }

    /**
     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.
     *
     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by
     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any
     * `Approval` event during `transferFrom` operations.
     *
     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to
     * true using the following override:
     * ```
     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {
     *     super._approve(owner, spender, value, true);
     * }
     * ```
     *
     * Requirements are the same as {_approve}.
     */
    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }
        _allowances[owner][spender] = value;
        if (emitEvent) {
            emit Approval(owner, spender, value);
        }
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `value`.
     *
     * Does not update the allowance value in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Does not emit an {Approval} event.
     */
    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            if (currentAllowance < value) {
                revert ERC20InsufficientAllowance(spender, currentAllowance, value);
            }
            unchecked {
                _approve(owner, spender, currentAllowance - value, false);
            }
        }
    }
}

File 4 of 6 : IERC20Metadata.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.20;

import {IERC20} from "../IERC20.sol";

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

File 5 of 6 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.20;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the value of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the value of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves a `value` amount of tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 value) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the
     * caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 value) external returns (bool);

    /**
     * @dev Moves a `value` amount of tokens from `from` to `to` using the
     * allowance mechanism. `value` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 value) external returns (bool);
}

File 6 of 6 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)

pragma solidity ^0.8.20;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 1000000
  },
  "evmVersion": "paris",
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

6080604052600580546001600160a01b031916731118ec7cb7334f4db358d89ed0ac96c6f6a81f271790553480156200003757600080fd5b50604051806040016040528060058152602001644c7563696160d81b815250604051806040016040528060058152602001644c5543494160d81b8152508160039081620000859190620002dd565b506004620000948282620002dd565b5050600554620000bd91506001600160a01b03166d036fb30e1647820a752a45840000620000c3565b620003d1565b6001600160a01b038216620000f35760405163ec442f0560e01b8152600060048201526024015b60405180910390fd5b620001016000838362000105565b5050565b6001600160a01b03831662000134578060026000828254620001289190620003a9565b90915550620001a89050565b6001600160a01b03831660009081526020819052604090205481811015620001895760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401620000ea565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216620001c657600280548290039055620001e5565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200022b91815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200026357607f821691505b6020821081036200028457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002d857600081815260208120601f850160051c81016020861015620002b35750805b601f850160051c820191505b81811015620002d457828155600101620002bf565b5050505b505050565b81516001600160401b03811115620002f957620002f962000238565b62000311816200030a84546200024e565b846200028a565b602080601f831160018114620003495760008415620003305750858301515b600019600386901b1c1916600185901b178555620002d4565b600085815260208120601f198616915b828110156200037a5788860151825594840194600190910190840162000359565b5085821015620003995787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115620003cb57634e487b7160e01b600052601160045260246000fd5b92915050565b61093880620003e16000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063313ce5671161007657806395d89b411161005b57806395d89b4114610153578063a9059cbb1461015b578063dd62ed3e1461016e57600080fd5b8063313ce5671461010e57806370a082311461011d57600080fd5b806306fdde03146100a8578063095ea7b3146100c657806318160ddd146100e957806323b872dd146100fb575b600080fd5b6100b06101b4565b6040516100bd9190610725565b60405180910390f35b6100d96100d43660046107ba565b610246565b60405190151581526020016100bd565b6002545b6040519081526020016100bd565b6100d96101093660046107e4565b610260565b604051601281526020016100bd565b6100ed61012b366004610820565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100b0610284565b6100d96101693660046107ba565b610293565b6100ed61017c366004610842565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101c390610875565b80601f01602080910402602001604051908101604052809291908181526020018280546101ef90610875565b801561023c5780601f106102115761010080835404028352916020019161023c565b820191906000526020600020905b81548152906001019060200180831161021f57829003601f168201915b5050505050905090565b6000336102548185856102a1565b60019150505b92915050565b60003361026e8582856102b3565b610279858585610387565b506001949350505050565b6060600480546101c390610875565b600033610254818585610387565b6102ae8383836001610432565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103815781811015610372576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b61038184848484036000610432565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166103d7576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610369565b73ffffffffffffffffffffffffffffffffffffffff8216610427576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610369565b6102ae83838361057a565b73ffffffffffffffffffffffffffffffffffffffff8416610482576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610369565b73ffffffffffffffffffffffffffffffffffffffff83166104d2576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610369565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602090815260408083209387168352929052208290558015610381578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161056c91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff83166105b25780600260008282546105a791906108c8565b909155506106649050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610638576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610369565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661068d576002805482900390556106b9565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161071891815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561075257858101830151858201604001528201610736565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d683610791565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b61080284610791565b925061081060208501610791565b9150604084013590509250925092565b60006020828403121561083257600080fd5b61083b82610791565b9392505050565b6000806040838503121561085557600080fd5b61085e83610791565b915061086c60208401610791565b90509250929050565b600181811c9082168061088957607f821691505b6020821081036108c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561025a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220faeb4e7f43bea1991b6c2a9c53ea9ecbbb529ad5f932480ed7765166e84cad2464736f6c63430008140033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100a35760003560e01c8063313ce5671161007657806395d89b411161005b57806395d89b4114610153578063a9059cbb1461015b578063dd62ed3e1461016e57600080fd5b8063313ce5671461010e57806370a082311461011d57600080fd5b806306fdde03146100a8578063095ea7b3146100c657806318160ddd146100e957806323b872dd146100fb575b600080fd5b6100b06101b4565b6040516100bd9190610725565b60405180910390f35b6100d96100d43660046107ba565b610246565b60405190151581526020016100bd565b6002545b6040519081526020016100bd565b6100d96101093660046107e4565b610260565b604051601281526020016100bd565b6100ed61012b366004610820565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100b0610284565b6100d96101693660046107ba565b610293565b6100ed61017c366004610842565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101c390610875565b80601f01602080910402602001604051908101604052809291908181526020018280546101ef90610875565b801561023c5780601f106102115761010080835404028352916020019161023c565b820191906000526020600020905b81548152906001019060200180831161021f57829003601f168201915b5050505050905090565b6000336102548185856102a1565b60019150505b92915050565b60003361026e8582856102b3565b610279858585610387565b506001949350505050565b6060600480546101c390610875565b600033610254818585610387565b6102ae8383836001610432565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103815781811015610372576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b61038184848484036000610432565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166103d7576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610369565b73ffffffffffffffffffffffffffffffffffffffff8216610427576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610369565b6102ae83838361057a565b73ffffffffffffffffffffffffffffffffffffffff8416610482576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610369565b73ffffffffffffffffffffffffffffffffffffffff83166104d2576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610369565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602090815260408083209387168352929052208290558015610381578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161056c91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff83166105b25780600260008282546105a791906108c8565b909155506106649050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610638576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610369565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff821661068d576002805482900390556106b9565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161071891815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561075257858101830151858201604001528201610736565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d683610791565b946020939093013593505050565b6000806000606084860312156107f957600080fd5b61080284610791565b925061081060208501610791565b9150604084013590509250925092565b60006020828403121561083257600080fd5b61083b82610791565b9392505050565b6000806040838503121561085557600080fd5b61085e83610791565b915061086c60208401610791565b90509250929050565b600181811c9082168061088957607f821691505b6020821081036108c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561025a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220faeb4e7f43bea1991b6c2a9c53ea9ecbbb529ad5f932480ed7765166e84cad2464736f6c63430008140033

Deployed Bytecode Sourcemap

6581:187:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2074:89:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4293:186;;;;;;:::i;:::-;;:::i;:::-;;;1251:14:6;;1244:22;1226:41;;1214:2;1199:18;4293:186:1;1086:187:6;3144:97:1;3222:12;;3144:97;;;1424:25:6;;;1412:2;1397:18;3144:97:1;1278:177:6;5039:244:1;;;;;;:::i;:::-;;:::i;3002:82::-;;;3075:2;1935:36:6;;1923:2;1908:18;3002:82:1;1793:184:6;3299:116:1;;;;;;:::i;:::-;3390:18;;3364:7;3390:18;;;;;;;;;;;;3299:116;2276:93;;;:::i;3610:178::-;;;;;;:::i;:::-;;:::i;3846:140::-;;;;;;:::i;:::-;3952:18;;;;3926:7;3952:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3846:140;2074:89;2119:13;2151:5;2144:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2074:89;:::o;4293:186::-;4366:4;735:10:4;4420:31:1;735:10:4;4436:7:1;4445:5;4420:8;:31::i;:::-;4468:4;4461:11;;;4293:186;;;;;:::o;5039:244::-;5126:4;735:10:4;5182:37:1;5198:4;735:10:4;5213:5:1;5182:15;:37::i;:::-;5229:26;5239:4;5245:2;5249:5;5229:9;:26::i;:::-;-1:-1:-1;5272:4:1;;5039:244;-1:-1:-1;;;;5039:244:1:o;2276:93::-;2323:13;2355:7;2348:14;;;;;:::i;3610:178::-;3679:4;735:10:4;3733:27:1;735:10:4;3750:2:1;3754:5;3733:9;:27::i;8989:128::-;9073:37;9082:5;9089:7;9098:5;9105:4;9073:8;:37::i;:::-;8989:128;;;:::o;10663:477::-;3952:18;;;;10762:24;3952:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;10848:17;10828:37;;10824:310;;10904:5;10885:16;:24;10881:130;;;10936:60;;;;;3112:42:6;3100:55;;10936:60:1;;;3082:74:6;3172:18;;;3165:34;;;3215:18;;;3208:34;;;3055:18;;10936:60:1;;;;;;;;10881:130;11052:57;11061:5;11068:7;11096:5;11077:16;:24;11103:5;11052:8;:57::i;:::-;10752:388;10663:477;;;:::o;5656:300::-;5739:18;;;5735:86;;5780:30;;;;;5807:1;5780:30;;;3399:74:6;3372:18;;5780:30:1;3253:226:6;5735:86:1;5834:16;;;5830:86;;5873:32;;;;;5902:1;5873:32;;;3399:74:6;3372:18;;5873:32:1;3253:226:6;5830:86:1;5925:24;5933:4;5939:2;5943:5;5925:7;:24::i;9949:432::-;10061:19;;;10057:89;;10103:32;;;;;10132:1;10103:32;;;3399:74:6;3372:18;;10103:32:1;3253:226:6;10057:89:1;10159:21;;;10155:90;;10203:31;;;;;10231:1;10203:31;;;3399:74:6;3372:18;;10203:31:1;3253:226:6;10155:90:1;10254:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;10299:76;;;;10349:7;10333:31;;10342:5;10333:31;;;10358:5;10333:31;;;;1424:25:6;;1412:2;1397:18;;1278:177;10333:31:1;;;;;;;;9949:432;;;;:::o;6271:1107::-;6360:18;;;6356:540;;6512:5;6496:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6356:540:1;;-1:-1:-1;6356:540:1;;6570:15;;;6548:19;6570:15;;;;;;;;;;;6603:19;;;6599:115;;;6649:50;;;;;3112:42:6;3100:55;;6649:50:1;;;3082:74:6;3172:18;;;3165:34;;;3215:18;;;3208:34;;;3055:18;;6649:50:1;2880:368:6;6599:115:1;6834:15;;;:9;:15;;;;;;;;;;6852:19;;;;6834:37;;6356:540;6910:16;;;6906:425;;7073:12;:21;;;;;;;6906:425;;;7284:13;;;:9;:13;;;;;;;;;;:22;;;;;;6906:425;7361:2;7346:25;;7355:4;7346:25;;;7365:5;7346:25;;;;1424::6;;1412:2;1397:18;;1278:177;7346:25:1;;;;;;;;6271:1107;;;:::o;14:607:6:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;612:2;542:66;537:2;529:6;525:15;521:88;510:9;506:104;502:113;494:121;;;;14:607;;;;:::o;626:196::-;694:20;;754:42;743:54;;733:65;;723:93;;812:1;809;802:12;723:93;626:196;;;:::o;827:254::-;895:6;903;956:2;944:9;935:7;931:23;927:32;924:52;;;972:1;969;962:12;924:52;995:29;1014:9;995:29;:::i;:::-;985:39;1071:2;1056:18;;;;1043:32;;-1:-1:-1;;;827:254:6:o;1460:328::-;1537:6;1545;1553;1606:2;1594:9;1585:7;1581:23;1577:32;1574:52;;;1622:1;1619;1612:12;1574:52;1645:29;1664:9;1645:29;:::i;:::-;1635:39;;1693:38;1727:2;1716:9;1712:18;1693:38;:::i;:::-;1683:48;;1778:2;1767:9;1763:18;1750:32;1740:42;;1460:328;;;;;:::o;1982:186::-;2041:6;2094:2;2082:9;2073:7;2069:23;2065:32;2062:52;;;2110:1;2107;2100:12;2062:52;2133:29;2152:9;2133:29;:::i;:::-;2123:39;1982:186;-1:-1:-1;;;1982:186:6:o;2173:260::-;2241:6;2249;2302:2;2290:9;2281:7;2277:23;2273:32;2270:52;;;2318:1;2315;2308:12;2270:52;2341:29;2360:9;2341:29;:::i;:::-;2331:39;;2389:38;2423:2;2412:9;2408:18;2389:38;:::i;:::-;2379:48;;2173:260;;;;;:::o;2438:437::-;2517:1;2513:12;;;;2560;;;2581:61;;2635:4;2627:6;2623:17;2613:27;;2581:61;2688:2;2680:6;2677:14;2657:18;2654:38;2651:218;;2725:77;2722:1;2715:88;2826:4;2823:1;2816:15;2854:4;2851:1;2844:15;2651:218;;2438:437;;;:::o;3484:279::-;3549:9;;;3570:10;;;3567:190;;;3613:77;3610:1;3603:88;3714:4;3711:1;3704:15;3742:4;3739:1;3732:15

Swarm Source

ipfs://faeb4e7f43bea1991b6c2a9c53ea9ecbbb529ad5f932480ed7765166e84cad24
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.