diff options
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 462 |
1 files changed, 110 insertions, 352 deletions
diff --git a/src/main.rs b/src/main.rs index 4dedd58..6bc2256 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,16 +1,10 @@ -use crossterm::{ - cursor::{Hide, MoveTo, Show}, - execute, - style::Print, - terminal::{Clear, ClearType, size}, -}; -use rand::Rng; -use std::{ - env, - io::{self, Write}, -}; +use crossterm::terminal::size; +use std::env; use unicode_width::UnicodeWidthStr; +mod mikuart; +use mikuart::get_miku_art; + fn main() -> Result<(), Box<dyn std::error::Error>> { let args: Vec<String> = env::args().collect(); @@ -26,380 +20,144 @@ fn main() -> Result<(), Box<dyn std::error::Error>> { Ok(()) } -fn get_miku_art() -> Vec<&'static str> { - let mut rng = rand::thread_rng(); - let styles = vec![ - vec![ - "⠀⠀⠀⠀⠀⠀⠀⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣷⣀⡤⠤⠤⠤⠤⢤⣄⣀⡀⠀⠀⠀⣀⣀⡀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⢀⣾⣿⣟⡵⠚⠉⠀⠤⠂⠀⠀⠀⠀⠀⠀⠉⠓⠦⣾⣿⣿⣿⡄⠀⠀⠀⠀", - "⠀⠀⠀⣴⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⠀⠀⠀⠘⢦⡙⢷⣜⣿⣿⣆⠀⠀⠀", - "⠀⠀⢺⣿⣿⡟⠁⠀⢀⠀⠀⡆⠀⠀⠀⠀⠀⠈⢣⡀⠀⠀⠀⠙⡼⡍⡘⣿⣿⣆⠀⠀", - "⠀⠀⠀⢹⡟⠀⠀⢀⠇⢀⡼⡇⠀⠀⠀⣤⡀⠀⠀⢱⡀⠀⠀⠀⠸⣿⡴⡘⣿⣿⣆⠀", - "⠀⠀⠀⣼⡅⠀⠀⣘⢀⡾⢥⣿⣰⠀⠀⡟⢷⡀⢷⣄⢷⡀⠀⠀⠀⢻⡞⣧⣿⡿⠋⠀", - "⠀⠀⢠⡿⡇⠀⠀⣽⣾⣤⣤⣈⢿⠆⠀⡇⠘⠹⣿⡝⢮⣇⠀⠀⠀⢸⣿⣿⡟⢱⠀⠀", - "⠀⠀⢸⠀⡏⡇⠀⣿⢱⠿⣿⣻⡝⢿⣄⢳⢐⣶⣾⣷⣾⣿⠀⠀⡇⠘⣿⠉⡄⠸⡀⠀", - "⠀⠀⡏⢸⣧⣷⠀⣿⠸⢯⣉⡾⠁⠈⠻⣾⡜⣗⠿⣭⡏⣿⠀⢀⣧⡀⣿⡄⡇⠈⡇⠀", - "⠀⢠⠇⠸⢱⡟⣆⣿⣄⠀⠀⠀⠀⠀⠀⠈⠁⠑⠖⠚⠀⣾⠀⣼⣿⠙⠇⡇⠇⠀⢇⠀", - "⠀⢸⠀⠀⢸⠀⠘⢾⣿⣗⣦⣄⣀⠰⠤⠄⠀⠀⣀⣠⢴⢧⠾⠿⠃⠀⠀⡇⠀⠀⢸⠀", - "⠀⡏⢀⠀⢸⠀⠀⠀⠀⠙⠿⣣⣾⣭⢿⣫⡿⠻⡍⠠⠟⠁⠀⠀⠀⠀⠀⡇⢀⠀⢸⠀", - "⢠⠁⢸⠀⢸⠀⠀⠀⠀⢀⣴⣿⣧⢸⢿⠇⣵⣼⣿⡄⠀⠀⠀⠀⠀⠀⠀⡇⡎⠀⠘⡇", - "⢸⠀⠸⡄⡇⠀⠀⠀⣠⣾⣿⣿⡏⣸⣸⠈⠀⢹⣿⣿⣆⠀⠀⠀⠀⠀⠀⡿⡇⠀⠀⡇", - "⡄⠀⠀⣇⢰⠀⠀⠸⢿⣿⣿⢞⠇⣟⢸⠅⡆⠘⣿⣿⣿⣧⠀⠀⠀⠀⠀⣇⡇⠀⠀⢠", - "⢁⢆⠀⠸⣼⠀⠀⠘⠋⢩⣾⣧⣶⣿⣿⣆⣼⣿⣿⣿⣻⠿⡄⠀⠀⠀⠀⣿⠁⠐⠀⢸", - "⠘⡌⣆⠀⢻⡆⠀⠀⠀⠘⠫⣟⣿⣿⣿⣿⣿⣻⣯⠟⠉⠋⠁⠀⠀⠀⢠⡏⢀⠷⠀⢸", - "⠀⠙⢿⣗⢔⢷⡀⠀⠀⠀⠀⢸⣶⣶⣿⢳⣶⣖⡇⠀⠀⠀⠀⠀⠀⠀⡼⢀⢎⡇⢠⡇", - "⠀⠀⠀⠙⠻⠲⠽⠄⠀⠀⠀⠀⣿⣿⣿⢸⣿⣿⡇⠀⠀⠀⠀⠀⢀⣞⢔⣃⣼⡴⠋⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢾⡻⠿⢨⡿⣿⡇⠀⠀⠀⠀⠀⠉⠉⠉⠉⠁⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - ], - vec![ - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣶⣶⣤⡤⠤⠶⠶⠦⠤⣄⣿⢿⣷⢦⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⠟⠋⠻⠄⣀⠀⠀⠀⠴⢮⠑⢦⣿⣎⠻⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡾⢡⠞⠀⡘⠀⣿⣷⣄⠀⠀⠈⢷⡀⠻⣿⣆⢸⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡏⢀⠏⡀⢠⢇⠀⢻⠹⣿⣷⠄⣆⠘⣿⣶⣿⡉⡇⢧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⠘⡞⡾⡇⡿⠼⢆⠸⡞⣹⡾⣧⡹⡄⢻⣻⣿⡇⢸⠸⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⢰⣧⠀⠋⣷⢶⣮⠓⣿⡅⢿⣿⣷⡘⠘⣿⡿⠁⠀⢇⢻⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣾⣿⣆⠈⢿⡾⣿⡆⠈⠉⠀⠉⠷⡿⡄⣿⡇⠀⢰⡼⡌⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⣿⠈⠢⣸⣿⣆⠁⠀⠔⠂⢀⣼⣼⣿⣿⣧⠀⠸⡙⣵⢸⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⠃⡀⠀⢸⢿⣿⣿⣶⣾⡯⠗⣿⡾⣥⠉⢻⡀⠀⢇⠙⣇⢷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⡃⢰⠁⠀⡟⠈⣻⢯⣽⣿⣧⣴⠟⣤⡘⡇⠘⡇⠀⠘⡄⠸⡘⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡷⢁⠇⠀⢸⠃⢰⣯⢊⠏⣷⣾⣽⡇⠉⠹⡇⠀⢷⠀⠀⢱⠀⠱⠘⣧⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠟⠀⡞⠀⠀⡟⣴⣏⣧⠎⢀⠁⢀⣸⣧⣤⣤⣧⠀⢸⠀⠀⠀⢣⠀⠀⠘⣆⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⣼⠋⠀⡘⠀⠀⢸⡿⣿⢿⠏⠀⢸⠉⣳⣴⡟⢻⣿⣿⡆⠘⡇⠀⠀⠈⣄⠀⠀⠘⣆⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⢀⡼⠁⠀⣰⠁⠀⢀⡾⡛⢁⣮⡄⡰⣿⠘⠳⡿⡧⠿⠿⣿⣧⠀⡇⠀⠀⠀⠘⣆⠀⠀⠸⣧⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⢀⡞⠀⠀⣰⠃⠀⢠⢿⡴⠓⡟⠛⠁⠀⣷⡗⢤⡸⡇⢀⣠⣿⣿⣆⢃⠀⠀⠀⠀⠈⢆⠀⠀⠹⡄⠀⠀⠀⠀", - "⠀⠀⠀⠀⢠⡟⠁⠀⣰⠃⠀⣴⣥⣾⣧⡾⡇⠀⢀⡼⣷⠿⢀⣽⡇⠈⡟⠏⢿⣿⣿⠀⠀⠀⠀⠀⠘⡀⠀⠀⢹⡀⠀⠀⠀", - "⠀⠀⠀⢀⡾⠀⠀⢠⠃⢀⣾⣿⣿⣿⡿⢡⣿⣠⣾⠉⠻⣷⣿⣿⡇⠌⢹⠸⣘⣿⣿⣷⡄⠀⠀⠀⠀⢱⠀⠀⠈⣷⠀⠀⠀", - "⠀⠀⠀⡼⠁⠀⠀⡞⡰⠋⠀⠈⣷⣽⡳⢿⣷⣻⣿⠀⣀⣿⡿⣿⡧⠀⠘⡇⢿⢟⣿⣿⣿⡦⠀⠀⠀⠀⢧⠀⣆⠸⡇⠀⠀", - "⠀⠀⣸⠁⢀⠀⡸⢸⣥⣀⢀⣼⠟⣿⡏⠙⠒⢲⠽⠭⢵⡞⠊⠉⣿⠀⢀⣼⡈⢾⣿⣿⡿⠁⠀⠱⡀⠀⠘⡆⢸⣆⢻⡀⠀", - "⠀⢠⠇⢀⡎⢠⠃⠀⠈⢙⣿⣿⣿⣿⣧⣀⣀⣼⠀⠀⠀⣧⣤⣶⣿⣐⣿⣿⣷⣾⣿⢿⡄⠀⠀⡇⢳⠀⠀⢣⠀⣏⢎⡇⠀", - "⠀⠸⢀⣾⠁⡜⠀⠀⠀⠘⠛⡏⠀⢹⢿⡿⣿⡇⠀⠀⠀⢸⡍⣹⢿⣿⡈⠹⠿⠛⠋⠈⡇⠀⡄⠀⠀⠀⠀⠘⠀⠹⡜⣷⠀", - "⠀⡇⣜⡇⠀⠃⠀⠀⠀⠀⢀⠁⠀⣾⣾⣿⣿⠇⠀⠀⠀⠈⣧⠙⠿⣿⣧⡀⠀⠀⠀⠀⡇⠀⢇⠀⠀⠀⠀⠀⠀⠰⢇⢸⠀", - "⠀⡗⢹⠀⠀⠀⠀⠀⠀⠀⢸⠀⢠⡏⠀⣏⣿⠀⠀⠀⠀⠀⢹⣤⠀⢻⣿⣷⡀⠀⠀⠀⢳⠀⢸⠀⠀⠀⠀⠀⠀⠀⢸⠘⡇", - "⢰⡇⣼⠀⠀⠀⠀⠀⠀⠀⣸⠀⡾⡀⢸⣿⣿⡀⠀⠀⠀⠀⠀⣿⠀⠈⢿⣿⣷⡄⠀⠀⢸⠀⠀⡆⠀⠀⠀⠀⠀⠀⣼⡀⡇", - "⠘⡇⣿⡄⠀⠀⠀⠀⠀⠀⡏⢠⡇⠁⢸⣿⣿⡇⠀⠀⠀⠀⠀⢹⡇⠀⠘⣧⠻⣿⡄⠀⢸⠀⢰⡇⠀⠀⠀⠀⠀⢀⡟⡇⡇", - "⠀⡇⡇⣧⠀⡄⠀⠀⠀⠀⡇⢸⠱⠀⢸⠐⣿⡇⠀⠀⠀⠀⠀⠈⡏⠀⠀⢹⡀⢹⣷⡀⡟⠀⡞⡇⠀⠀⢀⠆⠀⡼⠀⣇⡇", - "⠀⢃⡇⠸⡆⢱⠀⠀⠀⠀⡇⣸⠀⠀⣾⡆⢸⣧⠀⠀⠀⠀⠀⠀⢷⡆⠀⠈⣿⠀⣿⣷⡇⣰⠁⡇⠀⣦⠎⠀⣸⠃⢰⣿⠃", - "⠀⢸⣿⠀⠹⣆⠣⡀⠀⠀⢻⢿⠀⠀⣿⣤⣼⣿⡄⠀⠀⠀⠀⠀⢸⣧⣤⣴⣿⣡⣾⣿⣷⠁⠀⡇⢠⠏⢀⡼⠃⠀⢸⡟⠀", - "⠀⠀⢻⡆⠀⠈⠻⣷⣄⠀⢸⢼⣾⣿⠿⠿⠛⠻⣿⡄⠀⠀⠀⠀⠘⣿⣿⣿⡿⠿⢿⣿⣿⠀⢰⠇⢀⣴⠟⠁⠀⠀⣾⠃⠀", - "⠀⠀⠈⠁⠀⠀⠀⠈⠙⠷⣤⣿⣿⣧⣀⣀⠀⠀⢻⣿⠀⠀⠀⠀⢸⠁⣨⡿⠀⢀⣸⣿⠏⠀⣾⡶⠋⠁⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠛⢿⣾⣷⣴⣿⡿⠀⠀⠀⠀⢺⣿⣯⣀⣶⣾⡿⠋⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠀⠀⠀⠀⠀⠀⠙⠛⠛⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - ], - vec![ - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠄⠋⠑⣦⡀⠀⠀⣠⠴⢋⠁⠀⠀⠀⢀⡴⠚⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠑⢦⡀⠀⢀⣠⠤⠒⠉⠉", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠢⠐⠒⠀⠀⠀⠀⠀⠙⣦⠞⢁⠔⠉⠀⠀⠀⢰⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣞⠉⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⠃⠀⠀⠀⣠⠞⠁⠀⠋⠀⢀⡴⠀⢰⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢢⡀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡷⢀⡾⢁⡞⠁⠀⣠⠞⠁⠔⠋⠀⠀⡜⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⡀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣇⣸⡵⠋⠀⣠⠞⠁⠀⠀⡄⠀⠀⢀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⡄⠀⣀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡼⠋⣨⠏⢀⣤⠔⠁⠀⠀⢀⡼⠁⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⣿", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣇⡼⠉⢀⠞⠀⠀⠀⠀⢀⡞⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿", - "⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⠟⠁⢠⡟⠀⠀⠀⠀⠀⡘⠁⠀⠀⠀⠐⣿⠀⠀⠀⠀⠀⠀⠀⢀⡿⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹", - "⠀⠀⠀⠀⠀⠀⠀⠀⣼⡟⠀⣠⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⡀⠀⠀⠀⠀⠀⠀⢸⠁⢻⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⢀⡟⠀⣰⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠏⢸⡇⠀⠀⠀⠀⠀⠀⢸⠀⠀⢻⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⡼⠀⢠⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣻⠋⠀⠀⡇⠀⠀⠀⠀⠀⠀⣸⠀⢦⠀⠹⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰", - "⠀⠀⠀⠀⠀⠀⡸⠁⢠⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠷⠶⠦⣤⡇⠀⠀⠀⠀⠀⠀⣿⠀⠈⢣⠀⠘⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸", - "⠀⠀⠀⠀⠀⣰⠃⢀⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⠋⠀⠀⠀⠀⣇⠀⡇⠀⠀⠀⠀⡟⠀⠀⠀⠑⠄⠈⢷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⢰⠃⢀⣼⠃⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⡏⠀⠀⠀⠀⠀⢹⣰⣿⡄⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⣀⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠃⠀⠚⠁⢠⡌⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⣷⣿⣷⣶⣦⡀⢸⣏⡏⢷⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠁⠀⠙⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⡾⠀⢨⡇⠀⠀⠀⠀⠀⠀⠀⢰⣿⠋⢡⠉⢻⣿⣿⣿⣦⣹⡇⠸⣆⠀⠀⣇⠀⠀⠀⠀⠀⠀⢀⣠⠄⠈⢳⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⢰⠇⣀⣿⡇⣄⠀⠀⠀⠀⠀⢸⣿⡟⠀⣼⣿⣿⠟⢿⣿⣿⣿⠇⠀⢻⣆⠀⢸⠀⠀⠀⠀⠀⠶⣉⣠⣶⣾⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⣿⠀⣿⡿⠁⢿⠀⠀⠀⠀⠀⣼⡟⢷⠀⢻⠻⣇⡀⣸⣿⡿⠁⠀⠀⠀⢻⡀⢸⠀⠀⠀⠀⠀⣶⠿⠿⣿⣿⣿⣿⣿⡿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⡟⠀⣿⠇⠀⢸⡆⠀⠀⠀⠀⢻⣿⠀⠃⠘⢧⣉⣋⣉⡿⠃⠀⠀⠀⠀⠀⠻⣼⡀⠀⠀⠀⠀⠩⣦⣴⡿⠛⠛⣿⣽⡿⠙⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠁⢸⡟⠀⠰⠸⣇⠀⠀⠀⠀⣾⣿⡄⠀⠀⠀⠈⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠙⠧⠀⠀⠀⠀⠀⣿⢿⣷⣤⣠⡿⣻⠇⠀⣼⢿⣦⣴⡆⠀⠀⠀⠀⠀⠰⡄⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠸⠃⠀⠀⡆⢻⠀⠀⠀⢰⡏⢿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠜⠶⣬⣭⣥⡴⠋⠠⠞⠁⣰⣿⣿⣷⡀⠀⠀⠀⠀⢀⡇⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢱⡸⣇⠀⠀⣸⠁⢸⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⡿⠉⣿⡿⣧⠀⠀⠀⠀⣽⡅⠀⢇⡀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠇⢻⡇⢀⡏⠀⢸⡏⢻⣄⠀⠀⠀⠀⠀⠀⢠⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⡿⠁⠀⢸⣧⣿⡄⠀⠀⠀⡟⡇⠀⣾⠁⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢷⣾⡇⠀⢸⡇⠀⠙⢷⣄⠀⠀⠀⠀⠈⣏⠉⠉⠓⠒⠤⣤⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⠃⠀⠀⣰⣿⣿⣷⡀⠀⢰⠇⡇⢠⡇⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⢀⡀⢀⣸⣟⣿⡀⢸⡇⠀⠀⠀⠉⠳⣦⡀⠀⠀⠈⠳⢤⣤⣤⡴⠛⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⠇⠀⠀⣼⣟⢻⣿⣿⣇⠀⢸⠀⡇⣾⠃⠀⠀", - "⠀⠀⠀⢀⣤⠖⠋⠉⠉⠉⠉⠉⠉⠁⠈⠙⢷⣸⣷⠀⠀⢀⣠⡶⠋⠉⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣠⣴⡾⠻⣿⣿⣿⡿⠀⢠⠾⠛⠛⠛⣿⣿⣿⡀⡏⠀⣷⠏⠀⠀⠀", - "⠀⠀⢠⠏⢁⠏⠀⠀⣰⡇⠀⠀⢠⡇⠀⠀⡄⠈⢻⣦⣤⣾⠁⠀⠀⠀⠈⠿⣝⠶⣄⣀⠤⠤⠖⣲⠟⠋⠁⠀⠈⣻⢷⣤⣿⣿⣿⠃⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠏⠀⠀⠀⠀", - "⠀⠀⡎⢀⣼⠀⠀⢠⡻⠀⠀⢀⣿⠀⠀⢰⠃⠀⢸⠃⠀⢸⡆⠀⠀⠀⠀⠀⠈⠳⣄⠀⣠⠴⠛⠁⠀⠀⠀⠀⢹⠇⡜⠛⠿⠿⣯⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀", - "⠀⢸⠃⣼⡇⠀⠀⣾⡇⠀⠀⢸⠃⠀⠀⡎⠀⠀⣎⠀⢠⡟⠃⠀⠀⠀⠀⠀⠀⠀⢿⠟⠁⠀⠀⠀⠀⠀⠀⠀⡜⢹⡇⠀⠀⠀⡾⠃⠀⠈⠉⠙⠻⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⣯⣀⣀⣼⡟⠀⠀⣠⠏⠀⠀⣰⠃⠀⣸⠋⣷⣿⠀⠐⠀⠀⠀⠀⠀⠀⢀⣨⣤⡀⠀⠀⠀⣰⠚⠀⠀⠁⠀⣷⠀⠀⠈⠁⠀⠀⠀⠀⠀⠀⠀⠉⢻⣿⡇⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠸⢤⣠⢾⡁⠀⣠⠴⣏⣄⡀⠀⢀⡿⠃⠀⢀⠀⠀⠀⠀⢀⡾⠋⠉⠉⠛⣆⠀⢠⡏⠀⠀⠀⠀⠀⠸⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣧⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠉⠉⠁⠀⠀⠀⠉⠛⣻⠀⠀⠀⠈⠀⢀⣀⠤⢻⠀⠀⠀⠀⠀⣿⡆⠘⠇⠀⠀⠀⠀⠀⠀⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣆⠀⠀⠀⠀⠀⠀", - "⢀⠀⢀⠀⣀⣀⣀⣀⣀⣼⣀⡀⠀⢠⣀⣀⡀⣈⡅⠀⠀⠀⠀⠀⠈⠀⠀⠈⢷⡀⠀⠀⣠⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⡼⠷⠤⠀⠀⠀⠀", - ], - vec![ - "⠀⠀⠀⠀⠀⢀⡞⡼⠋⠀⠀⣤⣦⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⢿⡟⢟⢻⣍⠉⠙⣿⣿⣿⣶⣿⣿⣿⣿", - "⠀⠀⠀⠀⢀⡞⣼⠃⠀⢀⣾⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢤⡙⣷⡄⠈⢣⡻⣿⣿⣿⣿⣿", - "⠀⠀⠀⢀⡞⣸⠏⠀⢠⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠈⠛⣿⣶⡀⢳⡝⣿⣿⣿⣿", - "⠀⢠⠆⡾⢰⡏⠀⣰⣿⣿⣿⣿⣿⠁⠀⠀⠀⢀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣷⣀⠀⠀⠈⢿⣷⣼⣿⡄⣿⣿⣿", - "⠀⠘⢸⣥⣿⠁⣰⣿⣿⣿⣿⣿⡟⢰⠀⠀⢀⡞⠀⠀⠀⢀⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⢿⣷⣄⣠⣾⡟⠙⠻⣿⠹⣿⣷", - "⠀⠁⠈⣿⣧⣴⣿⣿⣿⣿⣿⣿⠇⠈⠀⠀⢰⠃⠀⠀⠀⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⣹⣿⣿⣯⣧⡄⠀⠈⢧⠹⣿", - "⠀⠀⠀⠉⠈⠻⣿⣿⡟⢻⣿⣿⠀⠀⠀⡄⡎⠀⠀⠀⣼⡟⢷⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡯⣾⠿⠁⠙⢿⣿⡇⠀⠀⠸⣷⡈", - "⠀⠀⠀⠀⠀⢠⣿⣿⡇⠸⣿⡏⠀⠀⠀⣇⠃⠀⢠⣾⣿⠃⣿⠠⡄⠀⠀⠀⠀⠀⠀⠀⠀⣠⠖⢸⠁⡇⠀⠀⠀⠁⠀⡇⠀⠀⠀⣿⠀", - "⢠⠀⠀⠀⠀⢸⣿⣿⣿⡀⢿⡇⠀⠀⠀⣿⣀⡴⢃⠟⠁⠀⢿⡇⢧⣀⠀⠀⠀⠀⠀⠀⢠⠗⢲⣿⢲⡗⠀⠀⠀⠀⠀⠐⠀⠈⢷⣿⠀", - "⡈⠀⠀⠀⠀⣼⣿⣿⡿⢃⢸⡇⡇⠀⠀⢿⠛⠠⠋⠀⠀⠀⠘⣿⣌⢿⠀⠀⠀⡆⠀⢀⡏⢀⡞⣹⡏⢳⠀⠀⠀⠀⠀⠘⠀⢀⠸⠟⠂", - "⣿⠀⠀⠀⠀⣿⣿⣿⣿⢸⡆⠃⣇⠀⠀⠸⡤⠷⠶⢶⣴⣶⣄⠈⠛⣎⣇⠀⠀⡇⢀⣾⢁⠞⠀⡿⠁⢹⠀⠀⠀⠀⠀⠀⠀⢸⣦⡀⠀", - "⣿⠀⠀⠀⢰⣿⣿⣿⣿⠀⡇⣌⢻⡀⠀⠀⢱⡀⠀⠀⠈⠙⠻⠀⠀⠈⠙⢶⡀⢳⠎⢘⣸⣶⣾⣧⣄⠀⡇⣦⠀⠀⠀⡀⠀⠀⢿⣧⠀", - "⣿⠀⠀⠀⢸⣿⡿⣿⣿⡇⢱⠘⣤⣱⡀⠀⠈⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠻⣴⣿⣿⣿⣿⡙⢿⣷⣇⢸⠀⠀⠀⡇⠀⠇⢸⣿⡄", - "⣿⠀⠀⠀⢸⣿⡧⣿⣿⣧⠸⡀⢻⡍⠱⡄⠀⠈⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⢏⣙⡿⠋⠀⢈⣽⣿⣿⡆⠀⠀⣿⠀⠀⠀⡇⠇", - "⢹⡀⠀⠀⢸⣿⡇⢸⡿⣿⡄⡇⠈⢣⠀⠙⡄⠐⡀⠀⠤⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠀⢠⣾⣟⣿⣿⣹⣄⢠⡿⠀⠀⠀⠀⠀", - "⢸⡇⠀⠀⣾⠟⠃⢸⡇⢻⣿⡇⠀⢀⡡⠖⣻⣆⠘⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⢁⣾⣿⠿⠋⣹⢿⣄⠀⠀⠀⠀⠀", - "⢸⡇⠀⠀⡍⠀⠀⢸⡇⠈⢿⡷⠞⠁⢀⡼⠋⣿⣷⢤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⡟⢻⣿⡿⠁⣠⣾⡷⠾⢿⡇⠀⠀⠀⠀", - "⠘⣷⠀⠀⠀⠀⠀⢸⡷⣶⠏⠀⢀⡴⠋⠀⢀⣿⣿⡀⠙⠢⣀⠀⠀⢀⣀⣀⣤⣴⣶⣿⣿⣿⠃⢰⡟⠁⣰⠟⠁⣠⣴⣿⠀⠀⠀⠀⠀", - "⠀⣿⡀⠀⠀⣠⢞⣥⡾⠁⢀⡴⠋⠀⠀⢀⣾⢡⣿⡷⣤⣀⣈⣉⣉⣠⣿⡿⢋⣭⠥⣶⠞⠁⠠⠫⠤⢼⣁⣠⣾⣟⣿⣿⡆⠀⠀⠀⠀", - "⠀⣿⡇⠀⢸⡏⢿⡿⠁⠀⠊⠀⠀⠀⠀⡾⢁⣾⠟⠙⠛⠿⠿⠿⢿⣿⢏⡴⠋⢀⣴⠷⠾⠒⡑⠒⠒⠤⣈⣿⣿⣿⣿⣿⠇⠀⠀⠀⠀", - "⠀⢹⣿⠀⠸⡇⢸⣉⠓⠲⢤⣄⣀⣀⡤⠖⠋⠀⠀⠀⠀⠀⠀⣼⣿⢋⡞⣡⣴⡟⣹⠀⠀⠀⠀⢉⡶⠄⠈⣿⣿⣿⣿⣿⣷⡀⠀⠀⠀", - "⠀⠸⣿⣆⢀⡏⠒⠬⣍⣓⠲⢬⣿⣦⣄⠀⠀⠀⠀⣀⠀⠀⣸⣿⣇⣾⣿⣿⣿⡇⡿⣄⠀⣠⠔⠉⠀⠀⣰⣿⣿⠋⣩⣿⡿⣷⠀⠀⠀", - "⠀⠀⣿⣿⣸⣷⡄⠀⠀⢠⣉⠓⢬⡙⢿⣷⣄⠀⠀⠀⠙⢲⣿⣿⣿⣿⣿⣿⣿⢠⡇⠈⡷⢤⣀⡀⢀⣰⡿⣿⣿⣿⠋⠀⡇⢿⠀⠀⠀", - "⠀⠀⢸⣿⠏⡾⣿⣦⣄⣀⠙⢿⣶⣽⣦⣝⢿⣷⡀⠀⢀⣿⢿⣿⣿⣿⣿⡿⢿⣾⠗⢀⡇⠀⠀⠉⠉⡝⠀⣿⣿⣿⠀⠀⡇⢸⠀⠀⠀", - "⠀⠀⠈⣿⢰⡿⠋⠙⠻⢿⣿⣶⣿⣿⣿⣿⣦⣹⣷⡄⣸⣿⣿⣿⣿⣿⠋⣰⣿⣿⣇⣸⠀⠀⠀⠀⠀⡇⢸⣿⣿⣿⣆⠀⠃⠈⠀⠀⠀", - ], - vec![ - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣤⣤⡤⢤⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡾⠋⢲⡄⠀⠀⠀⠁⠀⠀⠀⠉⠳⣮⠷⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⣤⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⡿⠋⠀⠀⠀⠙⣆⠀⢀⣠⣴⣶⣿⣿⣿⣿⣷⣿⣿⣿⡗⠲⠶⢤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠹⡄⠀⠀⠀⠀⠀⠀⠀⠀⣸⡿⠁⠀⠀⠀⠀⠀⣸⣿⡿⠟⠛⣩⡴⠋⠁⠈⣻⠛⢧⡉⠛⠷⣄⡀⠉⠛⢦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⢱⠀⠀⠀⠀⠀⠀⣠⣾⡟⠛⠦⣤⡀⠀⣠⣾⠟⠋⠀⢠⡾⠋⣀⠀⠀⡼⠁⠀⡆⠹⡄⠀⠈⠳⣅⠀⡀⠙⢧⡀⠀⠀⠀⠀⠀⠀⠀⣀⣠⣤⣶⠆⠀⠀⠀⠀", - "⠀⠀⠘⡄⠀⠀⠀⠀⡼⠋⡏⠀⠀⠀⠀⠉⣵⠟⠁⠀⠀⣴⠏⠀⣰⠁⠀⢰⠃⠀⠀⡇⠀⢻⡄⠀⠀⠙⣦⠈⠳⣄⠹⣄⠀⠀⠀⣠⣴⣾⣿⣿⣿⣤⣄⠀⠀⠀⠀", - "⠀⠀⠀⣷⠀⠀⠀⢰⠇⢀⣇⠀⠀⠀⢀⡼⠋⠀⣴⠖⠛⣱⠀⣰⠃⠀⡄⢸⠀⢠⠀⡇⠀⠘⣿⡀⠀⠀⠘⣧⠀⠈⢳⣜⣧⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⠄⠀⠀⠀", - "⠀⠀⠀⢻⡀⠀⠀⢸⠀⣸⠻⣆⢀⣴⡯⠀⢀⡞⠁⠀⣰⠃⣰⠃⠀⣼⠀⡏⠀⣸⠀⡇⠀⠀⣧⠷⡄⠀⠀⡘⣇⠀⢦⣝⣿⣿⣿⣿⣿⠟⠏⠀⠘⢿⣀⠀⠀⠀", - "⠀⠀⠀⢸⡇⠀⠀⡟⢠⡏⠀⣹⣿⡞⠁⢀⡞⠀⠀⣴⠇⣼⡟⠀⢠⠃⢠⣇⠀⣷⠀⡇⠀⠀⣿⠀⢹⠀⠀⠘⡘⣦⠀⠉⢻⣿⣿⣿⣿⣿⠀⠀⠀⠀⣨⣟⠁⠀⠀", - "⠀⠀⠀⣼⣿⠀⢰⡇⣼⠁⢸⣿⣿⠃⢀⣾⠀⠀⡼⢹⢱⠃⡇⠀⡼⠀⢸⣿⠀⣿⣄⡇⠀⠀⣿⠀⠈⡇⠀⠀⢣⠙⡆⠀⠘⣿⣿⣿⣿⣷⣷⠒⠚⠋⠁⣹⣷⠀⠀", - "⠀⠀⠀⣿⠙⡆⢸⣧⡏⠀⣿⡟⡟⠀⡾⡋⠀⡾⠓⢺⡟⢴⣧⠀⡇⠀⠸⣿⣆⢻⠻⣷⠀⠀⣿⠀⢰⢹⡄⠀⠘⡆⢹⡀⢀⣿⡿⣿⣿⣿⣷⡲⢶⣶⣖⠛⠋⠀⠀", - "⠀⠀⠀⣿⠀⣧⢸⣿⠀⢸⣿⣴⠇⡼⠀⣇⡾⠁⠀⢸⡇⠀⡇⢀⡇⠀⠀⣿⡟⢮⣦⣸⣄⠀⣿⠀⢸⡘⣧⠀⠀⣷⠀⣷⠈⣿⣀⣨⡏⠙⢿⠷⣿⣿⡿⠷⣆⠀⠀", - "⠀⠀⠀⡿⠀⣿⢸⡏⠀⣼⣿⣿⢀⡇⠀⣿⣷⣿⣶⣾⣗⠀⢹⣼⡇⠀⠀⢸⡇⠈⠻⣝⣿⠻⢾⡄⠈⡇⢻⡀⠀⢻⡄⢹⣾⡏⠙⠿⠟⠻⣿⡷⢽⣿⣦⣀⣼⣷⠄", - "⠀⠀⢸⡇⠀⠸⡿⠁⢀⣿⠁⡿⣾⡇⢘⣿⡟⣿⣟⣿⡟⢷⡈⣿⣿⡀⠀⠈⡇⠀⠀⠈⠻⣦⣼⣏⠹⡇⠀⣧⠀⢸⣇⠈⣿⠷⣾⣿⣆⣤⣯⡀⣀⣿⣇⡼⠟⠉⠀", - "⠀⠀⢸⠁⠀⠀⡇⠀⢸⣿⠀⣿⣿⣷⡀⡇⠀⣿⢿⡿⠇⠈⠁⠈⢯⣷⡄⠀⣟⣭⣷⣶⣶⣮⣿⡸⣆⣳⠀⣿⠀⠘⣿⠀⣿⣄⣼⡏⠀⣹⣿⣭⡿⠿⠋⠀⠀⠀⠀", - "⠀⠀⣿⠀⠀⠀⡇⠀⢸⣿⠀⠸⣿⣯⣷⣳⡀⠘⠛⠋⠀⠀⠀⠀⠀⠀⠙⢦⣇⣾⣿⣿⣿⡎⢿⣗⣹⣷⠀⣿⡇⢠⣿⣤⡇⠠⡿⣿⠋⢹⠂⣿⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⡏⠀⠀⠀⡇⠀⢸⣿⠀⠀⠻⣿⣿⠹⢷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢧⡻⠟⠻⠇⢈⡟⢻⣷⠀⢁⡇⣼⢿⣿⠂⢰⠇⡟⠀⣸⡆⢸⠀⠀⠀⠀⠀⠀⠀", - "⠀⢰⡇⠀⠀⠀⡇⠀⠸⣿⠀⠀⠀⠉⣿⣆⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠛⠻⠭⠌⠋⢠⡿⡇⢠⣼⣿⣿⣸⡟⠀⣸⠀⠇⣰⠏⣷⣾⠀⠀⠀⠀⠀⠀⠀", - "⠀⢸⡇⠀⠀⠀⡇⠀⠀⣿⠀⠀⠀⢀⡇⠘⢦⡀⠀⠀⠠⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣼⡇⢰⣿⣿⡿⢻⠀⢀⡇⢠⡼⠃⠀⣿⣿⠀⠀⠀⠀⠀⠀⠀", - "⠀⣸⠁⠀⠀⣸⡷⠿⢦⣽⣀⠀⠀⢸⠁⠀⠀⠹⣦⡀⠀⠀⠉⠉⠉⠉⠁⠀⠀⠀⠀⠀⢀⣠⠾⣿⣿⣠⠟⢡⡟⠀⢸⠀⠘⢀⡾⠁⠀⠀⢿⡏⠀⠀⠀⠀⠀⠀⠀", - "⣤⡇⠀⠀⠀⣿⠲⣆⠀⠀⠉⢛⣶⣯⣤⣤⣠⣤⣼⢷⣦⡀⠀⠀⠀⠀⠀⢀⣀⣤⡤⠶⠋⠁⠀⣸⠟⠁⠀⠋⠀⠀⢸⣦⣷⠞⡇⠀⠀⠀⣸⡇⠀⠀⠀⠀⠀⠀⠀", - "⣿⠃⠀⠀⢀⣿⡄⢿⠉⢳⣶⢿⣿⣿⣿⣿⣿⡿⠃⢸⣿⠙⠓⠒⠒⠊⠉⢉⡽⢿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⡎⢀⡇⠀⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀", - "⣿⠀⠀⠀⢸⠙⣧⠘⣿⠭⢥⣸⣿⣿⣿⣿⣿⠃⠀⠀⠻⣧⡀⠀⣀⡤⠞⠋⠀⢸⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⢰⠀⠀⠀⠀⢿⠁⠀⠀⠀⠀⠀⠀⠀", - "⡏⠀⠀⠀⡿⡄⡸⡖⢿⣷⣶⣾⣿⣿⣿⣿⡇⠀⠀⠀⣀⣈⣻⡻⠝⠒⠁⠀⠀⣸⣿⣿⣷⣦⣄⡀⠀⠀⠀⠀⠀⠀⢸⡟⠀⠈⠀⠀⠀⠀⣾⠀⠀⠀⠀⠀⠀⠀⠀", - "⠁⠀⠀⣸⠃⠙⣧⠸⡄⠹⣍⠉⣿⠛⡿⢿⣀⡤⣖⣋⣩⡿⢻⠻⡄⠀⠀⠀⢰⣿⣿⣿⣿⡿⢹⡏⠉⠙⠒⠢⣄⣀⣸⠃⠀⠀⠀⠀⠀⠀⢻⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⢠⠏⠀⠀⣹⡀⠙⢦⡉⣿⣿⡾⠁⠀⠀⣀⠝⣿⠋⣀⣈⢧⡹⡖⠀⢀⣿⣿⣿⣿⡿⠃⢰⡷⢤⣀⣀⠀⠀⠙⢿⡆⠀⠀⠀⠀⠀⢰⢸⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⢠⡟⠀⢀⠶⢹⠇⢠⡎⠁⣿⣽⠃⠀⠀⠈⠀⠀⢸⣿⡿⠟⠉⠉⠙⢦⠞⣸⣿⡿⠿⣭⣉⠛⢶⡤⣽⣎⠙⡗⠦⣈⣧⠀⠀⠀⠀⠀⢸⡘⡇⠀⠀⠀⠀⠀⠀⠀", - "⢀⡞⢀⡴⠃⠀⢸⠀⡞⠀⢸⣟⣿⣄⣀⠀⠀⠀⠀⠘⠛⠀⠀⠀⠀⠀⠀⠀⡟⢷⠀⠀⡘⡫⣳⣄⢹⡄⣸⠛⢻⢦⣼⣿⡀⠀⡇⠀⠀⠈⣷⢻⠀⠀⠀⠀⠀⠀⠀", - "⣾⠐⠋⠀⠀⠀⣾⢸⠁⠀⢸⣽⠁⠀⠩⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣵⣷⣄⣠⣭⠀⢈⣿⣾⣇⡏⠉⢻⠀⠈⢿⠀⠀⡇⠀⠀⠀⣿⡞⣇⠀⠀⠀⠀⠀⠀", - "⠋⠀⠀⠀⠀⢀⡇⠘⠀⠀⣿⡇⠀⣀⠀⠀⠊⢳⡀⠀⠀⣀⣀⣀⣀⡀⢰⣯⣸⡋⠁⠻⠟⠑⢿⡟⢻⡙⠀⠀⢸⠀⠀⠈⡇⠀⢹⠀⠀⠀⢸⣷⢻⡀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⣾⠁⢰⠀⠀⣿⠁⢺⣿⡧⠀⠀⠐⠹⠞⠉⠁⠀⠀⠊⠉⣿⠻⣿⠿⢶⣿⡦⣴⣾⣧⠏⠀⠀⠀⢸⠐⠀⠀⢧⠀⢸⠀⠀⠀⠈⡟⣏⣇⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⢠⣿⣀⡏⠀⠀⣹⡄⠀⠀⠀⠀⠀⠀⠀⠀⢠⣶⣶⠀⠀⢰⢧⣶⣷⣄⣤⣯⠀⣸⢿⡿⠖⣆⠀⠀⢸⠀⣀⡤⣼⠀⢸⡇⠀⠀⠀⢷⢹⣸⡄⠀⠀⠀⠀", - "⠀⠀⠀⠀⣸⣿⡅⠀⠀⠀⠈⣳⣀⠀⠀⠀⠀⠀⠀⠀⠀⣉⡉⠀⢠⣇⣀⣽⡋⠈⢻⢟⡿⣡⠞⠀⠀⠈⠓⢲⠞⠋⣀⢴⡟⠀⠈⡇⠀⠀⠀⢸⣄⣯⣧⠀⠀⠀⠀", - ], - vec![ - "⠀⠀⠀⠀⢰⣿⣿⣿⣿⡿⠁⠠⢀⣿⡙⣎⠁⠀⢀⠀⣯⠰⠀⡀⠰⢹⡋⢍⢿⣿⡹⢿⣏⢷⢹⠨⣁⠋⡙⢻⣿⣏⣏⠳⠄⠀⢹⠰⡁⢏⡿⣧⠀⠀⠀⠀", - "⠀⠀⠀⠀⣹⣯⣿⣿⣿⠃⡈⡴⢹⣇⠳⠈⢀⠐⠀⢂⡇⢂⠁⢀⠂⡏⠌⢆⠘⣷⢯⡹⣿⠞⡆⠆⠀⠈⠀⠁⠹⣞⡦⡁⢊⠀⠌⡱⠀⡈⢽⣛⡆⠀⠀⠀", - "⠀⠀⠀⠀⣼⣷⣞⣿⠇⡚⣼⠁⣿⢨⡑⠈⡀⠄⠡⣘⡇⢀⠂⠠⢸⠌⠀⠈⡀⠈⢿⡱⢿⣿⡸⡄⠀⠀⠀⠀⠀⠘⣷⠡⢀⠂⢦⠑⠠⠐⢸⣻⡇⠀⠀⠀", - "⠀⠀⠀⠀⣿⣿⢾⡟⢬⣱⡏⣴⣏⠖⡠⠁⠄⡈⢰⡱⡇⢀⠂⠡⡍⠀⠀⠀⠴⢄⣈⢿⡜⡿⣕⠲⠀⡀⡠⠔⠒⠉⠸⣗⠄⠂⢱⡘⠠⠁⢂⠿⣽⠀⠀⠀", - "⠀⠀⠀⠀⣿⣿⣻⢍⣶⡻⢼⣽⣎⠳⣔⡣⡔⢦⣏⡷⡇⠠⠈⣴⠃⠀⠀⠀⠀⠀⠀⠉⢷⡹⢻⡄⢣⠀⠀⢀⠤⣀⣦⣹⣞⡄⠘⡆⠡⠐⢈⠺⣝⠀⠀⠀", - "⠀⠀⠀⠀⣿⣿⡏⡼⣞⡏⣿⣿⡜⣣⢿⣱⢛⡾⣽⣻⡇⠠⢁⣿⣶⣶⣤⣄⡉⠳⡄⠀⠀⠙⡄⠹⡄⡄⠀⣱⡿⠟⠛⠻⣿⡶⡀⣏⠐⡀⣢⠸⣝⡆⠀⠀", - "⠀⠀⠀⠀⣿⣿⣱⣻⣽⡇⣿⣷⣙⡞⣧⣏⢯⣿⢷⣻⣧⠐⣸⠛⠉⠉⠉⠛⢿⣦⡀⠀⠀⠀⠀⠀⠙⡴⣰⣿⣶⣷⣦⡀⠘⣿⡄⡧⠐⢠⠙⡖⣭⡇⠀⠀", - "⠀⠀⠀⢠⣿⢧⢷⣛⡽⡇⣿⡧⡇⢽⣳⣞⣻⣾⢿⣻⣿⠀⣿⣾⣿⣿⣷⡄⠀⠙⠃⠀⠀⠀⠀⠀⠀⠘⢆⣿⣿⣿⣿⠇⠀⣿⣷⡗⠠⠘⠀⠈⠳⣇⠀⠀", - "⠀⠀⠀⢸⣿⢺⣟⡧⡗⣇⣿⣽⡇⢚⣷⣞⣯⣿⣟⣿⢿⣷⡿⣿⣿⣿⡿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠉⠛⠠⠀⢰⣿⣿⡕⢀⠃⠀⠀⠀⠙⠀⠀", - "⠀⠀⠀⢸⣯⣟⣿⣳⠇⡇⣿⣿⡇⢘⣷⣿⣿⣿⣻⣯⢿⢿⡇⠁⠉⠋⠁⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠐⠂⠈⢠⣿⣿⣏⠀⠆⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⣾⣿⡽⣾⣭⡇⣏⣿⣿⣷⠀⣿⣿⣿⣿⣿⣳⢿⠘⡏⠀⠀⠀⠂⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣷⠸⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠈⣾⢯⣷⣻⢖⡇⣾⣽⣿⠙⣧⢜⣿⣿⣿⣿⣯⢿⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⡟⣯⣟⣆⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⣟⡾⣭⣟⡞⡇⣽⣿⣿⠀⠹⡜⣿⣿⣿⣿⣿⣾⠟⠢⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡴⡀⠀⠀⠀⠀⣀⢾⣟⠧⡏⣿⢻⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⣯⢷⣟⢾⡹⡇⣾⢹⣯⠀⠀⠘⣽⣿⣿⣿⣷⡿⢦⡀⠐⣂⡀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠍⠘⠁⠀⠀⠠⢚⠀⢈⡾⣓⡇⢯⡚⡄⠀⠀⠀⠀⠀⠀", - "⠀⠀⢀⣯⡿⣏⣾⡱⡇⣿⠠⣿⠀⠀⠀⠈⢾⣿⣿⣿⣿⠈⠻⠿⣿⣿⣑⣆⠠⣀⣤⣶⣶⣶⣶⣶⣄⡀⠔⠁⠀⠀⡆⠠⣟⢸⠄⢳⡁⡇⠀⠀⠀⠀⠀⠀", - "⠀⠀⢸⣷⡿⣏⢶⣹⢣⣿⠀⢿⠀⠀⠀⠀⠀⢻⣿⣿⣿⠀⠀⠀⢀⡝⠙⠻⣟⠿⢿⣿⣯⣿⣷⣿⠏⠁⠄⡀⠀⠀⣇⠀⢻⣏⠂⢸⡁⣇⠀⠀⠀⠀⠀⠀", - "⠀⠀⣸⣯⢿⡜⣧⢻⠼⣿⠀⠀⠀⠀⠀⠀⠀⠀⣻⣿⣳⡄⠐⠂⢹⡑⢦⡀⡜⡢⣌⠉⠁⣠⢮⢡⢢⡜⢾⢸⠐⠂⠸⠤⠽⣎⡔⢠⢓⢸⠀⠀⠀⠀⠀⠀", - "⠀⠀⣿⣟⡿⡜⣧⢻⣜⡇⡖⠀⠀⠀⠀⠀⡠⠊⠈⠟⣯⠇⠀⠀⡔⢉⠶⡱⣭⢳⡝⣗⣾⡝⣮⢳⢧⡞⢹⢂⠀⠀⠀⠀⠀⠀⠑⢮⡣⠼⡆⠀⠀⠀⠀⠀", - "⠀⢠⣿⡞⣽⡝⣮⢹⢜⡆⠁⠀⠀⠀⢠⠊⠀⠀⠀⠀⠹⣇⠀⣰⣿⠻⡘⡵⣩⢷⣫⡽⢧⣻⣜⡯⢏⡔⢌⠎⡆⠀⠀⠀⠀⠀⠀⠀⠙⣆⢧⠀⠀⠀⠀⠀", - "⠀⠈⣿⡝⣾⡝⣮⢹⣎⢧⠀⠀⢀⠔⠃⠀⠀⠀⠀⠀⠀⠉⢀⣿⣽⣷⡏⢶⡹⣾⠁⠠⠀⠌⣅⠸⢘⡹⣸⠀⢻⡀⠀⠀⠀⠀⠀⠀⠀⠘⠷⠀⠀⠀⠀⠀", - "⠀⢸⣷⢻⣼⡳⣍⢾⣿⢺⡅⠀⠤⠂⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⢾⣷⣻⣷⣿⣿⣜⣡⢞⣰⠓⠷⡤⣥⠗⢸⠈⢧⠀⠀⠀⠀⠀⠀⠀⠀⠈⡑⡀⠀⠀⠀", - "⠀⣼⣏⠷⣎⡷⡭⣞⣯⠽⣇⠊⡄⠀⠀⠀⠀⠀⠀⠀⠀⢲⣿⣯⣿⣟⢯⣿⠿⣛⡏⡞⢮⣽⡈⠆⠈⠁⢀⠘⡀⠸⡧⠀⠀⠀⠀⠀⠀⠀⠀⠰⠠⡀⠀⠀", - "⠀⣿⣎⠿⣜⣳⣓⣯⣟⢦⠇⡐⠀⠀⠀⠀⠀⠀⡐⡑⣆⣿⡿⣽⡿⠮⠇⠋⠱⢌⣿⣹⢳⡞⠐⠀⠀⠀⠂⠌⡀⠀⢿⣰⢯⡄⠀⠀⠀⠀⠀⠀⣽⣓⡀⠀", - "⢸⣽⡞⣽⢫⡷⡭⣿⡾⡇⣰⠀⢀⠀⡀⢀⢀⡠⣢⠃⣻⢿⡽⠟⠁⠀⠀⠀⠀⠈⣷⣯⢷⣻⠀⠀⠀⠀⠈⡔⠠⠀⠸⡿⡰⣞⣄⠀⠀⡀⠀⠀⢩⢞⠑⡄", - ], - vec![ - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣠⣤⣤⣤⣀⣀⡀⠀⠀⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢄⢀⠀⡀⣠⣴⣾⣿⠿⠟⠛⠛⠛⠿⠿⠿⠽⠿⠿⠿⠿⠿⢶⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡿⡵⣯⣾⣿⣿⠟⠉⢀⣤⠶⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⢫⣮⢿⣿⡿⠛⠁⠠⠔⢋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠈⠻⣷⣦⠠⣃⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⢟⣵⡿⢻⡿⠋⠀⠀⣠⢴⡾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠈⢻⣷⣏⢫⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⢸⣿⣠⠋⠀⡠⣪⢞⡵⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣧⡻⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡟⡙⢾⣿⣸⡟⠁⠀⢠⠞⠁⠋⠀⠀⡴⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣷⡹⣷⡄⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠁⡇⢸⣿⠋⠀⢀⡶⠃⠀⠀⢠⠃⠜⠁⠀⣀⠀⠀⠀⠀⢀⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠨⣿⠏⣿⣇⡀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡏⠀⡄⡼⠁⠀⢀⣾⠁⠀⠀⠀⡜⡸⠀⠀⣰⢻⠀⠀⠀⠀⢸⠉⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣆⠀⠀⠀⠀⠀⢿⢸⣿⢻⢱⡄⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠁⢀⡟⠀⢠⢃⣾⠇⠀⠀⠀⢰⠁⠀⠀⣰⢃⢸⡄⡄⠀⠀⢸⢀⠘⢧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡄⢸⠀⠀⠀⢸⣾⠃⠈⠈⡇⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡎⢠⠞⠀⡰⠃⣼⠏⠀⠀⠀⠀⡜⠀⠀⢰⠃⠉⠸⡇⣧⠀⠀⢸⠈⢦⠘⢷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢱⡀⠁⠀⠀⢸⡿⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣵⠃⠀⢰⠁⣼⠏⠀⠀⠀⠀⢀⠇⠀⢠⠟⠒⠒⠴⣷⣿⡀⠀⢸⠂⠀⠱⣄⠻⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢧⠀⠀⠀⠈⠀⠀⠀⠀⠣⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⣠⡾⢋⠀⢀⠇⣸⠏⠀⠀⠀⠀⠀⡸⠄⢀⠎⠀⠀⠀⠀⠸⣇⢣⠀⢸⡄⠀⠀⠈⡴⠞⣆⠀⠀⠀⠀⠀⠀⠀⠀⠘⡆⠀⠀⠀⠀⠀⠀⠀⢰⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⢀⡾⢟⡇⡘⠃⡜⣼⣯⠀⠀⠀⠀⠀⠀⡇⢀⡞⠀⠀⠀⠀⠀⠀⢻⠈⢧⠸⡇⠀⠀⠀⠀⠀⠙⢆⠀⠀⠀⠀⠀⠀⠀⠀⢹⡀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠐⠉⠀⡸⠀⠃⢰⣻⣯⠇⠀⠀⠀⠀⠀⢸⢁⣾⣤⣀⠀⠀⠀⠀⠀⠀⠀⠈⢷⡇⠀⠀⠀⠀⠀⠀⠈⠧⡀⠀⢠⠀⠀⠀⠀⠀⢧⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⢀⣷⢣⠎⠀⠀⠀⠀⠀⠀⢹⡞⠀⠉⠛⠿⣶⣬⡒⠄⠀⠀⠀⠈⠋⠀⠀⠀⣀⡀⠀⣀⣀⣼⣦⡀⢇⠀⠀⠀⠀⠸⣧⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⣼⣯⠏⢀⣀⡀⠀⠀⠀⠀⢸⡇⢰⠿⠿⠿⠟⠛⠛⠃⠀⠀⠀⠀⠀⠀⠀⣯⣴⣾⡿⠛⠛⠉⠉⠳⡞⡆⠀⢀⣀⢰⠻⣆⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⣿⠋⠀⡜⠀⡇⠀⠀⠀⠀⢸⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠛⠿⢷⣶⠀⡼⠀⠹⣀⣺⠈⡏⠇⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⡏⠀⠜⠁⠀⢀⠃⢰⠃⠀⣰⡆⠀⢸⠉⢣⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⢧⣄⣴⠋⢿⡀⢹⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⢠⠇⠀⠀⠀⠀⡞⠀⢸⢀⡞⠁⣸⠀⢸⣄⠀⢣⡀⠀⠀⠀⠀⠀⡤⠤⠤⢄⣀⠀⠀⠀⠀⠀⠀⠀⢀⠞⡟⡎⡧⠨⠀⠀⡇⠈⡇⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⢠⠇⢀⣿⠏⠀⡰⢹⠀⢸⠈⠳⣤⣥⣄⣀⣀⣀⡀⠣⡀⠀⢀⠔⠀⠀⠀⠀⠀⣀⡴⠃⣼⡇⢠⠛⡄⠀⠀⢡⠀⢺⠀⠀⠀⠀⠀⠀⢰⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⡞⠀⠀⠀⠀⡼⠀⢸⠃⠀⢠⠃⠀⡆⢸⠀⠀⠈⠉⢻⣿⣿⣿⣿⡇⠈⠉⠁⠀⠀⠀⣠⠶⠾⠧⠄⠐⣻⢠⠃⠀⠱⡀⠀⠘⡄⠈⣆⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⣰⣣⠤⠎⠉⠽⠁⠀⠘⠀⡲⠏⠀⠀⢱⢸⠀⠀⠀⠀⠀⠘⠀⣷⢄⠑⠦⠤⠒⢂⣩⡮⡞⠀⠀⠀⠀⢠⣧⠃⠀⠀⠀⢣⠠⠀⠃⠀⠘⠍⠙⢦⠤⣕⠾⡄⠀⠀⠀⠀", - "⠀⠀⠀⠀⢰⢹⡀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠀⣄⡀⠈⢿⠀⠀⠀⣰⢞⠇⠀⠘⠀⠙⣢⣠⠖⠉⠈⠀⠀⠈⢢⣀⠀⠰⠃⠀⠀⢀⡴⡞⠉⠀⠀⠀⠀⠀⠀⠈⠀⢸⠎⡇⠀⠀⠀⠀", - "⠀⠀⠀⢀⣾⣄⢧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣝⠢⡌⠀⠀⢸⣿⡆⠀⠀⠀⠀⢀⡨⠶⢀⡀⠀⣠⢦⡀⣸⣿⠀⠀⠀⣠⢞⣩⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠞⡼⢱⠀⠀⠀⠀", - "⠀⠀⠀⣼⣿⣾⣷⣍⠲⢄⡀⠀⠀⠀⠀⠀⢀⣾⣿⡷⣌⢢⡀⣾⠛⣿⡀⠀⠀⣠⡏⠀⠀⠀⢱⣘⢧⣠⢿⡏⢻⡧⢠⠟⡵⢿⣿⣧⠀⠀⠀⠀⠀⠀⣀⡤⢞⣡⣾⣾⣌⣆⠀⠀⠀", - "⠀⠀⢰⣿⣿⣿⣿⣿⣿⣶⣬⡑⠲⢤⣀⣠⣾⣿⣿⠃⠈⢢⢻⡇⠀⠙⠷⠞⠋⠉⢷⠀⠀⢠⡋⠛⠻⠻⠟⠁⠈⣻⢇⠞⠁⣹⣿⣿⣷⣄⣀⠤⠖⣋⣥⣶⣿⣿⣿⣿⣿⣼⡄⠀⠀", - "⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣬⣌⣉⠙⠛⠓⠒⠚⣠⠏⠀⠀⠀⠀⠀⠀⢸⠀⠀⢸⡀⠀⠀⠀⠀⠀⠀⢿⡘⠒⠒⠚⠛⠋⣉⣨⣤⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀", - "⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣭⣽⠿⣹⠁⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠸⡇⠀⠀⠀⠀⠀⠀⠀⠸⣿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢧⠀", - "⢾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⡴⡏⠀⠀⠀⠀⠀⠀⠀⠀⡟⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠈⣿⡄⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⢇", - "⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⢠⢰⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⡇⠀⢠⣀⣀⣀⣀⣦⠀⢹⣧⠀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣮", - "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠘⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⡇⠀⠀⠉⠉⠉⠉⠁⠀⠀⢿⣶⠀⠀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿", - "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⢰⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿", - ], - vec![ - "⠀⠀⠀⠀⠀⠀⢀⡤⣢⠟⢁⣴⣾⡿⠋⢉⠱⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠑⠒⠦⢄⣀⣴⠟⢡⣠⣼⣿⡿⢳⣄⡀⠀⠀", - "⠀⠀⠀⠀⠀⢀⣾⡿⠃⣠⣿⣿⠿⠂⠀⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢲⡿⠋⢰⣾⣿⣿⡟⠀⠀⠈⠙⢆⠀", - "⠀⠀⠀⠀⠀⡜⠻⣷⣾⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣁⣰⢸⣿⢻⠟⢀⠀⠀⠀⠀⠀⠁", - "⠀⠀⠀⠀⠰⠀⠀⢙⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣯⡀⠀⢃⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⢠⠎⠀⠀⠀⠀⠀⠀⣼⠀⢀⠀⠀⠀⠀⠀⢠⣷⡀⠀⠀⠀⠀⡀⠄⠀⠀⠀⠀⢻⣿⣿⣿⣧⠑⠀⣢⡄⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⡰⠃⢀⠄⠀⠀⠀⠀⣼⡿⡆⢸⠀⠀⠀⠀⠀⠈⣿⢷⡄⠀⠀⠀⠱⡀⠰⡀⠀⠀⠈⢿⣿⣿⣿⣧⠀⢸⣧⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠡⢢⠋⠀⠀⠀⠀⣼⡟⠀⣇⢸⡆⠀⠀⠀⡄⠀⢿⠀⢳⡄⠀⠀⠀⢳⠀⢳⠀⠀⠀⠈⣿⣿⣿⣿⣷⣘⡟⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⢀⠇⠀⠀⠀⠀⣸⡿⢤⠤⠸⡸⣷⠀⠀⠀⢱⠀⣾⡤⠤⢿⡤⢀⡀⠀⢧⠘⡆⠀⠀⠀⢸⡟⠻⢿⠟⣿⣷⡄⠀⠀⠀", - "⠀⠀⠀⠀⠀⡞⠀⠀⠀⠀⢰⡿⢠⠇⠀⠀⢳⣿⢇⠀⠀⠈⡇⣿⡇⠀⠀⠻⣄⠀⠀⠘⡆⡇⠀⠀⠀⠀⣇⢀⡏⠀⣿⡿⣄⠀⠀⠀", - "⠀⠀⠀⠀⢰⠁⠀⠀⠀⠀⣿⠁⣄⣀⣀⡀⠈⢿⡜⡄⠀⠀⢹⣿⡇⠐⢄⣀⠘⢧⡀⠀⠹⣿⠀⠀⠀⠀⢸⣿⣷⣶⣿⡇⢹⡇⠀⠀", - "⠀⠀⠀⠀⠾⠀⠀⠀⠀⢸⣧⣾⠟⢉⣽⣿⣦⠈⢷⡘⣆⠀⠸⡟⣷⣶⠟⠛⢻⣷⣦⣀⠀⢻⠀⠀⠀⠀⢸⣏⣩⣼⣿⡇⠈⣷⠀⠀", - "⠀⠀⠀⠃⠀⠀⠀⠀⠀⣿⡿⠁⠀⣠⣾⣿⣿⠀⠈⢿⠺⡆⠀⣧⢸⠀⠀⢀⣹⣿⣿⣿⣷⣼⣤⠀⠀⠀⢸⣿⣿⣿⣿⠀⠀⣿⠀⠀", - "⠀⠀⣠⠄⣀⠀⠀⠀⢠⣿⡇⠀⠀⢻⢻⣟⢿⠀⠀⠈⠣⠈⠓⠾⠀⠀⠀⣿⣿⢿⣿⣿⠘⡇⡞⠀⠀⢠⣾⣿⣿⣿⡏⠀⠀⢹⠀⠀", - "⠀⠀⠛⠀⣿⠀⠀⠀⢸⣿⣿⡀⠀⠈⠃⠐⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣄⣐⣠⠏⢠⣿⠁⠀⠀⢸⣿⣿⣿⣿⠀⠀⠀⢸⠀⠀", - "⠀⠀⠀⠀⢹⡆⠰⡀⢸⡟⠩⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⠃⠀⠀⠀⢸⣿⣿⣿⠟⠀⠀⠀⠘⠀⠀", - "⠀⠀⠀⠀⢎⣿⡀⢱⢞⣁⣀⡿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠞⡏⡼⠀⠀⠀⣾⣿⠋⠁⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠈⠿⠻⡇⠀⠀⠒⠢⢵⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣽⠁⠀⠀⢠⡿⢹⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⡀⠀⠀⠀⠀⠀⠀⡟⣦⡀⠀⠀⠀⠈⠓⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣴⢿⡇⠀⠀⡄⣸⣇⣼⣀⣀⣀⠀⠀⠀⠀⠀⠀", - "⡀⠀⠀⠀⠀⠀⢰⠇⣿⢸⣦⡀⠀⠀⠀⠀⠈⠲⣄⡀⠀⠀⠀⠀⠀⣀⡤⠒⢉⡴⠃⣸⠀⠀⢰⣿⣿⣿⠃⡤⠊⠁⠉⠑⢄⠀⠀⠀", - "⡇⠀⠀⠀⠀⠀⢸⠀⣿⣾⣿⢿⠲⣄⠀⠀⠀⠀⠘⠟⣦⣤⣴⡒⠉⢀⡠⠖⠉⠀⣠⠃⠀⣠⣿⣿⡿⠁⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⢸⠀⣿⠛⢿⠈⢢⠏⠀⠀⠀⠀⠀⣰⣏⣀⣿⠗⠊⠁⠀⠀⣠⣾⠃⢀⡴⠿⠛⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⢸⢀⠇⠀⠈⢠⠃⠀⠀⠀⠀⠀⢰⠟⠁⠀⢹⢇⠀⣀⠴⠊⡱⠥⠔⠋⠀⠀⢰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⢸⡟⠀⢀⡴⠁⠀⠀⠀⠀⠀⢠⡟⠀⠀⣰⢿⡘⣾⡅⠀⠀⠀⠀⢀⠄⠀⢠⠏⢀⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⢸⠀⣰⣿⠀⠀⠀⠀⠀⠀⢠⣿⠃⢀⡾⡇⠘⠻⡿⢷⡀⠀⠀⠒⠁⠀⢠⠏⢀⠏⣸⠃⢻⠏⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⣧⣾⣹⣿⠀⠀⠀⠀⠀⢠⠏⢉⠀⡞⣰⡇⠀⣴⣥⠞⢷⠀⠀⠀⠀⣠⠎⠀⠸⣶⠋⣠⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀", - ], - vec![ - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣤⣄⣤⣤⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣄⣄⣠⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⢿⣿⣿⣿⣿⡢⠀⠀⠀⠀⣀⣄⣤⣶⣶⣿⣿⠶⠶⠷⢶⣾⣿⣷⣦⣶⣄⣄⢀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⢿⣿⣯⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⡿⣽⣿⣿⣿⡽⣟⣿⣷⣤⣶⡿⠿⠛⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠙⠻⠿⣾⣦⣤⣾⣿⡿⣯⣿⣿⣿⣯⣟⣿⣷⣆⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⢠⣿⣿⡿⣽⣿⣿⣿⣿⣿⣽⣾⠿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⢿⣿⣽⣿⣿⠿⣿⣿⣾⡽⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⣠⣿⣿⡿⣽⣿⡿⠛⢻⣷⡿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣷⣶⣷⠿⢿⣿⣿⡽⣿⣿⣦⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⣰⣿⣿⡿⣽⣿⣿⢁⣴⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠢⣀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣷⣄⢀⢻⣷⣿⣽⣻⣿⣖⡀⠀⠀⠀⠀", - "⠀⠀⠀⣼⣿⣿⢿⣽⣿⡿⣡⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢗⢆⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣷⡊⢿⣿⣷⣯⢿⣿⣖⡀⠀⠀⠀", - "⠀⠀⠀⢼⣿⣟⣿⣟⣿⣿⣿⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢛⢣⡀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣤⣿⣿⣟⣿⣿⣿⠇⠀⠀⠀", - "⠀⠀⠀⠀⢹⣿⣷⣿⣽⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡸⡅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢣⡙⡄⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣳⣿⣿⣿⠁⠀⠀⠀⠀", - "⠀⠀⠀⢀⣾⡿⠈⢹⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠄⠀⠀⣇⠃⠀⠀⠀⠀⠀⠀⣼⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⡘⡄⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⠟⢇⠘⣿⣇⠀⠀⠀⠀", - "⠀⠀⠀⣼⣿⠃⠀⣾⣿⠁⣰⠁⠀⠀⠀⠀⠀⠀⠀⡾⠀⠀⣰⣿⣆⠀⠀⠀⠀⠀⠀⡏⡆⠀⠀⠀⢳⡀⠀⠀⠀⢀⠘⣆⠹⡀⠀⠀⠀⠀⠀⠀⠀⠘⣿⡏⠼⡀⢹⣷⡆⠀⠀⠀", - "⠀⠀⢠⣿⡇⠀⢠⣿⣏⣴⡇⠀⠀⠀⠀⠀⠀⢀⣸⡃⠀⣰⡿⠹⣿⡄⠀⠀⠀⠀⠀⣿⣿⡆⠀⠀⠀⢿⣦⡀⠀⠀⣆⢹⢰⣧⡀⠀⠀⠀⠀⠀⠀⠀⢻⣿⢂⡇⠈⣿⣷⠀⠀⠀", - "⠀⠀⣾⡿⠀⠀⢸⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⣿⣿⠁⣰⡿⠁⠀⢹⣷⡀⠀⠀⠀⢀⣿⡿⢿⣦⠀⠀⠈⣿⣿⣄⠀⢸⠞⡬⣿⡇⠀⠀⠀⠀⠀⠀⠀⢸⣿⡆⢣⠀⢸⣿⡆⠀⠀", - "⠀⢠⣿⠇⠀⠀⢸⠿⣿⡿⠀⠀⠀⠀⠀⠀⠀⣿⣗⣰⣿⠁⠀⠀⠀⢻⣷⡀⠀⠀⢠⢿⣷⠈⠻⣷⣄⠀⠘⣿⣿⣧⡀⡇⡒⣿⡇⠀⠀⠀⠀⢠⡄⠀⠸⣿⡇⣹⠀⠀⣿⣧⠀⠀", - "⠀⣼⣿⠀⠀⠀⢎⢲⣿⠇⠀⣰⠀⠀⠀⠀⠀⣿⣷⣿⠃⠀⠀⠀⠀⠀⠹⣷⡀⠀⠀⣿⣿⠀⠀⠈⠻⢿⣦⣜⣿⣟⢿⣶⡡⣿⡷⠀⠀⠀⠀⢸⣱⠀⠀⣿⣗⢸⠀⠀⢹⣯⡄⠀", - "⠀⣾⡇⠀⠀⠀⢘⣾⡿⠀⢰⣹⠀⠀⠀⠀⠀⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠙⢿⣆⠀⢻⣿⡀⠀⠀⠀⠀⠉⠛⠿⢿⠎⠻⣿⣿⣟⠀⠀⠀⠀⢸⣤⣧⠀⢻⣿⣈⠀⠀⠘⣿⡇⠀", - "⠈⣿⠃⠀⠀⠀⢸⣿⢃⣤⣿⣿⣇⠀⠀⠀⠀⢿⣿⠁⠀⠀⠀⠀⣀⡀⠀⠀⠈⠻⣷⣬⣿⣇⠀⠀⠀⢀⣀⠀⠀⠀⠀⠀⠈⢻⡏⠀⠀⠀⠀⣿⣿⣿⣶⣼⣿⣦⠀⠀⠀⣿⡷⠀", - "⢰⣿⠀⠀⠀⠀⢿⣿⣿⣿⣿⡽⣿⣆⠀⠀⠀⢸⣿⠀⠀⠀⠀⢸⣑⣚⡆⠀⠀⠀⠈⠙⠿⣿⠄⠀⢰⡫⢜⡇⠀⠀⠀⠀⠀⣿⡇⠀⠀⠀⣸⣿⣟⣾⣿⣿⠿⡏⠀⠀⠀⢸⣧⠀", - "⢸⣿⠀⠀⠀⠀⠘⣼⣿⢾⣿⣿⡽⣿⣆⠀⠀⠈⣿⡇⠀⠀⠀⠈⠶⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⠽⠃⠀⠀⠀⠀⠀⣿⠇⠀⠀⣰⣿⡿⣾⣿⣽⣿⢲⠁⠀⠀⠀⢸⣿⠀", - "⢸⣿⠀⠀⠀⠀⠀⠹⣿⣾⠻⣿⣿⡽⣿⣦⡀⠀⢹⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⡿⠀⠀⣴⣿⣿⣽⣿⢽⣿⣏⠆⠀⠀⠀⠀⠀⣿⡃", - "⢸⣿⠀⠀⠀⢦⡀⠀⢻⣿⡄⠙⢻⣿⣽⣿⣿⣦⡈⢿⣇⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⠇⣠⣾⣿⣿⣿⠋⠁⣼⣿⠋⠀⣠⡏⠀⠀⠀⣿⡆", - "⠸⣿⠀⠀⠀⠀⠙⢗⠤⣻⣯⡄⠀⠙⢛⣿⣿⣿⣿⣾⣿⣷⣶⣤⣤⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣠⣤⣶⣾⣿⣿⣿⡟⠋⠀⠉⢁⣠⣾⡿⣁⠤⡺⠎⠀⠀⠀⠀⣿⡇", - "⠀⣿⡄⠀⠀⠀⠀⠀⠉⠒⠽⠿⣿⣴⣴⣿⣿⣽⣿⣽⣻⢏⡈⠉⠙⠛⠿⠻⠻⠿⠿⠿⠿⠿⠿⠿⠻⠿⠟⠛⠋⠉⠛⠟⣋⣥⣤⣶⣾⣿⠿⠟⠛⠑⠒⠋⠀⠀⠀⠀⠀⢀⣿⠀", - "⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⣿⣿⣾⣿⣿⣿⣿⣿⣾⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣴⣿⡟⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀", - "⠀⣻⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣉⠙⠛⠿⣿⣤⣀⣈⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣐⣿⠟⠉⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡇⠀", - "⠀⣿⣿⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠳⡢⢌⠹⣿⡿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⢋⠴⡲⠝⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠄⢸⡿⡇⠀", - "⠀⠘⣿⣧⠈⠳⡤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣑⣹⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⡏⠖⠉⠀⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⡴⠋⣠⣿⡟⠀⠀", - "⠀⠀⠐⢿⣷⡀⠈⠓⠽⢒⣒⣐⣂⣒⠒⠒⠐⠢⠌⣓⣢⣄⡈⢺⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣡⣴⣮⣝⣐⠓⠚⠨⠽⠂⣖⣂⣖⡒⠭⠓⠉⣀⣴⣿⠉⠀⠀⠀", - "⠀⠀⠀⠈⠻⢿⣷⣄⡀⠀⠀⠀⠀⢀⣀⣤⣴⣾⣿⠿⠿⠿⠿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠿⠟⠛⠛⠛⠻⢿⣷⣦⣤⣀⣀⣀⣀⣀⣠⣴⣾⡿⠋⠁⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠙⠻⠿⣿⡿⢿⣿⠿⠿⠋⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠛⠻⠿⠻⠛⠿⠛⠋⠁⠀⠀⠀⠀⠀⠀⠀", - ], - ]; - - let selected_style = rng.gen_range(0..styles.len()); - styles[selected_style].clone() -} - fn draw_miku_says(text: &str) -> Result<(), Box<dyn std::error::Error>> { - let mut stdout = io::stdout(); - - execute!(stdout, Clear(ClearType::All), Hide)?; - let speech_bubble_lines = get_speech_bubble_lines(text); - let miku_art = get_miku_art(); - let mut all_lines = Vec::new(); - all_lines.extend(speech_bubble_lines); - all_lines.extend(miku_art.iter().map(|s| s.to_string())); + let (window_width, window_height) = size()?; + let available_width = window_width as usize; + + let mut all_content_lines = Vec::new(); + all_content_lines.extend(speech_bubble_lines.clone()); + all_content_lines.extend(miku_art.iter().map(|s| s.to_string())); + + let max_content_width = all_content_lines.iter() + .map(|l| l.width()) + .max() + .unwrap_or(0); - let max_width = all_lines.iter().map(|l| l.width()).max().unwrap_or(0); + let overall_left_padding = if available_width > max_content_width { + (available_width - max_content_width) / 2 + } else { + 0 + }; - let (window_width, window_height) = size()?; - let left = if window_width as usize > max_width { - (window_width as usize - max_width) / 2 + let bubble_width = speech_bubble_lines.first() + .map(|line| line.width()) + .unwrap_or(0); + + let first_miku_line = miku_art.first().unwrap_or(&""); + let tail_pos = first_miku_line.chars() + .position(|c| !c.is_whitespace()) + .unwrap_or(0); + + let bubble_center = bubble_width / 2; + let miku_tail_absolute_pos = overall_left_padding + tail_pos; + + let bubble_left_padding = if miku_tail_absolute_pos >= bubble_center { + miku_tail_absolute_pos - bubble_center } else { 0 }; - if all_lines.len() >= window_height as usize { - let horizontal_padding = " ".repeat(left); - for line in &all_lines { - println!("{horizontal_padding}{line}"); - } - execute!(stdout, Show)?; - return Ok(()); - } + let bubble_line_count = speech_bubble_lines.len(); - let top = if window_height as usize > all_lines.len() { - (window_height as usize - all_lines.len()) / 2 + let content_height = all_content_lines.len(); + let available_height = window_height as usize; + + let top_padding = if content_height < available_height { + (available_height - content_height) / 2 } else { 0 }; - for (i, line) in all_lines.iter().enumerate() { - let y_pos = top + i; - if y_pos < window_height as usize { - execute!(stdout, MoveTo(left as u16, y_pos as u16), Print(line))?; - } + for _ in 0..top_padding { + println!(); } - if window_height > 0 { - execute!(stdout, MoveTo(0, window_height - 1))?; + for (i, line) in all_content_lines.iter().enumerate() { + let is_bubble_line = i < bubble_line_count; + let is_tail_line = is_bubble_line && (i == bubble_line_count - 2 || i == bubble_line_count - 1); + + if is_bubble_line { + if is_tail_line { + let tail_padding = overall_left_padding + tail_pos; + let horizontal_padding = " ".repeat(tail_padding); + println!("{horizontal_padding}{line}"); + } else { + let horizontal_padding = " ".repeat(bubble_left_padding); + println!("{horizontal_padding}{line}"); + } + } else { + let horizontal_padding = " ".repeat(overall_left_padding); + println!("{horizontal_padding}{line}"); + } } - execute!(stdout, Show)?; - stdout.flush()?; + for _ in 0..top_padding { + println!(); + } Ok(()) } fn get_speech_bubble_lines(text: &str) -> Vec<String> { - let lines = wrap_text(text, 50); - let max_width = lines.iter().map(|line| line.width()).max().unwrap_or(0); + const MAX_BUBBLE_WIDTH: usize = 50; + const MIN_BUBBLE_WIDTH: usize = 20; + + let temp_lines = wrap_text(text, MAX_BUBBLE_WIDTH - 4); + + let content_width = temp_lines.iter() + .map(|line| line.width()) + .max() + .unwrap_or(0); + + let bubble_width = (content_width + 4) + .max(MIN_BUBBLE_WIDTH) + .min(MAX_BUBBLE_WIDTH); + + let lines = wrap_text(text, bubble_width - 4); let mut bubble_lines = Vec::new(); - let pointer_pos: usize = 3; - let bubble_content_width = max_width + 4; - let bubble_center = bubble_content_width / 2; - - let bubble_start_offset = pointer_pos.saturating_sub(bubble_center); + let top_left = '╭'; + let top_right = '╮'; + let bottom_left = '╰'; + let bottom_right = '╯'; + let horizontal = '─'; + let vertical = '│'; - let padding = " ".repeat(bubble_start_offset); - - bubble_lines.push(format!("{padding} {}", "_".repeat(max_width + 2))); - - for (i, line) in lines.iter().enumerate() { - let (left_border, right_border) = if lines.len() == 1 { - ('<', '>') - } else if i == 0 { - ('/', '\\') - } else if i == lines.len() - 1 { - ('\\', '/') - } else { - ('|', '|') - }; + bubble_lines.push(format!( + "{}{}{}", + top_left, + horizontal.to_string().repeat(bubble_width), + top_right + )); + for line in &lines { + let line_display_width = line.width(); + let padding_needed = (bubble_width - 2).saturating_sub(line_display_width); + let left_padding = padding_needed / 2; + let right_padding = padding_needed - left_padding; + bubble_lines.push(format!( - "{padding}{left_border} {line:<max_width$} {right_border}" + "{} {}{}{} {}", + vertical, + " ".repeat(left_padding), + line, + " ".repeat(right_padding), + vertical )); } - bubble_lines.push(format!("{padding} {}", "‾".repeat(max_width + 2))); + bubble_lines.push(format!( + "{}{}{}", + bottom_left, + horizontal.to_string().repeat(bubble_width), + bottom_right + )); - bubble_lines.push(" \\".to_string()); - bubble_lines.push(" \\".to_string()); + bubble_lines.push("\\".to_string()); + bubble_lines.push(" \\".to_string()); bubble_lines } |
