#0 becoming a noob

        ||                                          || 
        ||          ||              ||    ||               ||      
  ||   ||          ||                         ||    ||    ||      ||    ||    ||    ||
  ||   ||    ||          ||          ||          ||    ||      ||    ||          ||
  ||   ||    ||    ||    ||    ||    ||    ||                  ||    ||    ||    ||
  ||   ||                                                                              ||
  ||                                                                                   
  ||                                                                              
  ||                                       
  ||               ||    ||          ||    ||    ||    ||      ||    ||    ||          ||
  ||   ||    ||    ||    ||    ||    ||    ||          ||    ||      ||    ||    ||    ||
  ||   ||    ||    || a  || series   || of || zines    ||    ||    ||      ||    ||    ||
  ||   ||    ||    ||    ||    ||    ||    ||    ||    ||    ||      ||    ||          ||
  || inputs  ||     <--      ||      <--   ||       <--    ||      <--     ||  inputs  ||
  ||         ||   hardwares  ||       OS   ||  softwares ||    users ||      ||
  || outputs ||      -->     ||       -->  ||    -->     ||       -->  ||  outputs ||  ||
  ||   ||    ||    ||    ||    ||    ||    ||    ||    ||    ||      ||
  ||   ||    ||     a gateway for creatives to their hardware and terminal         ||  ||

Welcome !

Becoming A Noob is a project that seeks to bring creative people closer to technology. Their day-to-day use, mainly driven by a need to communicate about their work, is monopolised by complex softwares (such as the Adobe suite). There is value in regaining a degree of freedom through simpler, more accessible digital creative tools.
Fuelled by research into the gap between software and hardware, Becoming A Noob offers a collection of web-to-print zines as a methodology for understanding the machine and using the terminal for creative purposes.

A noob, shortened from “newbie”, is a slang term for an inexperienced player in an online game. Becoming A Noob is a gateway for creative people to technology, to overcome the perception that autonomous digital practices are exclusively reserved to coders and engineers.

=> check THE WORKSHOP DOCUMENTATION inside!

#1 Challenging the norm of over-dimensioned working software

Heavy and complex softwares

Creative practices are heavily impacted by the choice of tools. The Adobe suite, in particular, is considered to be THE standard for professional integration in all areas of design and visual creation. Adobe is expected to have more than 32 million subscribers by 2025, not counting all the unofficial users of pirated versions. A thorough knowledge of the Adobe suite is therefore considered essential.
However, as well as being a service to be hired and not a tool to be bought, Adobe, like most creative software, requires regular updates. These updates expand the software, but without really optimising it. As a result, it becomes increasingly heavy. They require ever more powerful hardware.

The impact of hardwares' obscolescence

70% of digital emissions come from the production of devices. The average life of a device can be 10 to 20 years. Yet we only use them between 3 and 5 years. In fact, pushed by the obsolescence of machines in the face of ever heavier software, we are left with no choice but to change hardware to keep up with the rapid pace of software development.

-> check the zine "#1 hardware"

What makes these tools so successful is their almost infinite range of creative features. However, for the majority of designers, the use of complex properties remains exceptional. And is not part of everyday use. So why should we continue to require over-dimensioned software on all our personal machines?

Are there more sober alternatives available? By resizing our tools to make our equipment last longer, lighten our minds and regain control over our work tools?

THE WORKSHOP DOCUMENTATION


who?

This extra documentation is meant for former participants who feels like hosting a similar workshop in their community. All advices, tips and feedbacks gathered from the testing period are given here. This documentation does not need to be followed as so, it must be seen as a support.
Every files needed can be found in the workshop section on the website.

where?

An art and design school can be an ideal place to make it happen. Especially among first years. Nowadays, every creatives work with a computer, even if it is only for archiving and communicating. Challenging the standartised tools that are tought in the schools can be beneficial, to let them realise the freedom they have in the digital tool they use.
It can also works very well within an Alumni Community, or creatives collectives.

notes

BEFORE THE WORKSHOP


Communication

As mentionned previously, the entirety of the needed documents are available to be donwloaded on te website. Although if you manage to make your own, adapted to the community you'll be working with, it can be better! The poster has space left for hand-written practical informations : date, time, location.

Facilitation

MacOS VS Windows /!\ important
The methodologies varies a lot from Mac than Windows, and the steps have the tendency to be much easier and faster for Mac. Installing packages on Windows is not as linear. It involves often to install external packages and be very careful about the environment path.
If you don't know how to work on one of the OS, feel free to limit the workshop to just one of them. It can be frustrating for participants to be here without eing able to work, if the facilitator can't help on a step.

FacilitatorS ?
The packages installation can be quite laborious for the new noobs, and this step can require a lot of 1-to-1 help. If there is a possibility to have two skilled facilitator it can help. 1 for 10 participants can be a maximum.

Collaboration
As the workshop is here to push a collective learning, the space and table set-up might invite to collaboration among participants. Shared tables by people with similar OS can help.

material

  • 1 big screen or projector
  • 1 table and chairs for everyone
  • A maximum of the different zines printed
  • A printer
  • Paper
  • A usb key

poster in DAE, june 2025
Conviviality

This workshop has to be convivial moment, which is before everything to have fun! Humors, memes are more than welcomed in the presentation. Everyone is here to take these nerds tools a bit less seriously. It might be better to frame it to an 1h30 maximum, for the content to be digested properly. The last exercices are very free explorations and can give space for different work rythms.

DURING THE WORKSHOP


Welcoming of participants

Let's gather around the table and take the unoffocial time to hear about everyone's experience with digital tools, programming languages and terminal. They can all get one focus zine and already connect to the website.

Introduction presentation

Connect your computer to the big screen and split it between the presentation, a terminal window and the website. A version of a presentation is available online. The goal is demysthify the terminal, by explaining its role and position in the hardware and why it can be relevant to know how to use it. The use of memes and bit of humor always help!

Navigation

The basis of any work in the terminal is knowing where you are in your files and how to navigate. The treasure hunt can be downloaded online, following zine#3 instructions.

Packages installation

/!\ this is the hardest part because this requires a lot of 1 to 1 help for participants. The downloading speed depends a lot from the power of their personal hardware, which create different rythm of works. Especially on windows, it can be often requires to leave the terminal and download directly packages from internet!

Playground

Once the packages are installed, time to play around with them! Here, the zines are quite helpful to leave autonomy to participants to go to their own rythm.

AFTER THE WORKSHOP


Collect feedbacks

At the end of the workshop, it is important to gather feelings and feebacks from the participants in order to improve the facilitation and the workshop itself. A version of a survey is available online.
- "What did you learn? What will you continue doing?"
- "What do you think of the workshop structure?"
- "What do you think of the zines?

Archiving

In order for the participants to give back to the workshop, they are asked to extract 2 of their experimentations outputs and print them. They can be colleted on a USB key (format detailled at the end of #3 and #4).

The archive collection will be expanded throught time and embody the hybridity of physical and digital work that the workshop is based on.

archive table to fill, available online
Opening the noob network

As this project is continously ongoing, fed by participants and facilitators, it is open to modification. The repository of the source code is available here : https://github.com/anouksbt/becoming-noob.
Workshops can be faciliated by anyone who followed one and feel the capacities to do so. Open the invitation to the participants to expand the network of Noobies!

#2 Getting to know the computer

The computer as an electronic machine

However, as we seek to re-appropriate our tools, it is important to look at the inner workings of the computer, which are often deliberately concealed. Behind the polished interface of the latest Windows or MacOS, the same almost mechanical system is at work. Each user input is translated several times until it becomes machine language (or binary language: 0001001). The device's electronic components are then activated (CPU, motherhead, etc) to send us the desired output in the other direction! There's nothing magical about this, and it's still the same binary language already used on the first computers!

-> check "#2 tranOSlation"
The role of interfaces

There is nothing surprising about the public's perception of an immaterial and ‘magical’ digital world. The internal activity of our machines, such as these repeated translations, are not visible and our interfaces are careful not to reveal them to us. Interfaces are now designed to be part of the digital black box concept.
The concept of the black box means representing a system without considering its inner workings. A black box can therefore only be understood and interpreted in terms of incoming and outgoing interactions. The internal workings of a black box cannot be known. The software mentioned above, as much as the latest Mac or iPhone, illustrate this concept well. Their surface or interface is designed for a specific use, but does not allow access to their mechanism.

CLI vs GUI

The arrival of AI has accentuated this effect, by once again making us abandon our ability to talk to the machine. It now knows our own (LLM algorithms). This process began with the democratisation of GUI (Graphical User Interface) on commercial computers and the abandonment of CLI (command-line interface). CLI, represented today only by the terminal, is more demanding on the user. You need to know the commands to perform each action. GUIs, on the other hand, present possibilities graphically and require a mouse click to be activated. Despite the many advantages of making digital technology more accessible, this development has made us a little more passive towards interfaces.

The terminal as a gateway

The terminal, a vestige of the CLI, is still installed on all computers. Little or never used, it is often associated with the inaccessible figure of the coder or hacker. The CLI gives the impression of requiring a high level of computer literacy. However, certain tasks are very accessible, and once the logic is understood, it is possible to use it as an important tool in your creative practice.

-> check "#3 the terminal"

#3 Towards a creative, sustainable digital practice

Decentralising our pratices

The solution does not only lay in radicalism by choosing another new tool, but considering them as a diverse collection, that can be activated depending on the outcome. By getting a better understanding of the machine, and opening the field of its possibilities, it is easier to make conscious choices. Because at the end, the issue is to choose the right working tool by taking into account: the personal and project's needs, the capabilities of the computer and the tool's ecological impact. This enhances creativity by challenging us to stay active towards the interfaces. A lot of freedom and fun to gain !

Conviviality

Ivan Illitch describes a convivial society as ‘a society that gives men the possibility of exercising the most autonomous and creative action, with the help of tools that are less controllable by others." The majority of the content for this collection has been taken from YouTube and web tutorials, responses and discussions on forums. It all comes from user's experiences. By moving away from standard models, creatives need to get into the communs and help each other. A beautiful example can be seen in the Free softwares community, wher the tools are created by the users for the users, collectively.

Designing a workshop

That's why all these tools need to be activated and used around a workshop. The workshop must be sufficiently documented to be passed on and reactivated elsewhere in another environment. Digital autonomy must be gained by exchanging and sharing experience.

#1 in the hardware

        ||                                          || 
        ||          ||              ||    ||               ||      
  ||   ||          ||                         ||    ||    ||      ||    ||    ||    ||
  ||   ||    ||          ||          ||          ||    ||      ||    ||          ||
  ||   ||    ||    ||    ||    ||    ||    ||                  ||    ||    ||    ||
  ||   ||                                                                              ||
  ||                                                                                   
  ||                                                                              
  ||                                       
  ||               ||    ||          ||    ||    ||    ||      ||    ||    ||          ||
  ||   ||    ||    ||    ||    ||    ||    ||          ||    ||      ||    ||    ||    ||
  ||   ||    ||    || a  || series   || of || zines    ||    ||    ||      ||    ||    ||
  ||   ||    ||    ||    ||    ||    ||    ||    ||    ||    ||      ||    ||          ||
  || inputs  ||     <--      ||      <--   ||       <--    ||      <--     ||  inputs  ||
  ||         ||   hardwares  ||       OS   ||  softwares ||    users ||      ||
  || outputs ||      -->     ||       -->  ||    -->     ||       -->  ||  outputs ||  ||
  ||   ||    ||    ||    ||    ||    ||    ||    ||    ||    ||      ||
  ||   ||    ||     a gateway for creatives to their hardware and terminal         ||  ||

A DIY hardware, built at home from a raspberry pi, and old tablet and a second-hand keyboard

Welcome !

Hardwares become a subject every 5 years, when the previous one collapses from planned obsolescence. Their qualities are checked when purchased, but forgotten through time, shadowed by the shininess of softwares, which absorb most of our digital attention and care. In fact, whenever a software is updated, leaving our computer outdated : we would rather change our device than the software (our tool).
But on the contrary to softwares, hardwares embrace the reality of dirtiness, break-ability and have a tangible environmental impact. It means they are much more understandable, as existing in the physical realm. They can be opened and dissected to reveal their inner mechanism. Looking at hardwares from a low-tech approach, we have a lot to learn from them.

This zine #1 has been built from the hybridity of a tiny DIY computer and my 12 years old Macbook, trying to take advantage of both. It explains how to build the a diy computer and the value of looking closer to these hardwares.

#1 hardware components

Basics first. Let's start by diving in a basic understanding of which components make our machine works.

Hardware refers, in fact to all the physical components of a computer system which collectively work to process input and deliver output based on user instructions.

Central Processing Unit (CPU) : often called the "brain" of the computer, the CPU processes instructions from programs and performs calculations. It handles all the logic and control tasks.

Motherboard : The main circuit board that connects all components of the computer together, allowing communication between the CPU, memory, storage devices, and peripherals.

Memory (RAM - Random Access Memory) : Temporary storage that holds data and instructions that the CPU needs while performing tasks. It is fast but volatile (loses its contents when the computer is turned off).
-> important to check for the speed (8 - 32 Go)

Storage (HDD - Hard Disk Drive / SSD - Solid State Drive) : Permanent storage for the computer’s data, programs, and operating system. SSDs are faster and more reliable than traditional HDDs.

Power Supply Unit (PSU) : Converts electrical power from an outlet into usable power for the computer’s internal components.

Graphics Processing Unit (GPU) : Specialized processor designed to accelerate graphics rendering. Critical for gaming, video editing, and tasks involving visual data processing.

Cooling Systems (Fans) : Manage the temperature of critical components to prevent overheating and ensure efficient operation.

Input Devices : Hardware used to send data to a computer (e.g., keyboard, mouse, scanner, microphone).

Output Devices : Hardware used to receive data from a computer (e.g., monitor, printer, speakers).

Networking Components : Devices that allow the computer to connect to a network or the internet (network cards, Wi-Fi adapters).

cut view on a laptop basic components, from labdoo.org
in practice

#2 getting to know your computer

All these components are a part of your computers but they probably vary from others in capacities, power and ressources. It might be interesting to know what you are working with, especilly when downloading softwares or libraries. It enables you to knpw what is possible and where are the limits.
How to know more about your hardware ?

On Mac

Apple menu > System Settings > click General (you might need to scrool down)

On Windows

Settings > System > click on About (you might need to scrool down)

                              ^^^^^^^^^^^^^^^^^^^^     
                ^^^^^^^^^^^^^^^                  ^     
                ^                          ^^^^^^^     
                ^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^    ^^     
                ^ ^                             ^^     
                ^ ^                             ^^     
                ^ ^                             ^^     
                ^ ^                            ^^^     
                ^ ^                            ^       
                ^ ^                            ^ ^     
                ^^                             ^ ^     
                ^^                            ^^ ^     
                ^^^^^^^^^^^^^^^^^^^^^^     ^^^^  ^     
                ^^^^^^^^^^^^^^^^^     ^^^^^^     ^     
            ^^ ^^   ^     ^^     ^^^ ^^^^^^^^    ^     
        ^^^     ^^^^  ^^^    ^^^     ^^^    ^^^^^^    
      ^^^     ^^   ^^^^  ^^^^      ^^^    ^^^    ^    
    ^^^      ^^     ^             ^^^     ^^      ^^   
  ^^^                          ^^^                  ^  
  ^ ^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^             ^^
                                        ^^^^^^^^^^^^^^
          
to fill in

your personal computer ID card

Name : .................................................
Storage : ........................................................................... occupied : ...................
RAM : ........................................................................... occupied : ...................
Processor : .................................................
System : .................................................
Graphic Card : .................................................

#3 a survival guide for old hardwares

Devices' impacts on the Planet

The digital sector represents 3.4% of global greenhouse gas emissions in 2025, 2 times Canada's carbon footprint. And 70-80% of the emissions come from the fabrication of the devices (tablets, computers, phone, etc). The last percentages are 16% from data centers (data storage for internet, personal use, ai, etc), and 5% from networks (connection, transport, infrastructures, etc).*

Altough a hardware can last over 20years, an average lifespan of a computer is 3 to 5 years. And this is mainly due to the evolution of softwares, which becomes heavier after each updates. They require stronger and more powerful hardwares. Users are left with no choices than adapting their machine, to the softwares, which has a massive impact.

So the most sustainable move, we can integrate in our practice is the make last long our hardwares.

in practice

some tips to make it last

The two things to fight against, to use it to its maximum, is the tiredness of the machine and the obscolescence of the softwares.

To care for the machine, here a few tips:

  • refresh your stockage space by moving your heavy files on a hard disk regularly
  • check on your RAM, by avoiding to run too many heavy actions at the same time
  • check your activity monitor, to see how the CPU is going
  • if some pieces seems to get old, check on the ifixit website, an infinite ressource of tutorials for fixing any hardware !

To avoid succumbing to software obsolescence:

  • for every softwares, it is always possible to find its oldest version online
  • do not rely on one tool, be flexible to change from an alternative software
  • avoid commercial softwares, or hack the oldest versions
  • learn how to use your terminal for basic actions, reduce the weight on the machine

#4 build a diy hardware

A few years ago, Corentin de Chatelperron from the Low-tech Lab, posted a tutorial of a so-called "low-tech" computer. Reduced to a little raspberry-pi well-connected to second-hand screen and keyboard, the home-built device was created for less than 50 euros.
The "low-tech" designation has been quite argued in his community. The raspberry-pi is a powerful high-tech piece as it holds more power in 10cm2 than the first giant computers of the 80's. But if the low-tech is approached as a systemic spectrum, in fact this computer can be called so.

Why building such an hardware can be usefull, and then how can it be used for ?

Playing with components

Going through the process of finding the pieces and assemble them,is already a big step in gaining knwoledge over technology. We already get freedom from the device. In fact, each pieces is known for its function, and it has been personnaly sourced. And the pi assemblage does not fixed items in place, in any box. All of this makes the components easily replaceable if something goes wrong.

The pi is cheap (~20e) because it is a computer reduced to its minimum. No fan, no battery. It has to be plugged-in to work, or an exterior battery can be of course added. We have a very minimalist hardware.

Already-owned pieces can be used in its building, which reduce the amount of new items. It reinforces the flexibility of the tool, which is built only for a specific use. I used my grand-father's old tablet, which is still used as it, when it does not become a screen, or my personal sd card reader (normally used for my camera) to connect the keyboard.

Gaining awareness on GUI power and speed

The computers has a very little power and capacities. It runs on a 64GB sd card. On it, I can’t watch a movie, or scroll through a HD pictures gallery. On the pi, I can choose between a Desktop Graphic Interface (VNC) or to stick to the CLI (command-line interface) in the terminal. The speed difference of the computer using these two is striking. The graphic interface asks a bit too much to the pi, as the terminal gives smooth and fast results. Great reminder on how much power these interfaces require and that are not always necessary but a matter of habits ;).

and so ?

This experimentation can be taken as great step in understanding better the hardware, as a physical object. Although its uses can seem a bit limiting, it can still be a nice challenge to start using it for some tasks !

Map of the diy hardware and its components

How to connect all the elements to the raspberry-pi ?

  • PWR : micro-usb cable to a plug (for electricity)
  • USB : micro-usb cable to keyboard and mouse
  • Card reader : the sd card gets inside
  • Micro-HDMI : micro-hdmi cable connects to the videocapture adaptator which connects to the screen (the tablet)
  • ON THE SCREEN DEVICE : install the "nExt Camera" app to use the tablet as a display.

Zoom on the pi connections

sources

  • Low-tech computer, by the Low-tech Lab , on wiki, 2023
  • How to use a tablet as a portable raspberry pi screen , by Les Pounde, 2021
  • What is hardware, by Tibor Moes , on the software lab, 2023
  • Impacts environnementaux du numerique dans le monde, third issue, by greenIT, 2025
  • A basic guide to identifying the major components in a desktop system, on the DELL website
  • Computer hardware, on the Geeksforgeeks website, 2025
  • Computer hardware, the wikipedia page

becomingnoob.com

#2 tran(OS)lations

      ||                                          || 
      ||          ||              ||    ||               ||      
||   ||          ||                         ||    ||    ||      ||    ||    ||    ||
||   ||    ||          ||          ||          ||    ||      ||    ||          ||
||   ||    ||    ||    ||    ||    ||    ||                  ||    ||    ||    ||
||   ||                                                                              ||
||                                                                                   
||                                                                              
||                                       
||               ||    ||          ||    ||    ||    ||      ||    ||    ||          ||
||   ||    ||    ||    ||    ||    ||    ||          ||    ||      ||    ||    ||    ||
||   ||    ||    || a  || series   || of || zines    ||    ||    ||      ||    ||    ||
||   ||    ||    ||    ||    ||    ||    ||    ||    ||    ||      ||    ||          ||
|| inputs  ||     <--      ||      <--   ||       <--    ||      <--     ||  inputs  ||
||         ||   hardwares  ||       OS   ||  softwares ||    users ||      ||
|| outputs ||      -->     ||       -->  ||    -->     ||       -->  ||  outputs ||  ||
||   ||    ||    ||    ||    ||    ||    ||    ||    ||    ||      ||
||   ||    ||     a gateway for creatives to their hardware and terminal         ||  ||

programming languages' role explained by Wacky Science, in the "Computer Science" youtube video

Welcome !

In this quest of tracing back the mechanical process of a graphic design practice, we leave the hardwares behind to focus on the OS (Operating System). The core of the computer.
It is quite fascinating to realise that the OS holds the transition between software and hardware by its capacities to translate multiple computer languages. In fact, to be able to speak as humans to the machine, our command has to go through various layers of translations back and forth in seconds.
This second zine is an introduction to understand the back-end of the OS and the languages involved.

#1 the Operating System

The Operating System (OS) serves as software that oversees a computer’s resources. It bridges the gap between hardwares and softwares / users in a computer. The most common ones are Linux, Windows and Mac. The OS works like the brain of the computer. It takes inputs from the users, and then coordinates the hardwares to achieve the actions. The OS code is stored on the hard-disk, in a binary form. Only Linux code is open-source.

Virtual Terminal : A text-based interface which holds a space to welcome commands and pass them on to the shell. It takes input and display outputs. Unlike a graphical interface, the terminal provides direct access to the command line where users can perform tasks such as installing software, navigating directories, and editing files. It’s a powerful tool for executing commands, managing files, and controlling system processes.

Shell : It is the outer-layer of the OS. It is the mediator between the end-user and the kernel. There are various shell the user can choose from like zsh, bash, Seashell and many more. It parses the command written in the terminal (interface), and check if they are correct or not. If not it sends an error message back. If correct, it interprets the command and translate it to actions that the OS can execute. The shell itself does not convert source code to machine code. Instead, it often invokes interpreters or compilers that perform this task.

Interpreter : Invoked by the shell, the computer program directly executes the instructions written in a programming or scripting language. The Interpreter transforms high level language code into assembly language or machine language. An interpreter translates into machine code the lines and executes them one by one directly.

A compiler, does the same, as converting a high-level language input into a low-level language action. But the difference is that the compiler will first translate all the lines and then execute them.

System calls : The interaction between the interpreter and the kernel occurs through system call (or API, Application Programming Interface). These calls allow the interpreter to request services from the kernel. For example, when a script needs to read a file or create a new process, it makes API calls that the kernel understands. These calls are typically written in C or another low-level language that interfaces directly with the kernel. System calls are the only entry points into the kernel system.

Kernel : The inner-layer of the OS, or its core part. The kernel manages the system’s resources and facilitates communication between hardware and software components. t It is responsible to execute the command, by invoking the right OS libraries or devices drivers.

how is a command executed ?

  1. User input : the user types in the command in the terminal interface. Press enter.
  2. Shell parsing : The shell parses the command, check if it is correct and if it can be directly executed or passed to an interpreter
  3. Interpreter Invocation
  4. System calls : The interpreter executes the code, which may involve making system calls to the kernel to perform tasks.
  5. Kernel execution : The kernel processes these system calls, interacts with hardware, and manages system resources accordingly.
  6. Return values : The kernel sends results back to the interpreter, which may then output results to the shell or take further actions.

SHELL

KERNEL

system
calls

interpreter

#2 types of languages

A programming language is a way for users and developers to give instructions to the computer. It is based on a set of rules, syntax and words. The instructions, written in the programming language can make the computer perform tasks like changing an image size, scrapping content from a webpage, etc.

High-level language (HLL) : are human-readable languages based on English syntaxes. They simplify coding by hiding complex hardwares details. Developers can focus on logic and functionnality. It becomes easier to develop and debug complex code. HLL languages examples : Javascript, C++, Python, etc.

Assembly language is a low-level programming language that helps to communicate directly with computer hardware. It uses mnemonics✶ to represent the operations that a processor has to do. Which is an intermediate language between high-level languages like C++ and the binary language. It uses hexadecimal and binary values, and it is readable by humans. The computer requires an assembler to translate the Assembly language to machine level language.

Machine language is a low-level programming language that is understood by computers. Machine language is made up of binary bits 0 and 1. Machine language is also known as machine codes or object code. As machine language consists of only 0 and 1, it is difficult to understand its raw form. Machine language cannot be understood by humans. The CPU processes this machine code as input. It is the only language the computer hardware can understand.✶✶

✶The last paragraph has been translated into binary code, on the right.

01001101 01100001 01100011 01101000 01101001 01101110 01100101 00100000 01101100 01100001 01101110 01100111 01110101 01100001 01100111 01100101 00100000 01101001 01110011 00100000 01100001 00100000 01101100 01101111 01110111 00101101 01101100 01100101 01110110 01100101 01101100 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01101101 01101001 01101110 01100111 00100000 01101100 01100001 01101110 01100111 01110101 01100001 01100111 01100101 00100000 01110100 01101000 01100001 01110100 00100000 01101001 01110011 00100000 01110101 01101110 01100100 01100101 01110010 01110011 01110100 01101111 01101111 01100100 00100000 01100010 01111001 00100000 01100011 01101111 01101101 01110000 01110101 01110100 01100101 01110010 01110011 00101110 Machine 00100000 01101100 01100001 01101110 01100111 01110101 01100001 01100111 01100101 00100000 01101001 01110011 00100000 01101101 01100001 01100100 01100101 00100000 01110101 01110000 00100000 01101111 01100110 00100000 01100010 01101001 01101110 01100001 01110010 01111001 00100000 01100010 01101001 01110100 01110011 00100000 00110000 00100000 01100001 01101110 01100100 00100000 00110001 00101110 00100000 01001101 01100001 01100011 01101000 01101001 01101110 01100101 00100000 01101100 01100001 01101110 01100111 01110101 01100001 01100111 01100101 00100000 01101001 01110011 00100000 01100001 01101100 01110011 01101111 00100000 01101011 01101110 01101111 01110111 01101110 00100000 01100001 01110011 00100000 01101101 01100001 01100011 01101000 01101001 01101110 01100101 00100000 01100011 01101111 01100100 01100101 01110011 00100000 01101111 01110010 00100000 01101111 01100010 01101010 01100101 01100011 01110100 00100000 01100011 01101111 01100100 01100101 00101110 00100000 01000001 01110011 00100000 01101101 01100001 01100011 01101000 01101001 01101110 01100101 00100000 01101100 01100001 01101110 01100111 01110101 01100001 01100111 01100101 00100000 01100011 01101111 01101110 01110011 01101001 01110011 01110100 01110011 00100000 01101111 01100110 00100000 01101111 01101110 01101100 01111001 00100000 00110000 00100000 01100001 01101110 01100100 00100000 00110001 00101100 00100000 01101001 01110100 00100000 01101001 01110011 00100000 01100100 01101001 01100110 01100110 01101001 01100011 01110101 01101100 01110100 00100000 01110100 01101111 00100000 01110101 01101110 01100100 01100101 01110010 01110011 01110100 01100001 01101110 01100100 00100000 01101001 01110100 01110011 00100000 01110010 01100001 01110111 00100000 01100110 01101111 01110010 01101101 00101110 00100000 01001101 01100001 01100011 01101000 01101001 01101110 01100101 00100000 01101100 01100001 01101110 01100111 01110101 01100001 01100111 01100101 00100000 01100011 01100001 01101110 01101110 01101111 01110100 00100000 01100010 01100101 00100000 01110101 01101110 01100100 01100101 01110010 01110011 01110100 01101111 01101111 01100100 00100000 01100010 01111001 00100000 01101000 01110101 01101101 01100001 01101110 01110011 00101110 00100000 01010100 01101000 01100101 00100000 01000011 01010000 01010101 00100000 01110000 01110010 01101111 01100011 01100101 01110011 01110011 01100101 01110011 00100000 01110100 01101000 01101001 01110011 00100000 01101101 01100001 01100011 01101000 01101001 01101110 01100101 00100000 01100011 01101111 01100100 01100101 00100000 01100001 01110011 00100000 01101001 01101110 01110000 01110101 01110100 00101110 00100000 01001001 01110100 00100000 01101001 01110011 00100000 01110100 01101000 01100101 00100000 01101111 01101110 01101100 01111001 language 00100000 01110100 01101000 01100101 00100000 01100011 01101111 01101101 01110000 01110101 01110100 01100101 01110010 00100000 01101000 01100001 01110010 01100100 01110111 01100001 01110010 01100101 00100000 01100011 01100001 01101110 00100000 01110101 01101110 01100100 01100101 01110010 01110011 01110100 01100001 01101110 01100100 00101110

From Python : print("This a converter test.
From python to assembly language.")

To Assembly Language :

      section .data
      message db "This a converter test. 
From python to assembly language.", 0 section .text global _start _start: ; write the message to stdout mov rax, 1 ; syscall: write mov rdi, 1 ; file descriptor: stdout mov rsi, message ; pointer to message mov rdx, 73 ; message length syscall ; exit the program mov rax, 60 ; syscall: exit xor rdi, rdi ; exit code 0 syscall

✶ mnemonics

Mnemonics are memory aids that help individuals remember information more easily. In computer language, it often involves associating complex information with simpler, more memorable constructs, such as phrases, acronyms, rhymes, or visual imagery. For example :

add = addition

j = jump

loads = lui

notes

sources

  • Basic Computer Hardware - Learn the Essentials, by Robert Lanni, on the Lincoln Tech Blog, 2024
  • How the shell works internally when entering a command, by Samuel A. Florez, on the Medium website, 2019
  • How Code Works: A Beginner’s Guide to the Journey from High-Level Languages to Machine Code by Rishi, on the Medium website, 2024
  • What is machine language ? on the Geeksforgeeks website, 2023
  • What is assembly language ? on the Geeksforgeeks website, 2023
  • Introduction to compilers, on the Geeksforgeeks website, 2025
  • Operating systems, on the wikipedia website
  • Computer hardware, on the wikipedia website
  • Code converter Python to Assembly Language, on the Code Convert.ai website
  • Text to Binary Converter, on the Rapidtables.com website
  • Organization of Computer Systems:§ 2: ISA, Machine Language, and Number Systems , by M.S Schmalz, on the Cise.ufl website
  • Question on the relation between the shell and the kernel,, answered by the bot assistant, on Quora website, 2024
  • Computer science explained in 17 minutes, by Wacky Science, on its youtube channel, 2024

becomingnoob.com

#3 the terminal

images-editing

      ||                                          || 
      ||          ||              ||    ||               ||      
||   ||          ||                         ||    ||    ||      ||    ||    ||    ||
||   ||    ||          ||          ||          ||    ||      ||    ||          ||
||   ||    ||    ||    ||    ||    ||    ||                  ||    ||    ||    ||
||   ||                                                                              ||
||                                                                                   
||                                                                              
||                                       
||               ||    ||          ||    ||    ||    ||        
||   ||    ||    ||    ||    ||    ||    ||          ||    ||     
||   ||    ||    || a  || series   || of || zines    ||    ||   
||   ||    ||    ||    ||    ||    ||    ||    ||    ||    ||      ||    ||          ||
|| inputs  ||     <--      ||      <--   ||       <--    ||      <--     ||  inputs  ||
||         ||   hardwares  ||       OS   ||  softwares ||    users ||      ||
|| outputs ||      -->     ||       -->  ||    -->     ||       -->  ||  outputs ||  ||
||   ||    ||    ||    ||    ||    ||    ||    ||    ||    ||      ||
||   ||    ||  the graphic designer practice deconstructed to its rawer shape    ||  ||
        
the terminal interface of the diy hardware, with 2 windows opened
++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++**+**++*+++++++++++**++++**++**++++***+++++++++++++++++++++++++++++++++++++++++++++++++++
+****++****+++***++++****++++++++++++++++++++++++++++++++++++++++++************************************+****************++++++++++++++++++++++++++++++++++++++++++++++++++
@%%%%%%%%%%%@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@%%%%@@%%%%@@@%%%%%@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-=---------:-:::::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 .                                                                                                                                                                        
....  .......  ..  ...  ...... .... .... ...  .......  .  ..... ..  ... .:... .  ... .... .  .. ... ......  .   :...                                                      
 . .        .        .  .   .       . ..   .           .                  ..  .        .         .   ...                                                                  
.....    ..  .. ...  ....  ......   . .   . ....    .  . ...  . .  .....  .     .   .    ...   .. ..... ..  . ..  ...                                                     
 .....  ......... .  .  ... ....  .. .  .. . .. ...  . .... ....  ...  .....  .. ...... ..  ..  ..  ....... ..  .                                                         
                                                  .                                                                                                                       
                                                                                                                                                                          
                                                                                                                                                                          
                                                                                                                                                                          
.  ...  .....  .....  .... .......  .  . .....   ....  .......   ...  .....  ..  ... ......  ... . ....  .....                                                            
..  ...     .  .  . ..  .....  ....  ....  .  ..   ...  .. ... .  ...  ....  .   ....  ....  .  ..  ... ..  ..  ..                                                        
...   .     .  .  . ..  .....     .     .         .. .   .......    .  ....  .      .  .  .  .  ..  ..   .   .  ..                                                        
..   .... .........  ..   ...  .... .....  ..  .. . ..    .. . ....  .. ....  .. .   .:.  ... ..   ..  . . ......                                                         
           .....   ..   ..      .. .. . .   .          .  ..  ....  . . ...   .  .. .  ....  . . .  . ..   .     .                                                        
 .        ......   ...  .  .  . .. --..   ...   ....      ..  . ..   .. ... ..   .. .    ..   ..    ....  ..     ..                                                       
                                                                                                                                                                          
 .      .                  .                        .                      .                        .                                                                     
 . . .    . ..   ......  ..   ....  .  .  ....       .. ...  ... ....  ... .  .  ....    ..  ....  ..   ...                                                               
   ..         . ..   ..     ..      .                     .             .    .   .  ..  .       .          .                                                              
----=----=---------------======-==-===========-==-=========--=-===--=====--====--=--======-===--=--===-=--====------------------------------------------------------------
+++++++++**+++++++*++++++**************************************************************************************************************************************++*+*******
#*:::::=+                                                                                                                                                                 
=:     .:                                                                                                                                                                 
            .:::::::.                                                                                                                                                     
                        ..:....  ..... ...  .. ....  .. .                                                                                                                 
                        .......  . ..  ...           .                                                                                                                    
                        ..:...:  .......   ........     ............ ..... .  .... . .. ........   ..... ....  ....... .  .. .                                            
                        .. .. ......:....:. .. ...  ....  .....  ............... .... .. ...                                                                              
                        .. .. .............     ..  . ..  .....  ....:..  ...... ..   .  ..                                                                               
                        .....:: ........  ... ..  . ..    .....  .. . .........  .                                                                                        
            . ........                                                                                                                                                    
            .. .......                                                                                                                                                    
            .::..:...                                                                                                                                                     
                        ..... ..                                                                                                                                          
                        ........                                                                                                                                          
                                   .::.....:  ::..  :.:.::.:..:     ...: .:.  ..::::.:.:.  ...:.:..                                                                       
                                    ...... .   ..    .  ..... .  . .....                                                                                                  
                                    ....... .. .....     ...............                                                                                                  
                        ....:.:::.                                                                                                                                        
                        .....  ..                                                                                                                                         
                        .::..  . ....... ..........  .                                                                                                                    
=======++======*+=--==*****************************************************************************************************************************************=+*=*******
--------=------=------=========================================================================================================================================--=-=======

            
same picture but converted in the terminal in ascii with the command : ascii-image-converter buffer.jpg -H 50

Welcome !

Softwares, when they are text-based, requires to learn their language. Like the virtual terminal, which is the most primary software, as it communicates directly with the shell.
Unlike AIs, which receive prompts in all human languages and then translate them into machine language, the terminal requires its user to have precise knowledge of possible commands. Jean-Louis Frechin, digital designer, says it beautifully : “interfaces must be rough to keep us alert and explicit to be understood”. The terminal interface is demanding. But this quality, added to that of being open-source, gives back its full capabilities to the user.
It is still a step toward DTP click-interactions, but it can offer similar possibilities.
In this #3 issue of the series, we stepped fully in the front-end area. In the following page we will get closer to the intermediary command languages. We will look how the terminal can be completed by other softwares or packages for images editing.

#1 about the virtual terminal

The  terminal is the primary software which gives access to the Operating System of the computer. It is a very direct way to connect to the power and core of the hardware. It takes input, pass them on to the shell, and receives the outputs back to display them on its interface.

It is based on a command-line interface (CLI), which requires from users to know the commands.

As scary as it can look, once its language learned, the terminal becomes the most powerful tool for :

  • managing files,
  • converting documents,
  • controlling system processes, or
  • downloading packages.
in practice

the treasure hunt 。⋆✩˚

To get a first contact with the terminal, we will try to learn the basic navigation commands of the terminal.

  • Go to anouk-sebastien.fr
  • Click on the door to open the window, then click on "workshop" and download the zip folder called "the_treasure_hunt"
  • Place it in your Desktop

Open your terminal window. Type this command before starting :

cd Desktop\the_treasure_hunt

Rules are simple. In one these two building is hidden a potato-computer !! Your goal is to find it by navigating in the folders through your terminal interface. From building, to stairs, to doors, to rooms.

☖ ⇨ ≡ ⇨ ⊓ ⇨ ⊡ ⇨ ?

On your way, you might encounter some hints. Check what is inside to get closer to your goal!

The game commands

cd path/to/directory -> to move forward in the files

cd .. <- to move backwards

ls : to see what is inside a folder

cat "file.txt" : to reveal the inside of a document

start "img.jpg" (windows), open "img.jpg" (macos) : to show the image

-> a more general vocabulary list to start using the terminal by moving through directories and managing files.

- "just-to-start" language

command description options example
cd change directory to the specified path cd /path/to/directory
pwd print working directory : display the current working directory pwd
ls list files of the current directory -a : list all files, including hidden files
-l : long format with detailed informations
-h : list file sizes in a human-readable format
ls (-option)
mkdir create a new directory mkdir directory_name
touch create an empty file /!\ only for Mac ! touch name.format
rm remove files or directory rm name.format
cp copy the file to the specified directory cp name.format path/to/dir
mv move/ rename file or directory mv name.format newname.flmr OR mv name.format path/to/dir
cat display the content of a file cat name.format
head display the first few lines of a file -n : specify the number of lines to display head (-n x) name.format
tail display the last few lines of a file idem tail (-n x) filename.format
find search for files or directory -name : search by name / -type : search by types find /path/to/search name "*.txt"
start display the image in the default application /!\ on macos use "open" instead start "img.jpg"

#2 packages installations

Packages are a collection of code and programs ressources, that can be invoked by a command to execute a specific action. Some are a part of the initial OS and others can be downloaded by the users for specific tasks.They can be installed directly from the terminal or downloaded online.

Packages call packages. It means that each new tool installed often required previous packages, called dependancies, to run properly. We'll look here at the main packages to install, to start.

As you see along this zines, each OS requires a different behavior. The methodology stays the same, but the packages and the name of the commands will change.

We will download :

  1. A general package manager
  2. The python library
  3. ImageMagick : a free and open-source cross-platform software suite for displaying, creating, converting, modifying, and editing images.

/!\ if an error occurs, the terminal gives precious indications about what went wrong and how to fix it !

in practice

for Windows

Chocolatey, the windows package manager :

To install it, open a window terminal shell as an administrator and run :

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString
('https://community.chocolatey.org/install.ps1'))

the command can be copied from chocolatey.org/install


Python, as Pip should already be installed. Verify by :

pip --version


ImageMagick

choco install imagemagick

in practice

for Macos

Homebrew, the macos package manager :

To install it, simply open a terminal window and run :

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

/!\ if an error occurs after that, read what the terminal indicates you to do -> there is often a text to copy / or the computer password to fill in


Python

brew install python

To check the version installed, run :

python3 --version


ImageMagick

brew install imagemagick

#3 images-editing

One of the most complete and efficient tool for images-editing is the package imagemagick. The instructions to install it are in the previous pages.

As a command-line tool, fo each actions executed we need to to know the specific command and its variations. The official website imagemagick.org is a great reference.

in practice

To edit an image, we always need to be in its directory. But how does a command work ?

magick original-image.jpg -command new-image.jpg

magick : calls the package
original-image.jpg : call the file you want to change (sometimes we'll need it in png)
-"command" : type here the name of the command and its variations
new-image.jpg : type in a new image name, to create a new one

To print the image type

2printer.exe -src "2output.jpg" -prn "Canon LBP2900"

action command options
format conversion magick 1.jpg 1.png possible to give a new name to the file
size conversion magick 1.jpg -resize x% 1output.jpg it will resize it to x% of the original image
images transformation
Threshold effect magick 2.jpg -threshold x% 2output.jpg 0% is very light / 100% is very dark
Blur effect magick 3.png -blur ?x? 3output.png 1x1 is the sharpest / 0x8 is the blurriest
Brightness and contrast magick 4.jpg -brightness-contrast "l"x"c" 4output.jpg l is the number you want to increase light with / c idem but for contrast
in pratice

Applied examples

Resizing the image : a usefull for a lightweight web integration

magick -resize 10% potato.png potato-2.png
The image weight went from 1.8mo to 33kb.

Threshold effect : the image has to be converted in .jpg first

magick potato.jpg -threshold 40% potato-4.jpg
The intensity of the threshold is set from 0% (very white) to 100% (very dark).

Brightness and constrast

magick potato.jpg -brightness-contrast 50x20 potato-9.jpg
50 tells the utility to increase the brightness by +50 and 20 is to increase the contrast by 20.

Blur effect

magick potato.png -blur 0x8 potato-3.png
The blur can be set from "-blur 1x1" being the sharpest to "-blur 0x8" the bluriest.

Edges tracing

magick potato.png -negate -edge 1 -negate potato-6.png

Background removing

convert potato-4.jpg -transparent white potato-8.png

and so many more possibilities !

bonus - for mac only

#4 ascii converter

Ascii converter is a command-line tool that converts images into ascii art and prints them out onto the terminal.

It can be downloaded via Homebrew for Mac, or following these instructions for Windows.

Mac

brew install TheZoraiz/ascii-image-converter/ascii-image-converter

Windows

We'll need to download the file online. And then follow the set of instructions here https://github.com/TheZoraiz/ascii-image-converter?tab=readme-ov-file#windows

Ascii technic exists because old computers didn't have enough graphical power to display images, as we can today. Pixels are very heavy, compared to text-characters, which have been chosen as a lightweight alternative. This quality gives them a bit of a revival today : they can be a great help in website eco-conception.

action command options
classic conversion ascii-image-converter image.jpg
setting the height ascii-image-converter image.jg -H "height" set height in character length, width is adapted to ratio
Braille effect ascii-image-converter image.jpg -b or --braille
Dither ascii-image-converter image.jpg -b --dither it helps to make the brialle more visible
Color effect ascii-image-converter image.jpg -C --color-bg
Images saving ascii-image-converter img.png --save-img . the image will be saved under this name "image-name"-ascii-art.png, in the directory
in practice

Applied examples

Setting the height

@@@%@@@@@%+==+**#%%%%%*##*+++=---===-:::. ...:::....  ...:::::::::..............:::::::::::::::::::::::--------------===========..=+====-=++
+++*##%%%%+===++*##%%#++++==-:::-==--:::. ...:::....   . .:::::.::...........::::::::::::::::::::::::::----::---------=========- .====+=-=++
==+++*###%+=====+***#*++***#+==------:::.  ..:::. .::-=+---::::-..................::::::::::::::::::::-:::-=+***+==---=========- :====+=-+++
====++***#+=======*#%%#%@@@%%####*+=-::::. ....:=*%@@@@%%%%*+*%%#**=-:......:::=*#%%%###%%%%#*+=-::::::-+#@@@@@%%#**===========: :+===+==+++
====+++***+==---*%@@@@%%@@@%%%##*+=++=:..  . :+%@@@@@%%############**+=-....-%@@@@@%%%%######**+==-:::*%@@@@%%%###**+=--=======: -+====-=+++
=======++++-:-*#%@@@@@@@@%%#**++++===+===-:.+%@@@@@@%##*+++*#****++===+++--*@@@@@@%######**++==---==:#@@@@@@%%##**++=-:::-=====. -=====-=+++
-------==++:-%%##%@@@@%%%##*+*++===++++*###@@@@@@@@%#**+===+++++=----=++*+%@@@@@@%%##*****++=:::.:=*#@%%@@@@%%##**++=--::::-===..======-=+++
-::::---====#@@@@@@@@@@%####+++*++=+++**+#@@@@@@@%%#*+==---====--:::--++==#%@@%%%##***++++===-:..:-====*##%%%%##****++=--:::==- .======-=+++
----------*@%%@@@@@@%%##**++=======+++++#@@@@@@%%##*+==-----==--::.::---:-+*#####***+++====---:::::-::-=+*#%%%##***+=--::::.:=- .=========++
---------*@@@@@@@%%##***++==------==+===#%%%%%##***+==---::-----:::::--:::=+******+++==------::::::::::-=+*******++=--:::::..-- :=====-===++
---------%@@@#%%%#***+++===-----------:-+*####**+++==----::------------:::-==++++++===----:--:::::::::::-=++*+=+++=--:::::::::: -=====-=====
---------#@%%%###**++===-------------:::-+**+++======-----------------::-::--========------------::...::-==+++====--::::::::::: -=====-=====
-------==+####***+++==--:-----------::...-===--========-------------::.....::---====-------::--::......:--===+++==--:::::::.:=. -=====-=====
-----------*#*++++====--==---------:.......:-----=--------------::... ........:::---------:::..        .:--======--::::::...-=. ======-=====
------------**+++++=======-------:........::---:::::::.......................::::--:::::.................::----------::::::-=- .=====--=====
------------:=+****++===------::::::::::::-=======---::::::::::::::::::::::-----=====----::::::::::::::::::...:::::::...:--==- .=====-======
-------------:-*@@#*==---::::..::::::::----=============---------------------------------------------::::::. .:::--::::...:-=- :=====-======
------::----=#@@@%#*+==-::.....:-:::---::::::::::::::::::::::::::::::::::::::::::::::::.............:---:::..-==+++====--::::: :=====-======
------::---*@@@@@%###**+=-::.. :=--:-:  :+-..::::::::::::::::::::::::::::::::::::::::::::::::....... :+=:::.:=+++*+++===--:::: -=====-======
------::-:+@@@@@@@@%##*+=--::. :==-::. :-=::----------------------------------:::::::-----::::::::.:.-+=-::.-+*+=#*+++==--:::::-====--======
-----::::=@@@@@@@@@%#*+=--::::.:==--:. ::::----------===========-----------------------===----:---.:.-*=-::.=++***+++==--::::::-====--======
------:-:*@%@@@@@%#*+=----::::..:---:: :--------======+++==-===-:::--------------------=--::::::::::.=*=-::.=+++++++===-::::::::====--======
----::::-*#%@@@%%#*+=--::::::::.:---:: :------====+-==+*++=:-===-:::------------=+-:--=-==:---:::-::.=*=-::.:=++++++==--::::::.-====-=======
----::-:-+#@@@%##*++=---:::::-:.::---: ::----==+:+*:-=++==-::-:-::::---------+=:=+-::+=:==--::----:::=*=-::  .-======--::::...:====--=======
----::::::*@@%#***++==---::---:.::::-: ::--+--++--=-:-=+=-------=:::------===*=.-+=:.+-.----::----:::=*=-::    :-------:::::: :====--=======
:----:::::-#%#****++=---------:.::::-: ::--+-.++-:*=-:-==--------:::-----==-+*=::--::+-....::::::::::=*=-::     .:---::...:-: -====--=======
:::-:::::::-##***+==--------.::.::::-:.:::-+-.-=-:+=-::---:::::::::::----===**-:-==::+-.:--===---::-:=*=-::   .:==++===-::::: -====--=======
::::::::::::-**++===--------.-:.::::-:.::::=-::=-.-=:::-----------------======-::::::+-::::::::::::::+*---:  .-+=+*+++==-::::.-=-=---=======
:::::::::::::-**+==========---..-::--:.::::==.-+=:++=::---===========-=+--+=-==------=-::::=*-:::::-:+*---: .-+*****++==-:.:::-------=======
:::::::::::::::-+**+++====--:...--:--:.:::::-::=-:-=-:::--==-=========*+-:==:-*-:*+:++-:::-==::::::-:+*---: :+*###**++=-::..::---=---=======
:::::::::::::::-#@%*+=---:::....------.::::-=-:--.:+-::---==+--=======+=:-+=::=::+=:=+-::--:---:::--:++---.:+**#%*+++==-::::.:---------=====
::::::::::::::*@@@@%*+=--::::...:-----.::::-==.-=.-*=-:---=+*-:--=======-==-:-=-:=-:-=:::+-:::------:++---.+**###*+++=-::::..:::::::::::::::
:::::::::::.-%@@@@@%%#*+=--:::. :-----.:--::--.==-:--::---==+--:----==++=*=-:=+--+=:++-::=:::::-----:*+----******+++=-::::::::::::::::::::::
::::::::::-=@@@@@@@%##*+=---:::..-----.:--:-==:=+-.==::---=+*=-------==--*=-:--::=-:--::-=-::::-----:*+---=#****++==-:::::::::::::::::::::::
:::::::::::%@@@@%%%##*++=:----::.:----..------::=-.==:::--==+-:::----======-::--:------:==-:-------::*+---.=**++=----:::::::::::::::::::::::
::::::::::-@@@@@%%##**+==-------::----..::-:-=-:==:-=::++++-==+=+=:-==+++=-=-:---------------------::*+---. ::===-::::::::::-:::::::::::::::
::::::::::=@%%%%##**++==--------:::---. .:::---:----=--===----=---::=--------:--------------------:.-*===-. :=++==-:::..::::::::::::::::::::
:::::::::::#%###**++===---------:.:---:  ......:::::::::::::::::::::::::::::::.::::::::::::::::::::=**===-.+#####**+=--:::::::::::::::::::::
::::::::.:-###+++++==========--:..:::::......::::-------------------::::::::::::-------==========++**====:*#*#%#***++=--::::::::::::::::::::
:::::.:-+#%##**++++++++++===-::. ........::---======++******++=================+++++++++=====----=======-+###%##**++=--:::::::::::::::::::::
::..:=#%%%###*+++++++++++===-:. ..::::---:::::::-=+**####**++==-:-:-------=++**##****+++===+=----::::::::###%##***+==---::::::::::::::::::::
.:=*%@%%%######*++++=++++=-::::-==+++====--:  :=+*###%###*++===----.....=*###%%##***+++==-========:.:...=####****++=--:::::..:::::::::::::::
+#@@%%%%%######*++++++++==--=+****+++==-:---.:+**********++===----=: ..=##%%%%##***++==-----------=-----+*******++=--::::....:::::::::::::::
@@%%%%%%%#######*+++++++==++*###**++===-----:-++++******+++====----.  .+**###*****++===-------------::---+*+**+++=---:::.....:.:::::...:::::
%%%%%%%%%%######*#%**+===#**+****++======---.:==++++++++++======-:.   .-********++===------=====--:.::::::=++++==---::::...............:::..
%%%%%%%%%%%######@%%*=-..+##**#**++++====--.  .:-----==-=====--:.       -++***++=====::===----::.          .::------:::....   ..............
%%%%%%%%%%######@%###*+==-=********+=-=--:       .....::::::..           .:-==========--:::...   .  :--==-:::.......      ..        ........
%%%%%%%%%%#####%%#######++++++====--:..   ...........:::.......::---:::--------:::::....   .......:*######***+=-::...........          .....
%%%%%%%%%%####%%#%#####%%%%@@*+=--=+***=.....-*#**#####%#====-*%%%###%%####%###=--:::...:...::::::#%%%##**###*+**==----::::::.              
%%%%%%%%%%####%%#*#%#*#@%###***##%%%#%#*==+*+%@%##%%%###*+===+@%*************+====++=========-==+*###%%%%########+---=+:------.             
%%%%%%%%%%###%%#**%#++%@%%%*++**#%#++******#%@##%#++****++:+##%%==+****+==*****=:+####+=*###%*+#@%**#*+**###***+-::..:---=====-         ....
%%%%%%%%%###%%###%#*##@@%%%*+#%##%#++%##@%*=%@##%#-*@%#@%--@%###+-%%#%%*-#@##%%--@%*##++#%####+*##**+--:::-==-----:.  .:-=====+-      ......
%%%%%%%%%%#%@##%#*#%%%@%##**=#%**++++###*++=##**+=-##*#*+=-***++=-#**+++-*#*++===***+==:=**+++-:*##*+#*=.....:::..  ...:-+=:-==+:      .....
%%%%%%%%%##%####*+*%%@%%%%@@@@@#==***#*++#**%#+++*+##*++***##+=#**#%+=*%**%#==######%#:-%###%+:*@@##=%%%-...-====++=-========++++:      ....
%%%%%%%%%#%##%##*#%%@%#%%%%%%%#*=*@##%%=*@##%#+-*@#%@%++@###%+=@###%*=%%####=+@%#####*-+@%#**+=*%%##*++--..-%#*####%+-===+===+++++.     ....
%%%%%%%%#%%##%%#*#%%%####*****++=+***++=+#**+*+-###***=+##***+=#***+*=*#*++***%%#*+++*=+**++**==###*****+...#%**##*##:.-=++++*+=+++.    ....
%%%%%%%#%%%##%*+*%%%@@%%%@@@@@@@@%=-*##*%#=+%##%@#=*%##%%++%%%%@#+*@%*#*#=*@%%%%%#=+%#%%@#-#@######%%%%%%=..=+------=- .+%######*+*+.    ...
%%%%%###%%##%#*##%%%@%%%%%%%%%%%#*+-@%##%#=#@##%%*=%@##%#+=@%##**-#@##*+*=+%#**+++-=@####*-#%#***###***+=-:.:::--------=%@%####*=-===.    ..
%%#####%%######%%%%%%#%%%%#+++++++--#*++++-*#**++=-+#**++=-***+++:=**++++-=***++=+-=#*++=+:=#**++==+*****+:...:===+++++**##*+=-:.  .=-     .
%%%%%#%#**+*##+++#%@@%@@@@%+-+##%%%*=-+%%%#%%%%%%###%%%%%##%%%%%%##%%%%%%%%%%%%%%###%%%%*-=%####%+-%@%##%%=...:-=+******++*+==-::::-=+:     
%%%%%%@*##%%#*###%@@#****+++=@%%%@@#+=@@@@@@@@@@@@@@@@@@@@@@%%%%@@@%%%%%%%%%%%%%%%%%%%%%*=#@%###*==*%#++=--::-===+#*+++=::++****+++++*+.    
%%%%#@*+#%%%##%%%%@*=====-=-*%***+====%#**************************+++++++++++++++++++++==--**==---.:+=--::-: .:-=++++=---=++**++*+++++*+.   
%%%#%%+#%%%*+#%%%%%+===----.+=------::+=------------------------------------------::::::-. :---::. .::::::.....:-=++++***+*+**--++**+***=   
%%##@#*%%%####%%%%#*+=------==----::..--:::::::::::::::::::::::::::::::::::::::::::::::::::--===-----+*+==========+++++++++*+**++*++**+**-  
%##%@*##*#*#%#####%%*##******+++++++==+++++===========+==================+====+=+++++++++*#*=+****++*#*-::=+++++++++++++**********++*+-=*+. 
###%%%%#*#%%%##%%%#=--+######*#####********#********##++##+*********************#+===****#+-::-+*******+==+****++**++**********+***++++=-:. 
###***+++++++*+****++=+********#++=++********+****+**++==+=++++++++++++++++++++++=+==+++====---=====+=-========----+*---:-::::::::.:::..    
####=:......::...:::::::::::::::.....::.:::..:.::::::::..:::.:....:.........:....::................................::   .  ..     ....      
#####*=::.........................................................  .   .. .                                                                
######+-::..                                                                                                                                
mediamonster@netre 
          
ascii-image-converter potato.jpg -H 70.
The width is calculated with the ratio, to keep the proportions.

Braille effect

⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠉⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿
⠉⠁⣾⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠙⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿
⠀⠀⠻⢿⣿⣿⣿⣿⣿⣿⣇⠀⠀⠀⠐⠿⢿⣿⣿⣿⣿⣿⡏⣛⣻⣭⣥⣷⣤⣤⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣠⣖⣀⣀⣀⠀⠀⠀⠀⡔⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣤⣤⣶⣤⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢨⠀⠀⢸⣿⣿
⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣟⠻⣿⣿⣿⣶⣶⣶⣤⣀⠀⠀⠀⠀⠀⠀⠀⢀⡀⠀⣠⣤⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣄⡀⠀⠀⠀⠀⠀⠀⠀⣠⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿
⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡈⠻⠗⢆⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠶⣄⠀⠀⠀⠀⢀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⡏⠉⠒⡀⠀⠀⠀⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿
⠀⠀⠀⠀⠀⠀⠹⢿⣿⣿⡟⠀⠀⢀⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣷⠀⣀⢾⣦⣀⣀⣀⡀⠀⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⢿⣿⣿⣿⣿⣿⣿⡿⠟⠉⠁⠀⢠⣿⣦⠴⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣏⣛⠃⠃⠀⠀⠀⠘⣆⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡯⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿
⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠇⠀⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⣀⠀⠀⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠁⠀⠈⢿⣿⣿⡿⠛⠁⠀⠀⠀⠀⠀⣿⣿⣿⣧⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠰⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢿⣿⣿
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣏⠙⢿⣿⣿⣷⠆⢼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⠟⠉⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⠁⠀⠀⠀⠀⠀⠀⠀⠙⠉⠉⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠸⢿⣿
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠀⠀⠀⠀⠁⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⠀⢸⣿
⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⡏⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠋⠁⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿
⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣟⣿⣿⣿⣿⣿⣿⣿⣿⠿⠟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⢿⣿⣿⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⡿⠋⢻⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣿⣿⡿⠿⠟⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣷⣦⡀⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⡾⠽⠽⢿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠿⢛⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⡿⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣧⣤⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠻⣿⣿⣿⣿⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣬⣿⣿⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣷⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣤⣤⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣱⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣶⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠀⠀⠀⠀⠀⠀⠀⣾⡿⢿⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⠀⠀⠀⠀⠀⢀⣼⣿⣇⣠⣿⣿⣿⣿⡇⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⠀⣀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⡶⠆⠄⠀⠀⠠⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⠀⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠿⠻⡟⠛⠋⠀⠻⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠁⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢐⣴⠀⠀⠀⣰⣶⣶⣶⡦⠀⢰⣶⠶⠶⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡶⠀⠀⠀⠀⠀⠀⢸⠖⠂⠒⠂⠀⠀⠀⠂⠂⠀⠀⠀⢸⣿⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢷⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣤⠀⢸⡏⠀⠀⠀⠚⠟⠋⠉⠁⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣶⡆⠀⢈⣧⠀⠀⠀⢾⠂⠀⢤⣤⣤⣤⠀⠀⡤⠤⠤⡄⠀⠀⠀⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠀⠀⢨⣇⡀⠀⡃⠀⠀⠀⢀⣤⣤⣤⣤⣤⣤⢤⠤⠤⡴⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⠅⠀⠸⠿⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣻⠀⠀⢸⡇⠀⠀⣿⡆⠀⠀⠈⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠄⠀⠀⠀⠀⠀⠀⣹⠀⠀⠀⠀⠀⢀⣀⡀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠈⠉⠀⠀⠿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢼⡿⠀⠀⠀⠏⠉⠀⠀⣻⠀⠀⠀⠂⠀⠋⠉⠁⠀⠀⠁⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣶⣶⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⠀⠀⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⣴⠋⣿⣿⣿⣿⣶⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣷⣀⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠀⠀⠘⣿⠀⠀⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣶⠀⠀⣴⡀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡟⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⡗⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠀⠀⠙⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡏⠀⠀⢘⠃⠀⠀⣿⠀⠀⣾⠆⠀⢸⡟⠀⠀⠀⠀⠀⠈⠁⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣌⠀⠀⠀⠀⠀⠀⠀⢠⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠁⠀⠀⣆⠀⠀⠀⠃⠀⠀⠿⠀⠀⠸⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣯⣽⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣷⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠂⠀⠸⣿⠀⠀⠀⠀⠀⠀⠀⠸⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠀⠀⢀⠀⠀⠀⣀⠀⠀⣀⡀⠀⠀⠀⡶⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡏⠀⠀⠀⠀⣼⣛⣿⣿⣿⣿⣿⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢤⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡧⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠶⠀⣶⡦⠀⠀⢸⡀⠀⠀⣯⠀⠀⣿⠁⠀⠀⠀⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡇⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⢰⠂⠀⠀⠀⠀⠀⠀⢰⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⠇⠀⠀⠀⠀⠀⠀⠁⠀⠀⠈⠀⠀⠀⢀⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡇⠀⠀⠀⠸⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠘⠿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡇⠀⠀⠀⠀⠻⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠀⠐⠇⠀⠀⣶⣶⣶⣿⠀⠐⠲⣶⣶⣶⡖⠀⠀⠐⢲⣿⠛⠛⠋⠘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠙⠃⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠉⠉⠁⠁⠀⠀⠀⠁⠀⠀⠀⠀⠀⢠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⡇⠀⠀⠀⠀⠀⣀⣴⣶⣶⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⡟⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⠇⠀⠀⠀⢀⣼⣿⣿⣿⣿⣿⣿⣿⣶⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣇⢿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣠⣄⣤⣤⣤⣤⣤⣴⣶⣿⣿⡿⠋⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣴⣾⣿⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣾⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣤⣤⣶⣶⣶⣶⣦⣄⠀⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣶⣿⣿⣿⣿⣿⣿⣯⣿⣿⣿⠗⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁⠀⠐⢿⣤⠄⣀⠀⡀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⣠⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⠙⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⣀⣤⣤⣤⣤⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣿⣿⣿⠃⠀⠀⠀⣀⣤⣾⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⣤⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣾⣿⣿⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠈⣿⣿⣿⠿⢿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠛⠛⠛⠛⠿⢿⣿⣿⡿⠿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠛⠿⠟⠛⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⠀⠀⠀⠹⣿⣿⣶⣿⣿⣿⣿⣿⣿⣷⣦⠤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠿⣿⣿⣿⣿⣿⠿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⣄⣀⠀⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣤⣤⠤⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣛⣙⣻⣖⣈⡉⠛⠛⠿⠿⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿⣿⣶⣭⣿⣳⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⡀⢀⣤⣤⣶⣶⣦⣄⠀⠀⠀⠀⠀⢠⣶⣿⡿⣿⣿⣿⣿⡿⣿⣿⣷⡄⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡿⡿⣦⡀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣿⢛⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣤⣤⣤⣤⣾⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⠟⣶⠠⢬⠤⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠛⠁⠀⠀⠠⠄⣂⠠⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⣠⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠘⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣿⣿⠿⠻⣿⣿⣿⣿⣿⣿⣿⢟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⣍⣿⣿⣿⣿⡿⣿⣿⣿⠿⢿⣿⣿⣿⣿⣽⢿⠀⣴⣾⣿⣿⣿⡛⠛⣫⣿⡶⣶⣮⡙⠛⢛⣽⣷⣶⣶⣤⠀⠀⣴⣿⢿⣿⣷⣆⡷⣴⣿⣿⣿⣿⣮⣦⣾⣿⣿⣿⣿⣿⡿⠻⡿⠿⣿⣿⣿⣿⣿⠿⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣽⣿⣿⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣼⣯⣿⣭⣿⣿⣿⢉⣿⣇⣿⣿⣿⣟⠛⣿⣿⣿⣷⣿⣿⡄⣼⣿⣿⣺⣿⣿⡄⢠⣿⣿⣷⣿⣿⣧⠀⣿⣿⣧⣿⣿⣧⠀⣾⣿⣿⣿⣿⣿⡀⢰⣿⣿⣿⣿⢿⣿⠿⣿⣿⣿⣿⣿⣿⡟⢻⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠉⠙⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⢺⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⣿⣿⣿⣿⣿⣿⡟⢸⣿⣿⣿⣿⣿⣿⠈⣿⣿⣿⣿⣿⣿⠀⣿⣿⣿⣿⣿⣿⡇⠈⢿⣿⣿⣿⣿⠟⠀⣿⣿⣿⣿⣿⠿⠀⣻⣿⣿⣿⣽⡾⠇⠀⣿⣿⣿⣿⠿⠏⠀⠸⣿⣿⣟⡿⢿⠁⠀⢻⣿⣿⣿⢻⣿⣶⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⠃⠀⠀⠀⣠⢾⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⣭⣥⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⢀⣵⣶⢶⣿⣿⢿⣿⣿⣶⣶⣿⣿⡿⢿⢟⣵⣶⣿⣿⣿⡿⡿⣿⣶⣶⣶⣯⡛⠏⣿⡷⣶⣿⣿⡍⠙⣽⣿⡟⣿⣿⣿⡈⢉⣾⣿⣿⣿⣿⣿⣿⣷⠀⢠⣾⣿⣿⣿⣿⣆⠀⣴⣿⣿⣷⣿⡈⣷⣾⣿⠃⠀⠀⠀⣀⣀⣀⣤⣤⣤⣤⣄⠀⠀⠀⠀⠀⠀⠀⣐⣄⣶⣟⣥⣇⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣵⣯⣿⣿⡆⢸⣿⣷⣿⣿⣿⣷⠀⣼⣿⣧⣿⣿⣿⣇⢸⣿⣧⣿⣹⣿⣧⢠⣿⣧⣿⣾⣿⣿⠰⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⡇⢺⣿⣿⣿⣿⣿⣿⠞⢿⣿⣿⣿⣿⣿⠟⠋⠁⠀⠀⠀⠸⣿⣿⣿⣿⣿⣿⣟⣿⣇⠀⠀⢈⠔⢻⡋⠑⡻⣿⣍⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣛⣛⡀⠸⣿⣿⣿⣿⠿⠇⢸⣿⣿⣿⣿⣿⣟⠀⣿⣿⣿⣿⣿⣿⡇⠸⣿⣿⣿⣿⣿⣟⣈⣿⣿⣿⣿⣿⣿⣤⣿⣿⣿⣿⣿⣿⣧⣼⣿⣿⣿⣿⣿⣿⢿⣿⣁⣬⣿⡿⣿⣿⣿⣭⣤⣤⣿⣿⣿⣿⣧⣤⣶⣦⣄⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⢿⣙⣿⣿⣿⣯⣤⣼⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⠿⠟⢛⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⠀⣵⣿⣿⢷⣿⣿⡿⢿⣿⢟⣿⣿⣿⣿⠻⣿⣿⣻⡿⣿⣿⡟⢿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣷⣾⣺⣿⡉⣹⣿⣿⣿⣿⣿⣿⣿⡌⢱⣿⣿⣿⣿⣿⣷⠈⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠹⠋⠀⠀⠀⠀⠀⠀⠀⠇⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣟⣿⣫⣇⠀⠀⠀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣻⡿⢠⣿⣿⣿⣾⣿⣿⡇⣾⣿⣷⣿⣿⣿⣿⡄⣿⣿⣷⣾⣿⣿⣷⢸⣿⣿⣿⣿⣿⣿⠇⢿⣿⣿⣿⣿⣯⣿⡇⢻⣿⣿⣿⣿⣛⣩⣾⡇⢸⣿⣿⣿⣿⣿⣿⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⢀⣠⣿⣿⣿⣿⣿⣿⣿⡿⠋⠈⠛⠋⢂⠀⠀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡻⠿⠿⠿⢿⣿⠟⠃⠸⣿⣿⣿⣿⣿⠿⠁⢿⣿⣿⣿⣿⠿⠿⠀⢻⣿⣿⣿⡿⠿⠃⠀⢿⣿⣿⣿⡿⠟⠀⠸⣿⣿⣿⡿⠿⠛⠀⠘⣿⣿⣿⣿⠿⠏⠉⠀⠸⣿⣿⣿⠿⢿⣿⠀⢘⣿⣿⣿⣍⣉⠉⠛⢛⣿⣿⣷⣶⣶⣄⠀⠀⠀⠀⠀⠀⠀⠪⣿⣿⣿⣿⣽⣿⣿⣿⣿⣿⠏⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⡿⣛⣋⣡⣥⣾⡿⠿⠛⣹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⣰⣾⣿⣿⣿⣿⣦⠈⠉⣻⣾⣿⣿⣶⣿⣿⣿⣿⣿⣿⣿⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠁⢠⣿⣿⣿⣻⣿⣿⣇⢀⣾⣿⣿⣷⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⡿⢿⣿⣧⣤⣀⣀⠀⠀⠀⠀⠀⣠⣶⡀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠿⠛⠋⢹⡿⢡⣿⣿⣿⣿⣿⣿⣿⣷⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠇⣿⣿⣿⣿⣿⡿⠟⠋⠋⢻⣿⣿⠟⠛⠋⠁⠀⠀⠀⠀⠀⠠⣠⣻⣿⣿⣿⣿⡿⠟⠁⠀⣻⣿⣿⣿⣿⣿⣷⣾⣷⣿⣿⣿⣷⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⡏⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠁⣸⣿⠿⠛⠛⠛⠉⠈⠋⠀⣿⣿⡿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠛⠻⠿⠿⠿⠻⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠉⠀⠀⠈⢿⡿⠋⠀⠀⠀⠀⠀⠀⠻⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢛⣿⣷⣦⣤⣤⣄⣤⡒⣻⣿⣿⣿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⢶⣿⣿⣿⣿⡟⠛⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⢿⠃⠀⠀⠀⠀⠀⠀⠀⠀⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣯⢿⣿⣿⣿⣽⣿⣿⣿⣏⣀⣈⣻⣿⣿⣿⣿⣿⣿⣿⡆⠀⠀⠀
⣿⣿⣿⣿⣿⣟⣼⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⣤⣀⡀⡀⠀⠀⠀⢀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣤⣀⣀⠀⠀⢀⣤⣶⣦⣄⣀⣀⠀⠀⠀⡀⣀⣠⣠⣿⣿⣿⣿⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⡿⢿⣿⣿⠿⣿⣿⡄⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣤⣤⣠⣴⣴⣶⣶⣶⣦⣤⣦⣤⣄⣤⣤⣤⣤⣤⣤⣠⡴⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣴⣴⣤⣤⣴⣤⣶⣠⣴⣦⣦⣴⣶⣶⣶⣴⣤⣾⣾⡿⠟⢻⣿⣿⣿⣿⣿⣿⣾⣿⠟⠀⠀⠈⠃⣾⣿⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⣴⣾⣿⣃⣀⣸⣿⡇⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⡟⠁⠀⠈⢹⣿⣿⣿⣿⣿⣿⣷⣾⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⣿⣿⣿⠟⠛⣿⣿⣉⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣽⣿⣿⣿⠛⠋⠉⣉⣻⣿⣿⡿⣿⠛⠀⠀⠈⠉⣻⣿⣿⣿⣿⣿⣿⣷⣦⣤⣴⣶⣿⣿⣿⣿⣋⣽⣿⣿⣿⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠿⠿⠿⠛⠉⠀⠀⠀
⣿⣿⣿⣿⡿⠿⠿⠛⠟⠿⠛⠛⠛⣿⢻⠿⠛⣿⠿⠷⠶⠶⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠛⠛⠓⠻⠛⠿⠿⠿⠿⠟⣿⢿⠿⠿⠿⠿⠿⠿⠿⠟⣿⠿⠷⠛⠛⠛⠛⠿⠿⠿⠿⠻⠿⠛⠛⠛⠿⠻⠟⠻⠿⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠋⠛⠻⠻⠂⠀⠈⠉⠉⠉⠛⠉⠿⠋⠉⠉⠉⠙⠉⠉⠉⠉⠉⠉⠉⠉⠀⠟⣿⠉⠀⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣶⣤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀
            
ascii-image-converter potato.jpg -b -H 70.
The width is calculated with the ratio, to keep the proportions.

Dither effect

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

#5 archiving the work

To mark everyone's entrance in the noob community, it is better that every participant can archive their achievements digitally and on paper.

  • select 2 outcomes .png or .jpg that have been realised during the workshop : images modified, edited, screenshots from the terminal, etc.
  • name them like this : date + title (or name of techniques used) + your name
  • DD-MM-YY_title_your-name.jpg

  • A usb stick is dedicated to collect them
  • Connect to the printer and print one of them twice : one for you, one for the Noob's archive

sources

  • Le design des choses, à l'heure du numérique et de l'IA, by J-L Fréchin, ed. FYP, 2023
  • Linux commands cheat sheet, on Geeksforgeeks website, 2024
  • Homebrew documentation, on the docs.brew.sh website
  • A Beginner’s Guide to Homebrew, by Kenneth Worden, on Medium website, 2018
  • ImageMagick, website
  • Ascii-image-converter tutorial, by The Zoraiz, on GitHub website, 2022

#4 the terminal

text-scraping and editing

      ||                                          || 
      ||          ||              ||    ||               ||      
||   ||          ||                         ||    ||    ||      ||    ||    ||    ||
||   ||    ||          ||          ||          ||    ||      ||    ||          ||
||   ||    ||    ||    ||    ||    ||    ||                  ||    ||    ||    ||
||   ||                                                                              ||
||                                                                                   
||                                                                              
||                                       
||               ||    ||          ||    ||      
||   ||    ||    ||    ||    ||    ||    ||            
||   ||    ||    || a  || series   || of || zines    ||    
||   ||    ||    ||    ||    ||    ||    ||    ||    ||    ||      ||    ||          ||
|| inputs  ||     <--      ||      <--   ||       <--    ||      <--     ||  inputs  ||
||         ||   hardwares  ||       OS   ||  softwares ||    users ||      ||
|| outputs ||      -->     ||       -->  ||    -->     ||       -->  ||  outputs ||  ||
||   ||    ||    ||    ||    ||    ||    ||    ||    ||    ||      ||
||   ||    ||  the graphic designer practice deconstructed to its rawer shape    ||  ||
        
"web harvesting"

Welcome !

Text-editing in the terminal challenges traditional ways to treat text on a white A4 canvas. The terminal can be used for scraping content from the web as much as automating text layout into patterns. The methodologies presented in this zine, stand as an introduction to alternative editing techniques. Because, disclaimer, the very best way to layout text without DTP softwares (adobe, etc) is by using mark-up language such as HTML styled with CSS, programming languages built for web editing. These require a deeper learning of these languages, which can't be achieved from these zines.

This zine #4 will bring you to a funny web-scraping introduction, followed by two ways of automating the editing of the text. At the end, a bonus introduces you to vim a command-line-based text-editor !!! expert level ;)

notes

in practice

#1 web scraping

Web scraping or web harvesting is the automation of the structured data extraction process from websites.

An interesting way to get introduce to web scraping, is to use a Python Library which will extract content from wikipedia pages. The first step is to install the library.

-> to understand better the system of packages in the terminal, you can refer to the zine #3, page 4.

->In 1989, Tim Berners-Lee, a British scientist conceived the World Wide Web. The static informations were displayed in html, which made it easy for developers to write scripts that could extract data programmatically. But the evolution of the web with dynamic websites challenged the traditional scraping techniques. Expensive dedicated software has been developed, now pushed further for the building of machine-learning training datasets.

In its essence web scraping is illegal. But no regulations are binding; results of court cases have proved that web scraping legacy is a case-by-case matter. Web scraping often involves screen-scraping, which is the collection of pre-rendered information from the front end. This activity won't affect a website's technical angle. Plus, data scraped this way are often unprotected, and anyone can collect them.
So for an individual practice, space still exists for a bit of scrapping.

for Macos

Homebrew, the macos package manager :

To install it, simply open a terminal window and run :

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com
/Homebrew/install/HEAD/install.sh)"

/!\ if an error occurs after that, read what the terminal indicates you to do -> there is often a text to copy / or the computer password to fill in


Python

brew install python

To check the version installed, run :

python3 --version


wikipedia

brew install wikipedia

for Windows

Python should already be installed. Verify by :

python3 --version

Then check if pip is installed :

pip --version

if Pip is not installed type :

python get-pip.py


wikipedia

pip install wikipedia

in pratice

extract a summary

/!\ an internet connection is required

1. Extract the summary of a wikipedia web page

- Open a terminal window

- Open a python window by typing (depending of the version installed)

python OR python3

- Call the wikipedia package

import wikipedia

- Press enter, and ask for the summary

print(wikipedia.summary("piracy"))

Here it is ! A full summary of the webpage is displayed !

"Piracy is an act of robbery or criminal violence by ship or boat-borne attackers upon another ship or a coastal area, typically with the goal of stealing cargo and other valuable goods. Those who conduct acts of piracy are called pirates, and vessels used for piracy are called pirate ships. The earliest documented instances of piracy were in the 14th century BC, when the Sea Peoples, a group of ocean raiders, attacked the ships of the Aegean and Mediterranean civilisations. [...]"

-> It mainly gives the first sentences of the webpage.



2. Select the number of sentences to make it shorter :

print(wikipedia.summary("piracy", sentences=2))

"Piracy is an act of robbery or criminal violence by ship or boat-borne attackers upon another ship or a coastal area, typically with the goal of stealing cargo and valuable goods, or taking hostages. Those who conduct acts of piracy are called pirates, and vessels used for piracy are called pirate ships."

first illustration of the "Piracy" wikipedia page : "The traditional "Jolly Roger" flag of piracy"
in practice

browse pages from a keyword

Keywords, like "piracy", can refer to many pages. By asking the summary, the library decides to display the most obvious one. But, we can first search the different pages in which our keyword is mentionned, to then focus on the one we are interesting in.

1. List of results by keywords :

result = wikipedia.search("piracy")
print(result)

['Piracy', 'Copyright infringement', 'Piracy off the coast of Somalia', 'Online piracy', 'Golden Age of Piracy', 'Piracy in the Caribbean', 'Piracy in the 21st century', 'Anti-piracy', 'Pirate (disambiguation)', '1680s in piracy']

The results are displayed in a list []. Each results is indexed by a number, starting from 0.
result[0] : "Piracy"
result[1] : "Copyright infringement"
result[7] : "Anti-piracy"



2. Summary of a result : let's use the commands seen previously to display the result of 'Online Privacy' :

print(wikipedia.summary(result[3], sentences=4))

"Online piracy or software piracy is the practice of downloading and distributing copyrighted works digitally without permission, such as music, movies or software.
== History ==
Nathan Fisk traces the origins of modern online piracy back to similar problems posed by the advent of the printing press. Quoting from legal standards in MGM Studios, Inc. v."

->test it on different themes and webpages !

-> to leave Python writing mode tap Ctrl+Z on windows, and Ctrl+S on mac.

into practice - beginner

#2 text-editing

Once this text is copied, let's try to edit it in a poster ! For this, open a new terminal window and type :

1. Install dependancies

pip install asciiwriter

pip install argparse


2. Download the script

- Get on becomingnoob.com

- Open the door, and click on "workshop", download the document called "text_lines.py"

- Place it in your desktop, then type

cd Desktop


3. Run the command

- To achieve the following effect, run this command

python text_lines.py "Becoming A Noob"

The result should be displayed in the terminal !


4. Adapt the variables

- Download a text editor : Visual Studio Code or Sublime text

- Open "text_lines.py" in the text editor

- Play with the width, height and amplitudes of the outcome line 13 and 20 !

                                            B
                                    ee ee e ee ee e
                            c  c  c  c  c   c  c  c  c  c
                      o   o    o   o    o    o   o    o   o    o
              m     m     m     m     m     m    m     m     m     m
        i      i      i      i      i       i      i      i      i      i
            n       n       n       n        n       n       n       n       n
        g        g        g        g        g       g        g        g        g

              a         a         a         a        a         a         a

              n         n         n         n        n         n         n
                o        o         o         o        o         o        o
                  o        o        o        o       o        o        o
            a       b       b       b        b       b       b       b       a
        n             B      B      B       B      B      B      B
              g     n     e     e     e     e    e     e     e     n
                          o    c   c    c    c   c    c   c    o
                            a  o  o  o  o   o  o  o  o  o
                                      b mm m mm mm b
                                            iB
                                      e nn n nn nn eo
                                c  g  g  g   g  g  g  g  c  o
                          o                                    o   b
                    m     a     a     a     a    a     a     a     m     B
                i                                                        i      e
            n       n       n       n        n       n       n       n       n
        g        o        o        o        o       o        o        o        g
                o        o         o         o        o         o        o
              b         b         b         b        b         b         b
              B         B         B         B         B         B         B
              e         e         e         e        e         e         e
                c        c         c         c        c         c        c
                  o        o        o        o       o        o        o
            a       m       m       m        m       m       m       m       a
                      i      i      i       i      i      i      i             c
                    n     n     n     n     n    n     n     n     n     o
                          o    g   g    g    g   g    g   g    o   m
                                o                        o  i
                                      b aa a aa aa bn
                                            BB
                                      e nn n nn nn e
                            a  c  o  o  o   o  o  o  o  c
                          o    o   o    o    o   o    o   o    o
              n     m     b     b     b     b    b     b     b     m
        o      i      B      B      B       B      B      B      B      i
            n       e       e       e        e       e       e       e       n
        g        c        c        c        c       c        c        c        g
                o        o         o         o        o         o        o
              m         m         m         m        m         m         m
              i         i         i         i         i         i         i
              n         n         n         n        n         n         n
                g        g         g         g        g         g        g

            a       a       a       a        a       a       a       a       a
        o
              b     n     n     n     n     n    n     n     n     n
                      B   o    o   o    o    o   o    o   o    o
                            e  o  o  o  o   o  o  o  o  o
                                    cb bb b bb bb b
    
into practice - advanced

#3 text-editing

Another technic to edit the text extracted previously would be to integrate it as an ascii Image. For this, open a new terminal window and type :

1. Install dependancies

pip install pillow

pip install reportlab

pip install argparse


2. Download the script

- Get on becomingnoob.com

- Open the door, and click on "workshop", download the document called "ascii_art.py"

- Place it in a new folder in your desktop called "Ascii-test", then type

cd Desktop\Ascii-test

- Add the image you want to work with in the folder

- Add a .txt file with the text you want to work with in folder


3. Run the command

- To achieve the following effect, run this command

python ascii_art_printer.py 3.jpg .\webscraping.txt --width 50

The result is displayed in the terminal. You can also print it directly on the default printer :

python ascii_art_printer.py 3.jpg .\webscraping.txt --width 50 --print


4. Adapt the variables in the command

- Play with the width and font size of your output at the end of your command :

--width 150 --font_size 5

150 as a number of caracters and 5 as the font size in pt


5. Adapt the variables in a text editor

- Download a text editor : Visual Studio Code or Sublime text

- Open "ascii-art.py" in the text editor

- Play with the brightness on line 23 !

if brightness > 0.85:

 The symptoms of accelerated crisis are widely recognized. Multiple attempts have been made to explai
 n them. I believe that this crisis is rooted in a major twofold experiment which has failed, and I c
 laim that the resolution of the crisis begins with a recognition of the failure. For a hundred years
 we have tried to make mac ines work for men and to school men for life in their service. Now it tur
 ns out that machines do not “work” and that people cannot be schooled for a life at the service of m
 achines. The hypothesis on which the experiment was built must now be discarded. The hypothesis was 
that machines can replace slaves. Ivan Illich - Tools for Conviviality http://clevercycles.com/tools
 _for_conviviali y/ 17 of 126 10/11/07 9:20 AM The evidence shows that, used for this purpose, machin
 es enslave men. Neither a di  atorial proletariat nor a leisure mass can escape the dominion of cons
 tantly expanding industrial t ols. The crisis can b                             invert the present d
 eep structure of tools; if we give people tools th                                 with high, indepe
 ndent efficiency, thus simultaneously eliminating                                 sters and enhancin
 g each person’s range of freedom. People need new   ol     wo    i     t     ha  tools that “work” f
 or them. They need technology to make the most of   e     gy     im   nat    ea   has, rather than m
 ore well-programmed energy slaves. I believe that   ci    mu    e     nst    ed  o enlarge the contr
 ibution of autonomous individuals and primary grou   t    e     l     ct    ess  f a new system of p
 roduction designed to satisfy the human needs whic  it    o     rm    .     act  the institutions of
 industrial society do just the opposite. As the p  er    ma    es    re    ,     role of persons mo
 re and more decreases to that of mere consumers. I  iv    ls    d     s     ov  and to dwell. They n
 eed remedies for their diseases and means to commu  ca    it    e     he    eo  e cannot make all th
 ese things for themselves. They depend on being s  pli   wit   bje    an    rv  es which vary from c
 ulture to culture. Some people depend on the supp   of   od  n  ot   s o    e   pply of ball bearing
 s. People need not only to obta n things, they ne   ab    al   he    edo   o m  e things among which
 they can live, to give shape to them according t  th    ow    st    an     pu  them to use in carin
 g for and about others. Prisoners in rich count     o     h    ac     t    re   ings and services th
 an members  f their families, but they have no     in     t    s     to     a   and c           e wh
 at to do with them. Their punishment consists i    in    pr     o    at    ha   call             y.”
 They are degraded to the status of mere consum     I    os    e      “    iv  lity”              th
 e opposite of Ivan Illich - To ls for Convivialit  ht    /c   erc   es.    to  s_for_              1
 8 of 126 10/11/07 9:20 AM industrial productivity                    n     no  us and    at      ter
 course among persons, and the interc ur   of per                               d    s i  contrast wi
 th the conditioned response of pers ns    th   emands m                         an   y            en
 vironment. I consider conviviali      b  in   idual freedom realized in per   al in   dependence and
 , as such, an intrinsic ethica  v  ue. I be  eve that, in any society, as      vial          uced be
 low a certain level, no amount         tria  productivity can eff              fy th        it creat
 es among society’s members. Pre             ional purposes, which               ial p   uct         
the expense of convivial effec       s  ar  a major facto                       and me  inglessness 
that plague contemporary soci   . T   incr  sing demand for products has come    defin  soci      pr
 ocess. I will suggest how t     re ent tre   can be reversed                     ce an   echnology c
 an be used to endow human acti          un  ecedented effective                  l wou   permit the 
evolution of a life style and of a p  iti    system which give priority to the    tect   , th  maxim
 um use, and the enj     t of the one reso   e that is al  s                       mon    l people: p
 ersonal energy und                rol. I    l argue that we can no                 wo   effectively 
without public co                s   d in    utions that curtail or negate any     on   right to the
 creative use of hi             gy. For t    purpose we need procedu                    ontrols over
 the tools of socie y ar            d an    verned by political proc                   decisions by 
ex  rts. The transition     ocial    can    be effected without an inversion of o      sent institut
     and the s  stitution of convivial f    ndustrial tools. At the                   ool  g of soci
    will rem    a pious dream unless the   eals of socialist jus                      e that the pre
   t crisis o      major institutions ou  t to be welcomed as a crisis of revoluti    y liberation b
   use our  r              ions abridge   sic human Ivan Illi                         ty http://clev
  cycles.com/  o                it / 19  f 126 10/11/07 9:20                          f pr  iding pe
 ple wit       instituti            .   is  orld-wide crisis                            ca  lead to 
a new consci usne    bout the nat  e    tools and to majority action for their contr    If tools are
 not cont  lled polit        they will be  anaged in a belat      hno    ic res         disaster. Fr
 eedom and dign      ll c     u  to dissolve into an unpreced                            hi  tools. A
 s an alternative    t   n      c disaster, I propose the vis                            A convivial 
so iety would be the resu   of social arrangements that guarantee for eac           e    t ample and
 f ee    ess to the tools of the community and limit this fr  dom only in favor of an    r member’s 
  ual           t present people tend to relinquish the tas                                professio
 na    i       y t     er power to politicians who promise t                               iver this 
f       Th y acc            g range  f power levels in soc                                  maintain
 h gh ou  uts. P             itutio    hemselves become draft mechanisms to p              to compli
 city with  utput goa     hat    ri     omes to be subordin   d to what is good for inst    ions. Jus
 tice is debased to mean  he equa      ribution of institu                                   n    is 
intolerably red ced  y a societ  th   defines the maximum                                        he 
largest consumption of industrial goods. Alternate politi                                         f 
 ermitting all people to define the images of their own f                                          t
   xclu e the design of artifacts and rules that are obstacles to the exercis                    ree
 om.       olitics would limit the scope of tools as demanded by the protection of three values: sur
 v  al  justice, and self-defined work. I take these values to be fundamental to any convivial societ
    
extract of Tools of Conviviality by Ivan Illitch, in a beach chair
bonus

#4 text-editing with VIM

=======================================================================================
  =    W e l c o m e   t o   t h e   V I M   T u t o r    -    Version 1.7      =
=======================================================================================
        

Vim a highly configurable text editor built to enable efficient text editing. It is very useful to write and modify codes or texts in every text format possible (.html, .txt, .py, .css, etc).

Its text-based interface refers to the terminal's, and Vim can be opened directly from it as well. It makes it easier to naviguate from one and another. It is based on the same principle : the user can activate a multitude of commands, but they have to be known. They are no buttons for anything, everything happens from the keyboard.

Install VIM

->On windows, vim must be installed and opened as an application. Check the Vim website (vim.org/download.php) to follow the instructions.

-> On mac just run : brew install vim


in practice

Because of the text-based interface, it is very easy to feel lost in vim the first time using it. In fact it requires to already know a few commands to be able to do a simple text-editing. That's why "vimtutor" has been developped. It is openable directly from the terminal typing :vimtutor

"vi" refers to vim

A window opens and makes the user going through various exercises to comprehend the essential commands and keyboard actions.

Modes : Vim has 3 editing modes. They are accessible via keyboard shortcuts.

  • Command (default) : to write commands
    type esc
  • Insert : to add text
    type I or i, 0, A
  • Visual : to select
    type v or V


Naviguation : To move around, select text, the faster in vim is tu use the keyboard (again) and not the mouse. Quite easy to remember, it has to become a part of the user's muscle memory to be really efficent, doable with some practice.

 
        /\         press
         k         k to go up
   < h       l >   h to go left
                   l to go right
         j         j to go down
         v
      

Buffers : are editing workflows wich enable to open temporary space in the memory to store opened files, open and edit parallel files, check a document, etc. The switch from a buffer to another is quite easy and improve considerably the speed and efficiency of the editor.

The most usefull one at first can be called by typing :help. And a buffer will be opened with an access to Vim help ressources, where you can scroll in all the explanation of possible commands.

- vim first language : in command mode "esc"

command description options
:q quit :wq : save and quit
:w save or save as :w! : overwrite
:w file.name : save as...
: introduce a command
u, U undo the last change, Undo for the whole line ctrl+R : redo
:help "command" open the help ressources
:bd close the buffer
ctrl+Z leave temporarily vim, to the terminal
fg foreground : comes back to vim
ctrl+W switch to the other buffer
:split "file.name" open a window in vim :close! : close the window
x delete what's under the cursor
dd delete the whole line
y yank : copy in the clipboard, what has been selected (in Visual mode) p : put -> paste
A append : goes to Insert mode at the end of the line 0, idem but at the start of the line
G go to the top o the document gg : go to the bottom
r"x" change the caracter under the cursor to a new one
:w | !Open% open a preview in the default browser
:set nu show line numbers
:set textwidth="x" set the textwidth to x caracters gq : apply to the selection
:x+y>> tabulate lines x to y x2 (>>)
/ introduce a research :set hlsearch : highlight the search in the text

#5 archiving the work

To mark everyone's entrance in the noob community, it is better that every participant can archive their achievements digitally and on paper.

  • select 2 outcomes .png or .jpg that have been realised during the workshop : images modified, edited, screenshots from the terminal, etc.
  • name them like this : date + title (or name of technique used) + your name
  • DD-MM-YY_title_your-name.jpg

  • A usb stick is dedicated to collect them
  • Connect to the printer and print one of them twice : one for you, one for the Noob's archive

sources

  • Scraping Wikipedia Pages with Python Wikipedia Library, on the Python Tutorial blog, well.sr website, 2020
  • What is web scraping and how to use it, on geekforgeeks website, 2025
  • Beautiful soup documentation, on the Bs4 website
  • Implementing Web Scraping in Python with BeautifulSoup, on geekforgeeks website, 2024
  • The Legalities of Web Scraping: What’s Allowed and What’s Not, on Automatio website, 2021
  • What Is a Web Crawler, and How Does It Work?, by Vann Vincente, on Howtogeek website, 2021
  • Webcrawlers, on wikipedia
  • Working With Buffers in Vim: A Guide, by Igor Irianto, on Built-in website, 2024

becoming a noob

this website is meant to be seen
on a computer,
come back on your personal hardware!