Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 17 from a total of 17 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20831366 | 3 days ago | IN | 0 ETH | 0.00072355 | ||||
Approve | 20822250 | 4 days ago | IN | 0 ETH | 0.00180753 | ||||
Approve | 20161693 | 96 days ago | IN | 0 ETH | 0.00024821 | ||||
Approve | 20009702 | 117 days ago | IN | 0 ETH | 0.00041851 | ||||
Approve | 19760397 | 152 days ago | IN | 0 ETH | 0.00033391 | ||||
Approve | 19627017 | 171 days ago | IN | 0 ETH | 0.00119195 | ||||
Approve | 19623712 | 171 days ago | IN | 0 ETH | 0.00060217 | ||||
Approve | 19623179 | 171 days ago | IN | 0 ETH | 0.00034775 | ||||
Approve | 19623178 | 171 days ago | IN | 0 ETH | 0.00053949 | ||||
Approve | 19623103 | 171 days ago | IN | 0 ETH | 0.00057841 | ||||
Approve | 19623080 | 171 days ago | IN | 0 ETH | 0.00084152 | ||||
Approve | 19623078 | 171 days ago | IN | 0 ETH | 0.00077107 | ||||
Approve | 19623078 | 171 days ago | IN | 0 ETH | 0.00324145 | ||||
Approve | 19398688 | 203 days ago | IN | 0 ETH | 0.00377315 | ||||
Approve | 19328816 | 213 days ago | IN | 0 ETH | 0.0029736 | ||||
Approve | 19328791 | 213 days ago | IN | 0 ETH | 0.00274211 | ||||
0x60806040 | 19328755 | 213 days ago | IN | 0 ETH | 0.04598655 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Lucia
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity Standard Json-Input format)
// 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 // ⠁⠀⠂⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠂⠀⠁⡀⠐⠈⠀⠐⠈⠀⠐⠀⠐⠀⡀⠂⠀⠐⠀⠠⠐⠀⠀⠄⠀⠠⠀⠀⠄⠀⠀⠄⠀⠀⢸⡿⠀⠀⠀⠀⠀⡀⠀⢀⠀⠀⡀⠀⢀⠀⠀⡀⠀⢀⠀⠀⡀⠀⠀ // ⠀⠁⠈⢀⠀⠄⠈⠀⠁⠈⠀⠁⠈⠀⠄⠀⢀⠈⠀⠠⠀⠀⠀⠂⠀⠀⣄⣠⣤⣤⠴⠶⢶⡶⠶⠬⠿⢤⣀⣀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀ // ⠄⠈⢀⠀⠠⠀⠂⠁⢀⠈⠀⠄⠁⢀⠠⠀⠀⡀⠐⠀⢀⠈⢀⣤⠶⠛⠉⠁⣠⠀⠀⡠⠀⣤⢋⠁⠐⠠⡀⢈⠙⠒⢤⣀⠀⠂⠀⠀⠂⠀⠀⠂⠀⠀⠂⠀⠀⠄⠀⠀ // ⠐⠀⡀⠠⠀⠠⠐⠀⠀⡀⠂⠀⠠⠀⠀⠠⠀⠀⡀⠄⣠⣴⡿⠋⠀⢀⣴⠞⠁⢀⠜⣠⠞⢡⠃⠀⢠⠀⠑⡄⠑⢄⠀⠈⠓⢤⡀⠀⠀⠀⠄⠀⠀⢀⠀⠀⠀⠀⠀⠀ // ⡁⠀⠄⠀⠐⠀⡀⠄⠁⠀⡀⠄⠁⠀⠐⠀⡀⠁⣠⣾⡿⠟⠀⠀⣰⡿⠃⠀⠠⢁⡴⠁⢀⡇⢠⠃⢸⠀⠀⢸⡄⠀⢣⠈⠠⡀⠑⢆⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀ // ⡀⠂⢀⠈⠀⠄⠀⠀⠄⠂⠀⢀⠠⠈⠀⡀⢀⡼⣿⠏⡁⣠⠃⣼⠟⡀⠀⠀⣿⡾⡅⠀⣼⠀⡼⠀⠈⡇⠀⢸⢣⠀⠀⠃⢠⠑⢤⡈⠳⡀⠀⠀⠁⣀⣠⣤⠤⠄⠒⠒ // ⠄⠀⡀⠀⠂⢀⠈⠀⡀⠄⠂⠀⢀⠠⠀⢠⡿⣽⢫⠖⢰⠃⣸⣏⡞⠀⢀⣾⣿⠇⠀⡄⡇⢸⡇⠀⠀⢳⠀⢸⡼⡄⠀⠀⠀⡇⠀⠱⡀⢳⣀⡴⠛⠉⠀⠀⠀⠀⠀⠀ // ⠄⠐⠀⠀⠂⠀⠠⠀⢀⠀⠀⠂⠀⠀⣴⡿⣻⠃⡞⢀⠃⢀⣏⡞⠀⠀⣾⣿⣿⣀⢰⠃⣇⠀⢧⠀⡃⠈⣇⢸⣷⡇⠀⠀⠀⢸⠀⠀⢱⣀⢻⡀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠂⠁⢀⠈⠀⠠⠀⠀⠂⠀⢁⣾⣿⣱⠏⢸⠇⠀⡤⢾⣿⠓⠛⢻⣿⠋⣟⠀⣸⠃⣷⠀⠘⢦⡇⠀⠸⣟⣿⡆⠀⠀⠀⠘⡆⠀⠀⣿⣳⣷⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠁⠀⠄⠂⠀⠐⠀⠀⠁⡀⢨⣾⣿⢃⡿⢀⣹⡤⢁⠀⣿⣟⠀⠀⣿⡿⠀⣯⠀⣿⣷⠸⣇⢤⡈⢷⡀⠀⢸⢿⣷⠦⣀⠀⢈⡇⠀⠀⠸⡇⣿⡄⠀⠀⠀⠀⠀⠀⠀ // ⠀⠐⠈⠀⠀⠐⠀⠈⠀⠄⢠⣿⢣⡏⣼⣏⠀⢿⣷⠀⢢⣿⣯⡀⢸⢿⣇⠀⢹⡆⣿⣿⣤⡻⣦⣿⣦⣽⣶⣾⣈⣻⣤⠈⠙⢺⡇⠰⠀⠀⣷⢸⣿⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠁⠀⠂⠁⠀⢀⣿⠇⣾⡐⣿⣿⠈⢾⣿⡆⣹⣇⣹⣷⣾⣬⣿⡀⠈⣿⣯⢻⣿⣧⠉⢻⡟⣷⡄⢹⠀⢸⡇⠀⠀⣼⡇⠀⠀⠀⢹⠈⡟⣇⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠁⠀⠠⠈⢸⡿⢸⣷⡚⣿⣿⡡⢘⣿⣿⣿⡿⢿⣿⣿⣿⣿⣿⡄⠈⠎⠢⢽⣿⣷⣄⡇⠈⣿⣿⣄⣀⣿⠀⢠⣿⠃⠀⡀⠀⣽⠀⣷⣿⡄⢠⠀⡄⡀⠆ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣻⡧⣿⣿⡔⣿⣿⣇⠄⣿⡇⠈⢧⠈⢿⣿⣾⡶⠋⠁⠀⠀⠀⠀⠙⠙⠻⣷⣾⡿⣿⣿⣿⣿⣤⣿⡿⠠⠀⡄⢠⣿⠀⣿⣽⡇⠢⠑⠈⡜⢦ // ⠀⠀⠀⠀⠀⠀⠀⠀⠁⠘⣿⣿⣿⢧⣿⣿⣿⣖⡸⣷⠀⠀⠑⠤⠭⠏⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣯⡍⠸⣿⣿⣧⠀⢨⣇⣾⣿⠀⣟⢸⡇⠀⠀⠀⡜⠸ // ⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠘⣿⣿⡿⣿⣿⣿⣿⢿⣻⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⡤⠒⢤⠀⠀⠀⠀⠤⣛⣛⣋⠀⠈⢁⣿⠇⡀⣾⣽⢿⡁⢠⡟⣼⡇⠀⢀⠒⡌⠱ // ⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⢨⣿⣿⣿⣿⣿⣼⣿⣿⣿⣿⠳⣄⡀⠀⠀⠀⠀⠀⠀⢧⢀⡠⠃⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⡟⡰⣰⣿⡟⣾⢠⣾⣧⣿⠀⢀⠌⡓⣌⢣ // ⠀⠀⠀⠀⣀⣤⡴⠶⢶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠙⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⢿⣟⣵⣿⡟⢧⣿⣿⣿⡿⠃⠀⡌⢎⡱⢌⡖ // ⠀⢀⣴⠟⠉⣠⣴⣾⣿⣿⣿⠿⠻⢿⣿⣿⣿⣿⠿⢿⣷⡀⠀⠀⠀⠀⠠⣤⠤⠤⠄⣀⣀⠀⠀⠀⠀⠀⠀⠤⢞⣻⣿⣿⣿⣿⣿⣷⣿⣿⡿⠋⠀⣀⠣⡜⢢⡙⢮⡜ // ⢠⡟⠁⣠⢞⠿⣩⣾⡽⠋⣠⡷⠻⠀⠀⠙⣿⢻⡀⠀⠉⠛⣤⠀⠀⠀⠀⠈⠑⠒⠠⠤⠞⠛⠀⠀⠀⠀⠀⠀⠛⣽⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⠰⣀⠳⡌⢧⡹⢣⢞ // ⢸⢀⡞⡵⠋⣴⡿⢋⠀⣰⠟⠠⢁⠂⠄⠀⢹⡆⢹⡀⠀⠀⠈⢳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡴⠟⣿⣿⣿⣿⣿⣿⣿⡿⢿⡿⣤⣇⣌⠳⣜⣣⠽⣍⢾ // ⢀⡟⡞⢀⣾⠟⡵⠃⣰⠏⠀⠀⣼⠀⡙⣂⡏⢹⣀⡧⠀⠀⠀⠀⣿⣷⣦⡀⠀⠀⠀⠀⠀⢀⣠⣤⡶⠋⠁⠀⣼⣯⢿⡟⣻⠇⢨⡉⢤⡀⠙⢶⣍⠻⣟⠶⣭⢞⣭⠏ // ⢸⢹⠁⡼⢥⡾⠁⣰⠏⠀⠀⣰⡟⠀⣇⣼⠁⣸⣸⠇⠈⠀⠤⠀⣿⣿⣿⡿⣷⣤⣴⣶⣿⣿⣿⠿⡇⠀⠀⢠⣿⣣⡟⠡⡿⢠⠀⢿⠀⠘⢳⡈⢿⣳⣌⠳⣬⣻⡎⠀ // ⠸⣿⣰⠏⣾⠃⢀⡿⠀⠀⢠⡿⠁⢨⡼⠃⢠⣯⠏⠀⠀⠀⠀⠀⣿⣋⢿⣽⣳⢯⣞⣼⡿⠋⠈⠘⡇⠀⠀⣾⢳⣿⠁⣸⡇⢸⠀⢸⢀⠀⠸⣷⡄⢻⡽⡆⢿⠟⢟⠂ // ⠀⠙⣿⣼⡏⣄⣸⡇⠀⠀⡞⠁⠄⣾⠃⢀⣿⠋⠀⠀⠀⠀⠀⠀⣿⠐⣈⠹⠷⣫⣾⠏⠀⠀⠀⠀⡇⠀⣸⣿⣿⣿⠀⡼⡇⢸⠀⠘⡌⣆⠀⠘⣧⡌⢿⡇⣸⠀⠈⢳ // ⠀⣼⣯⣿⣸⡇⣿⠀⠀⣸⠇⠀⣼⠁⣀⣾⠃⠀⠀⠀⠀⠀⠀⢀⡯⠰⡏⠁⠀⠜⠁⠀⠀⠀⠀⠀⣇⢠⣏⢿⣿⣿⡀⣇⣧⣾⡀⠀⠀⣿⢠⡀⢹⣷⠘⡷⠃⠀⠀⠀ // ⣸⠿⣿⡟⣼⡇⣿⠀⠀⣿⣰⢽⡇⠀⢿⡇⠀⠀⠀⠀⢀⣠⢴⣿⠄⠁⢧⠀⠀⠀⠀⠀⣰⠀⠀⠀⢘⡿⢧⣾⣿⣿⣷⣿⠈⣿⣇⠀⠀⣻⢸⡇⠰⣿⣇⢳⠀⠀⠀⠀ // ⡏⠀⣿⡿⣼⡇⣿⡡⠀⣿⣿⣿⠀⢀⠘⣄⣀⣠⠤⠒⠍⠂⠘⢿⡀⠂⠸⡄⠀⠀⠀⣰⡏⠀⠀⠀⣼⠃⠀⠈⠙⠻⢿⣿⣇⣿⣿⣆⡀⢹⢾⣇⠰⡏⢹⠘⡇⠀⠀⠀ // ⠀⠀⠘⣿⢲⣷⣿⣽⣇⡿⠟⠋⠉⠉⠀⠀⠒⠶⢬⣝⣒⣦⣄⣸⣇⠀⢀⣃⠀⠀⢠⠋⢁⣀⣀⣠⡿⠤⠞⠒⠒⠃⠀⠀⠀⠈⠄⠁⠉⠉⠛⠻⢌⡇⢸⡀⡇⠀⠀⡰ // ⠀⠀⠀⠹⣧⣻⣾⠟⠉⠀⠀⠀⠀⠀⠘⢆⠀⠀⠀⠀⠀⠀⠉⠉⢻⡏⠉⠉⠑⠀⠘⠋⠁⠀⠀⣾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢾⣱⠇⠀⠈⠀ // ⠀⠀⠀⠀⢙⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⡄⠀⠀⠀⠀⠀⠀⠀⣸⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣟⠀⠀⠀⠀ // ⡀⠀⠀⠀⡾⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣷⡆⠀⠀⠀⠀⠀⢠⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡆⠀⠀⠀ // ⢧⠀⠀⢸⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣷⠀⠀⠀⠀⢀⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⢹⠀⠀⠀ // ⠀⢳⣀⢸⢁⠀⠀⠀⠀⠀⠀⠀⠈⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣦⠀⠀⠀⣼⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⠁⠀⠀⠀⠀⠀⠀⠀⢸⡆⠀⠀ // ⠀⠀⠙⢿⢂⡐⠀⠀⠀⠀⠀⠀⠀⠸⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣻⣦⣤⣼⣏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⢻⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀ // ⠀⠀⠀⢸⡇⡐⠀⠀⠀⠀⠀⠀⡀⢸⡗⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣯⣭⣯⣿⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣾⠀⠀⠀⠀⠀⠀⠀⠀⢨⡇⠀⠀ // ⠀⠀⠀⠘⡷⣈⠐⠀⠀⠀⢀⠐⢠⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⡾⣿⢿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣅⠀⠀⠀⠀⠀⠀⠀⢸⣇⠀⠀ // ⠀⠀⠀⠀⣷⡱⢊⠐⡀⠂⠌⣠⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣇⣀⣀⣀⣸⣿⣿⡅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡆⠀⠀⠀⠀⠀⠀⢸⡀⠢⠀ // ⠀⠀⢠⡴⢻⣕⠣⠄⡡⢁⢲⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡄⠀⠀⠀⠀⠀⣹⠟⢄⠁ // ⠀⢰⣿⠟⢩⣯⠓⡌⠐⣠⡟⠀⠀⠀⠀⣠⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⢀⣀⣠⣖⣦⡀⠀⠀⢹⡀⠀⠀⠀⠀⣿⡇⠈⣧ // ⠀⣿⡃⠀⣼⣹⡗⡌⠡⢼⠃⠀⠀⠀⡼⣿⣿⡗⢠⠄⠀⠀⠀⠀⠀⠀⠀⠈⠙⢿⣿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡌⣿⣾⡇⡷⠀⠀⠀⣧⠀⠀⠀⠀⡿⠁⢠⡟ // ⠀⠹⠷⠦⢹⣟⡷⣌⠡⣿⠀⠀⠀⠀⠙⠬⠽⠽⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣻⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠦⠿⠛⠁⠀⠀⠀⣿⠀⠀⠀⠀⡷⢤⡿⠞ // ⠀⠀⠀⠀⠀⠛⣿⠰⢦⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡟⠀⠀⠀⠀⡇⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⢻⡍⡆⢸⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣋⢿⡔⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠇⠀⠀⠀⠀⡇⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⢸⡇⣯⠄⠻⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⡿⠋⠙⢯⣟⡶⣆⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⠏⠀⠀⠀⠀⠀⡇⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⢸⡗⡼⡎⡑⢌⠻⣦⣀⠀⠀⠀⠀⠀⠀⢀⣀⣤⣶⡿⠛⠁⠀⠀⢸⠀⠈⠙⠻⢽⣷⢦⣄⣀⡀⢀⠀⢀⠀⣀⣠⣴⡿⠁⠀⠀⠀⠀⠀⢀⡇⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⣿⢰⢻⡔⣈⠒⣿⢩⢛⣟⠾⣳⣛⣾⡿⠟⠋⠁⠀⠀⠀⠀⠀⠘⠀⠀⠀⠀⠀⠈⠉⠛⠛⠿⠿⠛⠛⠛⠉⠁⣼⠁⠀⠀⠀⠀⠀⠀⢰⡇⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⢿⡪⡕⣣⠤⣉⣿⠀⢊⠈⠉⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠒⠀⠀⠀⣿⠀⠂⠀⠀⠀⠀⠀⢸⠇⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⢸⣇⠳⢆⡱⠠⢿⠀⠂⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⠀⡁⠀⠀⠀⠀⠀⢸⡃⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠸⣇⡻⢜⡰⡉⢾⡃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠠⠐⠀⠀⠀⡀⠌⢸⠄⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⣷⢩⠖⣡⠇⣹⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣄⠩⠄⢂⠁⡰⠈⣼⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⢹⡎⢽⢠⢋⠴⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡟⢿⣆⡘⠤⢂⡱⢈⣾⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠈⣟⡜⢢⠉⠆⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡐⠠⢉⠻⢶⠡⢆⢃⡿⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡘⠤⡉⠆⣿⡁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠸⣇⠑⣈⠒⠤⢋⠴⣩⡇⠀⠀⠀⢀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣧⢂⠱⢨⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠁⠀⢻⣄⠂⢍⣸⣡⣾⠟⠀⠀⠀⠀⢸ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡟⡦⢑⣾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠞⠀⠀⠀⠈⢿⡞⣎⡷⠋⠀⠀⠀⠀⠀⠀⣼ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⢱⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠋⠀⠀⠀⠀⠀⠈⢻⠁⠀⠀⠀⠀⠀⠀⠀⠀⣿ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡿⡱⠌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⣃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠱⡀⠀⠀⠀⠀⠀⠀⢠⣟ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡞⢥⠃⡌⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⡄⠀⠀⠀⠀⠀⢰⣞ // ⠀⠀⠀⠀⠀⠀⠀⠀⣰⢏⡼⠁⠐⢀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣄⠀⠀⠀⢀⡿⣜ // ⠀⠀⠀⠀⠀⠀⠀⣼⣫⠞⡀⢡⠂⠀⠄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡄⠀⠀⢰⡟⣼ // ⠀⠀⠀⠀⠀⠀⣼⡷⢋⡐⢈⠄⢂⠁⠄⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡀⠀⣸⣽⡳ // ⠀⠀⠀⠀⠀⣼⠟⡡⢂⠔⢂⠈⠄⠂⠌⠠⢁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢱⡀⣿⡞⣽ // ⠀⠀⠀⠀⣰⢏⠦⡑⢌⡐⠢⡈⠤⠁⠌⡐⢀⠂⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⣯⢿⡼ // ⠀⠀⠀⢀⡿⣈⠖⡈⠆⡌⠱⡐⢢⢁⠂⡐⠀⠆⡐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⢧⣟ // ⠀⠀⠀⣸⡓⠴⡈⠴⠡⢌⠱⡈⠆⡌⡐⠠⠁⠂⠌⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣟⡾ // ⠀⠀⢀⡟⡬⢱⠘⡄⢃⠎⡰⢁⠎⡐⠀⠑⣆⠁⢂⠘⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣟⣳ // ⠀⠀⢸⢏⡔⡃⢎⠰⡁⠎⡐⠂⠄⠠⠀⠀⠈⢶⡀⠂⢹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠁⠀⢀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢺⡵ // ⠀⠀⣾⢡⠚⣌⠢⡑⠄⡃⠄⠁⡘⠀⠀⠀⠀⠀⠹⣄⠂⢳⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠌⠐⢠⢈⠌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣻ // ⠀⠀⣟⡌⢳⠠⣃⠌⠒⡀⠂⠈⠀⠀⠀⠀⠀⠀⠀⠙⣦⠉⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡈⣀⡾⢀⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢘⡷ // ⠀⠀⡯⡜⣡⠒⡡⠘⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣼⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢆⡴⠏⡐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⡿ // ⠀⠈⡷⣑⠢⡱⠡⢁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⠟⡁⠂⢤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⣿ // ⠀⠀⡷⢡⢓⡰⢁⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢷⡀⠀⠀⢀⠀⠀⠀⠀⢀⣾⠣⡘⠠⢡⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢨⣷ // ⠀⠀⢽⡡⢆⡱⠈⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣷⣄⣹⣯⣀⣀⣤⣿⠡⠆⡁⢂⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡷ // ⠀⠀⣾⢰⢃⠦⡉⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⡟⠋⠹⠟⢻⡿⣡⠃⠜⠀⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣻⡽ // ⠀⠀⢽⡎⡜⢢⠑⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡦⠀⠀⣾⡱⡂⠥⠈⠘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡽ // ⠀⠀⢸⡧⡙⢆⠣⡐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣷⠔⢸⢧⡓⣁⠂⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣷⢻ // ⠀⠀⠸⣗⠭⣊⠕⡨⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣹⠀⣿⢎⡱⠠⢈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣯⣟ // ⠀⠀⠀⣿⡜⢢⢍⠰⡁⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢼⡁⣯⢛⠴⡁⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢨⣿⣳⢾ // ⠀⠀⠀⢹⣎⠇⣎⠒⡄⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢾⡇⣏⢎⡒⠄⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣹⣿⣽⣻ // ⠀⠀⠀⠈⣯⢚⠤⡃⠔⠡⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢾⡃⣏⠖⡨⠄⡁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡏⣿⢾⣽ // ⠀⠀⠀⠀⢻⣍⠖⣩⠘⡄⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣼⣟⡯⠜⡰⠠⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⠁⢻⣟⣾ // ⠀⠀⠀⠀⠘⣯⢚⠤⡃⠤⢁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⢹⣿⡧⢋⠤⠁⡌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡏⠐⠸⣿⣽ // ⠀⠀⠀⠀⢀⢻⡍⡖⢱⡈⠂⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢀⢻⣿⡧⢩⢀⠃⠄⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⠁⢀⠀⢿⣿ // ⠀⠀⢈⣄⣠⠸⣏⡼⠡⡌⡑⢈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢌⢺⣿⣇⠃⠆⡘⠠⢁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣇⣰⣲⠤⠘⣿ // ⠀⠐⠀⠀⠀⡀⢿⡜⡱⢂⡑⠂⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢌⢺⣿⡧⢉⠰⢀⠃⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡿⠀⠀⢀⡀⠄⢹ // ⣿⣿⣿⣿⣿⣿⡿⠋⠁⠀⠀⠀⢀⣾⡿⠋⠉⠁⢠⣿⠏⢁⣿⣿⣿⠏⠉⢸⣿⡏⠉⢻⣿⣿⡇⠈⠙⢿⣿⣿⣿⣷⡆⠀⠀⢇⠢⣈⡒⡤ // ⣿⣿⣿⣿⣿⣏⣴⡇⠀⠀⠀⢠⡿⠋⠀⠀⠀⣰⣿⠋⠀⣼⣿⣿⠏⠀⠀⡾⣿⠁⠀⠀⣿⣿⣷⠀⠀⠀⠹⣿⣿⣿⣿⣄⢀⣿⣷⣿⣶⣶ // ⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⢠⡟⠁⠀⠀⠀⢰⣿⠇⠀⢰⣿⣿⡷⠀⣀⣜⣁⣻⣀⣀⣀⣸⢻⣿⡇⠀⠀⠀⠘⣿⣿⣷⠹⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⠃⠀⠀⣠⣿⠀⠀⠀⠀⢠⣿⡏⠀⢀⣿⣿⡿⠛⣩⣿⠿⠛⢻⡏⠉⠉⢹⠉⢿⣿⡀⠀⠀⠀⠹⣿⣿⡆⠙⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⡏⠀⠀⣰⣿⡟⠀⠀⠀⢀⣾⣿⠀⠀⣸⣿⡿⢥⣶⠝⠁⠀⠀⠀⡇⠀⠀⡜⠰⡀⢻⡇⠀⠀⠀⠀⢿⣿⣿⠀⠸⣿⣿⣿⡿ // ⣿⣿⢿⣿⣿⡃⠀⣼⣿⣿⡇⣀⣀⣤⣾⣿⡇⠀⠰⣼⡟⣠⠎⠁⠀⢀⣠⠔⠁⢹⣀⣠⣧⣶⣦⣤⣷⣤⣤⣠⣤⠼⣿⣿⡆⠀⢹⣿⣿⣿ // ⣿⣿⣿⣿⣿⠀⣼⣿⣿⣿⣏⣁⣼⣿⣿⣿⠀⢠⣾⣟⡔⠁⠀⠀⠀⢸⠁⠀⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⣿⣿⣇⠀⠀⣿⣿⣿ // ⣿⣿⣿⣿⣿⣸⣿⣿⣿⣿⣟⣹⣿⣿⣿⡿⣴⣿⡿⠋⠀⠀⠀⠀⠀⠀⢰⣾⢟⣻⡿⠛⢻⢋⣻⣏⣱⠞⠙⣄⡀⠀⣿⡽⣿⠀⠀⢸⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠉⢘⡅⠚⠋⠉⠁⠀⠀⠀⠀⣔⣾⢏⢦⢄⣿⣧⣿⡆⠀⠈⣿⣿ // ⣿⣿⣿⣿⣿⡿⢸⣿⣿⣿⡿⢻⣿⣿⡿⠋⠀⠀⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡾⠟⠉⠀⢂⢻⣿⣿⣿⡇⠀⠀⢽⣿ // ⣿⣿⣿⣿⣿⢃⣿⣿⣿⣿⣷⣿⣿⣿⣿⡷⠀⠀⡸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠉⠀⢀⣠⣾⣟⡖⢻⣿⣿⠃⠀⠀⣿⣿ // ⣿⣿⣿⣿⣟⣼⣿⣿⣿⣿⣿⣿⠟⣻⠿⠓⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠾⠿⠛⠉⠁⢰⢸⣿⡿⠀⠀⠀⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⠋⠰⢟⣿⠌⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⠇⠀⠀⢠⡇⣿ // ⣿⣿⣿⣿⣿⣿⣏⠓⠓⠚⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠿⠿⠿⢾⣿⡟⠀⠀⠀⣼⠃⣿ // ⣿⣿⣿⣿⣿⣿⣿⣷⢦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡤⠤⠤⠤⠤⠤⠄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⡿⠀⠀⠀⣰⠏⢰⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⡀⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⣠⢚⣡⣴⣾⣿⣿⣿⣿⡿⠿⢿⠀⠀⠀⠀⠀⠀⠀⠀⣼⡿⠁⠀⠀⣰⠏⣠⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣧⣤⣴⡾⠋⠀⠀⠀⠀⠀⠀⠀⣃⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⡸⠀⠀⠀⠀⠀⠀⠀⣼⣿⣃⠤⠚⠚⠉⠉⠉⠙⠛ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⠉⠀⢀⡄⠀⠀⠀⠀⠀⠀⠙⢽⣿⠿⠋⠉⠁⠀⢠⡆⢰⠃⠀⠀⠀⠀⠀⠀⣼⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣴⡿⠁⠀⠀⠀⠀⠀⠀⠀⠈⢯⠀⠀⠀⠀⢀⡞⢠⠋⠀⠀⠀⠀⠀⢀⣾⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⣿⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡄⠀⠀⠀⣸⢠⠃⠀⠀⠀⠀⠀⢠⣾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⣿⡆⢠⠉⢿⣿⣿⡟⣿⣿⣿⣿⣿⣷⣤⡀⠀⠀⠀⠀⠀⠀⠀⠳⡀⠀⠀⡇⠇⠀⠀⠀⠀⠀⣠⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⣿⣿⣼⠀⠈⢿⣿⡇⢹⣿⣿⣿⣿⣿⣿⣿⡗⠤⣀⠀⠀⠀⠀⠀⠑⢄⣀⡞⠀⠀⠀⠀⢀⣴⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⣿⣿⣿⣷⠀⠀⠹⢇⠀⢻⣿⣿⣿⣿⣿⣿⣧⠀⠈⠻⣷⣦⣤⣀⡀⠀⠉⠀⠀⠀⣀⡴⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⣿⣿⣿⠟⠀⠀⠀⠈⠳⣄⢻⣿⣿⣿⣿⣿⣿⣆⠀⠀⠈⠻⢿⣿⣿⣿⣷⣶⣴⣾⣿⣿⣿⣿⡿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⣿⣿⣿⣄⠀⠀⠀⠀⠀⠈⠳⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠉⡿⢿⣿⣿⣿⣿⣿⣿⣿⡿⢱⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⠟⢉⣕⡞⣼⣿⣿⣿⣿⣿⡟⠛⠛⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣳⡀⢻⣤⣴⣴⣶⣶⣶⣿⣿⣷⣤⣼⣿⣿⣿⣿⣿ // ⠀⠀⠀⠀⠀⠀⠀⣼⢧⣿⣦⠬⡜⣼⡝⣿⢹⣿⣿⡟⣁⡀⣴⣿⡟⣹⠈⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣗⠾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⠀⠀⠀⠀⢰⣿⢀⣿⢀⠨⢳⣷⢴⣧⣸⣟⡟⠉⢁⡾⠋⣀⡴⢃⡠⣠⣿⣻⠿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡝⠋⣿⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⠀⠀⠀⠀⣾⣧⢸⣻⠀⢩⡏⠀⣸⣯⣿⡿⠒⣲⠟⠘⣩⠿⣠⠏⣴⣿⢯⣟⣹⣄⡿⣿⣿⣿⠏⣿⣿⣿⣧⠀⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⠀⠀⠀⠀⣿⣿⣿⡇⠘⢸⡇⣰⣿⠏⣿⣀⡼⠧⢶⣶⣳⡞⢳⠞⣿⣣⠏⠀⢠⣞⣀⣸⣿⣿⠀⢻⣿⣿⣿⣯⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⡦⣿⣷⣿⢹⠀⣯⣞⣧⣔⣯⣿⣯⡾⢃⣾⠟⠁⢀⣴⡟⢀⣼⡟⣾⡿⣐⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⠀⠀⠀⣸⣿⣧⢹⣾⣴⣿⠋⡇⢸⣸⣿⣿⣿⣿⣿⣿⣯⣶⠟⠋⢀⣴⣫⢏⣴⠟⣽⣿⡟⠀⠈⢹⣿⣟⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⠀⠀⠀⢳⠇⣿⣿⣿⣿⢹⡀⠃⢸⡜⣿⢹⣿⣷⣿⣿⡿⣷⠶⠚⠛⢛⡿⠋⣠⣾⣿⣿⣤⣦⣀⢸⡟⣠⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⠀⠀⢠⡞⣸⢻⣿⣿⣿⣾⣗⠄⠘⡇⣿⠚⠻⠿⠯⠿⠅⠀⠠⢄⠍⢨⡙⠊⠑⣿⣿⣯⣿⡿⠻⣿⢡⠇⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⠀⠀⣾⢣⡟⢸⠀⣿⣿⣷⣿⣦⠀⣷⣹⣣⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠃⠀⠀⠛⠿⠿⡿⣁⣼⣿⡟⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⠀⢠⣇⣼⣿⣾⠀⣿⣿⣮⡛⢿⣧⣽⡿⣿⣷⡤⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠶⠆⣰⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⠀⡼⣼⣿⡏⡟⣼⣿⣿⣿⡻⣿⠃⣸⡟⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣺⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⢰⢳⢻⡿⣠⡷⣿⣿⣿⣿⡏⢻⣴⠏⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠁⣼⣿⡛⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⡞⡞⣼⣷⢻⡇⣸⣿⣿⣿⡿⡟⠅⣴⣿⡟⢤⣀⠀⠀⠀⠀⠈⢿⡟⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣷⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⢠⢻⢁⡿⠇⣸⠇⣿⣿⣿⣿⣇⣿⠞⣡⣿⣧⣤⣽⣷⣀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣶⣿⣿⣿⣿⣯⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⡞⣸⠃⢀⣿⢀⣿⣿⣿⣿⣿⢥⣾⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⣀⣤⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠋⠁⠀⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠒⠺⠷⣏⡀⣼⡿⢸⣿⣿⣿⣏⣥⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣯⠀⠀⠀⠀⣀⠀⣿⣿⣿⣿⣿⣿⣿⠿⠿⠛⠻⣿⣿ // ⠀⠀⠀⠀⠈⠙⠳⢿⣿⣿⡟⢉⣰⣿⣿⣿⣿⡟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠻⢿⣿⣿⣷⣤⠖⠛⠉⠉⠀⠀⢸⡏⠁⠀⠀⠀⠀⠀⠀⣿⣿ // ⠀⠀⠀⠀⠤⢄⣀⠀⣨⡿⠟⢋⣿⡿⢯⣶⣝⣛⣛⣿⠿⢿⣿⢥⣠⠼⠻⣿⣟⣿⣿⣿⢿⣿⣿⡋⢤⡀⠀⠻⣌⣉⣻⣦⣀⠀⠀⠀⠀⣼⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿ // ⠀⠀⠀⠀⠀⠀⢀⣼⡟⠛⣛⣿⡿⠀⠉⢛⣻⣿⠿⠋⠀⢸⢹⠀⠀⠀⠀⠘⣾⣦⠉⠛⠷⢿⣿⣻⣦⡌⠢⡀⠘⣧⣙⡛⣿⣗⡚⠉⠉⠉⡇⠀⠀⢀⣀⣀⣠⣴⣿⣿ // ⠀⠀⠀⢀⡤⡶⣿⠋⣽⠛⣿⡿⢁⣤⢶⡋⠉⠁⠀⠀⠀⢸⠾⠆⠀⠀⠀⠀⠈⠁⠀⠀⠀⠀⠈⠙⠛⣿⣦⡙⣏⠁⠈⣯⣙⠛⢿⣆⠀⣼⣷⣶⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⢠⡟⢸⣷⣿⠉⡇⢀⣯⣴⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠻⢿⣟⢧⡤⠶⠛⠋⠉⠻⣿⣽⡿⢿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣴⣶⣿⣧⣿⢃⠏⠀⡇⣼⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠲⠤⣀⠀⠀⠀⢻⡝⢿⣾⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣟⢿⣯⣎⠤⠔⡇⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠲⢴⣿⣿⣆⢻⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⣿⣿⡄⢿⠦⠀⢠⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢄⡉⢿⣻⡄⢻⣿⣿⣿⣿⣿⣿⣿ // ⠀⢸⣿⣿⣾⣇⠀⠋⡏⠀⠀⠀⠀⣀⡤⠴⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣭⣻⣎⠀⠹⣵⡟⠙⠛⢿⣿⣿⣿⣿ // ⣴⣿⣿⣿⣻⣿⣆⢰⠁⠀⠀⠀⠘⠁⣶⠿⣶⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠛⠋⠀⠀⢻⣠⣴⠀⣼⡟⠛⠛⠛ // ⣿⣟⠙⣿⣿⣿⣿⡏⠀⠀⠀⠀⠀⠀⠙⠻⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣾⣿⠁⠀⠀⠀ // ⡏⠁⠀⠘⢿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⠀⠀⢠⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⠃⠀⠀⠀⠀ // ⣄⠀⢀⡀⠈⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⠃⠀⠀⠈⠻⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣷⣤⣀⠀⠀⠀ // ⣿⣷⣌⢿⣷⣍⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⠃⠀⠀⠀⠀⠈⠊⣙⠷⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⡟⣎⣻⣼⣷⡆⠀ // ⣿⣿⣿⣷⣽⣿⣿⣿⣷⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠙⠊⠉⠛⠷⢶⣤⣄⠀⠀⠀⢀⣠⣼⣿⣿⣿⣿⣷⣿⣿⡿⠿⠃⠀ // ⣿⣿⢻⣿⣿⣿⣿⣿⣿⣿⡦⢶⣄⠀⠀⠀⠀⠀⠀⢀⣀⡤⠖⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⢿⣿⣿⣿⠿⠟⠛⠉⠁⠀⠙⣄⠀⠀ // ⣸⣷⣿⣿⣿⢿⣿⣿⣿⣿⣿⡄⠈⠉⠉⠉⠉⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⠟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠈⢦⠀ // ⠿⠿⢿⣿⣿⣾⣿⣿⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠖⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳ // ⠀⠀⠀⠁⠚⠉⠛⠙⠛⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠹⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⢹⡟⣿⣿⢳⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡏⠉⢹⣏⠀⠉⠓⠤⣄⣀⡠⠖⠋⢳⣀⣀⣀⣀⣀⣀⣾⣐⣈⣦⣀⣀⡤⠤⠖⠒⠒⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⢸⡟⢸⠇⠸⣿⡄⡇⠀⠀⠀⠀⠀⠀⠀⢀⣠⠤⠷⠶⠾⡊⠦⣄⣀⡤⠖⠉⠀⣀⣴⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⣾⢧⠟⠀⠀⠙⢧⡵⠀⢀⣀⠠⠤⠒⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠢⣤⣤⡴⠛⠉⠙⡆⠀⠀⠀⠀⢱⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠒⠚⠛⠛⠛⠛⠒⠒⠒⠒⠋⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡨⠋⠀⢀⣴⡾⠃⢀⠇⠀⠀⢸⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⡀⠀⠀⠀⠀⠀⠀⠀⣜⠁⢀⣼⠛⠛⠤⣰⣫⠖⠀⡄⢸⡦⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣧⡀⠀⠀⠀⠘⢄⢸⢑⡷⢿⡿⢶⣄⠀⢈⠳⡄⣴⡧⢸⡏⠉⠳⡖⠲⠤⠤⢤⣄⣀⣠⡤⠴⠚⠉ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⡠⠤⠖⣚⣿⠀⠀⢄⡀⠙⠲⣍⣠⠋⠐⣠⣾⣿⢧⣴⣣⠏⣰⡿⠀⠀⠀⠹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡠⠴⠒⠉⠁⠀⠀⠀⠀⠀⠈⢷⡀⠐⠭⣗⡀⡴⢁⢀⣼⣿⠂⠉⠢⣴⣁⡾⠋⠀⠀⠀⠀⠀⠹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠑⠦⢄⣀⠀⠀⠀⠀⠀⢀⣠⡤⢒⠯⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠦⢄⡀⠙⠧⣴⡋⣠⠟⠒⣤⣠⢀⠝⣄⠀⠀⠀⠀⠀⠀⠀⢧⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠈⠉⠉⠉⠉⠉⢉⠞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠓⠦⣜⡽⠡⣤⣼⡯⣍⡉⢲⠊⠀⠀⠀⠀⠀⠀⠀⢸⡀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⢠⠎⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢇⡰⠟⠋⠀⠀⠈⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⣠⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⡴⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡀⠀⠀⠀⠀⠀⠀⠀ // ⡀⠀⠀⠀⠀⡼⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢧⠀⠀⠀⠀⠀⠀⠀ // ⠃⠀⠀⠀⢰⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣆⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⢀⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡄⠀⠀⠀⠀⠀ // ⠀⠀⠀⡸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡄⠀⠀⠀⠀ // ⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡇⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢢⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠖⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣆⣀⣀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠾⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠛⠉ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡆⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣆⠀⠀⢀⡇⡀⠀⠀⡰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡄⣤⢞⡞⠀⣠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡉⡏⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡍⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣷⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡁⢸⡅⠘⡌⠘⢰⢷⡆⠢⠘⣿⣿⣿⣿⣿⣿⣿⣿⣷⣼⣭⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠐⡐⠈⡈⡇⠸⣾⠁⠸⠰⠇⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠈⢧⠀⣌⢦⡀⠘⣿⠀⠁⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⢊⠄⠀⠀⡿⢠⣿⠘⢰⡇⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡌⢌⢻⡌⢦⡙⢶⣌⠣⠀⠀⢻⣿⣿⣿⣿⣯⣉⡛⢿⣿⠿⠛⣛⣻⣿⣿⣿⣿⣿⡿⠂⠀⠈⠀⠀⣂⠃⢸⡟⡀⣼⠃⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁⠈⠂⠻⣄⠻⣀⢻⣷⣦⠀⠀⠙⢿⣿⣿⣿⣿⡟⠻⠿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⢀⠀⠀⢹⡄⠸⡿⠾⠜⠠⡄⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢋⠀⣶⠂⣀⠀⢻⡄⠹⡆⣿⣿⣧⠀⠹⡆⠙⢿⣿⣿⣿⣶⣾⣿⣿⣿⣿⣿⠿⠋⣡⠀⠀⠀⠀⠘⡆⠀⠈⣇⠈⢀⠀⠸⡀⢻⣄⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢾⢸⡏⠀⣿⣧⠀⣿⡄⡇⣿⣿⠏⡄⠈⡆⠈⡦⠙⠿⣿⣿⣿⣿⡿⠟⠋⢀⣠⣾⣿⠠⡄⡀⠀⠢⠑⠀⣀⢸⠀⠀⡇⠇⡇⠀⠻⣷⣌⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡌⢘⠃⠀⠟⠁⡠⢋⠰⢡⡿⢋⡌⡇⠀⡿⠀⠙⠀⠓⠌⠙⠋⠡⠀⠀⣐⣛⣩⣭⣴⠆⠧⠠⠀⢠⢰⡿⢋⠈⠇⠀⠁⠶⢠⣿⣷⣦⡙⢷⣄⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣸⠈⡀⢀⡞⢰⢡⠃⡜⣰⣿⢰⢃⠀⠟⣀⠀⠀⠝⠻⠿⠿⠿⠿⠿⠿⠟⡛⠋⢁⣠⣶⠟⣩⡇⠏⠀⠎⡜⠀⠇⠜⣰⣿⣿⣿⣿⣿⣦⡙⠇⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⢃⣼⡇⠀⢋⡀⢀⡄⠄⠙⢟⣀⣚⣠⣼⣿⣿⣿⣿⣷⣶⣶⣶⣾⡿⠛⣉⣴⣾⣿⢛⣡⣾⣿⡁⠀⣸⢰⡇⠀⣇⠐⣿⣿⣿⣿⣿⣿⣿⣿⣦⡹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋⣡⣴⣶⣦⡐⠆⠀⡇⠘⣷⡜⣆⠈⣛⣛⣛⣛⠛⠉⠙⣿⣿⡟⠁⠊⠁⣀⣽⣿⡿⢋⣴⣿⣿⣿⣿⣧⠀⢿⢸⡑⡆⢸⡖⡘⢿⣿⣿⣿⣿⣿⣿⣿⣿⣌⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⣱⣾⣿⣿⣿⣿⣿⠁⠀⢠⠃⠀⠹⡿⡸⢠⣿⣿⣶⣦⣄⣉⣱⣮⣴⣯⣠⣴⣿⣿⠟⣡⣾⣿⣿⣿⣿⣿⣿⣿⣆⠈⠈⢇⢹⢸⢡⣥⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣜⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⣼⣿⣿⣿⣿⣿⣿⣿⠀⢀⡟⠀⢸⡦⢠⢃⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⣋⣵⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⡀⠘⣾⠘⠀⡟⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣸⣿⣿⣿⣿⠿⣿⣿⣿⠀⢸⡇⡀⠈⡇⡀⡛⠿⢿⣿⣿⣿⣿⠿⠿⢟⣋⣭⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⢀⢃⠀⢸⢃⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣌⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢡⣿⣿⡿⠟⣋⣴⣿⣿⣿⡄⠘⡇⠀⠀⠁⢃⢻⣿⣷⠾⣃⣤⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⢀⣤⠟⠠⢂⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡜⢿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⢘⣩⣴⣶⣿⣿⣿⣿⣿⣿⣿⣦⡈⠀⢳⣄⠈⠀⠛⣥⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⣴⣾⡿⠛⡀⠰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡻⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⠟⣫⣵⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣄⣻⠗⣤⣤⣤⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢃⣾⣆⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡌⢿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⡿⢋⣵⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⢡⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⣼⣿⣿⣧⠀⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⠹⣿⣿⣿ // ⣿⣿⣿⣿⢋⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣡⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣩⣭⣭⣭⡍⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⣧⠀⢀⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡜⢿⣿ // ⣿⣿⡿⣡⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠋⣰⡇⣼⣿⣿⣿⣿⣿⠿⠿⣛⣟⣲⣟⣛⣻⣛⣐⡻⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⣿⠇⣼⣿⣮⡻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣮⠻ // ⣿⡟⣀⡍⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣡⣴⣿⢰⣿⣿⣿⣿⣿⡇⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡆⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⣿⣿⣿⣿⡏⣼⣿⣿⣿⣿⣌⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷ // ⣿⢡⣿⠃⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣰⣿⣿⡟⠸⣿⣿⣿⣿⣿⣧⠹⠿⠟⢛⣛⣛⣛⡛⠛⠛⠿⠿⠿⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢸⣿⣿⣿⠏⣼⣿⣿⣿⣿⣿⣿⣦⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⡟⡼⠿⠰⠿⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⣼⣿⣿⣿⣧⢰⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⡇⣿⣿⣿⣿⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⣾⣿⣿⡟⣼⣿⣿⣿⣿⣿⣿⣿⣿⣷⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⡏⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣩⣿⣿⣿⣿⣿⣿⠸⣿⣿⣿⣿⣿⣿⣿⣿⣧⣤⣭⣭⣭⣤⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢠⣿⣿⡿⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣎⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣇⠻⠿⠿⠛⢛⣃⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣱⣿⣿⣿⣿⣿⣿⣿⣇⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢡⣿⣿⣿⠃⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣜⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⠸⣿⡇⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣏⣴⣿⣿⣿⣿⣿⣿⣿⡿⢋⣆⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⢀⣾⣿⣿⡿⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡙⢿⣿⠿⠿⠿⣛⣛⣛⣛⣛⣻ // ⣿⣧⠹⢛⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⣸⣿⣦⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⣠⣿⣿⣿⣿⡧⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠿⢛⣛⣋⣭⣤⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣧⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢁⠆⣾⣷⡹⣿⣿⣦⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⢡⣴⣶⣿⣿⣿⣿⣿⡇⣼⣿⠿⠿⣛⣛⣩⣭⣽⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣷⣌⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢋⣴⠏⢼⣿⣿⣷⡜⢿⣿⣿⣶⣬⣙⠻⠿⢿⣿⣿⣿⣿⣿⣿⡿⠿⠟⢛⣩⣴⣾⣿⡿⠿⣛⣩⣭⣴⣶⣶⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣷⣌⡛⠿⣿⣿⣿⣿⣿⣿⣿⡿⠟⣩⣴⣿⠏⣴⣿⣿⣿⣿⣿⣦⣝⠻⣿⣿⣿⣿⣿⣶⣶⣶⣶⣶⣶⣶⣶⣾⣿⣿⡿⢟⣩⣴⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣷⢨⣍⣛⣛⡛⢩⣥⣶⣿⣿⣿⠋⣼⣿⣿⣿⣿⣿⣿⣿⣿⣷⣬⣙⡻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⣋⣴⣿⡟⠛⢉⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⠟⣈⣭⣭⣭⣭⠸⣿⣿⣿⣿⣏⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣾⠿⠛⠉⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⠃⣼⣿⣿⣿⣿⣿⣆⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⠀⣀⣀⣴⣿⣿⣿⣿⣿⣿⡿⢋⣽⣿⣿⣿⢡⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⡏⢸⣿⣿⣿⣭⣴⣶⣬⣄⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣐⣛⠀⣿⣿⠿⠿⠟⠋⣹⣿⣟⢀⣿⡿⢡⣿⠃⣴⣶⣶⣶⣶⣶⣶⣶⣯⣭⣭⣭⣭⣭⣉⣟⣻⣟⣉⣭⣭⣭⣭⣭⣶⣶ // ⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣍⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠘⠷⠖⢀⣴⣾⣿⡿⢋⣼⣿⠃⣾⠃⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⡀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢠⡀⠻⣴⣿⠿⠋⢁⣴⣿⡿⠃⣼⠇⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣧⠘⢣⣿⣿⣿⣿⣿⣿⡏⢹⣿⣿⣧⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⣸⣷⣅⡀⠐⠶⣾⣿⣿⠏⣠⣼⠋⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣇⢸⡟⢻⣿⣿⣿⣿⢡⡄⢿⣿⣏⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⡋⣿⣿⣟⣓⠢⠄⠢⠄⣀⠉⢩⠀⣌⣄⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣇⠸⣿⣿⣿⣿⢸⣷⠈⣿⣿⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⣇⣿⣿⣿⣿⣿⣿⣶⣶⣾⣿⣿⠀⣿⣿⣦⡻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⠄⠈⢿⣆⠹⣿⣿⣿⣦⡙⢧⠙⣿⠈⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀⢹⣿⣿⣿⣦⣝⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⠄⠻⣧⡘⢿⣿⣿⣿⣶⣶⣶⣶⠶⠌⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣷⣮⡻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠢⡘⠳⣦⣭⣍⡒⠒⢒⣫⣄⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠘⣿⣿⣿⣿⣿⣿⣿⣿⣦⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣝⠷⢉⣩⡅⣰⣿⢸⣿⣿⡆⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡌⢿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢰⣿⣿⠸⣿⣿⣿⡄⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡈⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢸⣿⣿⡄⣿⣿⣿⣷⡀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠀⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣾⣿⣿⡇⣿⣿⣿⣿⣷⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣀⣿⣿⣿⣿⣿⣿⣿⣧⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣎⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣷⢸⣿⣿⣿⣿⣧⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡘⢿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⣿⣿⣿⣿⡈⣿⣿⣿⣿⣿⣇⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠻⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢠⣿⣿⣿⣿⡇⣿⣿⣿⣿⣿⣿⣆⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠹⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⢸⣿⣿⣿⣿⡇⣿⣿⣿⣿⣿⣿⣿⡄⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢀⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠹⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⣾⣿⣿⣿⣿⠇⣿⣿⣿⣿⣿⣿⣿⡟⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⢆⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠹⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⣰⣿⣿⣿⣿⣿⢀⣿⣿⣿⣿⣿⣿⣿⣿⣶⡀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠘⣆⠘⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⢻⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⢰⣿⣿⣿⣿⣿⡟⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢋⣠⣀⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⢿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠋⣰⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠋⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡌⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢡⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⢸⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣼⣿⣿⣿⣿⣿⣿⣿⣿⡛⢿⣿⣿⣿⣷⡄⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⠏⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢃⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣍⡛⠿⣿⣿⣆⠈⠻⣿⣿⣿⣿⣿⣿⣿⡿⢸⠸⣿⣿⣿⣿⣿⣿⡿⢣⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣝⠻⣧⡐⢌⠻⣿⣿⣿⣿⣿⠇⡏⡇⢿⣿⣿⣿⣿⡟⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣬⡛⢦⡑⢦⣍⡛⠿⢋⣼⣷⣸⡘⣿⣿⣿⡟⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣍⠢⠙⢿⣿⣿⣿⣿⣿⣧⠹⣿⣿⢡⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣄⠙⢿⣿⣿⣿⣿⣧⠹⡇⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣌⠻⢿⣿⣿⡷⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣝⠲⣤⣶⡆⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡌⢿⠁⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿ // ⠀⠀⠀⢄⠠⢂⠄⡠⢀⠄⡀⠠⠈⢁⠈⡁⠌⡀⠁⠉⣈⣯⣿⣿⣿⣿⡿⠀⠀⢀⠎⠁⠀⠀⠀⠀⠀⠀⠀⠀⠠⠑⠨⣑⠢⡐⠀⢆⡠⠐⠠⠒⠄⡒⠈⡄⡁⠎⡐⠁⢆⠰⠈⡔⢡⠊⣌⠡⢍⠢⢘⣿⡧⠐⢦⡘⢤⢃ // ⠀⠀⠀⠀⢁⣌⣤⣥⣦⣼⢤⣥⣬⣤⣮⣴⣥⣴⣶⣷⣿⣿⣿⣿⣿⣿⠇⠀⠀⡌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡉⠐⡀⢳⡌⠡⢌⣳⡌⠡⠘⣀⠂⠡⢀⠐⠀⠄⡁⠂⠠⠁⡐⠠⢁⠂⠌⡀⠆⣿⣿⡧⣙⠢⠉⠂⠄ // ⣧⡄⠀⣌⠀⠀⠀⠉⠙⠛⠷⠿⣿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠈⡰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠡⠐⡀⢻⡔⢣⢎⣿⠀⠡⢀⠌⡐⠂⠌⡐⠠⢀⠁⢂⠁⠄⡁⢂⠌⡐⠰⣈⣿⣿⠃⠄⠠⠁⠌⠀ // ⡙⣿⣷⢾⡷⣄⠠⡐⠤⡀⢄⠂⣹⣟⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢀⠔⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢀⠡⠐⠠⠙⠳⣾⠏⡐⠡⠈⠀⠀⠁⢈⠀⠃⠌⠂⡅⠊⠆⡙⠌⡘⠠⠃⢤⣿⣟⠠⠉⡄⠡⠈⠀ // ⠙⠦⣝⢿⡯⣝⡻⢷⡳⣟⡶⣟⠯⡜⡱⠘⣿⣿⣿⣿⣿⣿⣿⡿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠂⠌⠠⢁⠂⠄⠒⠠⠁⡄⢀⠠⡐⢂⡡⢃⢌⠰⢠⣁⠒⠤⡐⢠⡁⢇⣼⣿⡇⠢⢁⠐⡀⢁⠂ // ⠀⠀⠉⢷⡜⠳⢝⡮⣱⢣⡝⣎⠳⣍⠲⣹⢧⡀⠙⢻⡿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠌⡀⠡⠀⢂⠈⠄⠁⢂⠘⠠⡁⠌⠠⠁⠌⡈⠡⢃⠄⡋⢆⡱⠡⡜⢢⣿⣿⠇⡁⠂⠄⠐⠀⠀ // ⠀⠀⠀⠀⣿⡲⡀⠉⠶⣃⠞⡌⠳⡈⣵⣿⡆⢹⠔⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠐⡀⠡⠀⠂⢈⠐⠀⠂⡁⠠⠈⠄⢁⠂⠄⡁⠂⠌⡐⠢⢐⠱⡈⢹⣿⣿⠐⠠⠈⠀⠀⠀⠀ // ⣶⣤⣤⣀⣿⣿⣅⢆⠐⠀⠌⡐⠡⢂⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠠⢁⠈⡀⠐⢈⠀⡐⠠⠁⡐⠀⡐⠠⠐⢈⠐⠠⠁⠎⢠⠑⣺⣿⡏⠀⠠⠀⠀⠀⠀⠀ // ⣿⣿⣿⣿⣿⣿⣿⣟⢄⠘⠀⡀⠠⣸⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠠⢀⠃⡀⠄⡀⠄⠃⠀⠄⠀⡀⠃⠄⡘⢀⠣⠘⠄⡄⣻⣿⡇⠀⠀⠀⠀⠀⠀⠀ // ⣿⣿⣿⣿⣿⣿⣿⣿⣧⣂⠐⠀⢠⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠐⠠⠀⠄⠀⠀⠀⠀⠀⠀⠄⠐⠈⡐⠠⢃⠰⢉⠒⡰⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⣈⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⡂⢡⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠠⠁⢎⡐⠣⡌⣽⡏⣽⠀⠀⠀⠀⠀⠀⠀⠀ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡾⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡁⢢⢁⢿⠀⠀⠀⣀⡠⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡉⠤⡘⢱⣈⣿⣷⣿⠀⠀⡀⠀⠀⠀⠀⠀ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⡈⢤⣋⡾⢀⠴⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢂⡑⢣⢼⣿⣿⡹⡄⢸⡇⠀⠀⠀⠀⠀ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢑⡘⣦⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠂⠜⡰⢺⣿⣿⡗⡇⣿⠀⠀⠀⠀⠀⠀ // ⣿⣿⣿⣿⣿⣿⣿⣿⣟⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡘⢤⣻⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⡘⢠⠑⢺⣿⣻⣯⢿⡏⠀⠀⠀⠀⠀⠀ // ⣿⣿⣿⣿⣿⣿⣿⣅⠰⣇⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠢⣘⣾⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢂⠐⠤⣉⢺⣿⣾⣿⢼⡗⠀⠀⠀⠀⠀⠀ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⡣⢌⡑⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡐⢌⢲⣹⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠠⠈⢔⠆⣹⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣖⡌⠡⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⡒⢄⠲⣌⢷⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠄⣁⠊⠄⣿⣿⣿⣿⡧⠀⠀⠀⠀⠀⠀⠀ // ⣿⣿⣿⣿⣿⡿⠿⠿⠿⠿⠿⠻⣅⠊⠔⠠⢀⠄⢠⠀⠄⡠⠀⠄⢠⠐⡠⠁⢎⠰⡡⢎⡱⢎⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠡⠐⢠⠉⡔⣿⣿⣿⣿⡷⠀⠀⠀⠀⠀⠀⠀ // ⠉⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢯⡢⡑⡌⢌⢢⡘⢤⡑⠬⡘⡄⠦⢡⡉⢤⢣⡑⣎⠵⣻⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⡀⠁⢆⠸⡐⢿⣿⣿⣿⣿⠀⠁⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠲⣜⢢⠒⣌⠲⣌⢣⠱⣌⢣⠣⡜⢢⣃⠞⣬⠳⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠠⢁⠢⡑⢭⣻⣿⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠈⡟⢳⣬⣳⠸⣌⠳⣌⢖⡣⣍⠳⣌⠻⣔⣯⡷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢈⠐⠌⢢⢙⡆⣿⣿⣽⣿⠇⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⡄⢣⢛⠿⣾⢷⣾⣾⣶⣯⣿⣾⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢁⠂⡘⡘⢢⢭⣘⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠀⠀⠀⠀⠀⠱⡀⢊⠱⢪⠝⣎⠷⣫⢟⡿⢿⣟⡿⢿⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠁⠤⠘⠤⣙⠲⣌⢾⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠄ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠃⠀⠀⠀⠀⠀⠀⠑⠀⢠⠁⠚⡌⢣⠓⣮⡜⢣⡞⢻⣷⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠈⡄⢡⠂⡍⢲⢡⡏⣴⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⣼⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠐⠈⠒⢬⡘⠥⠚⡔⢣⢛⣿⣧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⢀⠀⠄⢂⠰⡈⢆⡍⢆⡳⣌⣳⣿⣿⡟⠀⡐⠈⠀⠀⠀⠀⠀⠀⢈ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢲⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢁⠣⠈⠅⠊⢿⣽⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢄⠡⠒⣄⢊⠔⣈⢆⡱⢊⡜⡬⡱⢮⣿⣿⡟⠀⠆⠠⠀⠀⠀⠀⠀⠀⠀⢨ // ⠀⠀⠀⠀⠀⠀⠀⠀⢀⠂⣼⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡄⠀⠀⠀⠀⠀⠀⠀⠀⠡⠈⠄⡙⣷⢯⣿⣶⡀⠀⠀⠀⠀⡀⠄⡰⢐⠢⣉⢆⢣⠓⣌⠲⡌⢆⠎⡴⢋⡴⢣⣵⣿⡿⡓⣌⠱⢊⡁⠄⠀⠀⠀⠀⠀⠀⢾ // ⠀⠀⠀⠀⠀⡀⠐⡈⢄⣺⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⢟⣆⠀⠀⠀⠀⠀⠀⠀⠠⠁⠂⠄⠸⣿⡜⣯⢿⣶⣤⢂⠤⡑⢬⡐⡿⢋⡙⢮⣣⠝⣬⠳⡜⢪⡝⣘⢧⣺⣽⣿⠋⢀⠱⣎⡜⣡⠂⠀⠀⠀⠀⠀⠀⣈⢿ // ⠀⠀⠄⡁⢂⢡⢊⡔⣪⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣆⠀⠀⠀⠀⠀⠀⠐⠈⠠⠈⠄⡘⢿⡜⣯⢞⡿⣻⣷⣌⡳⡜⣷⣽⣞⣿⢣⡟⡬⣓⡍⢧⣼⣷⣾⣿⡟⠁⠀⠂⢄⡿⢒⡡⢊⠀⠀⠀⠀⠀⢀⠬⣿ // ⣦⡁⢆⠸⢠⢃⡎⣴⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡀⠀⠀⠀⠀⠀⠀⠂⢁⠐⠠⠐⡈⠿⣖⠯⣞⡳⢯⣟⡿⣿⣷⣾⣿⣾⣷⣾⣷⣿⣿⢿⣿⣻⣿⠏⢀⠠⠁⠌⠱⣈⠣⠐⡀⠀⠀⠀⠀⠠⣌⢻⣿ // ⡹⣿⣥⣏⣦⢫⣼⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠹⠄⠠⠀⠀⠀⢀⠂⠄⡈⠐⢠⢀⢃⠚⡻⣼⣹⢳⢮⡝⣧⢻⣭⠻⣝⢯⠻⣵⢫⢞⠳⣜⣻⡿⢀⠂⠀⠈⠀⠁⡀⠂⠁⠀⠀⠀⠀⣀⠣⣜⣿⣿ // ⣹⡔⣿⣻⣿⣿⣿⡏⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠌⢠⠁⢂⠁⠌⠠⢁⠂⠡⢀⠐⠠⢈⡁⠆⡰⠈⢆⠱⣈⠳⣋⠮⡝⣜⢣⠮⡝⣎⠮⣙⠦⣉⠎⡱⢂⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠐⣤⣳⣽⣿⣿ // ⠐⠢⡏⣷⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠿⠻⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡹⣍⢯⡹⢭⡹⡹⢆⡐⠠⠰⠀⡐⢀⠂ // ⠉⡔⣉⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣏⠷⣌⢧⡹⢆⡳⢽⡧⠀⠁⠀⢰⠀⠠⢈ // ⡑⢾⣤⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⣀⠀⠀⡀⠀⠠⠄⠀⠂⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⢓⡎⢾⣕⢫⡜⣣⡇⠀⠀⠀⠀⠰⠁⠀ // ⡿⡐⣯⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠫⣜⢳⢎⡳⠜⣥⢃⠐⡀⢂⠐⠠⠐⡀ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⢻⣬⠣⢞⡬⡙⢦⢃⠐⡀⠂⠌⠠⠁⠄ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣏⠷⣦⠛⡴⢒⡹⡜⡦⠐⢀⠡⠈⠄⡁⠂ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣎⠵⣋⢖⣻⡶⣩⠓⢈⠠⢀⠁⢂⠐⡀ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⢀⣠⡀⢀⢠⠀⢤⠀⠀⠀⠀⠀⠀⠀⠈⠂⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⡜⣱⢸⣺⣽⣳⢡⠋⠀⠄⠂⢈⠀⠄⡀ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢁⣷⡈⣰⡿⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣍⠶⡡⢟⡷⣇⠎⠥⠈⠀⠌⠀⡀⠂⠀ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡘⢾⣯⣷⣿⢁⠆⠀⠀⠀⠠⠀⣀⡀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣎⡱⢡⢿⣻⢽⡈⢇⠀⢁⠀⠂⠀⠄⠁ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣗⡀⠚⣂⣽⣿⣤⣤⣴⣶⠃⠻⢄⡝⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡽⡐⢭⣻⡽⢣⠜⡣⠀⠀⠂⠁⢈⠀⠂ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡌⢵⡿⣯⣿⠿⠋⢁⠰⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣕⢫⢆⡷⡙⡄⢣⡑⠀⠁⢀⠈⠀⢀⠀ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣌⢛⡋⠁⠀⠀⠈⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠁⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⡌⢒⡸⣡⠑⣬⢆⡵⠀⠀⡀⠀⠠⠀⠀ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠉⢁⣤⣤⣤⣌⡄⣀⠠⡀⠀⡀⣀⣠⣤⢶⣄⠐⣤⣀⡀⠀⠈⠊⠻⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠌⣶⡹⡼⣧⢘⢯⠖⠀⠀⠀⠀⠄⠀⠀ // ⣿⣿⣿⣿⢠⡙⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠁⣠⣾⣿⠻⣯⢿⣽⣻⣽⣳⢧⣄⠈⠙⢿⣽⣻⠿⣆⠙⣿⣻⢿⡆⠈⣡⣶⣤⡉⢻⣿⣿⣿⣿⣿⣿⢯⡟⣾⠹⣗⢯⣛⢮⡇⠀⠀⠈⠀⠀⠀⠀ // ⣿⣿⣿⢧⠃⠌⠐⠠⢋⠝⡫⢍⠣⠈⣄⢡⢋⠇⠀⣼⣷⡟⠎⠀⣿⣟⣾⣳⢯⣟⣾⣹⢿⣤⠀⢫⡷⣿⢺⡀⢷⢻⣿⠀⣞⢿⣻⣆⢻⡆⢻⣿⣿⣿⣿⣿⢏⡞⣵⠻⡌⠏⣜⣣⠖⠀⠀⠀⠀⠀⠀⠀ // ⢿⡿⢿⣯⠩⠐⠈⠀⠄⠂⠁⢀⠠⠑⡌⢆⠣⠀⢺⡿⣯⠃⠀⣼⢿⣮⢷⣭⣟⣾⣧⢿⣯⢾⣇⠀⣿⡽⣷⣇⠸⣝⣮⡀⢿⢭⡛⢽⡄⢣⠀⣿⣿⣿⣿⣟⠼⡘⣌⡱⢀⡟⡶⣹⠂⠀⠀⠀⠀⠀⠀⠀ // ⢎⣇⡒⡼⠀⢁⠈⢀⠂⢀⠁⡀⠠⠀⠠⠈⠀⢈⠸⣿⠡⠠⢰⣟⡿⣾⣻⣜⡿⣿⣫⢿⡼⣟⡾⢀⡷⣫⠷⣯⠄⣟⣳⣇⠸⣻⣷⡾⣧⠀⠀⡿⣽⣛⡿⣯⢰⡙⢦⡓⡬⢳⠑⢃⡃⠀⠀⠀⠀⠀⠀⠀ // ⠸⡿⡝⡜⠀⡀⠀⠂⢀⠠⠀⠀⠄⠠⠁⠀⠄⠨⠄⢻⠆⠐⠸⣯⣟⠷⣟⢾⡽⣯⢷⡯⣟⣽⠃⠰⣻⣭⢿⣹⠂⣯⢟⣾⡄⢻⣽⢻⣵⡀⢀⠒⡡⢋⠽⡑⠢⢙⡆⠡⢀⢣⠞⣇⠆⠀⠀⠀⠀⠀⠀⠀ // ⠱⣣⠝⡌⠀⠀⠀⠂⠀⢀⠀⠄⠈⠠⠁⠂⠀⠘⠠⡘⠀⠘⡀⢷⣫⡿⣽⣫⣽⣻⢾⡽⣯⠃⠀⣾⡽⣮⡟⣽⠂⢼⢯⣟⣷⠀⢻⣯⢷⡁⢀⠣⡐⢡⠢⣁⢻⠔⣎⠐⠀⢎⡽⢎⡐⠀⠀⠀⠀⠀⠀⠀ // ⠧⣅⠛⡄⠁⠀⠂⠀⠈⠀⠀⠀⠠⠀⠀⠁⠀⠀⢃⠀⠀⠀⠰⠈⣷⣻⣗⣳⣞⣳⢯⠟⠀⠌⣜⣳⢯⡷⣽⢻⠀⢸⢯⡾⣽⠆⠀⢫⡏⠀⠀⢆⠑⣂⠱⢠⡙⢎⠰⣈⠐⡌⡞⡥⠂⠀⠀⠀⠀⠀⠀⠀ // ⡒⢌⠳⡀⠂⠀⠀⠐⠀⠀⠐⠀⠀⡀⠐⠀⠀⠂⠈⠀⣠⣆⠀⢁⠈⣷⢯⣳⣭⣟⡞⠀⢉⣞⣯⢟⣯⢾⡭⡟⠀⢸⣎⡷⣭⢷⡀⠀⠥⠀⢁⠊⠰⡀⠌⡐⢈⠰⢠⠂⡔⢠⠻⡔⡁⠀⠀⠀⠀⠀⠀⠀ // ⡁⠎⡰⢁⠀⠀⠀⠂⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⣤⡾⢯⣿⠀⠠⣂⠘⢯⣳⢿⠜⣠⡴⣯⣟⣾⡛⢨⢿⣹⠇⠀⣼⠼⣽⡺⣽⠆⡈⠀⠀⠌⡐⠡⠐⡠⠐⡀⠀⠏⢶⡈⠤⢙⡠⠁⠀⠀⠀⠀⠀⠀⠀ // ⣄⣃⡒⢡⡀⢀⠂⡀⠀⠄⡀⠐⠀⡀⠂⢁⠜⣼⢳⡯⣟⡞⠠⠓⡌⣺⣄⣩⡴⣾⡱⢯⠷⣞⠇⢡⠞⣯⡗⠀⠁⢾⡃⢫⣟⣭⠃⠄⡀⠀⠀⠀⡁⠆⢁⠒⢠⠁⡘⠆⠱⢂⢌⡧⠀⠀⠀⠀⠀⠀⠀⠀ // ⠈⢻⡉⠉⠉⠉⡉⠉⠉⡉⠉⠋⠋⠑⠃⡈⢾⣭⢷⣟⣼⠃⢠⠙⡄⣟⣾⢳⡽⣖⣻⢯⡟⠁⣠⡟⡸⣱⠃⠈⢀⢺⢱⠀⢿⡌⠐⠀⡐⠀⠀⠀⠀⠀⠀⡉⠄⠒⠀⣚⠀⠡⢈⢚⡇⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⢀⠠⣁⡀⢄⡀⡁⢀⡀⡁⢀⠁⠠⢃⢹⡮⣟⡼⣾⠀⢀⢃⠆⣻⢞⡯⣷⣫⢷⠋⢀⣼⣳⡾⣱⠃⢠⠁⣸⣼⣾⠀⠘⠀⠄⠐⡁⠀⠀⠀⠀⠀⠀⡐⢠⠈⠀⡆⠀⡁⢦⡌⡇⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⢂⡻⠤⠛⠈⠑⠀⠀⠀⠉⠂⠀⢀⠠⠈⢿⣱⣟⠇⠀⠀⡊⡔⡈⢿⡽⣞⠧⠋⣠⢟⡶⣳⢽⡃⠀⠆⠀⢳⣟⡾⡡⠀⠀⠀⡌⠒⠀⠀⠀⠀⠀⠀⠀⢣⠈⢄⠣⡐⠈⢼⠀⠃⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠠⠁⠀⠀⠀⠀⠀⠀⠀⠄⠀⠀⠈⡄⢃⠆⡄⡈⠄⠐⠀⠐⡡⠎⠀⠀⣀⣀⡀⣉⢉⠚⠉⠀⠠⠁⢀⠣⠈⠙⠓⠁⠄⠀⠡⠈⠁⠀⠀⠀⠀⠀⠀⠀⠐⠂⢌⡐⢍⠐⠈⠂⠁⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠰⠈⠒⠤⠉⠄⢀⡁⢤⡐⣬⣉⢧⡲⣔⣦⢵⣊⡶⣩⢇⣍⢢⠀⡀⠤⣥⡌⠲⠐⠂⠄⢁⠠⢄⢢⡒⣦⡹⣍⡳⣔⣂⠢⢌⠈⡀⠒⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠠⢀⠄⠠⠀⠀⠀⠀⠀⠀⠐⠁⠂⠄⢂⣡⣞⡶⣽⢶⣏⡿⣽⣳⢞⡯⣽⢞⡷⣛⣾⢣⣟⡴⣀⡀⠀⣤⣤⣄⠈⢆⡹⣬⣳⡽⣶⢻⣭⢳⡟⣞⡻⣎⢶⡈⠒⢄⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠌⠠⠁⠂⠄⡀⠄⠀⢠⢂⡴⣭⣏⡷⣯⢽⡻⢮⣝⢾⡱⣏⠾⣭⢳⣏⢾⡳⣎⡿⣜⢷⡽⣜⡄⠀⢻⡤⠈⢦⣝⡳⣧⢻⡭⢷⡺⣍⢿⡱⢯⣝⣮⣝⢶⡈⢄⠂⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠂⢁⣀⡐⠀⡊⣴⣚⢷⡧⣿⡭⣗⢯⣝⡳⢮⢧⣟⡼⣛⡼⣣⢞⣧⢻⡜⣷⣹⢮⢗⣻⣜⡣⠀⠇⢘⢰⣯⢽⡞⣯⡝⣧⢻⡼⣣⣟⣳⢞⣼⣹⠾⣽⣣⢄⠒⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⡠⢐⣊⡉⣆⠄⡀⢎⡵⢮⡽⡾⣵⢳⢯⡝⣮⢳⡝⣯⣞⣮⣷⣹⢞⡵⣫⢞⣧⢻⡵⣛⢾⣩⠷⣎⠷⡡⠀⢠⢚⣾⣹⢾⡱⣏⢾⡱⣻⣷⣿⣮⣟⠶⣭⠻⡵⢯⡞⣖⡈⠠⠠⠄⡀ // ⠀⠀⠀⠀⢀⣀⡡⣴⢣⡞⣽⠎⢠⡝⡮⣝⢯⡷⣻⢵⣛⢮⡝⣮⢗⣻⢿⣿⣿⣿⢟⣮⢳⡝⡾⣜⢧⣛⡽⣺⢵⡻⣭⢗⠡⠀⠰⠘⡶⢯⣷⣹⢞⢮⣓⣟⣿⣿⢿⣝⡯⣗⠯⣝⢯⣟⡾⣔⡂⠁⠈⡔ // ⠀⠀⢠⢎⠶⣬⢳⣭⢯⢽⠃⣴⢣⣞⣳⡝⣮⢷⡹⣧⢻⡞⡽⣎⢿⡹⣟⣿⣻⣽⢻⡼⣣⢟⡵⣫⢾⡭⣟⡽⣎⢿⡜⡏⠐⠀⠀⠆⠸⣟⡶⣏⢾⣣⢻⡜⣶⡹⣏⢾⡱⣏⠿⣜⡳⢾⡽⣶⣩⢃⡀⠰ // ⢀⠮⡵⣎⡿⣼⢳⡮⣟⢮⣛⠶⣏⢾⣱⣏⢿⣎⠷⣏⢷⣹⢳⡽⣎⢷⣫⢖⣳⣎⢷⡹⢧⣯⣝⣳⡻⣞⣵⡻⣞⢯⡞⠀⠀⠀⡀⠘⠄⢳⣻⡽⢧⣏⡷⣝⡶⣝⢮⢷⡹⣝⡾⣭⣛⢷⣛⣧⢗⡎⡰⠀ // ⡭⣏⢷⢫⡞⡵⣏⢷⣭⡳⣏⢿⡹⣎⢷⣚⣯⢞⡽⣏⣾⣱⢯⣞⡽⣎⢷⣫⢶⡹⣮⣝⡷⣞⡾⣵⣻⢞⣵⣻⡼⣳⠁⡈⠀⠰⠁⡀⢘⠀⣷⢻⣏⣾⣳⡭⣞⡽⢮⡳⡽⣎⡷⣞⡽⡾⡽⣾⡹⣖⡡⠁ // ⡙⡜⣎⢧⡻⢵⣫⢞⣖⡻⣜⣳⢻⡼⣳⡝⡾⣭⣳⡽⣲⢻⡞⣼⡳⣝⣮⢳⣭⣳⢳⢮⣷⢫⣷⢫⣷⢫⣞⡵⣋⡗⠠⠀⠀⡁⠀⡁⠈⡄⢸⣻⡞⣧⢷⣛⢧⣻⣝⠷⣝⣻⡼⣻⣼⢻⣽⡳⢿⡴⢣⡁ // ⢸⡱⣎⢷⡹⢧⣛⠮⡞⣵⢫⡞⣧⢻⡵⣫⢽⣣⠷⣏⡷⣻⣞⣳⡟⣾⣹⡳⣞⣳⢯⣟⡮⣟⣾⢻⡼⣏⢾⣱⢏⠆⠐⡂⠀⠐⡀⠄⠀⡘⡀⣷⢻⡽⣯⡽⣯⢷⣞⡿⣭⡷⣽⣳⢯⡟⣾⡽⣏⢾⡡⠒ // ⢢⡝⣼⢺⣝⡷⣭⢏⡳⢭⡳⡝⣮⢳⣝⣣⢏⡷⣛⢧⣟⣳⡽⢮⡿⣼⡳⢿⣹⣟⠾⣽⣳⢻⡞⣽⣺⡝⣾⡱⡏⠰⡈⠔⠀⠀⠀⠀⡀⠔⡁⢸⢯⡽⣾⡽⣞⡷⣯⣟⣳⣟⡷⢯⡷⣻⣳⡝⣞⡣⢇⡃ // ⠧⡝⣞⣻⢻⠞⣵⢫⣝⢣⢳⠹⣜⡳⢎⣧⢻⢞⡭⣟⡼⢧⣻⢯⡽⣶⡻⣯⢷⣞⣻⣳⡽⣳⣛⠶⣏⠾⣵⢋⡜⢁⠆⡁⠆⠀⠀⠐⢠⠃⠜⡀⢯⡝⣷⣹⣏⣷⢻⡞⣷⣻⣼⢻⡳⢷⣫⡝⡮⣕⠣⡐ // ⢯⣙⢦⡝⣧⢻⡜⣧⢎⡷⣈⠳⢌⡓⢏⢶⣛⢮⡝⣮⣝⣻⣜⣧⢿⣱⢟⡧⣟⢾⡱⣧⢻⡵⣫⢻⣜⡻⢤⠃⡰⢈⠔⡀⠀⠀⠠⠈⢀⠎⠰⡁⢌⡹⣎⢷⡹⡮⣟⡽⣮⡗⣞⣯⢽⡳⣇⡟⡱⢌⡒⠡ // ⠢⣉⠖⡹⢆⣏⠾⣌⠷⡜⢥⠚⠤⡉⠎⢦⡙⡞⣼⡱⣞⡳⣞⡼⢧⢯⠾⣵⢫⣏⢷⡹⢧⡝⢧⢏⠲⡑⢢⠘⡐⢀⠠⠀⢀⡆⠀⢦⠀⢈⠡⠘⡠⠑⢎⡳⢽⡱⣏⢷⣱⢻⡼⢎⡷⡹⡜⠬⡑⠢⢌⡁ // ⠀⠀⠈⠱⡈⠦⡙⢌⠓⡘⢢⢉⠢⢡⠉⢆⡘⠴⢡⠳⡱⣙⠞⡼⣋⠾⣙⣎⠳⣎⠳⣍⠳⡜⢃⠎⡱⢈⠆⢡⠂⠁⠀⢰⡻⠀⠀⢸⠆⠀⠢⢑⠠⡉⢆⠡⣃⠳⣉⠞⡬⢓⠮⡙⠴⠑⠨⢀⡁⡁⠂⠄ // ⣄⠠⢀⠀⠀⠑⡈⢂⠱⢈⠂⠆⡁⠆⢩⠠⡘⢄⠃⢆⠱⣈⠚⡰⢉⠎⡱⢈⡓⢌⠣⢌⡑⠌⢢⠘⡄⢡⠊⠤⠁⡀⢂⠘⠇⠀⠀⠈⠇⠀⠑⡌⠤⠑⡨⠐⡄⠣⡐⢌⠰⡉⠔⡉⠄⢀⡜⢦⡵⣉⢖⡀ // ⣯⢶⣂⠂⠄⠀⠐⡀⠒⡈⠰⢈⠐⠌⢂⡐⠁⠂⠈⣠⢠⢀⠀⠀⠁⠎⡐⠡⢌⠂⡜⢠⠂⢍⠂⠥⢘⠠⠌⠀⠀⡐⣁⠂⠄⠀⠀⢈⠔⠀⠀⠰⢈⡑⠄⠣⢌⡁⢒⠨⡐⠌⡐⠀⠀⡲⣌⢳⢲⣉⢞⡤ // ⣟⢾⡱⢧⡘⠐⡄⢀⠁⠀⠁⠂⠌⠐⠠⠀⠁⢠⠹⢤⣇⢎⡱⣀⠀⠄⡁⢃⠢⢁⠒⠄⡩⠐⡌⠂⠅⠂⠀⠀⠡⠐⡠⠘⠀⠀⠀⠌⠂⠁⠀⠀⠂⠌⡈⠅⢂⠌⠤⢁⠰⠀⠄⠀⠀⣳⠼⣩⢶⣩⢞⡵ // ⢊⠧⡙⢇⢣⠘⠠⠌⢂⠡⠐⣀⠢⠀⠄⠀⠄⣋⢗⣊⣩⢢⡕⢦⠂⠀⠀⠂⠄⠡⢈⠒⠠⠁⠄⠉⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠠⠈⠐⠀⠂⠐⠀⠀⠠⠇⠉⠈⢓⣮⣛⡆ // ⠀⢆⢉⠂⠆⡉⠆⢡⠂⡁⠎⡀⠢⡁⠀⠈⠄⡹⢎⠶⣡⠳⣜⣣⠃⠀⠀⠈⠀⠁⠀⠈⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠠⣄⢤⡠⣌⡤⡞⣶⡹⠀ // ⠈⠄⠊⠌⢠⠁⡘⠠⠘⠐⠠⡑⢠⠁⡀⠈⡄⢹⢎⡯⣕⣛⢦⡳⣁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⢠⠲⣍⠳⡜⠆⠛⠀⣸⣙⠦⠁⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠁⠂⢁⠘⢠⠂⠻⣴⢫⡜⢧⣛⣡⠠⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠁⢫⠳⣌⠓⠀⢀⡄⢦⣓⠮⠁⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⡂⠙⢎⢹⢎⣡⠤⠔⢀⡀⠤⠤⠤⠤⠤⢄⡀⠀⠀⠄⠐⠀⠁⠀⢀⠀⠀⠀⠀⢀⠀⠀⢀⠀⠀⡀⠀⠀⠐⠀⠢⢘⡽⠀⢀⡰⣋⠼⡿⠩⠃⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠠⢀⠤⠀⠤⠐⠂⠉⢉⣉⡁⠒⠀⠒⠠⠤⢄⣀⠀⠀⠠⢀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠄⠂⠁⡠⠊⠀⠀⣀⣤⣶⣿⣿⣿⣿⣷⣿⣿⣿⣶⣦⣄⣐⠢⢄⡑⠢⣄⡁⠂⢀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠊⢀⣀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣵⣮⡙⠶⣄⠁⠀⡀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⢀⠀⠈⣠⣞⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣮⣳⣦⠑⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⣠⣾⣿⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠊⣌⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠁⡌⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⠁⢰⣱⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⢘⢼⡇⣿⣿⣿⣿⡿⣿⣿⡟⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⣿⡎⠡⣿⣿⣿⣿⡃⣿⣿⡷⢄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⢻⣦⣿⠿⠿⣿⣦⣻⣿⡱⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠤⠀⣨⠃⠆⠀⣬⣩⣝⡿⠅⠀⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠎⢀⠀⠀⠻⠻⣿⣿⣿⣮⣄⡿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡔⠒⠂⠁⡠⠃⢰⠉⠘⡾⠣⢭⣿⠃⡰⡿⠓⣿⣿⣿⣿⡟⠉⡽⣿⢿⡟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠤⠒⠉⠀⠀⠃⠊⡉⢀⡀⠀⠀⠀⠁⠀⠀⠻⣿⣿⢯⠀⢠⡾⣏⢻⡏⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⡁⠀⠀⠀⠀⠀⠰⠈⢆⠰⢁⠂⡄⢀⡠⠀⠀⢻⡿⡇⢻⣿⢣⡏⢼⢣⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢽⠀⠀⠀⠀⠀⠁⠀⠀⠂⠁⠂⠐⠁⠀⠀⠀⠀⣿⠇⣈⠶⠛⣰⡿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣧⣥⣶⠛⠍⠠⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢃⡉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⢃⠀⠀⣀⠰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⢀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠗⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡎⣦⠞⡡⢂⣼⣿⣿⣿⣿⣿⣿⠟⠛⠁⠐⠀⠀⢀⠆ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡆⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⢼⡏⣿⠤⡑⠤⢘⣿⣿⡿⢿⣿⣄⠀⠀⠀⠀⠀⠀⠄⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠒⠒⠢⠤⠤⢀⣀⠀⣀⠤⠤⢒⠪⡑⠤⢺⢻⣁⠣⡐⢢⢘⣿⣿⣿⡈⠻⣏⢿⣎⠉⠉⠉⡙⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠑⢶⠁⠊⠔⡁⢊⡝⣺⠄⡱⠐⠠⢘⣾⠻⠛⡇⠀⢻⠈⢻⡄⠀⢰⠁⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡇⢈⠐⢂⡽⢠⠏⡐⠄⡡⠁⠌⣿⠀⢸⠁⠀⠀⠀⠀⢷⠀⡆⠀⠀⡀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠋⠔⠉⡐⠠⢈⠄⡁⢂⢸⡆⠀⠀⠀⠀⠀⠀⠈⡇⡇⠀⠀⡃ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠠⠤⠐⠂⠒⠀⠀⠹⠀⠀⠀⠀⠀⠂⢀⠁⢂⠀⡐⠀⠸⡇⠀⠀⠀⠀⠀⠀⡰⠀⢇⠀⠀⠠ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠒⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠀⠀⠀⢱⠀⠀⠀⠀⠀⠀⠀⠀⠈⠢⠀⢸ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠋⠀⠀⠀⢀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⡘⠁⣀⠂⠁⠔⢙⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠠⠈⠄⢁⠈⠄⠐⠀⠀⠀⢹⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠁⠇⢀⣀⠥⠒⠀⡄⠉⢀⠤⠒⠉⠉⠙⠒⠒⠤⢤⣁⠌⡀⢂⠀⠀⠀⠀⠀⠈⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠔⠊⠁⠀⠀⠀⠀⠀⠀⠸⡀⠀⠀⠀⠀⠄⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡐⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠒⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀⠀⠀⠀⢀⠸⡀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠎⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠴⠋⠁⠀⠀⠀⠀⠀⠀⠀⡰⠃⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠂⠀⠀⠀⠀⠀⠀⢀⡴⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡴⢋⠐⠠⠈⠀⠀⠐⠀⠀⢀⠜⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠠⠊⠀⠀⠀⠀⠀⠁⠀⡠⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠟⠀⠄⠊⠀⠀⠀⠀⠀⠀⢠⠊⠀⠀⠀⢠⠇⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠔⠁⠀⠀⠀⠀⠀⠀⠀⢀⠜⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡸⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⢀⠠⠂⠁⠀⠀⠀⠀⠀⠀⠀⡠⠐⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⣶⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⡗⡖⠂⠀⠀⠀⠀⠀⠀⡠⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⢠⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⣹⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡜⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⡰⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠈⡄⠀⠀⠀⢰⠁⠀⠀⢀⡤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⢀ // ⡀⠀⠀⠀⠀⠀⠀⢘⣄⠀⠀⢜⠀⠀⠀⠈⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢼⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢆ // ⡀⠀⠀⠂⠀⠔⡍⠁⠀⠑⡲⠸⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢼⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢺ // ⠀⠀⠀⡀⡾⣍⠁⢀⣠⠞⠁⠀⢣⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⡹⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠣ // ⠀⠀⠀⠀⠀⠉⣻⢯⡜⠀⢀⠄⠘⡍⠦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣂⠴⡇⠀⠀⠀⠀⠀⠀⠀⠀⢠⢡⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣰⢡ // ⠀⠀⠀⠀⠀⡀⢻⡜⡇⠀⢸⣄⠀⠈⢄⠈⠲⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⡤⠞⠁⢸⠁⠀⠀⠀⠀⠀⠀⠀⠀⠎⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⡿⣿⢨ // ⠀⠀⢀⠀⡀⢳⡀⣹⠘⣆⠀⢻⡝⡢⡄⣉⡐⠀⠈⠙⠒⢶⣒⠶⢲⣶⣞⡫⠅⠠⠀⠀⣾⠀⠀⠀⠀⠀⠀⠀⠀⡸⡘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠀⠽⢟⡠ // ⠀⠀⠀⠑⡜⢀⠻⠟⠂⢻⣆⠢⡙⠙⠘⣆⠀⣀⠀⠀⠀⠀⠈⠉⠉⠘⠢⠍⢛⡳⠶⣦⡇⠀⠀⠀⠀⠀⠀⠀⢠⢣⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⡈⠀⡐ // ⠀⠀⠀⠀⠈⢆⠀⠀⠀⠀⣻⣿⣕⡢⠀⠘⠄⠀⠉⠙⠚⣒⠒⠒⠂⢠⡰⠚⣁⣤⣾⣿⠁⠀⠀⠀⠀⠀⠀⠀⣠⣧⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⢢⠁⠀⠡ // ⠀⠀⠀⠀⠀⠀⠉⠒⠐⠉⢸⣿⣿⣿⣦⡈⠙⠶⢄⣀⣤⣴⣋⣥⣼⣶⣶⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⣀⣴⣾⣿⡟⠁⠀⠀⠀⠀⠀⠀⣀⠀⠀⢀⣀⣀⣿⠣⠃⠀⠘ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⠿⠿⠿⠿⣿⣿⣿⣿⣛⢿⣿⣿⣿⣿⣿⣿⡟⠀⠀⢀⣠⣴⣾⣿⠿⠋⠹⠀⠀⠀⠀⠀⠀⠀⠀⠙⠷⠦⠷⠶⠂⣴⣦⣴⣶⣷ // ⠀⠀⠀⠀⠀⣀⠤⠈⠄⢉⣉⣉⠩⠂⠀⠀⠀⠀⠀⠈⠉⠉⠈⠊⢉⠉⡉⣭⣿⣿⣧⣤⣶⣿⡿⠟⠉⠀⡀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣋⣹⡇⠀⡗ // ⠈⠁⠌⠐⠄⢂⠰⢀⠂⢀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣴⣶⣶⣶⣾⣿⣿⣿⠿⠛⠋⠁⢠⠀⠀⠐⠀⢰⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⡇⠀⡜ // ⢀⠂⡄⢀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣿⢻⡿⣼⣿⣿⡏⠠⠐⠈⠐⢸⠀⠀⡁⠀⣸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⡇⠀⠼ // ⠲⠥⣜⣤⣉⡐⠠⢂⠠⢀⠀⢂⡁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠣⣛⣿⣿⣿⠐⠡⠈⠀⡠⠋⠀⠀⠀⢠⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡸⠿⢥⠀⣹ // ⠀⠀⠀⠈⠉⠉⠓⠶⢤⣆⣉⠆⡜⡓⠦⣄⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⡟⡨⠐⠀⠀⠁⠀⠀⠀⠀⡸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⠅⠐⠾⠆⠀⣸ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⣿⣦⡙⢦⠩⡝⢆⠄⠀⠀⠀⣤⣿⣿⣿⣿⣿⡃⠅⠀⠀⠀⠀⠀⠀⠀⢠⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠂⢸ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣦⡓⡸⢌⡊⠔⣠⣾⣿⣿⣿⣿⣿⣿⡐⢈⠀⠀⠀⠀⠀⠀⠀⣜⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣆⣢⣵⣾⣿⣿⣿⣿⣿⣿⣿⡟⣀⠂⠀⠀⠀⠀⠀⠀⢰⢨⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡗⠠⠀⠀⠀⠀⠀⠀⠀⡆⠨⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡐⠡⠀⠀⠀⠀⡤⠀⢠⠀⡰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠠⢁⠀⠀⠀⠀⠀⠀⢸⠀⣏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠐⠠⠀⠀⠀⠀⠀⠀⣼⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠂⠀⠀⠀⠀⠀⠀⣿⣶⣼⣷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⠐⠀⠀⠀⠀⠀⠀⠰⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡟⣯⡿⣝⣯⠿⣽⢯⣟⡿⣻⣟⣿⣿⣿⢿⣿⣿⣿⣿⣻⣿⣶⣾⣷⣬⡁⠈⢀⣀⣵⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡰⢌ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⢯⣽⢯⣟⢾⣵⣻⡽⣾⡽⣽⣳⢯⣟⣿⣿⣯⣿⢾⣿⣿⣟⡾⣯⢿⣿⣿⣿⣷⣤⣿⡇⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠠⠁⠊⠀⠁⠀⠀⠀⠀⠀⠂⠘⠂ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣏⣿⢯⣿⢾⣟⡾⣳⣟⣳⣟⡷⣯⣟⣾⣿⣿⣿⢾⣿⣟⡾⣿⣿⣽⣿⣿⣏⣿⣿⣿⣿⣷⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⡳⣞⣿⣿⡯⣿⢾⣽⣳⢯⡷⣯⣟⣷⣻⣽⣿⣿⣿⣿⡽⣯⣿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⢀⣀⣄⡀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⢯⣗⣻⣿⣟⡾⣽⢿⣛⣾⡽⣯⢟⣷⣻⢾⣽⣿⣿⣞⣯⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⠀⠀⠀⠀⠀⠀⣀⣀⣠⣶⠿⣻⠿⠛⢹⣿⢿⠟⠛⠉⠐⣌⢻⡀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡿⣝⣾⣿⡟⣼⣻⣏⣿⣹⢺⣟⣵⣫⣶⡿⣾⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡄⢀⣠⣴⡾⢋⣽⣿⣯⣿⠋⡔⠉⣼⣿⠇⠀⠀⠀⠣⢌⣻⠇⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡿⣽⣿⣟⢾⣿⡵⣯⢾⣱⣯⣿⣷⢯⣷⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣷⣾⣿⣿⣿⣴⣿⣿⣿⣿⠃⢌⠀⢰⣿⡏⠀⠀⠀⠀⠱⢨⠼⡇⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣻⣿⣿⣯⢿⣿⣟⣯⣿⣯⣿⣿⣿⣯⣿⣟⣿⣿⣳⣿⣿⣿⣈⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢳⣿⢣⠘⣀⡞⢸⣿⠁⠀⠀⠀⠀⢀⠃⢾⠁⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣻⣽⣿⣿⣯⢿⣿⣻⣾⢿⣿⣽⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣭⣴⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⣧⣿⢋⢆⠃⣾⠀⣸⡟⠀⠀⠀⠀⠀⠀⠎⡽⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⣾⡟⣽⣿⣿⣿⣯⣿⣿⣏⣿⣿⢿⣿⣧⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⡟⢯⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⡿⢿⡿⢣⢍⣢⣭⡇⢀⣿⢃⠀⠀⠀⠀⠀⢈⢒⡇⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⣼⡟⢰⣿⢾⣿⣯⣷⣿⣿⣿⣞⣿⣿⣿⣿⣦⣛⢿⣿⣿⣿⣿⣿⣿⣽⠏⠉⠗⣚⣩⣾⠟⣭⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣗⣿⣿⣿⣿⣷⣿⡏⢠⠃⢸⡟⠰⠀⠀⠀⠀⠀⢌⣺⠁⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⢰⡿⠀⣾⡏⣿⣿⡷⣿⣿⣿⣿⣧⣧⣼⣿⣿⣿⣿⣶⡹⢿⣿⣿⣿⣿⡸⢄⠉⠉⡙⣉⠡⣚⣵⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⣿⣿⣇⡞⠀⣼⠁⠁⠀⠀⠀⠀⠈⡴⡇⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⣿⠁⢸⡟⠀⣿⣯⣿⣿⣿⣿⣿⣿⣿⣿⣟⠻⢾⣫⣼⠗⠀⠙⢟⡻⣿⣷⡂⠀⠀⠐⠀⠂⢡⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⠃⣿⣿⠟⠀⢠⡇⠀⠀⠀⠀⠀⠀⣘⡾⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⢸⡇⢀⣿⠁⠀⣿⣿⣳⣿⣿⣿⣿⣿⣿⣿⣬⠉⡒⠋⠁⠀⠀⠀⣤⠙⠌⠻⢆⡀⠀⠀⢀⣰⡿⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢸⣿⠋⠀⠀⣸⠁⠀⠀⠀⠀⠀⠐⣼⠁⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⢸⢀⣾⠏⠀⢰⡿⣿⣳⣿⣿⣿⣿⣿⣿⣿⣿⣷⣌⢡⣁⡀⠀⠀⠈⠁⠀⠀⠀⠀⠀⠀⠤⠚⢱⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣸⠇⠀⠀⢠⠇⠀⠀⠀⠀⠀⢀⣹⡏⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⣿⣾⠟⠀⢀⣾⣟⣿⣟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡻⢎⣀⣀⠄⠀⠀⣤⣠⣤⡀⠀⠀⠀⣠⡿⣿⣿⣿⣿⣿⡟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢟⠏⠀⠀⢠⠏⠀⠀⠀⠀⠀⠠⣜⡾⣷⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⢠⣟⡞⠀⠀⣼⣿⣞⡿⣾⣿⣾⢿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣄⣀⠀⠀⠀⠀⠉⠉⠀⠀⢀⡼⢏⣵⣿⣿⣿⡟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠣⠋⠀⢀⣴⠏⠀⡄⠀⠀⠀⣀⢳⡞⠀⢿⡀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⣴⣟⣷⣇⢀⣼⠏⢸⢾⡿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣿⡲⢤⣄⣀⣠⠖⣏⣱⣾⣿⣿⣿⣿⠇⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠉⠓⢶⣾⠟⠁⠀⡜⠀⠀⠀⡰⣬⠟⠀⠀⠘⣧⠀⠀⠀⠀⠀⠀ // ⠀⢠⣾⡳⠋⢸⢾⡾⡟⠀⣾⣿⣟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢷⣃⢎⠲⣁⠏⣴⣿⡿⢻⢽⣿⣿⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⢃⠈⣆⠀⠀⠀⣠⠞⠀⠀⢀⡰⣳⠋⠀⠀⠀⠀⠘⠆⠀⠀⠀⠀⠀ // ⣰⣻⠞⠀⢀⣼⣿⣿⠀⢰⣟⣾⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢋⡜⣻⣆⠣⠜⡒⢼⡿⣈⠗⣚⣏⠿⣼⣿⡿⣿⣿⣿⢿⣙⢮⡿⠃⠀⠈⠒⠶⠾⠋⠀⠀⢀⢦⡟⠁⠀⠀⠀⠀⠀⠀⠈⢆⠀⠀⠀⠀ // ⡗⠁⠀⣠⡾⢃⣽⡾⣧⡾⣽⣯⣿⣿⣿⣿⣿⡿⠻⠿⠿⣿⣿⣿⣿⣿⣿⣯⣇⠎⡴⢡⢎⠳⡜⢺⣄⢛⣦⢙⡴⢪⠜⣆⣛⣷⣿⣿⣟⢣⠎⠻⠁⠀⠀⠀⠀⠀⠀⠀⠀⡄⣯⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣧⠀⠀⠀ // ⠀⢀⣾⢋⣴⠟⠁⠻⣽⡿⣿⣾⣿⣿⡟⠉⠉⢿⣄⠀⡸⠛⢉⠛⣿⣿⣿⣷⣮⣛⠍⠲⢌⠣⡜⡄⠛⡷⢏⠲⡌⣧⣻⠞⣋⢶⣿⣿⣏⠆⠁⠀⠀⠀⠀⠀⠀⠀⠀⡄⣳⣾⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡄⠀⠀ // ⣴⣿⣵⠟⠁⠀⢀⣼⣿⣿⢷⣿⣿⡟⠀⠀⠀⠀⠙⣏⠀⠁⢢⡀⠸⣿⣿⣿⣿⠿⣿⣷⡾⠶⢶⣌⢓⡰⢊⣕⡾⢛⠤⡙⡔⢺⣿⢿⣿⠀⠀⠀⠀⠀⠀⠀⠀⡄⣣⣼⡏⢽⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣧⠀⠀ // ⠟⢏⠀⠀⠀⢀⣾⣿⣟⣿⣿⣿⣿⡁⠀⠀⠀⠀⠀⠸⡄⠀⠀⠈⠂⣿⣿⣿⣿⣿⣷⣤⡙⣷⣬⡘⠳⠐⢃⠌⡰⢉⠆⡱⢈⣽⣿⡎⢿⡆⠰⣇⠀⡀⢄⠢⣍⣶⣿⣿⡅⢺⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⡿⠀⠀ // ⠀⠀⠉⠒⢀⡾⠛⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⢱⠀⠀⠀⢠⣿⣿⣿⣇⢻⣿⣿⢿⣾⣿⣷⠀⠁⠂⠌⢀⠁⠂⠁⢰⣿⣿⣷⡈⢻⡄⢹⡖⣈⠦⡿⣾⣿⣿⣿⣿⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣟⠀⠀ // ⡰⢪⡕⡴⠃⢠⣾⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠈⢿⣄⡀⣼⣿⠟⣹⠇⠀⢿⣿⠀⣿⣿⣧⡀⠀⠀⠀⠀⠀⠀⠀⠘⠆⣻⣿⣿⣦⣽⣾⣧⣝⣾⣷⢻⣿⣿⣿⣿⣷⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⠇⠀⠀ // ⢡⣣⠞⠀⣰⣿⣿⢋⣿⣿⣿⣿⡷⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣷⡿⠟⠊⠁⠀⣠⣿⣏⣾⣿⣾⡿⢿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⢿⣿⣿⡞⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⠀⣠⣾⡿⠀⠀⠀ // ⠚⠁⠀⢀⣿⣷⠏⣼⣿⣿⣿⣿⣟⠀⠀⠀⠀⠀⠀⢀⣠⣶⢿⡟⠀⠀⢀⠄⢊⣿⣿⣿⣿⠟⠛⠉⠁⠀⠀⠰⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⢿⣿⣿⣿⣿⢿⣿⣿⣷⡀⠀⠀⠀⠀⠒⠛⠛⠁⠀⠀⠀⠀ // ⠀⠀⢀⣼⣿⣟⣴⣿⣿⣿⣿⣿⡏⠀⠀⠀⣀⣤⣾⣿⠟⣉⢾⠇⠀⠐⣁⢶⣿⣿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠙⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠻⣿⡆⠈⢻⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⣠⣾⣟⣾⣿⣿⣿⣿⣿⣿⣿⠇⢀⣤⠾⠛⠋⠁⠀⠈⡔⣾⠖⢀⠜⣠⡾⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢙⢄⡀⠻⣿⠙⠳⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀ // ⡴⣟⡷⣯⣿⢿⣿⣿⡿⣿⣿⣿⡴⠋⠀⠀⠀⠀⠀⠀⠐⣸⡿⠀⠘⡶⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠲⢿⣷⡀⠀⠻⡷⣄⠀⠀⠀⠀⠀⠀ // ⡸⠋⠉⠙⢣⣿⣿⣿⣇⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⢰⡿⠁⠀⢰⣁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡝⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡖⣦⡘⣧⡀⠀⠉⢌⠳⡀⠀⠀⠀⠀ // ⠀⠀⠀⠀⢸⣿⢾⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠁⠀⠀⠘⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠨⣿⠌⢧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠓⡛⠁⢣⠀⠀⠀⠡⡘⢆⠀⠀⠀ // ⣦⣀⣀⣤⢾⣿⣻⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⢸⠇⠀⠀⠀⠀⠀⠀⠀⠀⣠⢴⣲⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢽⡚⡌⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⠘⢸⠀⠀⠀⠀⠐⣌⡆⠀⠀ // ⢿⡟⠏⠻⢿⣷⣻⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠻⠟⠗⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢺⡝⡔⠁⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⣼⡇⠀⠀⠀⠀⢸⡷⠀⠀ // ⡏⠀⠀⠀⠀⠙⢿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠠⢁⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢾⡹⢬⡁⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⡇⠀⠀⠀⢀⣾⣿⠀⠀ // ⢇⡀⠂⠀⠀⠀⠈⠙⠿⣯⠀⠀⠀⠀⠀⠀⢀⠑⡂⣯⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⡘⣽⡝⢦⡃⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣺⣿⣿⣷⣄⠀⢀⣾⣿⡇⠀⠀ // ⡄⠀⠀⠀⠀⠀⠀⠀⠀⠈⠑⣄⠀⠀⠀⠀⠠⢃⡕⢺⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⡑⢼⡟⡼⣩⠿⣦⡡⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠰⣌⣷⣿⣿⣿⣿⣿⣶⣿⣿⣿⠁⠀⠀ // ⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⢐⡈⢳⡄⠀⢠⠡⢣⠜⣹⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢄⠣⣹⢾⡙⠶⡡⢞⡩⢷⣯⡰⠡⢄⠠⣀⠀⡄⢠⢂⡜⣬⣷⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀ // ⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⡘⢄⢻⡄⢣⠜⣡⢞⣿⣿⣷⡆⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠘⢤⡷⢏⢧⡙⣣⠕⡪⠜⡡⢞⡹⠿⣮⣵⣦⣹⣬⣷⣾⣾⡙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀ // ⣿⣿⣧⡀⠀⠀⠀⠀⠀⠀⠀⠐⡈⢦⡙⢦⡙⢦⣻⢡⣿⣿⣿⣦⣐⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠰⣈⣦⢽⢫⠜⡩⢆⡱⢢⠙⠄⠃⠁⠊⠔⢫⠔⢦⠣⣝⢲⣿⠿⣿⡅⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⠀ // ⣿⣿⣿⣇⢤⠀⠀⠀⠀⠀⠀⠀⢈⠒⡜⢦⣹⣳⣿⣿⣿⣿⣿⡿⢠⣷⠶⢤⣤⣀⣀⣀⣄⣠⣤⣬⠶⢓⢋⠆⢣⠊⠌⠑⡀⠂⠁⠈⠀⠀⠀⠀⠈⠐⣊⠦⡙⢦⣿⣿⣨⣿⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀ // ⣿⣿⣿⣿⣿⣶⢄⡀⠀⠀⠀⠀⠠⢩⢜⣣⢷⢃⣿⣿⣿⣿⣿⣇⣿⣿⣧⠀⠀⠈⠉⠉⠈⠁⠀⠀⠐⠈⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠠⢎⣹⣿⣿⢿⣿⣿⢿⣿⣿⣿⣿⣿⣿⠙⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣧⣿⣦⣿⣥⣤⣀⣀⠂⡇⣞⣼⣿⣿⣿⣿⣿⢿⣿⣿⣿⡿⠛⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⣨⡿⢻⣿⣿⠏⠀⣸⣿⣿⣿⣿⣿⡿⠀⣿⢿⣿⣿⣿⣿⣿⣿ // ⡇⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠙⣾⣾⣿⣯⣿⣿⣿⣏⣼⡿⠛⠙⠁⠀⢹⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠱⣿⣿⣿⡿⣏⠀⣰⣿⣿⣿⣿⣿⣿⡇⠀⡿⢸⣿⣿⣿⣿⣿⣟ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⢰⣿⡿⠟⠛⢫⡹⠖⠉⠁⠀⠀⠀⠀⠀⠘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⢻⣿⡿⢻⡇⠉⣹⣿⣿⣿⡟⣿⣿⡿⢀⣼⣡⣿⣿⣿⣿⣿⣿⣯ // ⡿⢿⠟⣿⣿⣿⣿⣿⣿⣿⡿⠟⢋⣁⡤⠒⣠⠞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢲⣿⣿⡀⠘⢛⣿⣿⣿⣿⡟⢀⣿⣿⣅⣾⣿⣿⣿⣿⣿⣿⣿⣿⣧ // ⣿⣿⢰⣿⣿⣿⣿⣿⠛⢣⠐⢌⣖⠡⠔⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡰⠂⠀⠀⠀⠀⠀⠀⠀⠀⢨⡟⠙⢿⡿⠿⣻⣿⣿⣿⠟⣠⣿⡿⣻⣿⣿⢟⣋⣱⣿⣿⣿⣿⣿⣿ // ⣿⢿⢿⣿⣭⡿⠃⠄⠀⡠⠈⠸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠔⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⠀⠀⠀⣹⣾⣿⣿⣿⣿⣾⠿⠋⠀⠹⡸⣏⡉⠉⣿⣿⣿⣿⣿⣿⠋ // ⡟⠁⢸⡾⠋⠀⢡⡤⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡾⢽⠂⢀⣼⣿⠟⠉⠉⠋⠉⠀⠀⠀⣆⣠⠇⠀⠀⣼⣿⣿⣿⣿⣿⣧⡀ // ⣇⠀⠋⠀⠀⠀⡺⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡃⢻⡇⢸⣿⢻⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⡿⠏⠉⠉ // ⣿⡀⠀⠀⠀⠠⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠌⡑⣇⠘⣿⠈⢆⡀⠀⠀⠀⣀⠀⠀⣀⠤⣊⡽⢟⠿⠛⠉⠁⠐⠠⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣶⣾⣿⡿⠿⠿⠛⠛⣶⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣶⣿⣯⠗⠊⠉⣡⠖⣁⣠⣤⣸⣿⣿⣿⣿⣿⣿⣶⣦⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⡿⠛⠉⠀⠀⠠⣌⡥⠞⡗⠒⢶⣿⣿⣿⣿⣿⣟⠛⠋⠃⢸⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣄⠀⡀⠀⠀⠋⢁⡠⣢⣷⠾⠿⢿⣿⣿⣿⣿⣿⣧⡀⠺⣟⡄⣼⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⠟⣡⢮⠆⠀⢀⡴⢋⡾⠋⡠⣶⠠⢼⣹⣿⡿⢿⣯⣟⠛⡆⠈⢷⣻⡉⢿⣧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣏⣴⣷⠏⠀⠀⠈⣠⠋⣴⣼⢳⡇⡀⡇⢸⣿⣿⠛⢿⡿⣷⣾⡀⢸⣯⣹⠀⢳⡹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠛⠛ // ⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⠏⠄⠀⠀⣰⡃⣾⠁⢏⣿⢰⠃⢳⣿⣿⣿⣄⢰⡀⢈⠻⣞⠿⠉⢻⣇⢢⢣⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣛⣻ // ⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⡏⠀⢀⣼⡿⢠⠇⡀⣼⣿⠘⡆⡄⢻⠟⠣⣹⣾⡟⢼⣆⣹⣦⠀⢸⣿⣼⡎⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉ // ⠀⠀⠀⠀⠀⢠⡿⡼⢻⣿⣿⣿⡿⢠⣴⣿⡿⠃⢀⣼⣿⣿⣿⠀⡟⠸⢸⡇⠀⠙⢿⣿⡜⣿⡹⣿⣧⠈⡇⠀⣧⠸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⢸⣿⣇⣿⣿⣿⣏⣴⣿⣿⡿⠁⢠⣿⣿⣿⣿⣿⡜⡧⠀⢸⠀⠀⠀⠈⠻⣿⡽⣧⢋⣿⣿⡋⢺⣾⣧⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⣰⣿⣿⣿⣿⠀⣿⠇⣇⠀⢸⠀⠀⠀⠀⠀⢹⣿⣿⣶⣿⣿⣷⣼⣿⠙⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⢸⣿⣿⣟⣹⣿⣿⣿⣿⣿⣿⣿⣿⡿⣽⡿⡄⣿⣾⣿⣠⣇⣠⡤⠶⠚⠉⠉⢻⣿⣿⡿⢿⣿⣟⢿⢦⣹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠃⣇⣼⣿⣿⠁⠀⣠⣤⣶⣶⣶⣶⣿⣿⣷⢸⣿⣿⣷⣌⣿⡻⠦⠄⠤⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⢹⠃⠀⠀⣿⣿⣿⡏⠀⣾⡿⢿⣿⣿⣿⡸⢹⣿⡏⠸⣿⡏⣿⣾⡏⠛⢶⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⣠⠞⣽⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣶⣿⣶⣶⡀⣿⣿⡿⠀⠀⠋⠠⠼⠛⠛⠉⠁⢸⣿⡇⠃⣧⡇⣷⣿⣱⡀⠀⠈⠻⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⢀⣼⠃⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣝⢿⣿⣿⣯⡀⠀⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⡇⣤⣿⣴⣿⣇⡟⠷⣄⠀⢸⢯⠙⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⣾⡇⠀⣾⣿⣿⣿⣿⡿⣝⣿⣿⣿⣿⣭⡟⠋⠉⠀⠀⣸⣿⡏⢀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠈⠙⠋⠈⡆⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⢿⡀⢸⣿⠏⢿⣿⡏⣗⢿⠈⢻⣿⣿⣿⣆⣀⠀⠀⣰⡟⠙⠀⠘⠆⠀⠀⠀⠀⠀⢀⡐⠱⣹⢿⣿⣿⣿⣿⣿⣿⣄⠀⠀⠀⠀⠀⣇⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⢁⣿⠋⠀⢸⣿⣠⣿⣯⡀⡆⢻⣎⡙⣿⣍⣴⠞⠋⡔⠁⠀⠀⠀⠀⠀⠀⠀⠀⠉⠀⣰⣻⣿⣿⣿⣿⣯⡞⡈⠛⢦⣄⡠⠀⣰⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⣸⠃⠀⠀⢸⣿⣿⣿⣿⡇⣧⠘⣟⠛⠻⡟⠳⣄⠊⠀⠀⠀⠰⠶⠶⠾⠋⠁⠀⢀⣼⠃⣿⣿⣿⣿⡿⢻⡇⠉⠉⠉⠉⠉⠝⠉⠉⠁⠒⠤⡀⠀⠀⠀⠀⠀⠀⠀ // ⠀⢰⠇⠀⠀⠀⣾⣽⣿⣿⢿⢇⣿⢰⢿⡄⠀⣷⣀⠏⢹⡦⣄⡀⠀⠀⠀⠀⠀⢀⡴⠛⠁⢰⣿⣿⣿⣿⢇⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀ // ⠀⣾⠀⠀⢀⠀⡏⣿⣿⠟⣾⣿⣸⢸⠼⣿⡄⣿⡟⠀⠀⠱⡀⠉⠑⠒⠤⠤⠔⠋⠀⠀⠀⣾⣿⣿⣿⡿⠞⠀⠀⠀⢀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢦⠀⠀⠀⠀ // ⢸⣿⡆⠀⠁⢸⢀⣿⣧⣼⡿⠁⢸⡏⠀⠘⢿⣿⡃⠀⠀⠀⠣⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⠟⠉⠀⠀⠀⣠⠖⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⡀⠀⠀ // ⠸⣷⡿⢄⣠⣇⢼⣿⣿⠉⠀⠀⡸⠀⠀⠀⠀⠓⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⡿⠋⠀⠀⢀⡴⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢣⠀⠀ // ⠀⠻⣍⠚⣿⣧⠀⢿⣿⣆⠀⠈⠁⠀⠀⠐⣒⡢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⡟⢁⡴⠒⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⡄⠀⠀⠀⠀⠈⢆⠀ // ⠀⠀⠈⠉⣿⣿⡆⠈⠻⣿⣧⠀⠀⠀⠀⠀⠀⠈⠉⠐⠒⠒⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⡷⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠀⠀⠀⠀⠀⠀⠈⠢ // ⠀⠀⠀⢸⡏⢯⣻⠀⠀⠀⠉⠓⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡏⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⣇⠈⠻⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡾⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠊⠹⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⢱⡀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣦⡀⠀⠀⠀⠀⢠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢇⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠠⠒⢳⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠙⠧⣉⠲⠤⣀⡴⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣆⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠇⠀⠀⠀⠘⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡀⠀⠀⠀⠈⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣦⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠸⡀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡑⢄⠀⠀⠀⠀ // ⠀⠀⠀⠀⠰⠀⠀⠀⢇⠀⠀⢰⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢣⠀⠙⢤⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠸⡀⠀⡸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡆⠀⠀⠑⢤ // ⠀⠀⠀⠀⠀⠀⠀⡖⠀⡇⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⢀ // ⠀⠀⠀⠀⠀⠀⠀⠧⡈⡇⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⢀⠔⠈ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠁⠀⠠⠀⢀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡄⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀⠀⡰⠁⠀⢀⠆⠀⢠ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢣⠸⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠛⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⠼⠟⠀⠀⣠⡞⠁⠀⠀⠺⢶⣾⢸ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡆⠱⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠎⠀⠈⠳⢄⡀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡤⢺⡏⠈⠲⣄⠀⠀⢸⡼⣟ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡾⠄⠙⠦⣀⠀⠀⠀⠀⠠⡀⠀⠀⠀⠀⠀⠀⠀⢠⡴⠏⠀⠀⠀⠀⠀⠉⠛⠧⠦⣄⣠⡤⠤⠴⠒⠉⠁⠀⠛⠀⠀⠀⠈⠑⠢⣀⣾⠁ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠁⠀⠀⠀⠈⠑⠲⠬⣟⣒⣈⣀⣀⣀⣀⡤⠴⠛⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⡿⡄ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡆⠀⠀⠀⠀⠀⠀⠀⠀⣸⠉⠓⠦⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠁⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⠀⠀⠀⠀⠀⠀⠀⠀⢀⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⢀⡇⠀⠀⠀⠀⠀⠀⠀⢀⡼⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⢿⡿⣿⢿⡿⣿⣻⢿⣻⣟⣿⣻⣽⣻⢯⣟⣯⠿⡽⢯⡿⣝⣯⢻⡽⣭⢯⡽⣭⢻⣭⢻⣭⢻⣭⢻⣭⢻⡝⣯⢻⡝⣯⢻⡽⣭⢋⡷⣉⠒⡔⡰⣌⡳⣭⢳⡹⡜⣂⠆⠀⡀⠠⡄ // ⣿⣿⣿⣽⣾⣿⣽⣾⣿⣾⣷⣿⣻⣽⣿⣻⣽⡿⣽⣷⣻⢯⣟⣾⣳⣟⡾⣭⣟⡾⣵⣻⣽⣻⣜⣯⣞⣧⢻⡜⣮⢳⣭⢳⣎⠷⣎⢷⢪⢗⣮⢳⣝⣮⣻⡼⣭⣳⡝⣦⢏⠴⡡⣍⠶⣱⢣⣝⠲⡍⠖⠩⠔⢠⢡⠰⡱⢌ // ⣿⡿⣾⣟⣷⡿⣽⣷⣻⣾⣳⢯⣟⡷⣯⣟⣷⣻⣟⡾⣽⣻⣞⡷⣻⢞⣽⠷⠞⣋⣉⣩⣽⣯⣷⠟⢛⠫⢭⡉⢉⠉⠒⠯⣜⡻⣜⣣⠟⣮⡚⢷⣚⡖⡧⣝⠶⣣⠞⣔⡊⢖⡱⣌⠳⣍⠳⡈⠁⠀⠀⠀⠀⢂⢎⡱⡑⢎ // ⣿⣟⣷⢿⣯⣟⡿⣞⡷⣯⣟⡿⣾⣽⣳⡟⣾⣳⢯⣟⣳⠿⣼⠽⠛⣩⡴⢞⡛⠭⣑⡯⢛⠡⢂⡍⠦⢹⡧⣝⣦⣻⣒⠤⡀⠉⠓⢮⣛⠶⣹⢧⢳⡞⣵⢫⢞⣥⡛⣤⢋⢦⠳⣌⠳⣌⡑⢂⠀⠀⠀⠀⠀⡜⣢⢱⡉⢆ // ⣿⣞⣯⢿⡾⣽⣻⣽⣻⢗⣯⣟⢾⡶⢯⣟⣳⢯⣟⣼⡯⢛⣡⡶⢛⠡⠘⢠⣸⠟⣉⠆⠁⠀⠁⠀⢠⡿⠡⣿⡄⢣⢻⣇⠘⣕⢤⠈⠙⢾⡱⢎⡷⣚⣥⠻⡜⢦⣙⢦⣋⢎⡳⢌⠳⡰⢌⠣⡄⠀⢀⠠⡼⣸⢥⠳⣜⠡ // ⣟⡾⣽⢯⣟⣷⣻⣞⣭⣟⡾⣞⣯⣽⢻⡾⣝⣷⣞⠇⣠⢾⠗⣘⠀⠀⣠⠞⣡⠔⠃⠀⠀⠀⠀⢀⠞⠀⢸⣏⡇⠘⡆⠻⣶⣘⣦⠙⠄⠀⠙⢯⡲⣙⠦⣏⡝⢮⠜⣦⡙⢮⣑⡋⢶⢱⡩⣓⢬⡓⢎⡳⣱⢣⢞⡱⢎⡐ // ⡿⣽⢯⣟⣾⣳⢯⣞⡷⣯⡽⣞⣧⣟⣻⣼⡿⠱⣃⡞⠃⡡⠖⣁⣴⠟⢁⡜⠁⠀⠀⠀⠀⠀⢀⠎⠀⠀⣼⣻⠁⡀⡇⠀⠈⢳⡽⣷⣄⠑⡈⠀⢻⣬⢛⠴⣊⠇⢯⡰⣙⠦⣣⡙⢦⢣⠳⣌⠶⣙⢮⡱⢣⢏⢎⡱⠂⠀ // ⡿⣽⣛⣞⡳⣯⢟⡾⡽⣞⣽⣳⠾⣭⢷⣟⢠⡷⢋⡤⠋⣠⡾⠛⡵⡺⠉⠀⢀⠀⡀⠀⠀⢁⠎⠀⠀⢰⣿⢃⢠⢳⡇⠀⠀⠀⠹⡘⢿⣦⡈⢆⠀⠹⡣⡝⢢⡙⠦⡱⡘⢎⡵⣘⢣⡝⢲⡡⠞⡌⡖⣩⠓⠎⠐⠀⠀⠀ // ⡟⠄⠁⠀⠱⣭⡻⣝⢷⣛⢶⣫⢟⣵⡿⣨⡟⣡⢏⣠⡾⠋⢠⡞⡽⠁⠀⡠⠁⠀⠀⠀⢠⡟⠀⠀⢰⣿⣧⢎⢎⢸⠃⠀⠀⠀⢀⣿⠾⠿⡷⡀⢠⠀⢹⣽⢦⡙⢦⠱⣙⠮⢴⣉⠶⣘⠧⡜⡱⡘⠴⣁⠊⠀⠀⠀⠀⠀ // ⢦⣀⣀⢠⠖⣧⢻⡝⣮⡝⣮⢳⢫⣾⣱⢟⡸⣥⡾⢋⡄⣠⠏⡰⠀⠀⡰⠁⠀⡠⢀⣴⡟⠀⠌⣠⡟⠁⡼⡀⠈⡜⠀⠀⠀⠀⠀⢸⣄⣀⣹⣌⠄⢇⠘⡿⢮⣳⡌⢳⡡⢞⡡⢎⡱⢃⡞⡰⢥⡙⠆⠄⠀⠀⠀⠀⠀⠀ // ⢧⡳⢎⡷⢻⡜⣣⢟⡲⡝⣎⡳⣻⡗⣋⢮⣽⢯⡴⠋⣴⢋⡖⡀⢀⣼⠁⢀⢈⣠⣾⠯⠀⣠⣼⣿⣶⣿⣿⣿⣤⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⡄⠸⡄⢹⢧⢳⢻⡡⠞⡬⣑⢎⡱⢍⠲⡑⠦⡑⢈⠀⠀⠀⠀⠀⠀⠀ // ⢧⣙⡳⣜⡣⢽⡱⢎⣳⡙⢶⡩⣿⢱⣺⡿⣹⢏⠴⣹⢇⡞⣰⢣⣾⢏⡜⢢⣮⡿⢉⣄⣲⣿⣿⣿⠿⣿⣿⡿⣿⠂⠀⠀⠀⠀⣿⣏⣿⡿⣿⣿⣿⡀⢱⠘⡜⠎⣧⢻⡘⠴⡡⢎⠰⢉⠒⡉⠐⡀⢂⠀⠀⠀⠀⠀⠀⠀ // ⠞⡴⢳⡜⣱⢣⠝⣎⠶⡙⢦⣹⣧⣿⣿⢛⢧⢫⢼⢫⣾⣱⣯⣿⠟⣼⣬⣿⠋⡐⢤⣾⡿⣿⣿⠉⠲⣛⣯⠕⡸⠀⠀⠀⠀⠀⠘⢘⢓⣃⡿⢷⡞⣷⡌⠄⢣⡘⢼⢸⢌⢣⠱⡈⠆⠠⢀⠀⠡⠐⠠⠈⠀⠀⠀⠀⠀⠀ // ⡹⣜⢣⢞⡱⢊⡳⢌⡚⢥⠓⣼⣷⡟⣥⢋⣎⣷⢎⣽⡿⣭⣿⣵⣿⣫⠞⡁⢦⣽⣾⡉⢑⠢⡉⠛⠒⠚⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⢂⠄⠀⠘⣯⢿⣻⡀⢸⡎⢸⢸⢂⡌⢣⠱⡈⡐⠠⠌⢂⠉⡀⠀⠀⠀⠀⠀⠀⠀ // ⡱⣊⠜⠢⠁⠃⠘⠠⠙⠢⢙⣴⡿⣘⢦⣻⡾⣽⣾⣿⣷⠿⣿⡵⠟⡁⢮⣴⣿⣻⡿⣿⣿⣷⡁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡠⢶⡿⠂⠀⠀⣹⣯⣇⢧⢨⡇⡝⣸⠠⢎⠡⢆⡑⢌⠡⢊⠄⡒⠀⠀⠀⠀⠀⠀⠀⠀ // ⠴⣁⠎⠀⠀⠀⠀⠀⠀⠀⠀⢿⡶⢯⣿⢯⡿⡽⣬⣷⣾⠿⡋⣴⢥⣿⡿⣋⢾⣿⣷⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣷⣻⠸⡇⣿⡷⢃⡜⢨⠑⡢⠘⡄⢣⠁⢎⡐⡁⠐⠀⠀⠀⠀⠀⠀ // ⠢⠅⢎⠀⠀⡀⠀⠀⢀⠀⢄⢺⣏⢷⣟⡺⡴⣿⣿⣟⢣⢧⣟⣵⣿⠏⣴⡏⣿⠀⢻⣿⣹⣿⢣⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⠖⠛⣻⠇⠀⣸⣿⡧⢹⢸⠃⡟⢡⠂⡜⢠⠃⡔⠣⠘⠤⡉⢢⠐⡌⡐⠀⠀⠀⠀⠀⠀ // ⢭⣓⠮⣜⣠⠐⡠⠒⠤⣉⠂⢾⣯⢿⡸⡗⣽⣿⡿⣌⣳⣾⣿⡟⣏⢾⡿⣱⣯⣆⠈⣿⣏⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠁⠀⠀⠰⢡⡿⢀⡏⣞⢸⢁⠆⡱⢈⠆⡱⠈⢆⠩⠄⡑⠤⢁⠐⠠⠁⠀⠀⠀⠀⠀ // ⠀⠈⢁⠒⢾⣿⣿⣿⣶⣤⣍⣂⢿⡷⣯⣹⣿⣿⢳⣼⣟⡾⣿⡼⣼⣿⢣⣿⣷⢩⢷⣼⣿⣼⣿⣿⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢢⡟⠁⡼⣸⠇⡏⠰⡈⢄⠃⡔⠠⠉⡄⢊⠤⢁⠂⠄⠈⠀⠀⠀⠀⠀⠀⠀ // ⡀⠀⠠⠘⣺⣿⣿⣿⣿⣿⣿⣿⣾⣯⣷⡽⣧⣿⡿⣏⣾⡝⡧⣿⡿⣵⣿⢿⣿⢢⠈⠙⢿⣿⢻⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡞⠀⣼⡰⢃⡼⢀⡑⢈⠄⠊⠄⡁⠒⣀⠢⠐⠠⢈⠀⠂⢀⠐⡈⠐⠠⢀⠀ // ⢿⡶⣦⣤⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣷⣹⣿⢸⡱⣯⣿⣟⢣⣿⣿⡇⠄⠀⠘⣿⣟⣿⣟⠤⢤⣀⡀⠀⠀⠀⠀⠀⠀⠀⣀⡜⢀⣴⠟⣠⠋⣀⠂⡐⠈⠄⠃⠄⡁⠂⠄⢂⠁⡂⠄⠂⠐⠀⢂⠄⡁⠂⠄⠀ // ⢆⡙⠶⢩⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣿⣻⡷⣾⡿⢹⣿⣇⠂⠀⠀⢹⣿⣹⣿⡇⠀⠈⠉⠙⣿⡿⣾⢞⠿⢋⣡⣴⠿⠉⠈⠄⠂⠄⠂⠄⠡⢈⠐⡈⠄⡁⠊⠄⠡⠀⠀⠀⠀⠀⠀⠂⢄⠁⠂⠀ // ⠀⢈⠙⠲⠾⣽⣿⣿⣿⣿⣿⣶⣾⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣾⣧⣿⣿⣧⠖⠀⠀⢿⡿⣿⣿⣀⠀⠀⢰⣿⢟⠵⣋⠔⡯⠞⠁⠄⣈⠐⡈⠐⡈⠐⠈⡀⠂⠐⠀⡐⠀⠡⢈⠀⡁⠀⠀⠀⠀⠀⠌⠠⢈⠐⠀ // ⠀⠀⡀⠀⠀⠀⠘⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣷⣦⣤⣼⣿⣼⣿⣿⡷⣆⢾⡇⣨⡞⢁⠚⣦⠴⢦⢤⠀⠂⠄⠁⢀⠁⠐⠀⠈⠀⠐⠀⠀⡁⠀⠠⠐⠀⠠⠀⠀⠂⠌⠐⠠⠈⠀ // ⠀⠀⠀⠄⠁⠀⠂⠀⠀⠀⢩⠟⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣯⣽⣟⠿⣻⣝⢾⣹⣿⣿⣿⣾⣿⣿⣷⣤⣬⠟⠛⢓⢦⡈⠀⢀⠀⠂⠀⠁⠀⠐⠀⠀⠀⠁⠀⢈⠀⠀⡁⠐⠀⠌⠀⡐⠀ // ⠀⠈⠀⡀⠄⢂⡠⠤⠤⠶⣧⠊⠀⣀⣠⣿⣟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⣿⣻⣿⡿⣟⣿⣷⢷⣫⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠧⣼⢿⣧⣀⠀⣀⣠⣐⣈⠀⠠⠀⠂⠁⠀⠈⠀⠀⢀⠀⠄⠂⠀⠂⢀⠀ // ⠀⠀⠁⠀⣴⡯⣳⠖⠉⣸⣇⣀⣮⣵⡿⣟⢫⡝⢭⠛⡟⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⢯⣿⡞⣳⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣖⣬⣿⢿⣿⣿⢿⣝⣦⣄⠀⠀⠐⠀⠀⠈⠀⠀⠀⢀⠐⠀⠀⠀ // ⠀⠔⣚⠉⣟⡰⠁⠀⣠⣽⢛⣿⢟⡧⣛⡬⠃⠜⡀⢣⠘⣆⣶⣽⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⢿⣿⡽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣼⣿⡿⣿⣾⣿⣿⣻⣿⣗⣦⠀⠀⠁⠀⢀⠈⠀⠀⠀⠐⠀ // ⢠⠊⢀⢠⣿⣥⣶⣿⣿⣵⡿⣹⢞⡼⠡⠄⢃⠒⣬⣶⣿⣿⣿⠿⡛⢯⡹⢏⣛⠻⢟⣿⣿⣿⣿⣯⣟⣿⣟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣳⣼⣿⣿⣟⣵⣿⣿⣟⣼⣿⣿⢣⣿⣧⡀⠀⠄⠀⠀⢀⠀⠁⠀⠀ // ⠃⣴⢯⡾⠋⠉⠉⢀⣾⡟⣼⡛⢎⡰⢁⣎⣶⣿⣿⠿⠛⡉⠄⠣⡙⢦⡙⡎⢴⣉⣶⡼⡾⢿⢿⣟⣾⣽⣯⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢿⣿⣿⣿⣿⣾⣿⣿⣫⣿⣿⣿⣿⣆⠀⠀⠈⠀⠀⠀⠐⠀ // ⣿⠷⠛⢿⠷⠶⠞⣿⡻⣼⠋⡘⣠⣵⣿⣿⠟⡛⢁⠂⠡⠐⡈⣴⢜⣶⣽⠿⣟⢿⣹⢚⡵⣋⣞⣻⣷⣯⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⣽⣿⣿⣿⣷⣿⣿⣿⢿⣿⣿⣧⠀⠀⠐⠀⠁⠀⠀ // ⠇⠀⣰⡟⠀⢀⡾⢧⠽⣁⣶⣿⣿⠿⠋⠆⠑⡀⠁⠈⣤⡵⠻⡙⠋⡁⠎⡙⣌⣶⢥⣻⢾⣛⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣵⣿⣿⣿⣿⣶⣮⣝⡛⠶⣤⣀⠀⠀⠂⠀ // ⣶⠟⠋⠀⢠⡟⣱⣋⣶⣿⣿⢫⠱⢈⠡⠈⡀⠄⣬⠟⠃⠌⡁⢀⣂⣥⢾⣿⣹⣾⣾⣿⣿⣿⣿⡿⢍⡿⢹⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⣿⣿⣿⣿⣿⣷⣿⣽⣓⡶⣄ // ⠁⠀⠀⠀⣾⡸⣧⣿⣿⣛⢦⠣⠌⡀⠆⣡⡴⠛⠁⠠⠁⣂⣴⣿⣏⣾⣿⣿⣿⣿⡿⣿⢿⣿⡿⡜⣿⠁⠂⢿⣿⣿⡛⠿⢿⣿⣿⣿⣿⣿⣿⢗⠈⠛⢿⣿⣿⣿⣿⣿⣿⠏⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⠀⢠⣿⣽⢿⡝⡶⣭⢒⡱⢂⡱⠌⠡⢀⠁⢂⣴⣿⣫⣷⣿⣿⣻⣿⣿⣿⣿⣿⣿⣿⣿⢳⣸⡷⠀⠀⠘⣿⣧⣉⠂⢈⣁⠀⡈⢆⣿⡸⠈⠀⠀⠀⠉⠻⢿⣻⣿⣮⠻⡄⢻⣿⣟⢿⣛⣯⢻⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠀⠀⢸⡿⣹⢮⡝⡳⢜⡢⢕⠣⡐⢌⠡⢂⣜⣾⣿⣽⣿⣿⣿⣿⡿⢟⣿⣿⣿⣷⣿⣾⡿⡇⢻⠃⠀⠀⠀⣿⠻⠿⠷⠶⠬⠯⠿⣿⠋⣇⠀⠀⠀⠀⠀⠀⠀⠈⠳⢿⣳⣌⢦⣿⣿⡲⣭⠞⣿⣿⣿⣿⣿⣽⡌⠙⠻ // ⠀⠀⠀⣾⢳⡝⡞⡜⣱⢍⡚⣌⠢⡱⢌⢣⣻⣟⣾⣿⣿⣿⢿⣽⣶⣿⣛⣿⣿⣿⣿⣳⢯⣷⡩⢸⡆⠀⠀⢠⡿⣧⣅⣂⡄⢡⣔⣠⣶⢴⠈⠓⡀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠿⣳⣽⣟⣿⣲⢛⣦⢻⣿⣿⣿⣿⣿⡀⠀ // ⠀⠀⢰⢣⡟⣼⢱⣹⠗⣎⠱⣂⢧⡱⢮⣹⣿⣿⣿⣿⣿⣯⣿⡟⢣⢦⠹⢾⣿⣿⣿⣽⣳⢚⣷⣼⠁⠀⠀⣼⠱⡈⠍⠛⠿⠿⠿⣿⣷⢚⣆⠀⠈⠢⡀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣷⣯⣶⣿⣞⣿⣿⣿⣿⣣⠀ // ⠀⢀⣏⡳⣝⢎⡿⣍⠞⡤⢳⡘⢦⣽⢯⣿⣿⣿⣿⣿⣿⣿⣿⣯⢇⢮⣙⠦⣟⣿⣿⣿⣮⡝⡼⣏⠀⠀⣰⠷⣥⣘⠀⠃⠄⡐⠂⡔⣸⢸⠀⠉⠢⠄⠐⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⣿⣿⣟⢿⣛⣿⣿⣿⣿⣧⠇ // ⠀⡲⣬⢳⣽⣞⠳⣜⡚⠴⢣⣙⡾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⢶⣩⡞⣽⢾⣿⣿⣿⣞⡱⡽⡆⢠⣿⣮⣐⣉⠛⠛⠺⠶⠷⠾⣶⢺⠀⠠⡾⡦⡀⠀⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣌⣻⣧⣛⢯⣿⣿⣿⣿⡆ // ⡘⡵⣭⣳⢏⡮⢳⢬⡙⣭⣳⢟⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢶⡹⣎⢿⣽⣿⣿⣿⣿⣳⣿⣾⣿⣿⣿⣿⣿⣿⣶⣶⣿⣿⣿⢻⠀⠀⠣⣿⠟⡄⠘⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣧⢏⣟⣳⢿⣿⣿⡽ // ⣸⢳⣯⣛⢮⠵⣋⠶⣙⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⢷⡹⣎⣷⣟⣻⣯⣿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣸⠀⠀⠀⠀⢐⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣺⣿⣟⡾⣭⣛⢺⡽⣿⣿ // ⡞⣯⡳⡝⣎⠳⣍⢞⣽⣳⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠉⠁⠆⣼⣿⣯⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡯⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣳⣝⢮⢇⡿⣽⣿ // ⡽⣣⢏⡕⣊⢗⢮⡿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢃⠠⠀⠀⠁⢌⣿⣿⣿⣿⣿⣿⣾⣿⣽⣯⣿⣽⣿⣧⠟⠀⠀⠀⠀⠀⠀⢰⠇⠀⠀⠀⠀⠀⠀⠀⣀⡀⣾⣿⣿⣿⣷⣚⣯⣞⠼⣳⣿ // ⡳⢇⡞⣌⡳⢮⣿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⣷⠈⠀⣠⡾⣯⢾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢄⠀⠀⠀⠀⠀⢠⣿⡄⠀⠀⠀⠀⠀⠀⠀⢉⣿⣿⣿⣿⣿⠿⠿⠾⢞⡻⣙⠦ // ⡝⣎⠼⣎⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣞⣿⣿⣏⢿⣄⡾⢿⣽⢇⣿⣿⣷⣯⣿⡿⢿⣿⣿⣿⣿⣿⣿⣿⡿⣜⠀⠀⠀⢀⣴⠟⠀⢷⣤⠀⡀⢀⡀⣤⡴⠋⠙⠳⣯⡿⣿⣿⢖⡱⣊⠴⣩⡾ // ⡾⣼⢿⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣿⢿⣿⡆⣿⣿⣿⡿⣾⣿⣿⣿⣿⣿⣿⣿⣶⣶⣧⣿⣿⣷⣧⣿⢿⠀⢠⣶⠿⠃⠆⠀⠘⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀⠀⠛⠻⠿⢷⣧⣿⠾⠟⠀ // ⡼⣱⣾⣿⣽⣿⣿⢿⣯⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢲⢿⣫⢿⣾⣖⣻⣿⢳⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⡿⢞⠫⠁⠀⠁⠀⠀⠀⣿⣿⣿⡿⣿⣿⣼⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⡵⣟⣿⣿⣿⣿⢯⣿⣻⣾⣿⣿⣿⣿⡿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣭⢺⠥⣏⢿⣿⣶⣿⢿⣗⣻⣷⣿⢉⠛⠻⠿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⡿⣽⣿⣽⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⣿⣽⣿⣿⣟⣿⡿⣯⣿⣿⣿⣿⣿⡿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⢯⣿⣌⡳⢭⢿⣿⣚⢿⡹⣿⡋⠄⠌⠐⠠⢀⠆⢭⡙⢏⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⢿⡽⣿⢾⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⣿⣿⣿⣻⢾⣽⣻⣟⣿⣿⣿⣿⢯⣿⣟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣼⣣⣏⣿⢿⣞⡿⣴⡉⠆⡈⠄⢡⠈⠞⣤⢋⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣯⣟⣿⣮⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⣿⣿⡷⣯⣟⣾⣳⣿⣿⣿⢿⣽⣟⣷⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡍⡉⠏⠻⠜⡸⢛⠿⣿⣴⣀⢎⠰⣈⠞⣴⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣳⢯⣿⡧⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⣿⡿⣽⡳⣽⣺⣽⣷⣿⢿⣻⢷⣻⢾⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠐⠀⠀⠀⠀⠄⠉⠘⠌⢛⠿⠾⡷⠿⠾⠋⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⢯⡟⣾⡗⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⣿⣟⢧⡟⣶⢯⣟⣯⡿⣯⢯⢷⣯⢿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠁⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⢯⣝⣿⣿⡔⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⣿⢞⣧⢻⣼⣻⡽⣏⠿⣜⣻⢾⣽⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣟⣯⢞⡾⣿⢻⠀⠀⠀⠀⣀⠀⠀⠀⢀⡰⣞⣯ // ⣿⢺⡬⣓⢮⡳⣝⢮⡻⣽⡽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣻⠾⣭⢞⣿⣏⡇⠀⠀⣿⣽⣶⡠⣄⢾⣽⣟⠃ // ⣏⠷⡸⢥⢳⣙⢮⡳⣽⣳⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠄⣿⣿⣿⣿⣿⣻⣽⣻⡜⣯⣿⣇⡇⠀⠈⣷⣿⣿⣷⣯⣿⡽⢊⠀ // ⣏⢞⡱⣋⡞⣬⢳⣽⣳⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠏⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⣐⠀⢘⣿⣿⣿⣿⣻⣽⣳⢧⣛⠶⣿⣿⢢⠀⡰⢯⣿⣿⢿⣽⣳⢿⣥⠂ // ⣏⠮⣕⣣⡝⢮⣟⣾⣽⣿⣿⣿⣿⣿⣿⣿⣿⠏⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣲⡏⠀⢘⣿⣿⣿⣿⢯⡿⣽⡳⣭⢻⣽⣯⢹⣾⣽⣿⣿⣯⡟⣶⣹⣿⣾⣟ // ⣎⠿⡴⣓⣾⢻⣾⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢢⡿⠀⠀⢘⣿⣿⣿⣿⢯⣟⡷⡽⣎⣟⣾⣷⢚⣿⣿⣿⣿⣿⣽⣾⣷⣿⣻⣾ // ⣎⢯⣵⣻⣞⣿⣿⣿⣿⣿⣿⣿⣿⡿⢃⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⠒⠇⠀⠀⢈⣿⣿⣿⣟⡿⣞⡽⣳⡝⣮⢿⣿⣎⣿⣿⣿⣿⣿⣿⢿⣾⠳⡝⢺ // ⣮⢷⣯⣷⣿⣿⣿⣿⣿⣿⣿⣿⠟⡀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠌⠀⠀⠀⢰⣿⣿⣿⡿⣽⢞⣳⢧⡻⣼⣻⣿⠴⣿⣿⣿⣿⣿⣿⣟⢧⢃⠈⢄ // ⣿⣾⣷⣿⣿⣿⣿⣿⣿⣿⡿⠋⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠌⡀⠀⠀⠀⣸⣿⣿⣿⣟⣧⢟⡧⢯⣳⢷⣻⣿⣞⣿⣿⣿⣿⣿⣿⡾⣏⣦⣳⢮ // ⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⢂⠄⡁⠂⠄⣿⣿⣿⣿⢿⡜⣯⢞⣯⠿⣽⣻⣿⢼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣿⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠰⢈⠔⡂⢅⠊⣼⣿⣿⣿⣿⣻⢼⣣⣟⣾⣻⡽⣿⣿⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡐⢄⠊⠴⡈⠴⣈⢒⣿⣿⣿⣿⡿⣝⢮⡳⢾⣱⣯⣟⣿⢃⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠢⡐⠌⡜⢢⢉⠲⢄⢮⣿⣿⣿⣿⢿⡹⢮⡽⢯⣷⣻⣾⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠂⢆⠱⡘⢄⢣⠘⣂⠎⣼⣿⣿⣿⣟⡯⣝⣳⡟⣿⣞⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡁⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⡌⠢⡑⠌⡌⢢⢉⠤⢩⣿⣿⣿⣿⢯⣳⠽⡾⣽⣳⣯⣿⡇⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢁⠰⠁⢆⠱⠈⡄⠂⠄⢻⣿⣿⣿⣯⡗⣯⢿⣽⣳⣿⣽⡿⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠐⡀⢂⠍⡠⢂⠁⠀⠐⠈⡸⣿⣿⣿⢮⡽⣞⡿⣾⣽⣻⣿⣃⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠂⠤⠁⠎⡐⠄⠀⠀⠀⠀⠀⡑⢼⣿⣯⢟⡽⣯⣟⣷⣿⣿⡙⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⡠⢊⠔⡩⠐⠀⠀⠀⠀⠀⠀⠀⠐⡸⣿⣞⣯⣟⡷⣿⣾⣿⣿⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⢈⠐⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠀⠀⠀⠀⠀⣄⢣⠰⡁⠎⠄⠁⠀⠀⠀⠀⠀⠀⠀⠠⠁⢻⣞⡷⣯⣟⣷⣿⣏⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠄⡊⠄⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣇⠀⠀⢤⣳⡾⢇⢣⠘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢡⠘⣿⣽⣳⣿⣿⣯⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠌⡐⠠⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡤⣉⣾⢏⣱⢎⠡⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⢿⣳⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⢂⠥⠁⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣷⣿⡷⡞⡃⠎⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⡇⢸⣿⣿⣯⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⡌⠄⢃⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡟⡜⡡⠘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⡇⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣇⡘⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣟⠰⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢁⠂⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣷⠠⡁⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡁⠀⠀⢸⡏⠆⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⢌⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⡅⡐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⡁⠀⢘⣇⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠌⡨⢄⡿⣹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⡇⠜⡀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠁⡀⠀⢈⡧⠌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣠⣴⢾⡛⡽⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣦⡡⠐⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠂⠄⡀⠨⣷⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣴⣻⡭⣭⠱⣜⣦⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⡿⣷⢶⣤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠌⡐⠀⢰⣯⣧⣤⣄⣄⣠⣠⣤⣤⣶⣿⣿⣿⣿⣷⣿⣿⣿⡿⣿⣽⣤⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣷⣯⣞⡼⣩⢿⡟⠲⠶⠤⢤⣄⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢈⡐⠤⠁⣾⣿⣿⣿⣾⣷⣯⣷⣶⣷⣾⡿⢿⣿⣻⢿⣽⣧⣿⣿⣿⣿⠋⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⠿⣿⣷⣷⣾⣧⡑⠌⡐⠠⠀⢀⠉⠙⣻⠟⡛⢳⠲⣖⠶⠾⢾⢳⠷⡾⢶⡿⣿⣿⣿⣿⣿⣿⣿⣯⣿⣾⣶⣿⣿⡾⢿⠿⢿⡻⢟⡽⣺⢼⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣷⣮⣝⣻⣟⡿⣿⣷⣶⣧⣤⣄⣂⣤⣨⢑⣣⠳⣜⣏⡻⣬⢳⣫⡝⣧⢽⣿⣿⣿⢻⣟⢛⡹⠩⠍⠩⢁⠒⠤⢑⠊⡜⢢⡙⢮⡱⢧⣻⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⡿⣟⡿⣿⢿⣿⣿⣷⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣷⣿⣷⣿⣿⣿⣿⣿⣿⢾⡹⣏⠲⡄⠣⠌⣁⠊⢌⠢⡁⠞⣠⠣⡜⢣⡝⢮⣹⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣽⢻⣜⢯⣿⡐⠦⠡⢉⠉⠉⠉⠋⠛⠛⢛⠛⡟⡻⢟⡿⢿⠿⣟⡿⣻⢽⣿⣿⣯⢟⣿⠳⣌⠱⡈⠤⡘⢄⠣⡘⢔⡡⢒⡍⣲⡙⢮⣹⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣞⣟⡮⣗⣿⣍⠲⡁⢆⠐⡀⠀⢀⠂⠡⡈⢆⠱⡑⠮⣜⣣⢟⡼⣳⡝⣾⣿⣿⣯⣛⣿⠳⡌⢆⡑⢢⠑⡌⡒⡡⢎⠰⢣⠜⡴⣩⢓⢾⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⡿⣼⡝⡷⢾⣧⢣⡑⠌⡐⠀⠌⢀⠈⠤⡑⢌⠒⣍⠺⢴⣩⢞⡵⣣⡟⣾⣿⣿⣳⡝⣾⡝⡜⡄⠎⣄⢃⡒⣡⠱⣈⢇⠣⢞⣡⢳⣋⡞⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣷⡻⣽⣛⢶⣣⠜⢢⠑⣈⠐⡀⠎⠰⣈⢌⠚⡤⢛⠦⣝⢮⡝⣧⣛⣿⣿⣿⢷⡻⡼⡟⡴⣈⠧⣐⠊⡔⢢⠱⡌⢎⡹⢎⡖⢯⡼⡜⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⣿⣿⣿⣿⣿⣿⣷⣟⣧⢟⣳⢮⡙⢆⠱⡀⠆⠐⡈⠑⡠⢊⠱⣌⡙⢮⣙⢮⡽⣲⢏⣿⣿⡿⣯⢷⡹⣿⠴⣡⠒⠥⠚⡌⠥⡓⡜⡬⣓⢭⣚⢧⡳⡅⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ // ⠐⠀⠀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠂⢀⠀⠁⠀⠂⠀⠐⠀⠀⠂⠀⠐⠀⠠⠀⠀⠄⠀⠠⠀⠀⠄⠀⢀⠀⢀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⠀⠳⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠠⠐⠀⡀⠠⠀⠁⠀⠌⠀⠄⠁⠠⠐⠀⠠⠀⠄⠂⠀⠄⠀⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣁⣤⣴⠶⠓⠛⠛⠉⠛⠓⠒⠯⠭⣉⡉⠓⠲⠦⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠀⠠⠀⠀⠀⠀⠄⠀⠀ // ⠀⠀⡀⠀⠀⠄⠂⠀⡀⠠⠀⠀⠄⠀⠠⠀⠀⡀⠀⠄⠀⠐⠀⠀⡀⠈⠀⠀⠂⠈⢀⣤⠾⠛⠫⠘⠀⣀⡴⠂⠀⣠⠞⢀⡶⢃⠀⠀⡉⠳⡄⢀⡀⠈⠙⠲⢤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⢀⠀⠐⠀⢀⠠⠀⠀⢀⠠⠀⠀⠐⠀⠀⠄⠀⢀⠀⠄⠂⠀⢀⠀⠀⠐⠀⣠⣴⡿⠣⠉⠀⠀⣠⡾⠉⠀⢀⠜⢁⡴⠋⢠⠇⠀⠀⣧⠀⠘⢦⠈⠳⣄⢀⠀⠉⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⡀⠄⠂⠀⠀⢀⠐⠀⠀⢀⠈⠀⠀⠂⠀⠠⠀⠀⠀⡀⠄⠀⠀⠀⣢⣞⣿⠫⠀⡀⠀⣠⣾⠟⠀⠀⢠⠋⣠⢏⠄⢀⡏⠀⡎⠀⢹⠀⠀⠈⣇⠀⠈⠢⠈⠲⡄⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⢀⠀⠀⡀⠐⠈⠀⠀⠀⠂⠀⢀⠀⠁⠀⠐⠀⢀⠀⠁⠀⠀⢀⢈⡾⣭⠟⡁⠀⡔⠀⡴⡿⠃⠀⠀⠀⣧⣰⢫⠂⠀⣼⠀⢸⠃⠀⢸⡄⠀⠀⡼⡄⠀⠀⠆⠀⡈⢢⡀⠈⢣⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⢀⣀⠀ // ⠀⠀⡀⠄⠀⠀⠄⠐⠈⠀⢀⠐⠀⠀⠠⠈⠀⢀⠀⠀⡀⠂⠈⣰⠯⣵⠏⡐⠀⡜⠀⣼⡟⣡⠂⠀⠀⣼⣱⡟⠆⠀⢀⡏⢰⣸⠀⠀⠀⣇⠀⢈⡇⢷⠀⠀⠀⠀⢳⡀⠘⢦⠀⠹⡄⠀⠀⢀⣤⠴⠖⠛⠉⠁⠀⠀⠀⠀ // ⠀⠀⠀⢀⠀⠂⠀⡀⠄⠐⠀⠀⠀⠂⠀⠀⠄⠀⠀⠄⠀⠀⣴⢟⡾⠃⡞⠀⡘⠀⢸⡟⣠⠃⠀⢀⣾⢧⣿⠛⠀⣴⢸⠇⠸⡇⠀⠀⠀⢸⡀⠀⣧⢸⡆⠀⠀⠀⠀⣇⠀⠀⢳⠀⠹⣤⠶⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠁⠀⢀⠠⠀⠀⠀⡀⠄⠈⠀⢀⠈⠀⢀⠀⠂⠀⢀⣾⠯⣾⠃⣼⠁⠠⠁⠀⣿⣰⠃⠀⠀⣼⣿⡟⣟⣀⣀⡇⢸⡃⠀⢿⠀⢠⠆⠀⢧⠀⣿⣰⠇⠀⠀⠀⠀⢸⠀⠀⠀⢧⢠⠹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠈⠀⠀⠀⡀⠀⠁⠀⠀⡀⠐⠀⠀⠠⠀⠀⠠⣰⣿⡟⣸⠇⢠⡇⠀⠄⣀⣼⣧⡿⠖⠞⢻⣟⡟⠙⡏⠁⢸⡇⠘⡇⠀⠈⢧⢸⡄⠀⠘⣿⠛⣿⡀⠀⠀⠀⠀⠸⡆⠀⠀⠘⣾⡵⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠁⢀⠈⠀⠀⢀⠐⠀⠀⢀⠀⠄⠂⠀⠀⠐⣼⣿⡟⢠⡟⠀⢸⠃⠀⠄⠉⣼⣿⠁⢀⠀⣼⣿⠁⠈⡇⠀⣸⣇⡀⢿⡀⢀⠈⢻⡄⠀⠀⠸⣿⣿⣇⡀⠀⠀⠀⠀⡇⠀⠀⠀⢣⡇⢿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠄⠀⠀⠄⠈⠀⠀⢀⠈⠀⠀⠀⢀⠀⢁⣾⡟⡾⠁⣾⠃⡈⢼⣻⠀⠂⠀⣿⣿⠀⠀⢠⣿⣿⠀⠀⣿⠀⣿⣿⡇⠸⣷⠘⣧⡄⠙⢦⡀⢐⡏⠻⣟⠉⠓⠦⣄⠀⡇⠀⠀⠀⠈⣧⠸⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⢀⠠⠀⠂⠀⠀⠠⠀⠁⠀⠀⣼⡟⢸⠇⢸⡿⡄⠐⣸⢹⡄⠡⢰⡿⣿⡄⠂⢸⠹⣿⠀⠀⢻⡆⡿⣿⣷⢤⡘⣷⣜⣿⣷⡶⢽⣶⣧⡤⢹⡗⠄⠀⠈⢹⡇⠀⠁⠀⠀⢿⠀⡿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠂⠀⠀⠠⠐⣸⣿⢁⡿⠈⣿⡗⣯⠀⢼⣿⣧⠐⢸⣇⣸⣿⣾⣿⣤⣿⣆⠀⠈⣿⣽⡘⢿⣽⣧⠀⠙⢿⠛⣷⣄⠠⡇⠀⢸⡷⠀⠀⠀⣼⡏⠀⠈⠀⠀⢸⡀⢿⢹⡆⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⢰⣿⠃⣼⣹⠖⣿⢹⣿⠀⠸⣿⣿⣿⣿⡿⡿⢿⣟⢿⣿⣿⣿⣇⠀⠘⢎⠳⣈⣿⣿⣷⡀⢸⡀⠈⢿⣦⣇⠀⠀⣿⠀⠀⢠⣿⠇⠀⠨⠀⠀⢸⡅⢸⣈⣷⠀⢀⠀⡀⢀⠠⢀⠂ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⢸⣿⢠⣟⣿⣀⢻⣿⣿⡀⢁⢻⣿⠈⠻⣇⠀⢿⣿⣿⣹⣏⣿⠙⠃⠀⠀⠀⠈⠙⢿⢿⣟⡮⣧⣴⣿⣿⣿⣿⣾⣿⡄⢀⣾⣿⠀⠀⢸⠀⠀⣾⠁⢸⡇⣿⡇⢂⢂⡡⠆⠲⣄⠂ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢸⣿⢸⣿⣿⡆⣻⣾⣿⣧⢂⠸⣿⡀⠀⠈⢄⠈⠻⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⣽⣯⡽⣿⡿⢿⢻⣿⡟⣿⡇⡀⠀⢸⠀⣰⢿⠂⢸⡇⢿⡇⠈⠀⠀⠀⠥⡘⣇ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠻⣿⣿⣿⣱⡿⣿⣿⣿⣎⣆⢻⣧⠀⠀⠀⠉⠓⠒⠒⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣷⣿⣷⠆⠘⣽⢟⡿⡽⠀⠀⣾⣸⢿⣼⠀⢸⡇⢸⡇⠀⠀⠀⠀⢢⠑⢼ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿⣎⡇⣿⣿⣿⣾⣹⣎⣿⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠖⠒⢄⠀⠀⠀⠀⠀⠢⣍⣛⣛⡁⠀⠈⠁⣸⣿⠃⢀⣸⢯⣿⢸⠍⠀⣾⠇⣼⡇⠀⠀⢠⠘⠤⡉⢆ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⣸⣿⣿⣿⣿⣿⣇⢻⣿⣿⣾⣿⣏⢷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠈⠇⠀⠀⡨⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⠇⡐⢠⡿⣼⠇⣻⢀⣤⣿⢠⣿⠀⠀⠐⢢⡉⠖⣡⢂ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣠⣀⣀⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢿⡦⠭⠓⠂⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⢧⡜⣤⣿⣷⢿⢀⡟⣼⣿⣏⣾⠃⠀⢠⠉⢦⡘⡘⠴⣈ // ⠀⠀⠀⠀⠀⠀⢀⣤⠶⠟⠛⢉⣩⣽⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⠿⣿⡣⣟⣼⣯⣿⣏⣠⣿⣿⣿⣿⠟⠁⠀⡐⢂⡍⠲⣌⢱⠣⡜ // ⠀⠀⠀⠀⢀⡶⠋⠁⢀⣤⢞⡿⢟⡿⣻⡽⢛⠉⢉⡛⠻⢿⣿⣿⣿⠏⠙⠿⣷⣆⠀⠀⠀⠀⠀⠀⠾⣟⠋⠓⠒⠲⠦⣤⣀⡀⠀⠀⠀⠀⠀⠘⢉⣡⣾⣧⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⠤⡑⢬⡐⢣⡜⢪⡱⢜ // ⠀⠀⠀⢠⡟⠁⢀⡴⣫⠞⢉⣴⣫⡾⠉⢀⣼⠏⢋⠀⠀⠀⠘⣿⠻⡄⠀⠀⠈⠙⢧⡀⠀⠀⠀⠀⠀⠈⠉⠒⠒⠶⠖⠚⠋⠁⠀⠀⠀⠀⠀⠀⠉⢉⣽⣿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣅⠀⠀⡜⢠⡑⠦⡘⡵⢊⢧⡙⣬ // ⠀⠀⠀⢸⠀⣴⢋⡴⠃⣰⢏⡼⠋⠄⢠⡞⠁⠌⠀⠄⢠⠀⠀⣿⡆⠹⡄⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⡴⠟⣿⣭⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣀⣐⡄⢣⠘⢦⡹⡜⣭⢒⡹⡼ // ⠀⠀⠀⠈⡾⢁⠎⠀⣼⡿⢋⡴⠃⢠⡟⠀⠀⠀⣰⠀⢸⠠⠀⡇⢳⠀⢻⠀⠀⠀⠀⠀⢸⣿⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⠶⠛⠉⠀⣸⡟⣻⡿⠛⣿⠋⢈⠛⢏⠀⠈⠳⣬⡙⠯⣓⠿⣆⣳⠱⢦⣋⠶⠃ // ⠀⠀⠀⢸⢃⡟⠀⣼⠳⢡⡞⠁⢠⡟⠀⠀⠀⢠⡿⠀⠼⡐⣶⠃⢸⠧⣼⠃⠀⠀⠀⠀⢸⣿⣿⣿⣷⣄⡀⠀⠀⣀⣀⣤⣴⣶⣿⣿⠃⠀⠀⠀⢰⣿⢟⣡⡟⢠⡿⠀⡊⢱⠈⠙⢦⣄⠈⢿⣳⣌⠳⣬⡛⢿⣢⣽⠁⠀ // ⠀⠀⠀⢸⢸⡇⢰⠏⣰⡿⠀⢀⣿⠁⠀⠀⢠⣿⠇⠀⢃⣼⡏⠀⣾⢡⡏⠀⠀⠀⠘⠀⠨⣷⣻⣿⡳⣟⡿⣻⢟⡻⣽⢿⣿⣿⠛⢹⠀⠀⠀⠀⣿⢋⣼⡟⠀⢸⠇⠀⠀⢰⡆⠀⠀⢻⣧⠈⢷⡹⣦⡈⢿⣦⡙⢇⠀⠀ // ⠀⠀⠀⠸⣿⡆⡟⢠⣿⠁⠀⣸⡇⠀⠀⠀⣾⠝⠀⠘⣰⠏⠀⢰⣧⡞⠀⠀⠀⠀⠀⠀⠀⣿⠡⢻⣿⡼⣳⢏⣯⢳⣭⠟⠁⠀⠈⢺⠀⠀⠀⣼⡏⣼⣿⢀⠀⣻⠀⢸⠀⠘⡇⢀⠀⠈⢾⡧⡈⢷⣹⣧⠸⡿⠉⢻⡳⡄ // ⠀⠀⠀⠀⠙⣿⡇⣾⡇⡀⠀⣿⠀⠀⠀⣸⠃⠀⠜⣸⡏⠀⢠⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⣯⠱⠀⠘⣻⣵⣫⣾⡿⠃⠀⠀⠀⠀⢸⠀⠀⢰⣿⡡⣿⣿⠀⢂⣿⠀⢸⠀⠀⠇⢸⡄⠀⠈⢿⣱⠈⢿⣿⢀⡇⠀⠀⠱⡄ // ⠀⠀⠀⠀⣠⣿⢰⣿⢰⡇⢸⡏⠀⠀⢰⡇⠀⠀⢰⠋⡇⢠⣯⠏⠀⠀⠀⠀⠀⠀⠀⠀⢀⡇⢢⡕⠃⠀⠀⣡⠎⠀⠀⠀⠀⠀⠀⢸⠀⠀⣾⢻⣿⣿⣿⠀⣸⢸⠀⣿⠀⠀⠈⢸⡇⢠⡀⠘⣿⣇⠸⡯⡼⠃⠀⠀⠀⢻ // ⠀⠀⠀⢰⡿⣿⣼⡇⣿⡇⣸⡇⠀⠀⣾⠃⣀⢸⡏⠀⢧⢿⠏⠀⠀⠀⠀⠀⠀⠀⢀⣤⠞⠐⡀⢇⠀⠀⠈⠁⠀⠀⠀⠀⠀⠀⠀⠈⢧⣼⣇⠚⣿⣯⣿⣇⢾⡘⢿⣿⡇⠀⠀⠀⣿⠘⡇⠀⢹⣿⡤⢿⠁⠀⠀⠀⠀⠈ // ⠀⠀⠀⣿⠁⣿⣿⡱⢏⡇⣽⡇⠀⠀⣿⢰⡇⣿⠁⠀⢸⡾⠀⠀⠀⠀⠀⢀⡤⠖⢛⣿⡖⠐⠀⠸⡄⠀⠀⠀⠀⠀⢠⡏⠀⠀⠀⠀⣸⡏⠛⠾⣽⣿⣿⣿⣿⡇⠈⣿⣿⡀⠀⠀⢻⡄⣷⠀⢘⡿⣿⠈⡇⠀⠀⠀⠀⠀ // ⠀⠀⣸⡇⠀⢹⣿⣱⢋⡇⢿⣇⠠⠀⣿⡿⣾⡟⠀⢀⠀⣹⣀⣠⡤⠶⠋⢡⠤⠂⠀⢸⣧⠀⠀⠀⣧⠀⠀⠀⠀⢀⡏⠃⠀⠀⠀⢀⣿⠁⠀⠀⠀⠉⠛⠿⢿⣿⣤⣿⣽⣷⣀⡀⢸⠅⣿⠀⢸⡀⢸⡀⣷⠀⠀⠀⠀⢀ // ⠀⠀⣿⠀⠀⠀⢻⣧⢋⣧⢹⣿⣸⣆⣿⣥⡟⠋⠉⠉⠉⠀⠐⢲⣤⣦⣅⣑⣲⣤⣀⠀⣿⡆⠀⠀⠙⠂⠀⠀⠀⡞⠀⠀⠀⠀⠀⣼⣏⣤⣭⡕⠒⠒⠊⠀⠁⠀⠀⠀⢠⠀⠈⠉⠙⠛⢻⣥⣸⡇⢸⡇⢹⠀⠀⠀⢀⡞ // ⠀⢀⡇⠀⠀⠀⠘⣯⣟⣹⡼⣿⣽⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠙⠛⠛⠛⠻⠿⠿⣿⠧⠿⠟⠻⢄⠀⠀⣠⠤⠛⠛⠀⢀⣿⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⢧⢨⡇⣼⠀⠀⠠⠋⠀ // ⠀⢸⡇⠀⠀⠀⠀⠹⣶⣣⣿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣇⡏⠀⠀⠀⠀⠀ // ⠀⠸⡇⠀⠀⠀⠀⠀⢈⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢿⣆⡀⠀⠀⠀⠀⠀⠀⠀⠀⣸⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡁⠀⠀⠀⠀⠀ // ⠀⠀⢿⠀⠀⠀⠀⢀⡞⠌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠨⢿⡗⠀⠀⠀⠀⠀⠀⠀⢀⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢣⠀⠀⠀⠀⠀ // ⠀⠀⠘⣆⠀⠀⠀⣼⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⡇⠀⠀⠀⠀⠀⠀⣾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡇⠀⠀⠀⠀ // ⠀⠀⠀⠘⣄⠀⠀⣿⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣧⡀⠀⠀⠀⠀⣼⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡜⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀ // ⠀⠀⠀⠀⠘⢷⣄⣿⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣧⠀⠀⠀⢰⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡾⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣹⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠈⠙⣿⡀⢂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣿⣷⣶⣶⣿⣅⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⡇⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⢻⢆⠀⢂⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣭⣭⣭⣭⣿⣿⣍⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣧⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⣸⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⢸⢎⡰⠀⠄⠀⠀⠀⠀⠀⡐⢈⣼⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣭⣭⣿⣿⣿⣿⡃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠹⣼⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢼⡀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠘⣧⢒⠡⠀⠄⠀⠀⠄⠡⢀⡼⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⠉⠉⠉⠉⠉⢹⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠙⣄⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⢀⣿⡌⢣⠈⠄⠡⠈⠄⣁⡾⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢐⣿⣿⣿⣦⣤⣤⣤⣤⣼⣿⣿⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢇⠀⠀⠀⠀⠀⠀⠀⠀⣿⣀⠈⢆⠀ // ⠀⠀⠀⠀⠀⢀⡴⢋⣹⣎⠱⢊⠠⠁⠌⡐⣼⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣆⠀⠀⠀⠀⠀⠀⢀⡇⠈⠣⡀⠀ // ⠀⠀⠀⠀⢠⣾⡶⠛⢡⣯⡅⠣⠄⡑⠠⣼⠃⠀⠀⠀⠀⢀⣤⡂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣷⣿⣿⣿⣿⣿⣟⣿⣷⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣹⣲⢦⡀⠀⠀⠀⠸⡆⠀⠀⠀⠀⠀⢸⣷⠄⠀⣷⡀ // ⠀⠀⠀⠀⣾⡏⠀⠀⣾⢹⣎⡑⢆⠐⢠⡏⠀⠀⠀⠀⢰⢻⣿⣭⡗⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠿⣿⣿⡿⠿⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⢉⣧⣾⣏⠹⡄⠀⠀⠀⢻⠀⠀⠀⠀⠀⢸⡿⠀⠀⡞⢷ // ⠀⠀⠀⠀⢿⣷⣀⠀⣷⡾⣷⡈⠦⠈⢼⠃⠀⠀⠀⠀⠸⣌⠙⠖⣅⡤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⣌⣉⢹⣼⠞⠁⠀⠀⠀⣼⡆⠀⠀⠀⠀⢸⡅⠀⣰⢃⡞ // ⠀⠀⠀⠀⠀⠙⠛⠉⠺⣇⣿⢌⡓⢈⢺⡄⠀⠀⠀⠀⠀⠈⠙⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠁⠀⠀⠀⠀⠀⣿⠇⠀⠀⠀⠀⢸⡉⠛⠛⠉⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣹⢦⢹⠀⢺⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⢠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣻⠀⠀⠀⠀⠀⢺⡄⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⢎⡰⠁⢿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣟⣧⡜⣷⣌⠄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⠇⠀⠀⠀⠀⠀⢽⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣟⢢⠱⡈⠌⢿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣴⣿⠟⠋⠈⠓⢮⣝⣳⣤⣁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⠋⠀⠀⠀⠀⠀⠀⣹⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⢢⠝⡐⠌⡄⡙⢳⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣿⠿⠋⠁⠀⠀⠸⠀⠀⠉⠓⠾⣝⣳⢦⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⠟⠁⠀⠀⠀⠀⠀⠀⠀⣼⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡜⢬⢣⠘⠰⢠⠁⣿⢛⠳⡶⣤⣤⣤⣤⣤⠶⣶⣻⡿⠟⠋⠁⠀⠀⠀⠀⠀⠈⠀⠀⠀⠄⠀⠀⠉⠛⠺⠯⣿⣳⣶⣶⣶⣶⡶⠶⠟⠛⢹⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡏⣆⠣⣍⠒⣡⠊⣿⠈⡓⠲⢥⣾⣴⡧⠾⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⢀⠀⠀⠀⠀⠀⠀⠀⠀⡿⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡷⣌⠳⡌⡒⢄⠊⣿⠀⢂⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠄⠠⠀⠀⠀⠀⠀⠀⠀⠀⣏⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⢰⠣⡜⣡⠊⠔⣹⠀⠀⠄⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠌⠠⠁⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⢣⡝⠴⡡⢎⠰⢹⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠨⣿⢀⠂⠡⠀⠀⠀⠀⠀⠄⠀⡇⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣧⢚⠥⡓⣌⠢⣙⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡆⢈⠡⢀⠀⠀⠄⠂⠌⠐⡇⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣯⢎⠲⡱⢨⡑⠤⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣽⣆⠐⡡⠐⣀⠂⡁⠎⣘⡇⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣎⢣⡑⢣⡘⠄⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠘⠻⣧⣀⠱⢀⠆⣑⠢⢸⡇⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣧⠚⡄⠃⡜⠰⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢾⡇⠈⢄⡀⠛⠳⢌⠒⠤⡃⣽⠀⠀⠀⠀⠀⢸ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⢩⠐⡡⢂⡑⢼⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣧⠁⢂⠰⢁⠲⠨⠜⡰⢱⣿⠀⠀⠀⠀⠀⣸ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣣⠘⠄⡡⢐⣺⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠃⠀⢻⡌⠐⣀⠣⢌⡑⣊⣴⡿⠃⠀⠀⠀⠀⠀⣟ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡟⣆⠈⠔⣡⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡜⠁⠀⠀⠀⢿⣆⢀⣢⡴⢺⡿⠋⠀⠀⠀⠀⠀⠀⢠⢟ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣗⣹⠀⢦⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠊⠀⠀⠀⠀⠀⠈⢿⣌⣳⠞⠉⠀⠀⠀⠀⠀⠀⠀⠀⢸⢺ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⠴⣩⡾⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢫⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡞⣭ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣷⠟⡰⢀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣆⡀⠀⠀⠀⠀⠀⠀⠀⢀⡟⣲ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣹⣾⣿⣿⣿⣄⡾⢻⣯⣿⠿⣿⣷⡀⠈⢧⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⡶⠶⠖⠲⠖⢶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣶⣭⣿⣇⢻⣿⣿⣖⣲⡿⣿⣌⣿⠶⠶⠶⠖⠒⠲⠶⠲⠶⠶⢦⡄⠀⠀ // ⠀⠀⠀⡇⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⡿⣿⣍⠻⣿⣡⣴⠋⠘⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡇⠀⠀ // ⠀⠀⠀⠁⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣽⣾⣷⣿⣿⣆⢻⣷⢿⡀⠀⢻⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠀⠀ // ⠀⠀⠀⡄⠀⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣻⡏⣿⡟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠁⠀⠙⡏⠙⢧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⡇⢀⣸⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣧⣾⣵⣿⠨⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣤⣀⣿⠀⠀⠻⣄⠀⠀⠀⠀⠀⠀⠀⢸⠂⠀⠀ // ⠀⠀⠀⡇⢠⣿⣿⣿⣿⣿⣿⣿⣿⢏⣿⣿⣿⣿⣿⣿⣿⠙⠿⣿⡿⠻⡏⠀⣿⣿⣿⣿⣿⣿⢟⣿⣏⣿⣿⣿⣿⣿⣭⣉⣁⠀⠀⠙⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠐⣧⣾⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⡿⡇⠀⠀⠈⠀⠀⠀⠀⢻⣹⣿⡿⠟⢡⡾⠁⠘⣿⣿⡇⢿⣿⢿⣿⡏⠉⢢⡀⠙⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⡏⠛⣿⣿⣿⣿⡿⣿⢻⣧⠀⠀⠀⠀⠀⠀⠀⠖⠛⢿⣇⣼⣯⡀⢀⣼⣿⣿⣧⣼⠟⢉⣉⣁⠀⠀⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⠀⠹⣦⡀⠀⠀⠀⠀⠀⠀⠀⠈⠿⣿⠟⢻⣯⣽⣿⣿⣿⠏⠀⠉⣿⠉⠑⢂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠀ // ⠀⠀⢸⣷⣿⣿⣿⣿⣿⣿⣿⣖⣿⣿⣿⣿⣿⣿⣿⠀⠀⠈⠁⠀⡀⠀⠀⠀⠀⠀⠀⠀⠈⠀⢈⣽⣿⣿⣿⣿⣿⡇⠀⠻⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢐⠀⠀⠀ // ⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⡟⠻⡇⠀⠀⠀⠀⠙⠲⢤⠀⠀⠀⠀⣀⣤⣴⣿⣿⣿⣿⣿⣿⣿⣧⡝⠛⠁⠘⣷⡄⠀⠀⠀⠀⠀⠀⠀⠰⡀⠀⠀ // ⠀⢀⡿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠸⣿⣆⠀⠀⠀⠀⠀⠀⢸⡄⠀⠀ // ⠀⢸⢏⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⣿⡍⢉⠻⣦⡀⠀⠀⠀⠀⣀⣠⣤⣴⣴⣾⣿⡿⣻⣿⣿⣿⣿⣿⣏⡿⠀⠀⠀⠀⠀⠙⢾⡂⠀⠀⠀⠀⠀⢸⡄⠀⠀ // ⠀⣾⠠⣿⣿⣿⣿⣿⣿⣿⡿⣷⢹⢻⣿⣿⣿⡅⠂⢁⠘⠻⣶⠖⠛⠛⠉⠉⢠⣿⣿⣿⣡⡾⢿⠟⠛⠻⢿⣇⣿⣧⠀⠀⠀⠀⠀⠀⠈⣷⠀⠀⠀⠀⠀⢸⠃⠀⠀ // ⠀⣿⠐⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⣿⡟⣿⡧⠀⢀⠀⠀⡿⠲⠦⠤⢤⣴⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⠙⢿⡷⠀⠀⠀⠀⠀⠀⠀⠸⡇⠀⠀⠀⠀⠈⠀⠀⠀ // ⠀⣿⣭⣿⣿⣿⣿⣿⣿⣿⣿⡘⠋⢻⣽⣿⠹⣷⠀⠀⠁⠀⠇⠀⠀⣠⡾⢿⢻⣿⣿⡟⣧⡀⠀⠀⠀⠀⠀⠀⠀⠹⣄⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⢀⠀⠀⠀ // ⠀⢻⢶⣿⡘⣿⣿⠿⠛⠋⠁⠀⠀⠀⠙⢿⡄⠙⠓⠦⠀⢀⣠⡶⠛⠁⠀⠸⠿⢿⡈⠳⠄⠁⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣀⠀⠀⠀⠀⠀⠇⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⢨⡷⠛⠛⠉⠁⠀⠤⠤⠤⠤⠤⠤⠤⢤⣽⡇⠀⠀⠀⣿⠃⠀⠀⠀⣀⣤⣤⣦⣿⣶⣤⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠣⡄⠀⠀⠀⡃⠀⠀⠀⠀⠀⠐⠀⠀ // ⢰⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⠇⠀⠀⠃⠀⠀⣰⣾⣿⠟⠉⠁⠀⠀⠀⠈⠛⠻⠷⢦⣀⠰⣄⠀⠀⠀⠀⠀⠈⠣⡀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠎⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠀⠀⣠⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⢮⣓⢀⠀⠀⠀⠀⠀⠙⢦⡆⠀⠀⠀⠀⠀⠀⠀⠀ // ⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⢰⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢳⡔⠀⠀⠀⠀⠀⠀⣧⠀⠀⠀⠀⠀⠀⠀⢀ // ⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⣄⠀⠈⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣆⠀⢠⠀⠀⠀⢻⡆⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣧⠀⠑⠄⠀⠈⢇⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣻⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢽⡆⠈⠳⣤⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⡃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⡀⠀⣸⡇⠀⠀⠈⠳⢦⡀⠀⠀⠀⠀⠀⠀ // ⠀⢁⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠠⠀⣰⡿⠀⠀⠀⠀⠀⠀⠉⠓⠦⣤⡀⠀⠀ // ⠀⠠⡁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠂⠁⢀⣶⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡆⠀⠀ // ⠀⠀⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣆⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣸⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠀ // ⠀⠀⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡟⢷⣦⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⡴⠛⢹⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀ // ⠀⢀⣿⡆⠈⠀⣠⡒⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⡿⡅⠀⠈⠉⠛⠷⠶⠦⠤⠴⠶⠶⠟⠋⠁⠀⠀⠻⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⢸⡟⢿⣄⠀⠿⣧⡼⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⠟⠚⠁⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⢸⠇⠀⠙⣦⣀⠁⠂⠀⠉⠀⠀⠀⠀⠀⠀⠀⠀⣀⣴⠟⠁⠀⠀⠀⠀⠀⢶⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⢹⠀⠀⠀⡀⠙⠷⢦⣤⡶⢤⣄⣀⣀⣠⣤⠴⢿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠰⠀⠀⠐⠀⠀⠀⢰⣾⣿⣿⡏⠉⠉⠁⠀⠀⠀⠉⠳⢦⣀⡀⠀⠀⠀⠀⠀⠀⠛⢦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠘⠀⠀⠈⠀⠀⠁⡘⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⢩⡗⠀⠀⠀⠀⠀⠀⠀⠀⠙⠶⣤⡄⡠⠄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠠⠀⠀⡁⢰⣿⣿⣿⡇⠀⠀⠀⢀⣀⣤⣤⣤⣤⣾⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣷⣆⠠⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣧⠴⠶⠛⠉⠉⠀⠀⠀⠀⠀⠀⠀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠹⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠁⠀⠐⠈⠀⢘⣾⡿⠛⠁⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠠⠀⠈⠀⠄⠡⢀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⢀⣠⠴⠋⣈⣥⠴⠂⠀⠈⠀⠀⠀⠀⠀⠁⠀⠀⠀⢀⠀⠁⡐⠀⠀⠢⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⢀⡰⠶⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠀⠀⠀⠀⢈⠀⠀⠄⠀⠀⠈⢷⣤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠾⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠠⠀⠂⠈⠄⠀⠀⠉⠳⣦⣀⠀⠂⠀⠄⡀⠀⠀⠀⠐⠠⣾⠏⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠠⠁⠐⠀⠁⡈⠄⢁⠀⡀⠀⠙⠳⢶⣤⣀⡤⣈⠄⣡⣦⡿⢿⡄⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠆⠀⠀⠀⠀⠀⠀⠀⠄⠂⠠⠁⠀⠠⠀⠂⠀⠐⡀⠄⠀⠈⢉⢡⣤⣿⠟⠁⠀⠘⣧⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠏⠀⠀⠀⠀⠀⡀⠈⠠⠀⠂⠀⠐⠈⠀⡐⠀⠁⠠⢀⠂⢉⣠⡶⠟⠉⠀⠀⠀⠀⠀⠸⣆⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠏⠀⠀⠀⠀⠀⠀⠀⠀⢁⠠⠀⠈⠠⠀⠄⠀⠠⠈⠄⠀⣤⡾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣧⠀⠀⠁⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠋⠀⠀⠀⠀⠀⠀⠂⠀⡁⠀⠄⠐⠀⠄⠀⠐⠈⠀⢀⣠⡾⠋⢷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢷⡄⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡾⠁⠀⠀⠀⠀⠀⠄⠂⠀⠁⠀⠐⠀⠈⠀⢀⣀⣤⣴⠿⠛⠉⠀⠀⢈⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣦⡀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣾⡤⠠⠤⠤⠦⠔⠦⠒⠶⠐⠦⠴⢶⣶⣷⣿⣿⣟⣃⠀⠀⠀⠀⠂⠀⠈⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣆⠀⠀⠀⠀ // ⢀⣀⡀⣀⣤⠄⠀⠂⠁⠀⠀⠂⠀⠀⡀⠀⠄⠀⠀⠀⣠⣴⣶⣶⣟⣋⣉⣀⣀⣀⣈⣙⣷⣤⣀⡀⠀⠠⣿⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣈⣳⣦⡀⠀ // ⠉⣁⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣤⠶⠛⠋⠉⠈⠁⠁⠈⠁⠉⠈⠉⡉⠉⠉⠉⠉⠻⣤⣤⠀⣸⣇⠉⠈⠁⠉⠈⠁⠉⠈⠁⠉⠈⠉⠁⠉⠈⠁⠀⠙⢋
// 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); }
// 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); } } } }
// 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); }
// 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); }
// 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; } }
{ "optimizer": { "enabled": true, "runs": 1000000 }, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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"}]
Contract Creation Code
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
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.