treesitter -> main

This commit is contained in:
jmarkin 2025-12-05 21:39:33 +03:00
parent 1a2475f045
commit e2dfdb8413
23 changed files with 303 additions and 977 deletions

View file

@ -241,11 +241,11 @@
"kulala-nvim": {
"flake": false,
"locked": {
"lastModified": 1762842180,
"narHash": "sha256-TXbcy4Pjth9FfBcgnESuSQzdqRsRI5nPUocbNbpV8g4=",
"lastModified": 1764172476,
"narHash": "sha256-rz2dynlMkxTxKzfM36vC6KMgnuJ/hj+QTXTW7NG5esY=",
"owner": "mistweaverco",
"repo": "kulala.nvim",
"rev": "8676a4ffc654d9f9404b343982390bea568da737",
"rev": "5d3916195a97928b8f9b79d96029f37d19ba866d",
"type": "github"
},
"original": {
@ -289,11 +289,11 @@
"namu-nvim": {
"flake": false,
"locked": {
"lastModified": 1764103858,
"narHash": "sha256-b6fSeg86mREnSmWZd6bBqAZ2JCY0/KaT5y0qsFBOaUU=",
"lastModified": 1764105906,
"narHash": "sha256-NGc6FpyikmTyvTdhLKaB/nn/r/3/1IWf6anULvQZdBc=",
"owner": "bassamsdata",
"repo": "namu.nvim",
"rev": "c86d708ac1c22df260a5bc132ea1f7ba3802c64b",
"rev": "7e03a8acd62a79d08829b7cdad34a398ed8f379e",
"type": "github"
},
"original": {
@ -366,11 +366,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1763966396,
"narHash": "sha256-6eeL1YPcY1MV3DDStIDIdy/zZCDKgHdkCmsrLJFiZf0=",
"lastModified": 1764667669,
"narHash": "sha256-7WUCZfmqLAssbDqwg9cUDAXrSoXN79eEEq17qhTNM/Y=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5ae3b07d8d6527c42f17c876e404993199144b6a",
"rev": "418468ac9527e799809c900eda37cbff999199b6",
"type": "github"
},
"original": {
@ -380,6 +380,62 @@
"type": "github"
}
},
"nvim-treesitter": {
"flake": false,
"locked": {
"lastModified": 1764266060,
"narHash": "sha256-j2o5c4qgVYQs5DJpSDX1eMsNonDkhyhEQQYMYW2YS7o=",
"owner": "nvim-treesitter",
"repo": "nvim-treesitter",
"rev": "17885756e63df73ed90db62e4630f744ceda6514",
"type": "github"
},
"original": {
"owner": "nvim-treesitter",
"ref": "main",
"repo": "nvim-treesitter",
"type": "github"
}
},
"nvim-treesitter-main": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"nvim-treesitter": "nvim-treesitter",
"nvim-treesitter-textobjects": "nvim-treesitter-textobjects"
},
"locked": {
"lastModified": 1764561751,
"narHash": "sha256-gI/1xLdvXvrkZYTArFSW/2bydHiIJvln6sePNT4KHAc=",
"owner": "iofq",
"repo": "nvim-treesitter-main",
"rev": "9f104282ca15b762fd6523a82ec9a6c182170489",
"type": "github"
},
"original": {
"owner": "iofq",
"repo": "nvim-treesitter-main",
"type": "github"
}
},
"nvim-treesitter-textobjects": {
"flake": false,
"locked": {
"lastModified": 1764294350,
"narHash": "sha256-M7Wfyg1cHXOHKzkhei3GfozK2tsUZ7LZoOdSiHY0dG4=",
"owner": "nvim-treesitter",
"repo": "nvim-treesitter-textobjects",
"rev": "63c4dce4a56312ef1bdeafd16bdefa008fcc950a",
"type": "github"
},
"original": {
"owner": "nvim-treesitter",
"ref": "main",
"repo": "nvim-treesitter-textobjects",
"type": "github"
}
},
"nvim-window": {
"flake": false,
"locked": {
@ -415,11 +471,11 @@
"oil-nvim": {
"flake": false,
"locked": {
"lastModified": 1763775913,
"narHash": "sha256-OSfnL7H/haV4BeuS5r3GdBtD4si3vymtQO3q2437Kio=",
"lastModified": 1764540100,
"narHash": "sha256-JWPQnPzAXqratmV8F44W5EB1ty1/lb8lETawtyXskqE=",
"owner": "stevearc",
"repo": "oil.nvim",
"rev": "01cb3a8ad7d5e8707041edc775af83dbf33838f4",
"rev": "cbcb3f997f6f261c577b943ec94e4ef55108dd95",
"type": "github"
},
"original": {
@ -441,6 +497,7 @@
"local-highlight-nvim": "local-highlight-nvim",
"namu-nvim": "namu-nvim",
"nixpkgs": "nixpkgs_2",
"nvim-treesitter-main": "nvim-treesitter-main",
"nvim-window": "nvim-window",
"nvim-yati": "nvim-yati",
"oil-nvim": "oil-nvim",
@ -470,11 +527,11 @@
"smart-splits-nvim": {
"flake": false,
"locked": {
"lastModified": 1763742162,
"narHash": "sha256-iC1rT15/qaiO+Yc+LKKCmAh5vJz8b7MS2AXsk6UgwS4=",
"lastModified": 1764350824,
"narHash": "sha256-ubRDhzWcFo++c/hqYZxaiTdrtEHNBTgOYXWQ1526LSo=",
"owner": "mrjones2014",
"repo": "smart-splits.nvim",
"rev": "ca996f2844a4c77d74912a2414af939dc76a73cc",
"rev": "e892a5da963813119d053af5b2260e3cd9d9f037",
"type": "github"
},
"original": {

View file

@ -15,7 +15,7 @@
# Core Nix infrastructure
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-parts.url = "github:hercules-ci/flake-parts";
gen-luarc.url = "github:mrcjkb/nix-gen-luarc-json";
gen-luarc.inputs.nixpkgs.follows = "nixpkgs";
gen-luarc.inputs.flake-parts.follows = "flake-parts";
@ -30,6 +30,10 @@
kulala-fmt.inputs.flake-parts.follows = "flake-parts";
kulala-fmt.inputs.nixpkgs.follows = "nixpkgs";
nvim-treesitter-main.url = "github:iofq/nvim-treesitter-main";
nvim-treesitter-main.inputs.nixpkgs.follows = "nixpkgs";
# Bleeding-edge Neovim plugins
# These can be updated with `nix flake update` (remember to commit flake.lock)
@ -112,13 +116,14 @@
};
in
flake-parts.lib.mkFlake { inherit inputs; } {
# Supported systems - add more as needed
# Supported systems - add more as needed
systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" "x86_64-darwin" ];
perSystem = { system, pkgs, ... }:
{
_module.args.pkgs = import inputs.nixpkgs {
inherit system;
overlays = [
inputs.nvim-treesitter-main.overlays.default
# Import the overlay, so that the final Neovim derivation(s) can be accessed via pkgs.<nvim-pkg>
neovim-overlay
# This adds a function can be used to generate a .luarc.json
@ -128,25 +133,35 @@
];
config = { };
};
packages = rec {
nvim = pkgs.nvim-pkg;
nvim-small = pkgs.nvim-small;
nvim-minimal = pkgs.nvim-minimal;
default = nvim;
packages =
rec {
nvim = pkgs.nvim-pkg;
nvim-small = pkgs.nvim-small;
nvim-minimal = pkgs.nvim-minimal;
default = nvim;
bench-nvim = pkgs.writeShellScriptBin "bench-nvim" ''
${pkgs.hyperfine}/bin/hyperfine --warmup 2 '${pkgs.nvim-pkg}/bin/nvim -c ":q"'
'';
bench-nvim-small = pkgs.writeShellScriptBin "bench-nvim-small" ''
${pkgs.hyperfine}/bin/hyperfine --warmup 2 '${pkgs.nvim-small}/bin/nvim -c ":q"'
'';
bench-nvim-minimal = pkgs.writeShellScriptBin "bench-nvim-minimal" ''
${pkgs.hyperfine}/bin/hyperfine --warmup 2 '${pkgs.nvim-minimal}/bin/nvim -c ":q"'
'';
# Development tools and language-specific packages
codingPackages = pkgs.codingPackages;
};
# Development tools and language-specific packages
codingPackages = pkgs.codingPackages;
};
devShells = {
default = pkgs.mkShell {
name = "nvim-devShell";
buildInputs = with pkgs; [
# Essential development tools for maintaining this flake
lua-language-server # Lua language server for config development
nixd # Nix language server
stylua # Lua code formatter
luajitPackages.luacheck # Lua linter
nvim-dev # Development version of Neovim
lua-language-server # Lua language server for config development
nixd # Nix language server
stylua # Lua code formatter
luajitPackages.luacheck # Lua linter
nvim-dev # Development version of Neovim
];
shellHook = ''
# Symlink generated .luarc.json for IDE support

View file

@ -10,27 +10,34 @@ let
rev = "0e9b8c99ba01717d737de8b01ed647ef2f2ac9e5";
sha256 = "sha256-btpuvJHw9dmVg0lEWRFe+JCx1f91O4T6/73TFgCxHNg=";
};
djangoStubsSrc = pkgs.fetchFromGitHub {
owner = "typeddjango";
repo = "django-stubs";
rev = "e82f5d126b1e15281e2e32ce746ce38e25105952";
sha256 = "sha256-MCgunXCPmTp1dOerB+u2d1F6TZOpGYWc9Qb6DYPi9Mk=";
};
in
{
pname = "zuban";
version = "2025-11-01";
version = "2025-12-05";
src = pkgs.fetchFromGitHub {
owner = "zubanls";
repo = "zuban";
rev = "14f47185a96bce5ad236c4624013fd78239055b4";
sha256 = "sha256-y70TrsIQSqaCTkOvXC+qVEa/dYcz4hu1uCwf/k0Bm2E=";
rev = "1adc194449720ce476b2b3f3ebf3975063d67f30";
sha256 = "sha256-FPWW4BRCy4O4RyMhFVq4Vd8u+0MjRqNpYJirvIV8RSw=";
};
buildAndTestSubdir = "crates/zuban";
postInstall = ''
mkdir -p $out/${pkgs.python3.sitePackages}/zuban
cp -r ${typeshedSrc} $out/${pkgs.python3.sitePackages}/zuban/typeshed
cp -r ${typeshedSrc} $out/${pkgs.python3.sitePackages}/zuban/third_party/typeshed
cp -r ${djangoStubsSrc} $out/${pkgs.python3.sitePackages}/zuban/third_party/django-stubs
'';
cargoHash = "sha256-a+aydDNU1Z7+mIkDP0H9yp2ril2EaXTwPAKWnpBHGE0=";
cargoHash = "";
doInstallCheck = true;

View file

@ -44,7 +44,6 @@ with final.pkgs.lib; let
stayinpalce = (mkNvimPlugin inputs.stay-in-place-nvim "stay-in-place.nvim");
toggle_plugins = val: /*vim*/''
let g:did_load_ai_plugin = v:${val}
let g:did_load_blink_plugin = v:${val}
let g:did_load_comment_plugin = v:${val}
let g:did_load_format_plugin = v:${val}
@ -228,28 +227,18 @@ with final.pkgs.lib; let
'';
}
# {
# plugin = snacks-nvim;
# optional = false;
#
# config = /*lua*/''
# END
# '';
# }
]);
all-plugins = smallset-plugins ++ (
with pkgs.vimPlugins;
[
{
plugin = alpha-nvim;
optional = false;
plugin = which-key-nvim;
optional = true;
config = /*vim*/''
${toggle_plugins "false"}
lua << END
require("dash")
'';
}
]

View file

@ -1,31 +1,5 @@
{ inputs, pkgs, mkNvimPlugin, ... }:
with pkgs.vimPlugins; [
# {
# plugin = (mkNvimPlugin inputs.diaglist-nvim "diaglist.nvim");
# type = "lua";
# optional = true;
# config = /*lua*/''
# lze.load{
# "diaglist.nvim",
# keys = {
# {
# "<space>E",
# function()
# require("diaglist").open_all_diagnostics()
# end,
# desc = "All Diagnostics",
# },
# {
# "<space>e",
# function()
# require("diaglist").open_buffer_diagnostics()
# end,
# desc = "Buffer Diagnostics",
# },
# },
# }
# '';
# }
{
plugin = quicker-nvim;
type = "lua";

View file

@ -1,96 +1,72 @@
{ inputs, pkgs, mkNvimPlugin, ... }:
let
system = pkgs.system;
kulala = pkgs.callPackage ./kulala.nix { inherit inputs pkgs; };
nvim-treesitter = pkgs.vimPlugins.nvim-treesitter.withPlugins(_:
[kulala.grammar] ++ pkgs.vimPlugins.nvim-treesitter.allGrammars
);
# nvim-treesitter = pkgs.vimPlugins.nvim-treesitter.withPlugins (p: [
# # plugins
# kulala.grammar
#
# # languages
# p.rust
# p.c
# p.cpp
# p.cuda
# p.python
# p.typescript
# p.javascript
# p.fish
# p.lua
# p.html
# p.htmldjango
# p.css
# p.bash
# p.vue
# p.scss
# p.sql
# p.markdown
# p.json
# p.json5
# p.jsonc
# p.graphql
# p.commonlisp
# p.latex
# p.glsl
# p.nix
# p.go
# p.gotmpl
# p.helm
# p.gomod
# p.gosum
# # conf files
# p.ssh_config
# p.jsdoc
# p.yaml
# p.toml
# p.proto
# p.http
# p.hurl
# p.make
# p.cmake
# p.dockerfile
# p.ini
# p.vim
# p.vimdoc
# p.passwd
# p.requirements
# p.hcl
# p.xml
# p.nginx
# p.tmux
# p.udev
# # tools
# p.markdown_inline
# p.jq
# p.regex
# p.query
# p.comment
# p.rst
#
# # git
# p.gitcommit
# p.git_rebase
# p.gitignore
# p.git_config
# p.gitattributes
#
# ]);
nvim-yati = (mkNvimPlugin inputs.nvim-yati "nvim-yati").overrideAttrs
{
dependencies = [ nvim-treesitter ];
};
nvim-treesitter = pkgs.vimPlugins.nvim-treesitter.withAllGrammars.overrideAttrs (old: {
postInstall = old.postInstall + ''
echo $out
'';
});
# nvim-yati = (mkNvimPlugin inputs.nvim-yati "nvim-yati").overrideAttrs
# {
# dependencies = [ nvim-treesitter ];
# };
hlargs-nvim = (mkNvimPlugin inputs.hlargs-nvim "hlargs.nvim").overrideAttrs
{
dependencies = [ nvim-treesitter ];
};
context = pkgs.vimPlugins.nvim-treesitter-context.overrideAttrs
{
dependencies = [ nvim-treesitter ];
};
nvim-treesitter-textobjects = inputs.nvim-treesitter-main.packages.${system}.nvim-treesitter-textobjects.overrideAttrs {
dependencies = [ nvim-treesitter ];
};
in
[
nvim-treesitter
pkgs.vimPlugins.nvim-treesitter-context
nvim-yati
hlargs-nvim
pkgs.vimPlugins.nvim-treesitter-textobjects
{
plugin = nvim-treesitter;
type = "lua";
optional = false;
config = /*lua*/''
require("nvim-treesitter").setup()
'';
}
{
plugin = context;
type = "lua";
optional = true;
config = /*lua*/ ''
lze.load({
"nvim-treesitter-context",
on_require = "treesitter-context",
})
'';
}
{
plugin = hlargs-nvim;
type = "lua";
optional = true;
config = /*lua*/''
lze.load({
"hlargs.nvim",
on_require = "hlargs",
})
'';
}
{
plugin = nvim-treesitter-textobjects;
type = "lua";
optional = true;
config = /*lua*/''
lze.load({
"nvim-treesitter-textobjects",
on_plugin = "nvim-treesitter-textobjects",
})
'';
}
]

View file

@ -8,18 +8,18 @@ with pkgs.vimPlugins; [
type = "lua";
optional = true;
config = /*lua*/''
lze.load {
lze.load({
"${tabby-nvim.pname}",
event = "TabNew",
after = function()
require("tabby").setup({
preset = "tab_only",
option = {
lualine_theme = vim.g.lualine_theme or nil,
buf_name = { mode = "tail" },
},
})
end,
}
})
'';
}
{

View file

@ -1,462 +0,0 @@
local M = {
["datetime"] = {
"Today's " .. os.date("%a %d %b"),
-- os.date " %m-%d-%Y  %H:%M:%S",
},
["threeskulls"] = {
[[⠀⠀⠀⠀⠀⣀⣀⣤⣤⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣤⣤⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣠⣤⣤⣀⣀⠀⠀⠀⠀⠀]],
[[⠀⠀⣠⣶⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⣠⣶⣿⣿⣿⣿⣿⣿⣿⣿⣶⣄⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀]],
[[⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠀]],
[[⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⣿⣿⣿⡆⠀⠀⠀⢸⣿⣿⠿⠿⢿⣿⣿⣿⣿⡿⠿⠿⣿⣿⡇⠀⠀⠀⣾⣿⣿⡿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆]],
[[⢿⣿⠿⠿⠿⠿⣿⣿⣿⡏⠀⠀⠀⢹⣿⡇⠀⠀⠀⢸⣿⢱⣶⣴⣶⢹⣿⣿⡏⣶⣦⣶⡎⣿⡇⠀⠀⠀⢿⣿⠁⠀⠀⠈⣿⣿⣿⡿⠟⣋⣽⣿⣿⠇]],
[[⠘⣿⣧⣄⣀⣴⣿⣿⣿⣷⣄⣀⣠⣾⣟⠀⠀⠀⠀⠈⣿⣦⣙⣛⣡⣾⡿⢿⣷⣌⣛⣋⣴⣿⠁⠀⠀⠀⠘⣿⣦⣄⣀⣴⣿⣿⣿⣿⣶⣶⣤⣿⡟⠀]],
[[⠀⢿⣿⣿⣿⣿⣏⣼⣌⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣰⣆⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣏⣼⣌⣿⣿⣿⣿⣿⠏⠀]],
[[⠀⠀⠉⠉⢿⣿⣿⣿⣿⣿⣿⡏⠉⠁⠀⠀⠀⠀⠀⠀⠀⠉⠉⢹⣿⣿⣿⣿⣿⣿⡏⠉⠉⠀⠀⠀⠀⠀⠀⠀⠉⠉⣿⣿⣿⣿⣿⣿⣿⡏⠉⠁⠀⠀]],
[[⠀⠀⠀⠀⠈⠉⠁⠁⠁⠉⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠁⠉⠉⠈⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠁⠁⠁⠉⠉⠀⠀⠀⠀⠀]],
},
["nvim1"] = {
[[ __ ]],
[[ ___ ___ ___ __ __ /\_\ ___ ___ ]],
[[ / _ `\ / __`\ / __`\/\ \/\ \\/\ \ / __` __`\ ]],
[[/\ \/\ \/\ __//\ \_\ \ \ \_/ |\ \ \/\ \/\ \/\ \ ]],
[[\ \_\ \_\ \____\ \____/\ \___/ \ \_\ \_\ \_\ \_\]],
[[ \/_/\/_/\/____/\/___/ \/__/ \/_/\/_/\/_/\/_/]],
},
["nvim2"] = {
[[ _/ _/ _/ _/ _/ ]],
[[ _/_/ _/ _/_/ _/_/ _/ _/ _/_/_/ _/_/ ]],
[[ _/ _/ _/ _/_/_/_/ _/ _/ _/ _/ _/ _/ _/ _/]],
[[ _/ _/_/ _/ _/ _/ _/ _/ _/ _/ _/ _/ ]],
[[_/ _/ _/_/_/ _/_/ _/ _/ _/ _/ _/ ]],
},
["nvim4"] = {
[[  ]],
[[ ████ ██████ █████ ██ ]],
[[ ███████████ █████  ]],
[[ █████████ ███████████████████ ███ ███████████ ]],
[[ █████████ ███ █████████████ █████ ██████████████ ]],
[[ █████████ ██████████ █████████ █████ █████ ████ █████ ]],
[[ ███████████ ███ ███ █████████ █████ █████ ████ █████ ]],
[[██████ █████████████████████ ████ █████ █████ ████ ██████]],
},
["nvim5"] = {
[[ ]],
[[ ██████ █████ █████ █████ ███ ]],
[[ ░░██████ ░░███ ░░███ ░░███ ░░░ ]],
[[ ░███░███ ░███ ██████ ██████ ░███ ░███ ████ █████████████ ]],
[[ ░███░░███░███ ███░░███ ███░░███ ░███ ░███ ░░███ ░░███░░███░░███ ]],
[[ ░███ ░░██████ ░███████ ░███ ░███ ░░███ ███ ░███ ░███ ░███ ░███ ]],
[[ ░███ ░░█████ ░███░░░ ░███ ░███ ░░░█████░ ░███ ░███ ░███ ░███ ]],
[[ █████ ░░█████░░██████ ░░██████ ░░███ █████ █████░███ █████ ]],
[[ ░░░░░ ░░░░░ ░░░░░░ ░░░░░░ ░░░ ░░░░░ ░░░░░ ░░░ ░░░░░ ]],
[[ ]],
},
}
M.nami = {
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢀⣀⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢀⠠⠄⠀⠀⠈⠀⠀⠀⠀⠀⠀⠊⠨⠀⢄⠀⠀⠙⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣄⠔⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠀⠈⠻⣿⣿⣿⣿⣿⣿⣿",
"⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠆⠂⠀⠀⠀⠀⠀⣠⣄⢰⡆⢷⡘⣷⡆⢦⠰⣄⢠⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣿⣿⣿",
"⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠂⠉⠀⠀⠀⠀⠀⣰⢃⣾⣿⣿⡌⢷⠸⣷⡘⣿⡌⢇⢻⡄⢿⣎⢲⣄⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿",
"⠀⠀⠀⠀⠀⠀⠀⠀⡠⠋⠀⠀⠀⠀⣠⡄⣼⢠⠃⣾⣿⣿⣿⣷⡘⡆⢻⣷⡌⢿⡌⠀⢿⡘⣿⡆⠿⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿",
"⠀⠀⠀⠀⠀⠀⡠⠊⠀⠀⠀⠀⣠⢀⣿⢠⡇⡎⣼⣿⣿⣿⣿⣿⣷⡔⠘⣿⣿⣦⠻⡌⠈⢷⡘⣷⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿",
"⡇⠀⠀⠀⢀⠈⠁⠀⠀⠀⠀⣸⣿⢸⡏⠸⠐⢰⣿⣿⣿⣿⣿⣿⣿⣿⣦⣘⣿⣿⣷⣄⠀⠀⢳⡘⡆⠈⣿⠰⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹",
"⣇⠀⠀⡠⠂⠀⠀⠀⠀⢠⢁⣿⣿⢸⡇⡆⢀⠿⠿⠿⠛⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⠟⣂⡀⠀⢳⠠⠀⣿⡀⡆⠀⠀⠀⠀⠀⠀⠀⠀⣼",
"⣿⠀⠀⠀⠀⠀⠀⠀⢀⠎⣼⡟⠠⢸⡇⠀⣰⣶⣿⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⢋⣵⣿⣿⣷⣦⠀⠁⠀⣿⡇⠇⠀⠀⠀⠀⠀⠀⠀⣰⣿",
"⣿⠁⠀⠀⠀⠀⠀⠀⠌⣼⠟⢀⠀⠀⡇⡆⣿⡿⠋⠉⠉⠡⢿⣿⣿⣿⣿⣿⠃⣾⡿⠋⠉⠠⠍⠡⠵⡀⣿⡇⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿",
"⠃⠀⠀⠀⠀⠀⠀⢀⠚⡣⢠⢊⠀⡄⠀⠗⣠⠘⠁⢀⣀⣈⣹⣿⣿⣿⣿⣿⢸⣿⠎⣀⣤⣤⡀⢁⣶⡇⣿⡇⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿",
"⠀⠀⠀⠀⠀⠀⠀⡿⢡⡀⢡⢇⠀⣷⡀⡾⠁⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠿⣿⣿⣿⣿⣿⣿⣿⠀⣿⠁⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿",
"⠀⠀⠀⠀⠀⠀⠀⡇⢸⢨⠂⡸⠀⢹⣿⣷⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢃⣴⣿⣿⣿⣿⣿⣿⡇⢠⡏⠀⣀⣴⣿⣿⣿⣿⣿⣿⣿⣿",
"⠀⠀⠀⠀⠀⠀⠀⠁⠘⣆⠃⠱⡀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡷⠿⠿⠿⢿⣿⣿⣿⣿⠀⡼⠀⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⠀⠀⠀⠀⠀⠀⠀⠀⠠⡹⣄⡃⠉⢄⠘⣿⣿⣿⣿⣿⣿⣆⠠⢤⣤⣴⠶⠶⠒⠛⢀⣿⣿⣿⣿⠇⣸⠃⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣧⡀⠀⠀⠀⠀⠀⠀⠀⠈⠢⢍⣑⠒⠄⠘⢿⣿⣿⣿⣿⣿⣷⣄⠠⢤⣤⣤⠀⣠⣿⣿⣿⡿⠋⢠⠃⢠⣄⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣦⣀⡀⠀⠀⠀⠀⠀⠀⠐⠨⢅⡚⡀⢤⠙⠻⢿⣿⣿⣿⣿⣿⡶⠤⠤⢊⣿⣿⡿⠛⠁⢀⠂⠀⠲⣌⠳⣦⣈⠛⢿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣦⣍⡈⠀⠀⠀⠈⠉⠛⠛⠿⠿⣿⣿⠿⠟⠋⠀⠀⡠⠁⡀⡄⣷⣌⢳⣌⠻⣿⣦⣄⡉⠫⠯⠉⠍",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⣋⣥⠖⠂⠀⠀⢦⣀⠀⠠⠁⠀⠀⠀⠀⠀⠀⠀⣰⠄⢐⠳⡐⠘⠿⠢⠙⢷⠙⣿⣿⣿⣦⡙⢧⣴",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣫⣴⡿⠋⣱⣿⠃⡇⠀⠈⣿⣧⣤⣤⡀⠀⠀⠀⣄⠆⡼⠋⣼⣿⣷⣤⣴⣿⣿⡗⠀⢇⠙⢿⣿⣿⣿⡆⢻",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⣴⣿⢏⠄⣴⣿⡟⡘⠐⡀⣄⢸⣿⣿⣿⣿⣿⡶⠀⢃⡾⠱⢀⣿⣿⣿⣿⣿⣿⠏⣴⡄⡌⣆⠈⢿⣿⣿⣿⠈",
"⣿⣿⣿⣿⣿⣿⣿⣿⠃⣾⣿⢣⠎⣼⣿⡿⠀⠀⠐⠰⠿⢸⣿⣿⣿⡿⢋⣶⣿⣶⣤⣴⣿⡿⠛⠛⠋⠉⠁⠨⣽⣇⠰⢸⡄⠘⣿⣿⡿⠀",
"⣿⣿⣿⣿⣿⣿⣿⠃⣼⣿⠃⠎⣼⣿⠟⢀⡾⢠⣴⠿⠃⢸⣿⣿⣿⡀⠻⣿⣿⣿⡿⠟⠉⣠⣶⣶⣾⣷⣶⣄⡀⠙⠀⡘⡇⡇⣿⡿⣡⢱",
"⣿⣿⣿⣿⣿⣿⡏⢰⣿⣿⠀⢸⣿⠏⣴⣿⣷⡆⠁⠀⠀⣿⣿⣿⡿⢃⣼⣿⡿⠋⠄⣡⣾⣿⣿⣿⣿⣿⣿⣿⣿⣆⠀⠌⢀⠀⡿⢡⡟⣿",
"⣿⣿⣿⣿⣿⡿⢁⢸⣿⣿⡆⢈⢻⠸⢛⣉⣩⠂⠀⠀⣴⣿⣿⣿⡦⢸⡿⡋⠈⠌⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠀⠉⢸⡇⣿⢹⣿",
"⣿⣿⣿⣿⣿⢱⢃⡄⢻⣿⣿⠈⡆⠃⢾⣿⡏⠀⠀⣼⣿⣿⠟⣫⡴⢋⠀⡃⠈⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠄⣿⡅⣿⠸⣿",
}
M.luffy = {
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⢟⣛⣛⣛⣉⣉⣉⣙⣛⣛⣛⠻⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⢋⣥⣶⡿⠟⠅⡿⠿⠿⠾⠿⠿⠍⠛⠋⢿⣶⣦⣍⡻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠡⠾⢟⣋⣀⣠⣤⣴⣶⣶⣶⣾⣿⣷⣶⣶⣶⣬⣁⣉⣙⠻⠦⣉⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⢟⣡⣴⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢿⣿⣿⣿⣿⣶⣦⣀⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⢛⣡⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠛⢉⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣉⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⣡⡾⠟⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠉⠁⠀⠀⠀⠀⠀⠴⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣙⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢋⣤⡞⡣⢐⣾⣿⣿⣿⣿⣿⣿⡿⠟⠋⠀⠀⠀⢠⣦⠀⠀⠀⠀⡀⠀⠀⠀⠉⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢟⢳⡌⠻⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢋⣴⠟⡡⢪⢜⡯⣿⣿⢉⡭⢛⠟⠋⠀⠀⠀⣠⣾⠀⣿⣿⣆⠀⠀⠀⢱⣄⠀⠀⠀⠀⠀⠙⠿⣿⢿⡛⢿⡛⣿⢷⡘⡦⣦⢹⣦⠘⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⡿⢡⣾⢋⣼⣼⡵⣡⣪⠟⢁⣤⠒⠁⠀⠀⠀⢀⣼⣿⣿⠀⣿⣿⣿⣦⠀⠀⠈⣿⣧⡀⠀⠀⠀⠀⠀⠈⠳⢝⢂⠋⢻⡁⡐⡐⣙⣦⡍⣷⡈⢿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⡟⢀⣿⣿⣿⣿⣿⡟⣱⠟⣠⣿⠁⠀⠀⠀⡄⢀⣾⣿⣿⣿⡄⣿⣿⣿⣿⣷⣄⠀⢹⣿⣿⡄⠀⢠⠀⠀⠀⠀⠀⠀⠁⠡⢴⣴⣾⣿⣿⣿⣿⣿⡄⢻⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⡿⢠⣿⣿⣿⣿⣿⣿⠖⣧⣎⣾⠁⠀⠀⢀⡜⠠⠟⠛⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣦⠈⠛⣻⣭⣄⠀⣧⠀⠀⠀⠹⣷⠳⡄⠘⠟⢻⣿⣿⣿⣿⣿⣿⡄⢻⣿⣿⣿",
"⣿⣿⣿⣿⣿⡿⢠⡟⡸⠻⠛⠹⣿⡟⠸⣿⣿⠁⠀⠀⠀⣼⢃⣾⣿⣿⣿⣷⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣦⢹⡆⠀⠀⠀⠹⠓⠸⡄⠜⠇⠆⠉⣿⣿⣿⣿⣿⠈⣿⣿⣿",
"⣿⣿⣿⣿⡿⠀⡿⢀⠁⠃⠇⡆⢻⢰⢰⡆⢁⡀⠀⠀⣰⣿⣿⣿⡿⠿⢿⣿⣿⣿⣿⣧⠹⣿⣿⣿⣿⣿⡿⠟⠛⠙⠛⢿⣿⠀⠀⠀⠀⠀⢄⠰⣴⣸⡘⣴⡌⣿⣧⣿⣿⠀⣿⣿⣿",
"⣿⣿⣿⣿⠀⢸⠀⡇⡎⡆⡆⡇⡈⡈⠚⣠⣿⣿⠀⠀⣿⣿⡿⠃⣠⣤⣤⡀⢙⣿⣿⣟⠀⢻⣿⣿⣿⣿⢠⣶⣿⣷⣄⠘⣿⡆⠃⠀⢹⣿⣾⣧⡈⠁⠃⢸⢸⣷⡍⡿⣿⠀⣿⣿⣿",
"⣿⣿⣿⣿⡀⢸⠀⡇⡇⡇⡇⣇⠁⣶⣾⣿⣿⣿⡆⢰⣿⣿⠃⣼⣿⣿⣿⣿⣿⣿⣿⣿⢀⡞⢿⣿⣿⣿⣏⠛⠟⠻⠟⠛⠛⢿⣼⢠⣼⣿⣿⣿⣧⠀⠆⠘⠌⡏⠇⣇⣿⠆⣿⣿⣿",
"⣿⣿⣿⣿⡇⢸⡆⡇⡇⠁⡡⢸⠁⣹⣿⣿⣿⣿⣿⠘⠟⠉⠙⣻⣿⣿⣿⡿⠿⠿⠟⣛⣛⣛⣛⣛⣛⣛⣛⣛⠷⠼⠿⣶⣶⣀⠉⢰⣿⣿⣿⣿⡟⠀⡼⠠⠠⠠⡠⡸⢿⢠⣿⣿⣿",
"⣿⣿⣿⣿⣷⠘⣧⢹⠘⠀⣁⣡⡁⣿⣿⣿⣿⣿⣿⡆⢴⣶⠻⠟⡋⢩⣵⣶⣶⣿⣿⣿⣿⠿⠿⠿⢿⣿⣿⣿⣿⣷⣄⣬⠙⣿⠂⢍⢿⣿⣿⣿⠏⣸⡷⠠⢁⠁⠁⢠⠁⣾⣿⣿⣿",
"⣿⣿⣿⣿⣿⠀⢿⢠⠡⠁⡹⢠⡄⢸⣿⣿⣿⣿⣿⣏⠘⣿⡆⢼⣿⣿⣿⡿⠟⠉⠉⠀⠀⠀⠀⠀⠀⠀⠉⠉⠙⠿⠿⡿⢠⣿⢠⣆⠼⠛⠉⣡⣈⠓⢰⣠⠋⠔⣱⢋⣼⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣧⠘⢄⢢⠁⡑⢦⡙⢸⣿⣿⣿⣿⡿⣿⡁⢹⣷⡘⠿⠟⠁⠀⢠⣂⣴⣿⣿⣶⣶⣾⣿⣦⣄⣀⠀⠀⠉⣡⣿⠃⠞⣁⣀⣴⣶⣎⠛⣷⣄⢱⣠⡾⢋⣾⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣶⡈⢾⣦⣹⣾⣷⡈⠻⣿⣿⣿⣿⣿⠟⡂⢿⣿⣆⡀⢰⡾⠿⠿⠿⣛⣛⣛⣛⣛⣛⣛⡻⠿⡧⢀⡴⠿⠿⠈⣾⣿⣿⣿⣿⣿⢣⢸⡏⠈⢋⣴⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣦⡙⠿⣿⣏⡱⠄⠻⣿⣷⢿⠽⣷⠙⠆⢻⣿⣷⣆⣀⠲⠿⣿⣿⣿⣿⣿⣿⣿⠿⠿⣃⣴⡞⢰⣶⠦⢐⣠⣿⣿⣿⣿⠏⠀⠈⣴⠀⣤⠙⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣬⡑⠿⡿⢷⣌⠻⣍⣶⠞⠗⡆⠀⠉⠻⠿⢿⣷⣶⣦⣭⣭⣭⣭⣭⣶⣶⣾⣟⠉⠰⢻⣿⣷⣿⣿⣿⡿⢿⣿⡂⠆⠀⢿⣦⠹⣃⣉⢿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⡮⠭⠉⠗⣈⡑⠀⠈⠁⠄⢀⣠⡀⡐⠈⠉⠙⠛⠿⠿⠿⠟⠛⡉⠉⡀⠂⠀⠘⠿⠿⠿⢛⣥⣶⣦⣉⣙⢳⡿⢆⣹⠃⣿⣿⡄⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⣋⣩⣴⣾⣶⣿⣿⣿⣾⣿⣿⣦⣀⡈⠀⣿⣷⣄⠀⠀⠀⢀⡆⠀⠀⡆⣰⢱⡠⢀⣉⣁⣤⣾⣿⣿⣿⣿⣿⣿⣮⡳⠿⣀⣀⠿⢛⣡⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⣁⣊⣙⣋⣍⣛⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣙⠻⣿⣷⣤⣀⣿⠃⡄⡠⡇⠃⣠⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣏⣵⣦⣩⣶⣦⡶⠞⢉⠈⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⠟⣡⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣮⣙⠻⣿⣿⡆⢓⣥⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣗⠈⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⠟⣡⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠓⣨⣥⣶⣿⣿⣿⣿⡿⠋⠀⢠⣿⣿⣿⣿⣿⡿⢿⡿⢿⠿⣿⣿⣿⣿⣿⣿⣿⣷⠸⣿⣿⣿",
"⣿⣿⣿⣿⠃⣼⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠛⠛⠛⠋⠛⠛⠿⡏⠳⢿⣦⢇⢹⠇⣸⣿⣿⣿⣿⠟⢛⣛⠁⠀⣴⣶⣿⣿⣿⠟⣡⠂⢀⣡⣞⡻⠿⣿⣿⣿⣿⣿⣩⠛⣿⠀⣿⣿⣿",
"⣿⣿⣿⣿⡆⣿⡙⢿⡙⣟⠋⠃⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠃⠊⠦⣠⣾⣿⣿⡟⠀⢀⣿⣿⣿⣿⠟⠫⠍⠛⠁⠒⠀⠀⠊⠥⠴⠅⠒⠁⢤⡴⢟⠋⣁⠙⠥⠔⢰⣿⣿⣿",
"⣿⣿⣿⣿⣇⠻⡙⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣷⣶⣿⡟⡿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠛⠋⡀⣼⣿⣿⣿",
"⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠋⠿⡘⣿⠸⠈⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⢿⣿⣿",
"⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⢠⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣤⣄⣀⠀⠀⠀⣀⣠⣤⣄⡀⠀⣠⣤⣤⣴⣦⣤⣶⣶⣶⣤⣤⣤⣤⣤⣤⡄⢠⣴⡦⠀⠀⠀⠀⠀⠀⠈⢻⣿",
"⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠘⣿⣿⣇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢰⣿⣿⣿⣿⣿⣿⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢣⣾⡟⣀⣠⣤⣤⣤⣀⡀⠀⠈⢿",
"⣿⣿⡏⠀⠀⣠⣴⣾⣿⣿⣷⣌⢻⣿⢸⡏⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠘⣿⣿⣿⣿⣿⣿⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣸⡟⣰⣿⣿⣿⣿⣿⣿⣿⣿⣶⡌",
"⣿⡏⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⡎⢿⣾⡇⣼⣿⣿⡿⠿⠟⠛⠛⠛⠋⠉⠙⠛⠀⠛⠛⠛⠛⠛⠛⠸⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠻⠿⣿⠇⣿⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧",
"⡟⢱⣿⡿⠿⠿⠿⠿⠿⠿⣿⣿⣷⠸⠈⠐⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠉⠈⠛⠻⢿⣿⣿⣿⡿⠿⠿⠿",
}
M.zoro = {
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⣿⣿⣿⣿⣿⣿⡿⠟⠉⣹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠈⠼⢛⣩⣀⣨⣥⣶⣏⣀⠹⣿⣿⣿⡿⠟⢉⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⢸⣿⠟⠁⠼⣋⣴⣾⣾⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣶⣶⣤⣬⣀⠀⠛⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠟⣡⡆⠘⣡⣤⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣖⣀⢠⣍⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠸⡟⠀⣠⣿⣯⣾⣿⣿⣿⣿⣿⣿⡿⡿⢋⣴⣿⡿⢿⡿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣤⣤⡈⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢰⣧⢀⣾⣿⣿⣿⣿⣿⣿⣿⣶⢐⠏⡜⢰⠟⣿⠟⡴⢋⣴⡿⢛⣽⣿⣿⣿⣿⣿⠛⣩⣿⣿⣿⣿⣿⣏⠐⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠋⢂⣿⣿⣿⣿⢿⡿⢸⣿⡿⢿⡟⡋⡿⢿⡿⢡⠆⣯⣼⣱⡟⠋⢀⣥⡾⠿⢿⣿⡟⣋⡾⢋⣽⣿⣿⣿⣿⣿⣧⡈⠻⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⣠⣾⣿⣿⣿⣿⡎⣰⡼⣿⣿⡌⢰⡇⠁⢸⠀⠛⢐⡉⣹⣿⡏⢀⡿⢁⠀⣴⣿⣿⠋⡩⢐⣽⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⢸⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⣘⠈⣻⡟⣿⡟⢹⡿⢁⠙⠀⠿⣿⠇⠘⢡⠇⡄⢂⣾⠟⠸⢟⣫⡖⢈⡴⢃⣈⣿⡷⢐⣣⠖⣘⡽⣛⣿⣿⣛⠟⣛⣻⣿⣿⣿⠦⠙⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⣿⢡⠸⢣⠸⡇⣾⠀⣷⢠⡏⣤⢴⠟⢛⣡⣌⡉⠈⠛⠦⡉⣬⣭⣴⣶⣶⣤⣭⣭⣙⣛⠻⢟⣻⣯⣿⠟⢛⠟⣋⣿⣿⡦⠄⢛⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠘⣿⠿⣇⠃⠸⣦⣇⠹⡦⠥⠿⠃⣈⡂⠨⣄⠙⣿⣿⣷⣮⣥⣦⡈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡘⢯⡭⢀⣼⠟⣚⣿⡿⣿⣄⠀⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⢉⡛⠀⢿⣄⡀⢀⡑⠆⣉⣴⣶⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⡇⠀⣤⣶⠾⠿⢟⣑⣊⠽⣿⣷⣌⠻⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⡌⣿⣿⣧⠹⡇⢠⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡙⢿⣿⣿⣿⠘⣷⡐⠾⣭⣍⣉⡴⢊⣭⣄⠲⢾⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⠠⣸⣿⡇⠣⡁⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣯⢻⣿⣿⣿⣿⣿⣿⡿⢿⣿⡈⠻⣿⣿⡇⢻⠭⢅⠨⢛⣛⣷⣿⣿⡇⢸⣿⣿⣿⠿⠋",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡌⢿⡗⢤⣤⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⢸⢸⣿⣿⡿⣿⣿⣿⣷⡜⣿⣷⣤⣽⣿⡇⢸⣪⡥⢚⣿⣾⣿⡿⢟⠁⠈⠛⠛⠁⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡍⢁⣤⣮⡀⢬⠘⣿⡟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⠘⣿⣿⣷⡌⣿⣿⣿⣷⠘⣿⣿⣿⣿⣷⣦⣍⠲⣿⣿⣿⡏⣴⢀⠉⢰⣦⡀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠻⣿⣿⣦⡀⢿⣇⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⢠⣿⣿⣿⡇⠈⣿⣿⣿⣇⠙⣛⣛⠻⢿⣿⣿⣧⠹⡿⠋⣸⢡⢸⡆⣾⣿⣿⣆⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡁⢈⣒⠲⠾⠈⠻⢸⠿⢛⣉⡙⢿⣿⣿⣿⣿⣿⣯⢻⣿⠞⣼⣿⣿⣿⣷⣾⣿⣿⡟⣡⠈⠿⠿⠿⢿⣿⣿⠿⠀⠴⠀⠇⠘⣾⡇⢿⣿⣿⣿⣦⠀",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡦⠙⣥⡀⣿⣧⡴⠎⣁⡙⠿⣿⣿⣿⣿⣿⣿⣿⡈⣯⢰⠘⣿⡿⠿⠟⠛⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡇⡒⠀⠀⡄⡿⠁⢚⣿⣿⣿⣿⡇",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⢸⣧⢹⣯⣴⡿⠿⠿⠶⠬⠍⠙⠛⠛⠛⠿⠇⣿⠨⡑⠈⠀⠀⠀⢀⡤⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⡇⠇⢰⡆⢰⠃⠀⢰⣿⣿⣿⣿⢃",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢀⡙⠌⠃⠀⠀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⡇⠁⠀⠀⠁⠀⠀⢺⣿⣿⣿⡿⣸",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀⠘⠆⠀⠀⠀⠛⠁⠀⠀⠀⠀⠀⠀⠀⢀⣶⠸⣿⣿⣿⣧⡀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⣿⣿⣿⠁⠀⠀⠀⠀⠐⢦⡍⣹⣿⣿⣇⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢠⠢⡄⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⣿⡀⢿⣿⣿⣿⣿⣷⣦⣤⡤⠄⢀⣂⣀⣙⡛⠿⣿⣿⣿⡀⠀⠀⢠⡘⣦⡱⣶⣿⣿⡟⣸⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⢸⣧⡄⠀⠈⢶⣶⣶⣶⣶⣶⣶⣿⣿⣿⣿⡇⢸⣿⡿⢿⣿⡿⢛⣩⣶⣿⣿⣿⣿⣿⣿⣶⣌⢻⣿⡇⠀⠀⡆⠱⡌⣣⣿⣿⣿⣇⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠁⠀⢸⣿⣿⡌⠂⠀⢻⣿⡿⢛⣫⣭⣭⣭⣭⣿⣓⣌⣛⣥⣬⣵⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡘⠁⡄⠀⡇⡆⠀⣽⣿⣿⣿⣍⠻⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠋⠀⠀⠀⠀⢸⣿⣿⣄⣓⠀⠀⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⡿⡿⠟⣿⡿⢿⣿⣿⣿⣿⣶⣤⣀⣁⣁⠸⢛⣿⣿⣿⠿⢓⣸",
"⣿⣿⣿⣿⣿⣿⣿⠟⠋⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⡗⠄⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠉⠉⠉⠉⠻⠙⢷⢀⢌⠂⠻⣌⠂⠢⠙⢟⡻⣿⣿⣿⠿⠋⠀⣾⣿⣿⣷⣦⡍⠹",
"⣿⣿⣿⡿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⠀⣼⣿⣿⣿⣿⣿⣿⡿⣿⡿⠁⠠⠤⠶⣒⣋⣥⣶⠷⢀⣤⠤⣌⣀⣉⠓⠀⠀⠀⠀⠀⡄⠀⠀⠈⢼⣿⣿⡿⠟⠋⠀⠀",
"⡿⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⠏⣴⣿⣿⠋⢹⣏⠇⠻⠇⠟⣁⡐⠒⠛⠛⢛⣋⣩⣤⠶⠛⣡⣴⣿⣿⣿⠏⡀⡀⢸⠀⠀⠁⠀⠀⢐⣿⠟⠁⠀⠀⠀⠀⠀",
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢘⠛⢛⣋⣥⠞⡫⢐⠁⠂⡸⠃⠀⠂⠠⣾⣿⣍⠛⠛⣛⣛⣭⣭⣴⣶⣾⣿⣿⣿⡿⠃⠀⠃⠇⠈⠀⢀⠀⠰⢀⣾⡇⠀⠀⠀⠀⢀⣬⣶",
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣷⣦⣬⣀⣈⠀⠕⢚⣈⠀⢴⡾⠁⣦⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠟⠛⠉⠀⢠⠀⠀⠀⠀⢰⢸⠀⠀⣸⣿⣿⣶⣤⠀⢠⣾⣿⣿",
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⠀⠀⢠⣿⣷⣄⠉⠉⢉⣉⡉⠁⠀⠀⠀⠀⢰⠀⠀⡄⠘⠀⠀⣦⠠⡈⠀⠀⣨⣿⣿⣿⡿⣡⣶⣶⣿⣿⡟",
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡧⠀⠨⢿⣿⣗⠀⠀⣼⣿⣿⣿⣷⣦⣤⣠⡌⠀⣰⣠⣤⣺⣰⣿⣵⠃⠀⢨⣿⣿⣿⡿⢡⣿⣿⣿⣿⣿⣧",
}
M.robin = {
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⢛⣫⣭⣭⣭⣛⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⣋⣵⣾⣿⣿⡟⣰⣿⣿⣿⣶⣍⡻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢋⣵⣿⣿⣿⣿⣿⣿⢱⣿⣿⣿⣿⣿⣿⣿⣦⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⣡⣾⣿⣿⣿⣿⣿⣿⣿⠇⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢣⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢡⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋⠀⣈⡛⠿⣿⣿⣿⣿⣿⡟⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⢹⣿⣿⣿⡿⠛⠿⠿⢿⡿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⡇⠀⠋⣐⣀⣍⡋⠔⣂⡙⢿⣿⢡⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠿⢿⣿⣿⢡⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠆⢛⣫⡥⠖⡸⢈⣒⡒⠂⠃⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⠀⡷⢸⣿⣿⣿⣿⣶⣬⣙⢠⠥⢘⠻⢿⣿⣿⠿⠿⠿⣛⣛⣛⣛⣒⣒⣒⣒⣒⠢⠭⠭⢍⣉⣙⡛⠛⠛⠿⠿⠟⣋⡅⠙⣨⣴⣶⣷⣶⣿⣿⣷⣶⡌⣆⢻⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⠐⠄⣿⣿⣿⣿⣿⣿⣿⠿⠦⠌⠳⣌⠲⠦⣄⡈⠽⣿⣿⣿⣝⣛⣛⣛⣿⣭⣭⣭⣵⣶⣶⠶⠒⡊⠉⢀⡅⡇⠈⣁⣠⣤⣥⣬⣍⡛⣿⣿⣿⣿⣿⡀⠈⢀⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⡆⢧⢸⣿⣿⣿⣿⡟⣡⣾⣿⣷⡶⠆⠀⠱⣬⡛⠿⢶⣶⣭⣭⣙⣻⣿⠿⠿⣛⣛⣭⣥⣶⡾⢟⢰⡀⠉⠀⠀⠀⠐⢽⣿⣿⣿⣿⣷⠘⣿⣿⣿⣿⡇⡆⣾⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣧⢀⠘⣿⣿⣿⣿⢰⣿⣿⣿⣿⠃⠀⠀⠀⠀⠁⠎⢤⣍⡛⠟⠻⣿⣿⣿⡿⣿⣿⠿⡃⡖⠐⠉⠀⠀⠀⠀⠀⠀⠀⠀⠻⣿⣿⣿⣿⠇⣿⣿⣿⡟⢰⠇⢿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⡆⠃⢻⣿⣿⡏⢸⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠇⠲⠦⠤⢠⡆⡴⠖⠛⠁⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿⣿⢠⣿⣿⣿⡧⢐⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣷⡐⡌⣿⣿⣷⢸⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⡏⣼⣿⣿⣿⢃⡇⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠂⠘⣿⣿⠈⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡿⢠⣿⣿⣿⠇⡀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠣⠹⣿⡆⢿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠇⣾⣿⣿⡟⠸⢡⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⢃⠹⣷⠸⡏⠀⠀⠀⠀⠀⠀⠀⠀⡄⠐⠂⠀⠀⡀⠀⠀⠀⣀⢀⠀⠀⠀⡀⠐⠂⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢰⣿⣿⡟⡐⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠁⠹⡆⢇⠀⠀⠀⠀⠀⠀⠀⣄⣈⠀⠒⠀⣈⣡⣤⣾⡇⣿⢸⣿⣶⣤⣁⡀⠀⠐⠀⣀⣠⠀⠀⠀⠀⠀⠀⢀⣿⣿⠟⠈⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣀⠹⠘⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⢸⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⢸⡿⠃⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⠁⠀⠀⡀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⢸⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣠⡆⢠⠀⠀⠀⠎⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⢰⣃⠀⢰⣀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⡗⠄⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⣿⡇⢸⡾⠀⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⣿⠀⡇⣿⠀⢸⣿⣿⣿⣿⣿⣿⡿⠿⠿⠶⠿⠿⠿⢿⣿⣿⣿⣿⣿⡿⠐⠋⠀⢹⠃⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠻⠀⠀⠋⠀⠀⠹⣿⣿⣿⣿⣷⣶⠿⠿⠿⠟⢻⣿⣶⣿⣿⣿⣿⠟⠁⠀⠀⠀⠈⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣿⣿⣷⣤⣤⣴⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠿⣿⣿⣿⣿⣿⣿⣿⠿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⣠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠻⠿⠿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠀⢀⠌⣼⠃⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⢀⣴⡏⢸⠿⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⡿⠃⢀⣠⣿⡟⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⡿⠟⠁⣴⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣷⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⡿⠋⡠⢠⣼⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣶⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣋⣡⣴⣿⢁⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⠏⠀⣰⣷⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠛⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⠇⣾⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣾⣿⣿⣿⣿⣿⠃⠀⣰⣿⡿⠀⠀⠀⠀⠀⠀⠀⢀⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠀⠀⠉⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣟⣘⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⢀⢠⢠⣶⠆⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⠇⠀⣰⣿⣿⠇⠀⠀⠀⠀⠀⠀⠰⠿⢛⡀⠀⠀⠀⠀⠀⠀⠀⠈⣰⣶⣷⣶⣶⣦⣭⣙⠿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⠟⣫⣥⡶⠀⠀⣾⣿⣿⣿⠈⢸⡿⠀⠀⠀⠀⠀⢨⣍⣙⣛⡛⠿⢿⠏⠀⢰⣿⣿⣿⠀⠀⠀⠀⠀⠀⢠⣾⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣷⣌⠻⣿⣿⣿⣿",
"⣿⣿⣿⣿⠟⣴⣿⣿⣿⠇⠀⣼⣿⣿⣿⡿⡀⡿⠁⠇⠀⠀⢸⠀⢸⣿⣿⣿⣿⣿⡆⠀⠀⣾⣿⣿⡇⠀⠀⠀⠀⠀⠀⣾⠟⠻⠿⠇⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡙⣿⣿⣿",
}
M.chopper = {
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠛⠛⠛⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⡿⢛⣩⣭⣉⠻⠿⣿⣿⣿⣿⣿⣿⣿⠿⠛⣉⠉⠁⠀⠀⢀⣤⣤⠀⠀⠀⠀⠀⠀⠉⠙⠻⢿⣿⣿⣿⡟⣡⣶⣿⣿⣆⠙⡛⢿⣿⣿⣿⣿⣿⣿",
"⣿⣿⡟⣰⣿⣿⣿⡟⣸⣦⢸⣿⣿⣿⠿⠋⠀⠠⠾⣛⣀⣠⣤⣀⣬⣉⣉⡀⠀⠀⣴⣦⡀⠀⠀⠀⠀⠈⠻⠏⣼⣿⣿⣿⠟⣥⣾⣿⠎⡿⠿⣿⣿⣿⣿",
"⣿⡟⢰⣿⣿⣿⠏⣴⡿⠋⣼⡿⠋⣡⠆⢀⣤⣾⣿⣿⡿⠿⠿⠿⠿⠿⠿⠿⣿⣶⣌⡉⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⡿⢁⣾⣿⣿⢏⡜⢰⣷⡈⢻⣿⣿",
"⡟⢡⣿⣿⡿⠋⣼⡏⢂⣼⠟⠁⠀⣡⣶⣿⡿⢋⣩⣅⡀⠀⢀⣤⣶⣶⣦⡀⠈⠛⢿⣿⣦⠀⣠⣶⣦⠀⣸⣿⣿⡟⢱⣿⣿⡿⢣⣾⡇⢸⣿⡇⢢⠹⣿",
"⠇⣾⣿⡟⠁⣼⠞⠂⡾⠃⣠⠄⠰⠛⠉⡅⢄⠈⠉⣛⠛⠿⣿⣿⣿⠛⠉⠀⠀⠀⠀⠙⣿⣧⠈⠉⠁⠀⣿⣿⣿⠁⣿⣿⡿⢡⣿⣿⠇⣾⣿⡇⣼⢠⠘",
"⠀⣿⣿⠁⢰⠿⠀⣸⠇⠘⠋⡀⠀⠁⠀⠀⠀⠀⠀⠀⠈⠁⠒⠬⢉⠻⠶⡄⠀⠀⠀⠀⢸⣿⣧⠀⠀⠀⢿⣿⣿⣠⣿⣿⢃⣿⣿⣿⢸⣿⣿⠇⣿⢳⡆",
"⣇⢻⣿⠂⡀⠀⠁⠛⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⣄⠀⠀⠀⠀⣼⣿⣿⠀⢾⡇⢸⡿⣿⣿⣿⣿⠀⢿⡿⢃⣿⣿⡏⣸⡟⣸⠀",
"⣿⡌⢿⣶⣷⣈⣐⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⠀⠀⠀⠀⠀⠀⠁⠠⠀⠺⣿⣿⡿⠀⠀⠀⠸⡿⢿⣿⣿⣿⣄⣠⣴⣿⣿⠟⣴⡟⣰⡟⢰",
"⣿⣷⣌⢻⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣶⣿⣿⣿⣿⣷⣦⣄⠀⠀⠀⠀⠀⠀⠂⠈⠛⢡⣾⣦⠀⠀⠩⠍⢚⣿⣿⣿⣿⣿⣿⣥⣾⠏⣴⡿⢡⣿",
"⣿⣿⣿⣧⡙⠻⠐⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⠆⠀⣴⣶⣶⡀⠀⠉⠉⠀⠀⠀⠈⢐⣄⣻⣿⣿⣿⣿⣿⣡⣾⡟⣡⣿⣿",
"⣿⣿⣿⣿⣿⣶⡈⠀⠀⠀⠀⠀⢀⣼⣿⡿⠋⣉⣉⣹⠟⠉⠙⠻⣿⣿⣿⢀⣠⣄⡈⠹⣿⣷⠀⠀⠀⣰⢂⠢⠠⠿⠿⠉⠃⢋⠛⠋⢹⠿⢋⣴⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⡦⠄⠀⢤⣤⡈⠻⠟⢀⣾⣿⣿⣿⣷⠠⣶⣿⣿⠿⣿⣿⣿⡿⠿⠄⣈⣡⣧⠀⠀⢻⡘⢿⣦⠑⠈⠀⠀⠀⠈⢠⣤⣾⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⠋⠀⠀⠀⣸⣿⣷⠘⠟⠛⢛⣿⣷⣌⠛⠁⠈⠛⢡⣾⣿⣿⣿⣥⣀⢀⡀⠉⣩⡀⠀⠀⣤⣤⣤⣀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⢉⠀⠀⠀⢠⣿⣿⣿⣇⡘⢰⣿⣿⣿⣿⡇⢠⣈⠁⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠹⣿⣿⣿⣿⡄⠀⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⠀⠈⠗⣀⡘⠋⠋⠉⣉⣙⠒⢤⡙⠻⣿⡇⣾⣿⠂⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠀⠀⠀⠈⢉⠹⠿⠃⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣦⡀⢰⣿⣇⣀⣽⠈⢿⡿⢿⣶⣌⡓⢶⣄⣙⠻⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠋⠀⠀⠀⢀⣠⣴⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣄⣙⣛⣫⡄⢧⠀⠀⠫⠉⠿⠿⠶⠌⠻⢿⣷⣤⡍⠛⠻⠿⠟⠫⢙⣀⠠⠤⠄⣀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡷⠘⣧⡀⠀⣤⠶⠤⠥⠄⣥⠄⠈⠿⠆⠤⢴⣦⣤⡀⠄⡀⠀⠀⠀⣿⡀⠀⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠘⠿⢂⠀⠀⢀⠀⠬⠅⠂⡀⢀⡀⠐⢒⡂⠉⠛⢶⣌⠢⡀⠀⢻⡧⠀⠀⠘⣛⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⢀⣾⡆⠀⠀⠄⣿⣇⠀⣀⣸⣿⣶⠍⠠⢀⠀⠃⠈⢦⡙⢷⣤⣀⣉⡐⠷⠀⢀⡙⣇⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣅⠀⢠⡿⠁⠀⣰⡶⠀⢀⠻⣷⣄⡙⢿⣿⠀⠶⠾⢰⣄⠀⠀⠁⣼⣿⡿⠋⠁⢀⠀⠿⠇⣸⡄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⣠⣾⡿⠁⠈⠀⠑⣂⣙⠻⠶⣬⣑⣀⠠⠿⠟⣛⡋⠀⠙⠋⠀⠀⡀⠐⢸⣛⣩⣤⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⣰⣿⣿⠃⠀⠀⠀⢰⣿⣿⣿⣶⠖⠈⠭⠍⣉⡙⠋⢹⣴⣢⠀⠈⠘⠁⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠻⣿⡟⠀⠀⠀⠀⢠⣽⣿⣿⡟⠀⠀⠀⠉⣼⣿⠗⠀⢿⣿⠀⡄⠀⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠰⣿⣿⡄⠀⠀⠀⠈⠛⠛⠛⠀⠀⠀⠀⠀⣿⣿⠃⠰⠀⠉⠀⠔⠲⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
}
M.sanji = {
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢋⣴⡿⢋⣶⣿⣿⣿⠟⣡⣾⠟⣩⣴⣾⣿⣿⠟⣡⣾⣿⣿⡇⠈⠉⠙⣿⣿⠻⣦⡙⣿⣿⣦⡹⣿⣧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢋⣴⠟⣩⣴⣿⡿⣩⠟⣵⡿⢋⣴⣾⣿⣿⡿⠛⢁⣾⣿⠟⣹⣿⠇⠠⢶⣧⠘⢿⣷⡘⣷⡘⣿⣿⣷⡜⢿⣷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⠿⠛⠉⠖⣋⢁⣼⣿⣿⠋⣼⣿⣿⡟⣡⣿⣿⣿⣿⢟⡡⢠⣿⡿⢁⣾⢹⣿⠀⢰⣦⡙⡁⠈⢿⣷⠹⣷⡸⣏⢿⣿⣎⢿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢣⣾⣿⣿⢃⣾⣿⣿⠏⣰⣿⣿⣿⡿⢃⡾⢣⣿⡟⢠⣿⡿⣸⡿⠀⣾⣿⣿⡄⠀⠈⢻⣧⢻⣧⢹⣆⢿⣿⡆⢿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢡⣿⠟⣽⠃⣾⣿⣿⡟⣸⣿⣿⣿⣿⢡⣿⢣⣾⠋⢠⣿⣿⠃⣿⠃⢰⣿⣿⣿⣿⡄⠀⢀⣿⡎⢿⣇⢻⡌⣿⣿⡘⣿⣧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⣾⡟⣼⡏⣼⣿⣿⡟⣰⣿⣿⣿⣿⢁⣿⡏⣼⡿⢠⣿⣿⡿⢰⡏⠀⣾⣿⣿⣿⣿⣿⡄⠂⢹⣷⠸⣿⡌⣧⢸⣿⣇⢻⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⣿⡏⣼⣿⢣⣿⢣⣿⣿⡟⢰⣿⣿⠇⣾⠇⣿⣿⢠⡿⢃⣿⣿⣿⠇⣿⠃⣰⣿⣿⣿⣿⣿⣿⣿⡌⠈⣿⡆⣿⣧⢻⡎⣿⣿⣆⢿⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⣿⢰⣿⡏⢸⣿⢸⣿⡟⠀⣾⣿⡏⣸⡟⣸⣿⡟⣸⠇⣼⣿⣿⡟⢸⠏⢠⣿⣿⠿⠿⣿⣿⣿⣿⣷⠀⢹⡇⢹⣿⠘⡇⢻⣿⣿⠘⢿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⡇⣾⣿⡇⣿⣿⢸⣿⠁⢠⣿⣿⢰⣿⢡⣿⣿⡇⡿⢸⣿⣿⣿⢁⡟⠀⡼⢋⣴⣿⣧⡙⣿⣿⣿⣿⣇⠈⡇⡸⣿⡆⣧⠈⣿⣿⠀⣆⢿⡇⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⠀⣿⣿⢸⣿⣿⢸⡟⠄⣼⣿⡏⣼⡇⣾⣿⣿⡇⠀⣿⣿⣿⠏⣾⠓⣰⡇⣿⡥⠶⠞⣠⣿⣿⣿⡿⢛⠀⡟⡄⣿⡇⣿⠀⣿⣿⢰⣿⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⠐⣿⣿⢸⣿⣿⢸⡅⢰⣿⣿⡇⣿⢇⣿⣿⣿⠃⠀⣿⣿⡏⣰⠁⢠⣿⣧⡙⢷⣶⣾⡿⠟⠋⣡⣶⣿⡆⠃⣧⣸⡇⠋⠀⢻⣿⢸⡿⢸⡗⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⡇⢿⣿⡘⣿⡟⡈⠁⡏⣿⡿⢸⣿⢸⣿⣿⢻⡄⢸⣿⡟⣰⡟⢁⣾⣿⣿⠿⠂⠀⡀⢀⣠⣬⣭⣙⠻⡇⢀⢸⣿⠇⢀⣽⢸⣿⢸⡇⣾⠇⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⣿⡜⢿⡇⢻⠁⠠⢸⠀⣿⡇⢸⡇⢸⣿⡏⣿⡇⣼⡟⢠⡏⠀⢾⣿⣿⣁⣀⣀⣠⣴⠿⠟⠛⠛⠿⣷⠀⣄⢸⢿⢠⣤⡏⢻⡇⢸⠁⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⣿⣷⡜⡇⠀⣤⠀⣾⠀⣿⡿⢸⣇⢸⣿⠃⣿⣇⠹⠁⢸⠃⢠⠈⣿⣿⣿⣿⣿⣯⣀⣀⣤⣶⣦⣤⡀⠸⠟⠘⡇⠀⣾⣿⠈⢷⠈⠸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠁⢰⣿⣁⢿⡆⢿⣧⢸⡄⢸⣿⠀⢻⣿⠀⠀⠨⠀⡿⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⠘⢠⠀⣿⣿⢠⡈⠀⠰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢀⡌⣿⣿⡈⡇⢸⣿⣼⡇⢸⠟⠀⢸⡏⠀⠀⠀⢸⣗⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⢸⠀⠹⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣥⣿⣇⢹⣿⣿⣷⠀⣿⣿⠃⠈⠀⠀⡸⠁⠀⡀⢀⠹⠇⠀⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣾⠀⠈⠀⢀⡌⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠈⢡⠸⣿⡆⠸⠋⢀⡄⠀⠀⠁⣠⣾⣧⣸⣷⣄⡉⢟⣭⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠄⠀⠸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⣰⣿⠀⠟⠀⠀⡀⢸⣿⣦⣴⣾⣿⣿⣿⣿⣿⣿⣽⣦⣉⣣⣵⣤⣖⣴⠶⠟⢛⣿⣿⣿⣿⠃⢀⠐⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣀⣴⣧⠀⠹⣿⣿⣿⣯⣭⡝⠛⠛⣛⣋⣭⣭⣭⣭⣭⣭⣭⣥⣶⣶⣾⣿⣿⣿⡿⠃⣰⡏⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⣀⠀⠙⢿⡿⢋⠥⢊⣥⣾⣿⠿⠿⣿⡿⠿⠿⠿⣿⣿⣿⣿⣿⣿⣿⡟⠁⡀⠹⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⢠⠖⣡⣶⣿⣿⣿⣿⣷⣶⡤⠠⣤⣶⣾⣿⣿⣿⣿⣿⡿⠋⡀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡄⣠⣶⣌⠻⢿⣿⣿⣿⠟⠿⠃⠀⣿⠟⢻⣿⣿⣿⡿⠋⢠⣾⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠟⠛⠃⢸⣿⣿⣷⣄⠙⠉⠛⠀⠈⠀⠀⠉⠀⠈⠋⠀⠋⣠⣴⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠋⠁⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣦⣤⣀⣀⣀⣀⣀⣀⣤⣤⣤⣾⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠋⢰⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⡁⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢀⣾⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⣼⣷⣄⠘⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⡡⢹⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠠⣾⣿⣿⣿⣷⣄⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⣡⣾⠁⣾⣿⡿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ",
"⣿⣿⣿⣿⣿⣿⣿⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠿⣿⣿⣿⣷⣌⡙⠿⣿⣿⣿⣿⣿⣿⠟⣡⣾⣿⡏⡸⠟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
"⣿⣿⣿⠿⠟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣶⣌⣙⠛⢛⣉⣠⣾⣿⣿⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
"⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
}
M.brook = {
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠒⠀⠺⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠉⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠁⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⠋⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⠋⠻⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⡿⢿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡻⣿⣿⣿⣿⣿⣿",
"⣿⣿⡿⠛⢻⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠚⢿⣿⣿⣿⣿",
"⣿⡟⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿",
"⣿⠷⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⣤⣴⣦⣷⣷⣷⣶⣶⣠⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠨⠛⣿⣿⣿",
"⠟⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠻⣿⣿",
"⣤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⢿⣿⣿⡿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠋⢹",
"⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣷⣭⣵⣾⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⣾",
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⣾⣿⣿⣿⣿⣿⣿⣷⣜⢿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿",
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⣫⠵⠛⠉⠉⠛⣿⣿⣷⡿⡻⠿⠿⠿⢶⣝⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣹⣿",
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⠃⠀⠀⠀⠀⠀⢸⣿⣯⡞⠀⠀⠀⠀⠀⠹⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⣹",
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣇⠀⠀⠀⠀⠀⢠⡿⣿⣿⡁⠀⠀⠀⠀⠀⢀⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⣿",
"⠒⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⠖⠦⠤⢶⣶⢏⣴⠏⠻⣷⣤⣤⠤⠀⠠⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣻",
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⠛⠟⢿⣿⣿⣿⣏⢀⠀⢸⣿⣿⣿⣿⠿⡳⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢦⣿",
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠚⣡⡝⣫⡝⣫⢝⣝⢟⡟⠛⠅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿",
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠿⠇⣿⡇⣿⢸⣿⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿",
"⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠄⣄⠀⠈⠀⠉⠀⠈⠁⡀⢤⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿",
"⣶⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣰⢶⣾⣟⢵⡇⣿⠀⠀⠀⠀⠀⠀⢰⡇⣑⢕⡵⣯⣶⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣦⣴⣿⣿",
"⣿⣇⢀⠀⠀⠀⠀⠀⣀⣴⣾⣿⣿⣷⣗⣝⣽⣻⣥⣿⠀⠀⠀⠀⠀⠀⢸⢷⣕⢍⢔⣾⣿⣿⣿⣿⣶⣤⣄⡀⠀⠀⠀⠀⢠⣼⣿⣿⣿⣿",
"⣿⣿⣇⡀⠀⢀⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⣿⠀⠀⠀⠀⠀⠀⢸⢸⣵⣷⣿⣾⣿⣿⣿⣿⣿⣿⣿⠿⠓⠀⠀⠀⣴⣿⣿⣿⣿⣿",
"⣿⣿⣿⣇⣀⠀⠈⠙⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡟⠀⠀⠀⠀⠀⠀⢸⢸⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋⠁⠀⣠⣠⣤⣶⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⠀⣴⠀⠀⠀⠉⠻⣿⣿⣿⣿⣿⡟⣸⠃⠀⠀⠀⠀⠀⠀⠸⡾⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⣤⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣶⡀⠀⠀⠀⠈⠙⢿⣿⣿⢣⣿⠀⣿⣼⣶⣶⢰⣶⠀⣇⢿⣿⣿⣿⠟⠁⠀⠀⢠⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡶⠄⠀⠀⡠⣻⡯⢑⡙⢶⣤⣍⣤⣋⣬⣤⢔⣑⢿⣿⡟⠁⠀⠀⠠⠾⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⡿⠟⠛⠉⠀⠀⣠⣴⣿⣿⣿⢻⡜⠿⣦⡙⢷⣦⣶⠖⡱⠟⣋⢼⣿⣿⣶⣄⡀⠀⠀⠀⠀⠉⠛⠻⠿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⠿⠋⠁⠀⠀⠀⠀⠀⠀⠈⠙⢿⣿⡇⠿⠿⣥⡌⠉⠀⠈⠀⠀⠀⣪⢱⣾⣿⣿⣿⣿⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿",
"⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣿⣦⡷⣂⣤⢠⣦⣶⢰⣦⠙⢿⣿⣿⣿⡿⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣿",
"⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⢋⣾⣿⣷⣿⢿⣿⡏⣿⣷⢪⡻⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿",
"⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⢟⣼⣟⣿⢸⡟⣿⢹⣿⢡⢻⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿",
"⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⢫⣿⡟⣾⡏⢿⣿⣿⢸⣿⡏⣧⢳⡕⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿",
"⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⡿⣳⣿⡟⣼⣿⣧⣿⣿⣿⢸⣿⣧⣿⣿⣿⣎⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠠⠛⠛⣱⣿⡟⣼⣿⣿⣸⣿⣿⣿⢸⣿⣿⢿⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⡿⠹⠋⠈⠡⢹⣿⣿⡿⣸⣿⣿⠸⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠋⠁⠁⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿",
}
M.jango = {
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠈⣿⣿⣶⣌⠻⡶⣬⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⣰⣿⣿⣿⣿⣷⠀⢈⠻⣦⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⢁⣼⣿⣿⣿⣿⣿⠃⣶⡀⠑⢜⢷⠘⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⣫⣿⣿⣶⣿⣷⣶⣬⣍⡛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⣡⣾⡿⢛⣵⣿⣿⡟⠁⣼⣿⣿⡀⠈⠂⠃⣿⣿⣿⣿⣿⣿⠟⢃⡴⢋⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣍⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢡⠾⠋⣁⣴⣿⣿⠟⣋⠀⢾⣿⣿⣿⣿⣄⠠⠀⣿⣿⣿⣿⣿⢋⣴⡿⣱⢿⣿⡿⠟⣛⣩⣭⣭⣍⣛⡛⠿⣿⢷⡈⢿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⣡⣴⣾⡿⠿⠟⢀⢇⠟⣻⢆⠙⠿⠿⣿⣿⣧⠀⣿⣿⣿⡿⢁⣾⡟⣰⠙⣮⢋⣴⣿⣿⣿⣿⣿⣿⣿⣿⡦⢡⣾⣿⡄⢻⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⣰⣿⠿⠋⠁⠀⠀⢸⣎⣂⣀⠋⣼⡆⠀⠀⠀⠉⠛⢇⠹⣿⣿⢁⣾⡿⣰⣷⣠⣾⣌⢿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⡇⠘⣿⡈⢿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⠿⠛⣋⣭⣭⣬⣍⡛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢡⠟⠁⠀⠀⠀⠀⠀⠈⠻⣿⡷⠢⠟⠁⠀⠀⠀⠀⠀⠀⠀⠹⠇⣾⣿⢡⡟⢨⠟⣍⢻⡌⢿⣿⣿⣿⣿⣿⣿⣿⡇⣾⢀⣷⡙⠇⣸⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⠟⣉⡴⠞⡛⣛⡛⠛⠛⢻⣉⣑⣮⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⢸⣮⣒⡒⠀⣴⠠⠴⠒⠒⠂⠀⠀⠀⠀⠐⣿⡏⣼⣿⡞⠀⠘⠣⠹⡌⢿⣿⣿⣿⣿⣿⣿⠇⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿",
"⣿⣿⡥⢚⣥⣶⡟⣰⡿⠀⠌⢀⣶⣌⠻⣿⣿⣶⣍⡻⢿⣿⣿⣿⣿⣿⡿⠟⡋⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠉⡛⢓⡡⠔⢀⣀⠄⠀⠄⠸⢿⣿⣇⢢⡜⠣⣭⣶⣶⣿⣿⣿⣷⣶⣦⣬⣉⡛⠻⢿⡿⠀⢰⣿⣿⣿⣿⠿⠟⣛⣿⡿⢻⣿",
"⣟⡥⠾⢿⣿⡟⣰⡿⠁⡐⠀⣼⣿⣿⣷⣌⢻⣿⣿⣿⣶⣍⡛⠛⣛⣥⣶⡟⠀⠀⡔⠡⣾⣿⣿⠆⠀⢈⠘⢿⣦⡍⢠⡅⢏⠀⢴⣿⣿⡆⠀⠨⢻⡄⣿⡀⢿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣧⡰⣦⣤⣉⣉⣩⣥⣶⣶⣿⡿⢋⣵⣿⣯",
"⣿⣿⣿⣶⣶⣄⢻⠁⠰⠁⢰⣿⣿⣿⣿⣿⣧⡙⣿⡿⢛⣡⣴⣾⣿⣿⡿⠀⠀⠘⣧⡀⠀⠀⠀⠀⢀⠼⠘⣦⣈⡁⣨⡄⠈⠀⠀⠉⠉⠀⢀⡠⠸⣷⣿⣧⢸⣿⣿⣿⣿⣿⡎⠻⣿⣿⣿⣿⣏⢇⢈⢿⣿⣿⣿⣿⠿⢛⣩⣾⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣦⠠⠃⢠⣿⣿⣿⣿⣿⣿⡿⠓⠀⢾⣿⣿⣿⣿⣿⣿⠇⠀⠀⡐⠟⠀⢻⣶⠂⢹⣇⠀⡄⣝⣻⣂⠀⡀⡄⠀⣸⡟⠙⣿⠁⠑⢨⡉⢩⢻⡈⣿⣿⣿⣿⣿⣿⣦⠸⠛⣛⣛⣛⣂⡁⢐⣛⣋⣭⣐⢿⣿⣿⣿⣿⣿⢿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣦⠘⣾⣿⣿⣿⣿⠟⠋⠀⣠⣶⣎⠻⣿⣿⣿⣿⡿⠀⣠⠞⠁⠀⣐⡚⠛⠀⠈⣡⣼⡇⢬⣥⣖⢩⢧⣿⣦⣄⡁⠀⣈⣠⣴⣿⣿⢸⠀⡁⣿⣿⣿⡿⠟⢉⠄⢸⣿⣿⣿⣿⣿⡇⠀⠙⣿⣿⣿⣷⣬⡛⢿⣿⠇⣾⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣧⠘⣿⡿⠋⠁⢀⣴⣾⣿⣿⣿⠃⠀⢩⣝⣛⠃⡴⠃⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⠀⣦⣭⣍⢰⠂⢻⣿⣿⣿⣿⣿⣿⣿⣿⣏⣈⡀⡇⢻⠟⢉⣤⣾⠉⠀⣸⣿⣿⣿⣿⣿⠀⠀⠀⢹⣿⣿⣿⣿⣿⣶⠆⣼⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⢹⠄⣨⣴⣿⣿⣿⣿⡿⠃⡀⢀⣿⣿⣿⠘⠁⢀⣾⣿⠿⠿⢿⣿⣿⣿⠿⢛⣳⣮⢉⡁⣴⡚⠘⠻⠿⣿⣿⠟⠉⠉⠻⣿⣿⢰⠋⢀⣴⣿⣿⠏⡀⠀⣿⣿⣿⣿⣿⣿⠀⠀⢸⢸⣿⣿⣿⣿⣿⠏⣼⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡂⢺⣿⣿⣿⣿⣿⡿⠁⡐⠀⠎⣿⣿⡇⠀⢠⣿⡿⠁⠀⠀⠀⡿⠋⢠⣶⣿⠏⠀⠙⠃⠀⢩⡃⣷⣄⠈⠙⣠⣦⠀⠀⠸⣿⣮⠄⠈⣿⣿⡏⠀⠀⢀⣿⣿⣿⣿⣿⣿⠀⠀⠈⢸⣿⣿⣿⣿⠋⣼⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡘⣿⣿⣿⣿⡿⠃⡰⠁⡼⢰⣿⣿⠁⢠⣿⣿⠁⠀⠀⠛⠊⠀⣰⣿⣿⠏⠀⠀⠀⠀⠀⠀⢿⣿⣿⣦⡀⠀⠉⠀⠀⢠⣿⠃⠀⠀⣿⣿⠇⠐⠀⢸⣿⣿⣯⣿⣿⡿⠀⠀⠀⠘⣿⣿⣿⢃⣾⣿⢟⡻⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠹⣿⣿⣿⠁⢰⠃⢰⠃⣿⣿⣿⠀⢸⣿⢻⣧⣀⡀⣀⣀⣼⣿⣟⣡⣄⠀⠀⠀⠀⠀⢀⣀⣙⣿⣿⣿⣦⣤⣤⣴⠟⠁⠀⡘⠀⡷⣿⠀⡄⠀⢸⣿⣿⣿⣿⣿⡇⠀⢸⠀⣶⣿⠟⢡⣾⣿⡏⢸⡆⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠹⣿⠇⢠⡏⢀⡏⣸⣿⣿⣿⢰⡇⣿⢖⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡦⠀⠀⠀⢴⣿⣿⣿⣿⣿⣿⣿⣿⠿⠃⠀⢀⡸⠁⠀⣿⡏⢀⠀⠀⣾⣿⣿⣿⣿⣿⡇⠀⠘⠀⢉⣡⣴⣿⣿⣿⠇⣸⡇⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣅⠉⠄⡾⠀⣼⢡⣿⣿⣿⡿⢸⣷⠡⠁⢜⣿⣿⣿⣿⣿⣿⣿⣿⣏⣀⣀⡠⠄⣠⣽⣿⣿⣿⣿⣿⠟⠁⠀⠀⣠⡾⠀⠀⠀⣿⠇⠘⡀⠀⣿⡿⠿⢛⣋⣡⣴⣶⣾⣿⣿⠀⠀⠻⣿⣿⠀⣿⠇⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⠘⢧⣰⡇⣼⣿⣿⣿⡇⣸⣿⠀⢪⠢⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠋⠀⠀⠀⣠⣾⠏⠀⠀⠀⠀⣿⠀⡄⠀⠂⠁⠀⠀⠀⠀⠈⠿⣿⣿⣿⣿⠀⠩⢦⠙⠏⠈⣿⢀⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡗⠈⠻⣿⣿⣿⣿⣿⡇⣿⡥⠂⠁⡜⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⠉⠀⠀⠀⢀⣠⣾⠟⠁⠀⠀⠀⠀⠀⣇⡤⠃⠀⠀⠀⠀⠀⠀⠀⠀⢈⢸⣿⣿⡇⠀⡀⢣⠱⣄⣤⡇⣸⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠉⠁⠀⠀⠈⠙⠿⣿⣿⡇⣿⣧⡀⣴⡄⠾⢛⣛⣫⣭⣭⠙⣿⣷⣶⣶⣶⣶⣶⣶⣶⣶⣦⣤⣭⣋⣁⠀⠀⠀⠀⠀⠀⠀⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠃⠘⢿⣿⢀⢡⣿⠈⣷⣿⣿⢡⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⠉⠀⠀⠀⠀⠀⠀⠀⠈⠻⡇⣿⡿⠋⠁⠲⠿⠛⢛⠩⠍⣁⡤⠤⠖⠒⠒⠒⠒⣀⣀⣐⣒⣈⠉⠭⣭⡙⠛⠁⣠⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠃⠄⣾⠟⣰⣿⣿⠃⣾⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡟⠁⠻⠂⠀⡀⠦⠴⠞⣩⣥⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣬⣀⠄⠈⠀⠤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣣⣾⣿⣿⠏⣼⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣦⡄⠀⠀⠀⠀⠀⠀⠀⠐⠿⠁⢠⣄⢌⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋⢈⡆⠀⠐⠖⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⢀⣿⣿⣿⠋⣼⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡹⣧⣕⠦⣍⣛⠿⠿⠿⠿⠿⠿⠿⠛⠯⠭⠿⣟⣛⡩⠅⠢⢂⣴⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⣫⣴⣿⣿⡟⣁⣾⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⢋⣢⣴⣤⣤⠀⠀⠀⠀⠀⠀⠀⠈⢮⡛⢿⣶⣬⣭⣛⣛⣛⡻⠿⠿⠿⠿⠛⠛⠋⠭⠴⠾⠆⡪⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⠟⢁⣴⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢟⣫⣥⣬⡲⠦⢝⢿⣿⣿⣤⣤⠀⠀⠀⠀⠀⠀⠀⠉⠓⠎⠉⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠂⠀⠔⠚⢛⣛⣥⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
}
M.jimbei = {
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠁⠀⠀⠀⠹⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⢉⡄⢀⢀⠀⠆⠀⠀⠀⠀⢘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠉⠃⠐⢶⣥⣤⣤⣴⠚⠅⢀⠀⡐⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠠⢰⠀⡐⠻⠿⡎⢉⠄⡲⠿⠐⣘⢇⠘⣿⣿⣿⣿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠠⢀⢾⣷⣄⠘⠛⣈⣰⡶⣠⢹⣶⣆⢠⠀⠀⠉⠉⠁⠐⠄⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠉⠀⠬⢌⣼⠐⡝⢟⣫⣭⣭⣟⣑⠣⢿⣿⣿⣆⢆⢃⠄⡀⠀⠀⠀⠀⠈⠻⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠋⠉⠀⠀⢁⣴⣾⡟⣨⣾⣿⣷⠾⣶⣿⣿⣿⣶⣍⣻⣍⢳⣶⣿⠿⠓⣀⣄⠀⠀⠀⠀⠈⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢉⣤⠲⠄⢀⡀⢶⣌⠻⣿⣿⣿⣿⡏⠁⠀⠀⠉⢻⣿⣿⣿⣿⣿⡜⢛⣥⡶⠟⣩⣤⡶⠶⢀⡀⠀⠀⠙⣉⣬⡙⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⢠⠟⣀⢆⠀⠀⠻⣦⣝⢻⣿⣿⣿⣿⣀⠀⠀⣀⠀⣴⣿⣿⣿⣿⣿⣿⣮⢫⣶⣿⢛⠡⠐⠊⠁⢀⡤⢖⣫⣭⣶⣮⠀⠹⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⢁⠊⢌⣉⣑⡕⢄⠐⢾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⠛⠉⠀⠀⣀⠴⠚⢁⣊⡭⠽⣒⣒⣶⣖⣀⡈⠻⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⠋⡡⢐⣭⣶⣿⣿⣿⡿⠃⠀⠀⠀⠙⢿⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠁⠀⠀⢀⢔⣪⣥⣶⣟⣋⣁⠶⢿⣿⣿⣿⣿⣿⣿⠀⢿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⠿⠛⠂⠰⠿⢿⣛⣛⣫⠭⡒⠈⣂⡠⡀⠀⠀⠙⢿⡿⣩⡆⣾⣿⡇⡎⡿⠿⠿⠛⠁⠀⠀⠀⠀⠀⡣⢉⠭⣍⣉⡉⠹⢿⣿⣕⠢⢍⣛⠿⢿⣿⠀⢾⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⠁⠖⣚⡭⠭⠭⣉⠉⠥⣶⣿⡇⠀⠈⠻⣮⡂⠀⠀⠀⠑⠽⣓⡪⠭⢞⡓⠚⠁⠀⠀⠀⢀⣀⣢⣴⡾⠊⠀⠙⠪⡙⢿⣿⣶⣬⣙⢷⠰⣮⣭⣥⣢⣥⡈⠻⣿⣿⣿⣿",
"⣿⣿⣿⣿⡿⠀⡙⠏⠐⢉⣡⠤⢒⣢⣤⣭⣤⣤⣤⣤⣬⣭⣤⣤⣶⠄⢤⣤⣬⣿⡄⠤⣤⣀⠀⡠⣂⣽⡿⠋⠁⢀⣠⡶⣋⣵⣜⢶⣌⢙⠻⢿⣿⣷⡘⢿⣿⣿⣿⣿⣆⠘⣿⣿⣿",
"⣿⣿⣿⠋⠀⢀⡶⢐⠀⢜⣥⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⡌⡙⠿⠿⢋⣴⣌⠻⣳⣬⡍⡁⠀⠠⣒⣛⠩⣾⣿⣿⣿⡄⢻⣷⣌⠲⣭⡛⢄⢻⣿⣿⣿⣿⣿⣆⠸⣿⣿",
"⣿⡟⠁⢀⣾⡋⣼⢡⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢱⠁⠸⠿⠿⢿⠱⠲⣶⣶⣶⣶⣿⣿⣿⣿⣿⣷⣔⢌⠙⠟⣡⣧⠛⣿⣷⡈⢿⣶⣼⣿⣿⣿⣿⣿⣿⡆⢹⣿",
"⡏⠀⣰⣿⣿⢸⡇⠸⠿⠋⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⡌⢟⣛⣱⣿⣤⢠⢻⣿⣿⣿⣧⢻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⠻⣮⣿⣿⣧⠘⣿⣿⡰⡙⢿⣿⣿⣿⣿⣿⣿⣿⠀⣿",
"⡇⢇⢿⣿⣿⡘⢛⡄⣿⣿⡆⠃⢹⣻⣿⣿⣿⣿⣿⡿⣸⣿⣿⣿⣿⣿⢻⢸⣜⣿⣿⣿⣛⢸⡜⣿⣿⣿⣿⣿⣿⣿⣿⣿⢈⣣⡹⣿⣿⣿⠎⡨⣴⣶⣿⣎⠻⣿⣿⣿⣿⣿⣿⡆⣸",
"⣷⣄⣈⡻⢿⣷⣌⢿⠈⣿⡷⣹⣿⣻⣿⠿⣿⣿⣿⣶⣿⣿⣿⣿⣿⡟⡌⠻⠿⢿⣿⣿⣿⢸⡇⣿⣿⣿⣿⣿⣿⣿⡿⣣⣾⣿⣷⣾⣿⠊⣾⠀⣿⣿⣿⣿⣷⣹⣿⣿⣿⣿⣿⣷⢸",
"⣿⣿⣿⣷⣶⣬⠙⠷⣌⢹⢇⣿⣿⣿⣿⣿⣶⣮⢹⣿⣿⣿⣿⣿⡿⢁⠀⣾⣶⣦⠀⢨⡭⣸⡇⠸⡛⢿⣿⣿⣛⣥⣾⣿⣿⣿⢏⡼⣡⣷⣌⣀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢸",
"⣿⣿⣿⣿⣿⣿⣿⡶⠘⢼⣎⡻⢿⣿⣿⣿⡿⢣⣾⣿⣿⣿⣿⡿⢁⠂⣰⣿⣿⣿⡇⡘⡇⡿⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⢟⡵⢋⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢸",
"⣿⣿⣿⣿⣿⣿⣿⣷⡄⠜⢿⣿⣷⣶⣭⣥⣾⣿⣿⣿⣿⣿⠟⡵⢁⣼⣿⣿⣿⣿⡇⠡⠸⣱⣿⣿⣿⣿⣿⣿⣿⡿⠋⠱⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠛⠿⠿⣿⠿⢁⣼",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣄⣀⢋⡙⠿⠿⠿⠿⠿⠿⠿⠟⢁⣴⣿⣿⣿⣿⣿⣿⣇⠠⠛⣛⣛⣛⣛⣛⢛⣋⣁⣴⣾⣷⣦⣉⣙⣛⣛⣛⡛⣛⣛⣛⣛⣋⣠⣶⣿⣷⣶⣶⣶⣿⣿",
}
M.kinemon = {
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⣴⠆⣶⣎⢻⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋⠭⣴⣶⣾⣿⣿⢈⢹⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢛⣭⣴⣶⣿⣿⣿⣿⣿⣿⣿⣧⠘⣀⣭⣥⢤⠢⡙",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣡⣾⣿⠋⣀⠉⠀⠉⠨⠛⠿⠿⢋⣴⣿⣿⢆⡈⢁⣳⠱",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢋⣾⡟⠻⣿⡇⣾⣷⣦⣀⣤⡖⢂⠄⠙⢿⣿⡇⠿⣿⢐⠂⠠",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢡⣿⣯⡙⠲⠬⠇⣿⣿⣿⣿⢋⣴⣿⠀⠑⢾⣿⡇⠀⣥⠐⣩⣴",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢃⣿⣷⣌⠑⢀⣴⣿⣿⣿⡟⣡⣿⣿⣿⣷⣄⢢⣽⣿⠀⣭⣾⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⣾⣿⣿⡏⡠⡭⠭⡭⠭⠉⡐⣿⣿⡟⣚⣛⣛⣂⢹⡿⢸⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣼⣿⣿⣿⠀⢄⠀⠀⠈⡐⠰⢧⢹⣿⢀⠙⠌⢻⣿⣿⢇⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢰⣿⣿⢻⠡⠁⠀⣡⣶⣿⡇⠀⠺⡆⠇⢀⢡⣤⣤⣿⠏⣼⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣱⣿⣿⡿⢃⠀⡀⠀⠸⣿⣿⡇⢐⢠⣿⣼⣿⣿⣿⡿⢋⣾⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢏⣼⣿⣿⠟⣴⠃⠁⠁⣀⠀⣿⣿⡇⣤⡙⢿⣿⣿⣿⠟⣱⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠿⣡⣾⣿⡿⠃⣊⠕⠀⠂⠀⠃⢸⣿⣿⢇⣿⣿⣿⣿⠟⣡⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢁⠀⠀⠤⠙⠻⠛⠁⠈⠁⢭⣄⠠⠀⡀⠢⣿⢃⣾⣿⣿⡟⣡⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠑⠀⠀⠀⡄⠀⢀⣼⠶⢤⠈⠀⣺⣿⡷⢡⣾⣿⣿⢋⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠘⠀⠀⠈⡀⡚⠰⠨⢰⣿⠛⣡⣿⣿⡿⢣⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⢥⣀⠨⢄⠘⠃⠀⠈⢟⡻⢡⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠀⠀⠀⠀⠀⠀⠜⣰⠀⣿⣎⡋⠙⠉⠀⠠⠘⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠈⠀⠀⠀⣠⣾⣌⢳⣘⠻⡇⠀⠀⠃⠀⠀⡀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠐⠀⠀⠀⠀⠀⠀⣴⣾⣿⣿⣿⣦⣍⣥⣶⠀⠀⠀⠀⠀⢋⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠁⠀⠀⠀⠀⠀⣀⡐⢶⠸⣿⣿⣿⣿⡿⢡⣿⣿⣿⡄⠀⠐⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠋⠰⠀⠀⠀⠀⠀⢸⢿⣿⡶⢒⣀⣒⡢⠭⠑⠻⢿⣿⣿⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠁⠠⠀⠀⠀⠀⢸⠈⢻⠀⠻⣿⣿⣿⢡⣷⣶⡄⢍⡁⠠⠤⠄⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⢁⡄⠀⠀⢸⡷⡨⠑⣴⣶⣦⠄⣈⠻⠿⢛⡼⠋⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⠀⠀⣼⣿⡀⠀⠘⢸⣿⣤⣛⣛⠋⠘⢿⣷⠊⠋⠀⠀⠀⠀⠐⢀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⢠⣿⣿⣿⠆⢀⣸⡙⠿⢿⡟⣰⣿⡖⡷⠁⠀⠀⠀⠀⠀⠈⠈⢈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣾⣿⣿⡏⣼⣿⣿⣷⣿⣾⠁⣦⣍⣶⢁⣀⣤⣶⠃⠀⠀⢀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠋⢾⣿⣿⣿⣿⣿⣿⣾⣿⣿⡇⣾⣿⣿⣿⠀⣠⣀⣠⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢁⡀⠀⠈⠙⠛⠛⠿⠿⠿⠿⠿⠇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⣋⣴⣿⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣝⣛⣛⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢛⣥⣾⣿⣿⣿⣿⣿⣧⠀⠀⠀⠀⠀⣠⣴⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣭⣍⣛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢋⣴⣿⣿⣿⣿⣿⣿⣿⣿⡿⢀⣠⣤⣤⣀⠬⢙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣍⡛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⣿⣿⠟⣵⣿⣿⣿⣿⣿⣿⣿⡿⠟⣩⣴⣿⣿⣿⣿⣿⣿⣶⣦⣭⣭⣭⣛⣛⣛⣛⠻⠿⢿⣿⣿⢻⣿⡏⢹⣿⡆⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⣿⣿⡟⣡⣾⣿⣿⣿⣿⣿⡿⠟⣩⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⠖⢠⠾⢿⣁⠜⢉⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
"⣿⣿⣿⣿⠿⢋⣾⣿⣿⣿⣿⣿⠟⣫⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢋⠔⠾⠎⣀⠇⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿",
}
M.doom = {
[[================= =============== =============== ======== ========]],
[[\\ . . . . . . .\\ //. . . . . . .\\ //. . . . . . .\\ \\. . .\\// . . //]],
[[||. . ._____. . .|| ||. . ._____. . .|| ||. . ._____. . .|| || . . .\/ . . .||]],
[[|| . .|| ||. . || || . .|| ||. . || || . .|| ||. . || ||. . . . . . . ||]],
[[||. . || || . .|| ||. . || || . .|| ||. . || || . .|| || . | . . . . .||]],
[[|| . .|| ||. _-|| ||-_ .|| ||. . || || . .|| ||. _-|| ||-_.|\ . . . . ||]],
[[||. . || ||-' || || `-|| || . .|| ||. . || ||-' || || `|\_ . .|. .||]],
[[|| . _|| || || || || ||_ . || || . _|| || || || |\ `-_/| . ||]],
[[||_-' || .|/ || || \|. || `-_|| ||_-' || .|/ || || | \ / |-_.||]],
[[|| ||_-' || || `-_|| || || ||_-' || || | \ / | `||]],
[[|| `' || || `' || || `' || || | \ / | ||]],
[[|| .===' `===. .==='.`===. .===' /==. | \/ | ||]],
[[|| .==' \_|-_ `===. .===' _|_ `===. .===' _-|/ `== \/ | ||]],
[[|| .==' _-' `-_ `=' _-' `-_ `=' _-' `-_ /| \/ | ||]],
[[|| .==' _-' '-__\._-' '-_./__-' `' |. /| | ||]],
[[||.==' _-' `' | /==.||]],
[[==' _-' N E O V I M \/ `==]],
[[\ _-' `-_ /]],
[[ `'' ``' ]],
}
M.pacman = {
[[ ██████ ]],
[[ ████▒▒▒▒▒▒████ ]],
[[ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ]],
[[ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ]],
[[ ██▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒ ]],
[[ ██▒▒▒▒▒▒ ▒▒▓▓▒▒▒▒▒▒ ▓▓▓▓ ]],
[[ ██▒▒▒▒▒▒ ▒▒▓▓▒▒▒▒▒▒ ▒▒▓▓ ]],
[[ ██▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒ ██ ]],
[[ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ]],
[[ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ]],
[[ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ]],
[[ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ]],
[[ ██▒▒██▒▒▒▒▒▒██▒▒▒▒▒▒▒▒██▒▒▒▒██ ]],
[[ ████ ██▒▒██ ██▒▒▒▒██ ██▒▒██ ]],
[[ ██ ██ ████ ████ ]],
}
local keys = vim.tbl_keys(M)
local function get_days()
local seconds = vim.uv.clock_gettime("realtime").sec
local day = math.ceil(seconds / (60 * 60 * 24))
return day
end
M.get_by_day = function()
local index = (get_days() % #keys) + 1
return M[keys[index]]
end
return M

View file

@ -1,105 +0,0 @@
if vim.g.did_load_dashboard_plugin then
return
end
vim.g.did_load_dashboard_plugin = true
local M = {
neofetch = "",
version = "",
plugins = "",
}
local function draw_footer(dashboard)
local footer = {
M.version,
M.plugins,
}
if type(M.neofetch) ~= "string" then
table.insert(
footer,
string.format("%s\t%s", M.neofetch[1]["result"]["prettyName"], M.neofetch[2]["result"]["release"])
)
local uptime = M.neofetch[3]["result"]["uptime"] / 1000
local h = uptime / 3600
local m = 60 - (math.ceil(h) - h) * 60
local s = 60 - math.floor((math.ceil(m) - m) * 60)
m = math.floor(m)
h = math.floor(h)
table.insert(footer, string.format("uptime: %sh %sm %ss", h, m, s))
end
dashboard.section.footer.val = footer
vim.cmd.AlphaRedraw()
end
local function fetch(dashboard)
local neofetch = vim.fn.executable("fastfetch")
if neofetch == 0 then
return
end
local cmd = "fastfetch"
local args = { "--structure", "OS:Kernel:Uptime", "--format", "json" }
local t = ""
local stdout = function(error, data)
if data then
t = t .. data
end
end
local on_exit = function(...)
if #t > 0 then
M.neofetch = vim.json.decode(t)
end
local timer = vim.uv.new_timer()
timer:start(
20,
0,
vim.schedule_wrap(function()
draw_footer(dashboard)
end)
)
end
vim.system({ cmd, table.unpack(args) }, {
text = true,
stdout = stdout,
}, on_exit)
end
local height = tonumber(vim.api.nvim_exec2("echo &lines", {})) or 0
local dashboard = require("alpha.themes.dashboard")
dashboard.autostart = true
dashboard.config.layout[1].val = 1
dashboard.section.buttons.val = {
dashboard.button("n", "" .. " New file", ":ene <BAR> startinsert <CR>"),
dashboard.button("f", "" .. " Find file", ":FzfLua files<cr>"),
dashboard.button("s", "" .. " Search", ":FzfLua grep_project<cr>"),
dashboard.button(
"r",
"󰄉 " .. " Recent files",
":lua require('fzf-lua').oldfiles({ cwd_only=true })<cr>"
),
dashboard.button("g", "󰄉 " .. " Diff", ":DiffviewOpen <cr>"),
dashboard.button("c", "" .. " Config", ":e .nvim.lua <CR>"),
}
-- set highlight
for _, button in ipairs(dashboard.section.buttons.val) do
button.opts.hl = "AlphaButtons"
button.opts.hl_shortcut = "AlphaShortcut"
end
dashboard.section.header.opts.hl = "AlphaHeader"
dashboard.section.buttons.opts.hl = "AlphaButtons"
dashboard.section.footer.opts.hl = "AlphaFooter"
if height > 40 then
local header = require("banner").get_by_day()
dashboard.section.header.val = header
fetch(dashboard)
else
dashboard.section.header.val = ""
end
require("alpha").setup(dashboard.opts)

View file

@ -225,4 +225,23 @@ function M.shorten_path(path)
return table.concat(parts, "_")
end
function M.get_ts(buf)
local ok, large_buf = pcall(vim.api.nvim_buf_get_var, buf, "large_buf")
if not ok then
return nil
end
if large_buf ~= 0 then
return nil
end
local parser
ok, parser = pcall(vim.treesitter.get_parser, buf, vim.treesitter.language.get_lang(vim.bo[buf].ft))
if not ok then
return nil
end
return parser
end
return M

View file

@ -77,7 +77,7 @@ local function is_large_file(bufnr, as_bool, path)
_type = FILE_TYPE.LARGE_SIZE
else
local _m = maxline(path)
if _m > vim.o.synmaxcol then
if _m > 10 * vim.o.synmaxcol then
vim.notify("LONG LINE " .. _m, vim.log.levels.INFO)
_type = FILE_TYPE.LONG_LINE
end

View file

@ -17,6 +17,8 @@ local get_lsps = function()
:totable()
end
M.get_lsps = get_lsps
M.setup = function()
local lsps = get_lsps()

View file

@ -214,3 +214,12 @@ if vim.env.TERM == "alacritty" then
desc = "Set cursor back to beam when leaving Neovim.",
})
end
fn.augroup("after ui", {
{ "UIEnter" },
{
callback = function(event)
vim.cmd.packadd("nohlsearch")
end,
},
})

View file

@ -48,9 +48,6 @@ lze.load({
after = function()
local blink = require("blink-cmp")
local opts = {
term = {
enabled = false,
},
cmdline = {
enabled = true,
completion = { menu = { auto_show = false } },
@ -92,7 +89,7 @@ lze.load({
enabled = true,
},
trigger = {
prefetch_on_insert = true,
prefetch_on_insert = false,
show_in_snippet = true,
show_on_keyword = true,
show_on_trigger_character = true,
@ -114,7 +111,7 @@ lze.load({
elseif funcs.in_treesitter_capture("comment") or funcs.in_syntax_group("Comment") then
return { "diag-codes", "buffer", "snippets", "lsp" }
end
return { "lsp", "buffer", "snippets" }
return { "lsp", "buffer", "tags", "snippets" }
end,
per_filetype = {
sql = { "dadbod", "buffer", "snippets" },
@ -122,6 +119,9 @@ lze.load({
AvanteInput = { inherit_defaults = true, "avante" },
},
providers = {
buffer = {
max_items = 5,
},
lazydev = {
name = "LazyDev",
module = "lazydev.integrations.blink",
@ -134,6 +134,7 @@ lze.load({
module = "blink.compat.source",
score_offset = -2,
opts = {
max_items = 5,
exact_match = true,
current_buffer_only = false,
},
@ -187,32 +188,6 @@ lze.load({
},
}
local ok, _ = pcall(require, "minuet")
if ok then
opts.keymap["<c-x><c-z>"] = require("minuet").make_blink_map()
opts.sources.providers.minuet = {
name = "minuet",
module = "minuet.blink",
async = true,
-- Should match minuet.config.request_timeout * 1000,
-- since minuet.config.request_timeout is in seconds
timeout_ms = 3000,
score_offset = 50, -- Gives minuet higher priority among suggestions
}
end
ok, _ = pcall(require, "blink-cmp-avante")
if ok then
opts.sources.providers.avante = {
module = "blink-cmp-avante",
name = "Avante",
opts = {
-- options for blink-cmp-avante
},
}
end
blink.setup(opts)
end,
})

View file

@ -7,9 +7,7 @@ local fn = require("funcs")
vim.o.foldenable = true
vim.o.foldlevel = 99
-- vim.o.foldmethod = "marker"
vim.o.foldmethod = "expr"
vim.o.foldexpr = "v:lua.vim.treesitter.foldexpr()"
vim.o.foldmethod = "marker"
vim.o.foldtext = ""
vim.opt.foldcolumn = "1"

View file

@ -5,41 +5,11 @@ vim.g.did_load_http_plugin = true
lze.load({
"kulala.nvim",
keys = {
{ "<leader>hr", desc = "Send request" },
{ "<leader>ha", desc = "Send all requests" },
{ "<leader>hb", desc = "Open scratchpad" },
},
ft = { "http", "rest" },
after = function()
require("kulala").setup({
-- your configuration comes here
global_keymaps = {
["Send request"] = { -- sets global mapping
"<leader>hr",
function()
require("kulala").run()
end,
mode = { "n", "v" }, -- optional mode, default is n
desc = "Send request", -- optional description, otherwise inferred from the key
},
["Send all requests"] = {
"<leader>ha",
function()
require("kulala").run_all()
end,
mode = { "n", "v" },
ft = "http", -- sets mapping for *.http files only
},
["Replay the last request"] = {
"<leader>hl",
function()
require("kulala").replay()
end,
ft = { "http", "rest" }, -- sets mapping for specified file types
},
["Find request"] = false, -- set to false to disable
},
global_keymaps_prefix = "<leader>h",
kulala_keymaps_prefix = "<leader>k",
})
end,
})

View file

@ -4,70 +4,6 @@ end
vim.g.did_load_keyhelper_plugin = true
lze.load({
{
"which-key.nvim",
event = "DeferredUIEnter",
after = function()
require("which-key").setup({
defaults = {},
preset = "helix",
keys = {
scroll_down = "<c-d>", -- binding to scroll down inside the popup
scroll_up = "<c-e>", -- binding to scroll up inside the popup
},
spec = {
{
mode = { "n", "v" },
{ "<leader>d", group = "dap" },
{ "<leader>g", group = "git" },
{ "<leader>s", group = "search" },
{ "<leader>l", group = "lang", icon = { icon = "󱖫 ", color = "green" } },
{ "[", group = "prev" },
{ "]", group = "next" },
{ "g", group = "goto" },
{ "gz", group = "surround" },
{ "z", group = "fold" },
{ "m", group = "mark" },
{ "M", group = "mark" },
{ "dm", group = "mark" },
{ "<Leader>lc", group = "copy_as" },
{ "<Leader>lt", group = "tests" },
{ "<Leader>h", group = "http" },
{
"<space>b",
group = "buffer",
expand = function()
return require("which-key.extras").expand.buf()
end,
},
},
},
triggers = {
{ "<auto>", mode = "nixsotc" },
},
})
end,
keys = {
{
"<leader>?",
function()
require("which-key").show({ global = false })
end,
desc = "Buffer Keymaps (which-key)",
},
{
"<c-w><space>",
function()
require("which-key").show({ keys = "<c-w>", loop = true })
end,
desc = "Window Hydra Mode (which-key)",
},
},
config = function(_, opts)
local wk = require("which-key")
wk.setup(opts)
end,
},
{
"better-escape.nvim",
event = "DeferredUIEnter",

View file

@ -24,8 +24,8 @@ vim.keymap.set({ "n" }, "<C-w><", "10<C-w><")
vim.keymap.set({ "n" }, "<C-w>+", "5<C-w>+")
vim.keymap.set({ "n" }, "<C-w>-", "5<C-w>-")
vim.keymap.set({ 'n' }, 'o', 'o<Esc>', { desc = 'Add line under' })
vim.keymap.set({ 'n' }, 'O', 'O<Esc>', { desc = 'Add line prev' })
vim.keymap.set({ "n" }, "o", "o<Esc>", { desc = "Add line under" })
vim.keymap.set({ "n" }, "O", "O<Esc>", { desc = "Add line prev" })
vim.keymap.set({ "v" }, "p", "pgvy", { desc = "Disable yank on paste" })
vim.keymap.set({ "n" }, { "<leader>w", "<leader>'" }, ":w<CR>", { silent = true, desc = "normal mode: save" })
@ -99,5 +99,3 @@ vim.keymap.set(
end)(),
{ desc = "Toggle autoresize height width buffers of window" }
)

View file

@ -3,6 +3,8 @@ if vim.g.did_load_lint_plugin then
end
vim.g.did_load_lint_plugin = true
local fn = require("funcs")
vim.g.linter_by_ft = {
sql = { "codespell", "sqlfluff" },
jinja = { "djlint" },
@ -137,3 +139,22 @@ vim.api.nvim_create_autocmd("FileType", {
end,
desc = "Inline nvim-lint autostart",
})
fn.augroup("Diagnostic", {
"DiagnosticChanged",
{
callback = function()
vim.diagnostic.setloclist({ open = false })
end,
},
})
vim.keymap.set("n", "<space>e", function(_)
vim.diagnostic.setloclist({ open = false })
require("quicker").toggle({ loclist = true })
end, {})
vim.keymap.set("n", "<space>E", function(_)
vim.diagnostic.setqflist({ open = false })
require("quicker").toggle()
end, {})

View file

@ -11,6 +11,12 @@ local api, lsp = vim.api, vim.lsp
-- orig https://github.com/neovim/nvim-lspconfig/blob/master/plugin/lspconfig.lua
vim.lsp.log.set_level(vim.log.levels.OFF)
api.nvim_create_user_command("LspDebug", function()
vim.lsp.log.set_level(vim.log.levels.WARN)
end, { desc = "enable lsp log" })
api.nvim_create_user_command("LspInfo", ":checkhealth vim.lsp", { desc = "Alias to `:checkhealth vim.lsp`" })
api.nvim_create_user_command("LspLog", function()

View file

@ -3,130 +3,53 @@ if vim.g.did_load_treesitter_plugin then
end
vim.g.did_load_treesitter_plugin = true
local is_large_file = require("largefiles").is_large_file
local FILE_TYPE = require("largefiles").FILE_TYPE
local funcs = require("funcs")
---@diagnostic disable-next-line: unused-local
local is_disable = function(_lang, buf)
local _type = is_large_file(buf)
vim.treesitter.language.register("htmldjango", "jinja")
local r = _type ~= FILE_TYPE.NORMAL
local colorpalette = {
{ fg = "#EB75D6" },
{ fg = "#D49DA5" },
{ fg = "#ef9062" },
{ fg = "#e75a7c" },
{ fg = "#57a5e5" },
{ fg = "#3AC6BE" },
{ fg = "#8997F5" },
{ fg = "#7FEC35" },
{ fg = "#8FB272" },
}
return r
-- return _type == FILE_TYPE.READ_ONLY or _type == FILE_TYPE.LARGE_SIZE
end
lze.load({
"nvim-treesitter-context",
on_plugin = "nvim-treesitter",
after = function()
vim.api.nvim_create_autocmd({ "DiagnosticChanged" }, {
callback = function()
local tsc = require("treesitter-context")
tsc.setup({
enable = true, -- Enable this plugin (Can be enabled/disabled later via commands)
max_lines = 5, -- How many lines the window should span. Values <= 0 mean no limit.
min_window_height = 30, -- Minimum editor window height to enable context. Values <= 0 mean no limit.
if tsc.enabled() then
tsc.disable()
tsc.enable()
end
end,
})
vim.api.nvim_create_autocmd(vim.g.post_load_events, {
pattern = { "*" },
once = true,
callback = function()
require("treesitter-context").setup({
enable = true,
max_lines = 5,
min_window_height = 30,
line_numbers = true,
multiline_threshold = 5, -- Maximum number of lines to show for a single context
trim_scope = "outer", -- Which context lines to discard if `max_lines` is exceeded. Choices: 'inner', 'outer'
mode = "cursor", -- Line used to calculate context. Choices: 'cursor', 'topline'
-- Separator between context and content. Should be a single character string, like '-'.
-- When separator is set, the context will only show up when there are at least 2 lines above cursorline.
-- separator = "-",
zindex = 20, -- The Z-index of the context window
multiline_threshold = 5,
trim_scope = "outer",
mode = "cursor",
zindex = 20,
on_attach = function(buf)
local line_count = vim.api.nvim_buf_line_count(buf)
if line_count > 1000 then
return false
end
return not is_disable(nil, buf)
end, -- (fun(buf: integer): boolean) return false to disable attaching
})
vim.api.nvim_create_autocmd({ "DiagnosticChanged" }, {
callback = function()
if tsc.enabled() then
tsc.disable()
tsc.enable()
end
return funcs.get_ts(buf) ~= nil
end,
})
end,
})
lze.load({
"nvim-treesitter-textobjects",
on_plugin = "nvim-treesitter",
})
lze.load({
"nvim-yati",
on_plugin = "nvim-treesitter",
})
lze.load({
"hlargs.nvim",
})
lze.load({
"nvim-treesitter",
event = vim.g.post_load_events,
on_require = { "nvim-treesitter.configs", "nvim-treesitter.textobjects.repeatable_move" },
before = function()
local prev = vim.treesitter.language.get_lang
---@diagnostic disable-next-line: duplicate-set-field
vim.treesitter.language.get_lang = function(...)
lze.trigger_load("nvim-treesitter")
return prev(...)
end
end,
after = function()
require("nvim-treesitter.configs").setup({
autotag = {
enable = false,
disable = is_disable,
},
highlight = {
enable = true,
additional_vim_regex_highlighting = true,
disable = is_disable,
},
incremental_selection = {
enable = true,
keymaps = {
init_selection = "<cr>",
node_incremental = "<cr>",
scope_incremental = "<tab>",
node_decremental = "<s-tab>",
},
disable = is_disable,
},
yati = {
enable = true,
disable = is_disable,
},
indent = {
enable = false,
disable = is_disable,
},
matchup = {
enable = false,
include_match_words = true,
disable = is_disable,
},
})
vim.treesitter.language.register("htmldjango", "jinja")
local colorpalette = {
{ fg = "#EB75D6" },
{ fg = "#D49DA5" },
{ fg = "#ef9062" },
{ fg = "#e75a7c" },
{ fg = "#57a5e5" },
{ fg = "#3AC6BE" },
{ fg = "#8997F5" },
{ fg = "#7FEC35" },
{ fg = "#8FB272" },
}
require("hlargs").setup({
use_colorpalette = true,
@ -149,8 +72,23 @@ lze.load({
},
},
},
disable = is_disable,
disable = function(buf)
return funcs.get_ts(buf) == nil
end,
excluded_filetypes = { "jinja", "htmldjango" },
})
end,
})
vim.api.nvim_create_autocmd("FileType", {
pattern = { "*" },
callback = function(event)
if funcs.get_ts(event.buf) == nil then
return
end
vim.treesitter.start()
vim.wo.foldmethod = "expr"
vim.wo.foldexpr = "v:lua.vim.treesitter.foldexpr()"
vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
end,
})

View file

@ -117,3 +117,4 @@ lze.load({
})
end,
})

View file

@ -1,6 +1,8 @@
### openai completion gemma
POST {{ollama}}/v1/chat/completions
POST {{ollama}}/v1/chat/completions HTTP/1.1
Content-Type: application/json
{
"stream_options": {
"include_usage": true