diff --git a/ableos/.cargo/config.toml b/ableos/.cargo/config.toml
deleted file mode 100644
index 7b397ba..0000000
--- a/ableos/.cargo/config.toml
+++ /dev/null
@@ -1,14 +0,0 @@
-[build]
-# target = "riscv64gc-unknown-none-elf"
-target = "json_targets/x86_64-ableos.json"
-
-[unstable]
-build-std = ["core", "compiler_builtins", "alloc"]
-build-std-features = ["compiler-builtins-mem"]
-
-[target.'cfg(target_arch = "x86_64")']
-rustflags = ["-C", "target-feature=+rdrand"]
-
-[target.riscv64gc-unknown-none-elf]
-rustflags = "-C link-arg=-Tableos/src/arch/riscv/virt.lds"
-# ableos/src/arch/riscv/virt.lds
diff --git a/ableos/Cargo.toml b/ableos/Cargo.toml
deleted file mode 100644
index 48ffc68..0000000
--- a/ableos/Cargo.toml
+++ /dev/null
@@ -1,120 +0,0 @@
-[package]
-edition = "2021"
-name = "ableos"
-version = "0.1.1"
-# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
-
-[profile.release]
-panic = "abort"
-
-[package.metadata.bootimage]
-test-args = [
-  "-device",
-  "isa-debug-exit,iobase=0xf4,iosize=0x04",
-  "-serial",
-  "stdio",
-]
-
-[dependencies]
-lazy_static = { version = "1.4.0", features = ["spin_no_std"] }
-qrcode = { path = "../qrcode-rust" }
-bitflags = "1.3"
-lliw = "0.2.0"
-spin = "0.9"
-pretty-hex = "0.2.1"
-unicode-width = "0.1.7"
-picorand = "0.1.0"
-watson = "0.4"
-genfs = "0.1.0"
-axel = { git = "https://git.ablecorp.us/able/aos_userland" }
-versioning = { git = "https://git.ablecorp.us/able/aos_userland" }
-# embedded-graphics = "*"
-pc-keyboard = "0.5"
-# mini-backtrace = "0.1"
-clparse = { git = "https://git.ablecorp.us/able/core_utils", default-features = false }
-seq-macro = "0.3"
-
-[dependencies.linked_list_allocator]
-version = "0.9.0"
-features = ["use_spin_nightly"]
-[dependencies.log]
-version = "0.4.17"
-default-features = false
-
-[dependencies.logos]
-version = "0.12"
-default-features = false
-features = ["export_derive"]
-
-[dependencies.rdrand]
-version = "0.8"
-default-features = false
-
-[dependencies.kernel]
-path = "../kernel"
-
-[dependencies.serde]
-version = "1.0"
-default-features = false
-features = ["derive", "alloc"]
-
-[dependencies.hashbrown]
-version = "0.12"
-default-features = false
-features = ["inline-more"]
-
-[dependencies.rkyv]
-version = "0.7"
-default-features = false
-features = ["size_64", "alloc"]
-
-# [dependencies.smoltcp]
-# version = "0.8.0"
-# default-features = false
-# features = ["log", "proto-ipv4"]
-
-[dependencies.y-compositor-protocol]
-git = "https://git.ablecorp.us:443/able/y-compositor-protocol.git"
-
-[dependencies.ext2]
-path = "../ext2-rs"
-
-[dependencies.toml]
-git = "https://git.ablecorp.us:443/theoddgarlic/toml-rs"
-# version = "0.5.8"
-default-features = false
-
-[dependencies.facepalm]
-path = "../facepalm"
-
-[dependencies.ab_glyph]
-version = "*"
-default-features = false
-features = ["libm"]
-
-[dependencies.wasmi]
-default-features = false
-features = ["core"]
-version = "*"
-
-[dependencies.libwasm]
-git = "https://git.ablecorp.us:443/able/libwasm.git"
-default-features = false
-
-[dependencies.externc-libm]
-git = "https://git.ablecorp.us:443/able/externc-libm.git"
-
-[target.'cfg(target_arch = "riscv")'.dependencies]
-riscv = "*"
-
-[target.'cfg(target_arch = "x86_64")'.dependencies]
-limine = "0.1"
-cpuio = { git = "https://git.ablecorp.us/ondra05/cpuio.git" }
-pic8259 = "0.10.1"
-uart_16550 = "0.2.0"
-volatile = "0.2.6"
-x86_64 = "0.14.8"
-pc-beeper = { git = "https://github.com/AbleOS/pc-beeper" }
-acpi = "4.1.0"
-vga = { git = "https://git.ablecorp.us:443/able/vga.git" }
-# vga = { path = "../../vga" }
diff --git a/ableos/assets/balloon.txt b/ableos/assets/balloon.txt
deleted file mode 100644
index 42192dc..0000000
--- a/ableos/assets/balloon.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-    ,-""""-.         OS: \0BLUE\0 AbleOS \0RESET\0 
-  ,'\  _   _`.       Host: ???
- /   \)_)-)_)-\      Kernel: AKern-{}-v{}
-:              :     Uptime: {}
-\              /     Packages: None
- \            /      Shell: BuiltinShell
-  `.        ,'       Resolution: 640x480
-    `.    ,'         Terminal: VGABuffer
-      `.,'           CPU: {}
-       /\`.   ,-._   GPU: VGA Compatible 
-           `-'       Memory: {}/{}
\ No newline at end of file
diff --git a/ableos/assets/fonts/OpenSansEmoji.ttf b/ableos/assets/fonts/OpenSansEmoji.ttf
deleted file mode 100644
index 57d86a6..0000000
Binary files a/ableos/assets/fonts/OpenSansEmoji.ttf and /dev/null differ
diff --git a/ableos/assets/fonts/unifont-14.0.01.ttf b/ableos/assets/fonts/unifont-14.0.01.ttf
deleted file mode 100644
index f955a83..0000000
Binary files a/ableos/assets/fonts/unifont-14.0.01.ttf and /dev/null differ
diff --git a/ableos/assets/fonts/unifont_upper-14.0.01.ttf b/ableos/assets/fonts/unifont_upper-14.0.01.ttf
deleted file mode 100644
index 7f6409b..0000000
Binary files a/ableos/assets/fonts/unifont_upper-14.0.01.ttf and /dev/null differ
diff --git a/ableos/assets/img_array/balloon_array.txt b/ableos/assets/img_array/balloon_array.txt
deleted file mode 100644
index 8c1b9e7..0000000
--- a/ableos/assets/img_array/balloon_array.txt
+++ /dev/null
@@ -1,4582 +0,0 @@
-
-        &[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        254, 254, 255, 255, 254, 254, 254, 255, 254, 254, 254, 254, 255, 255, 255, 254, 254, 254,
-        255, 255, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 254, 254, 254, 254, 254, 254, 253, 254, 254, 253, 254, 254, 254, 254, 254,
-        254, 254, 254, 254, 254, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 254, 253, 253, 253, 253, 253, 253, 254, 254, 253, 253, 254, 253, 253,
-        254, 255, 254, 254, 254, 254, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 254, 253, 253, 254, 254, 252, 251, 251, 251, 251, 252, 250,
-        251, 252, 252, 252, 252, 251, 253, 254, 254, 254, 253, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 252, 247, 241, 226, 209, 201, 201, 197, 190, 200,
-        211, 198, 187, 187, 179, 162, 157, 164, 191, 220, 234, 242, 250, 253, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254,
-        254, 254, 254, 254, 254, 254, 253, 247, 241, 233, 209, 174, 149, 130, 105, 112, 123, 100,
-        70, 69, 80, 80, 74, 60, 43, 30, 29, 34, 54, 79, 96, 131, 180, 211, 234, 250, 254, 254, 254,
-        254, 254, 254, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253, 254, 253,
-        254, 254, 254, 249, 234, 199, 140, 106, 106, 97, 53, 36, 37, 27, 25, 40, 41, 16, 7, 5, 8,
-        12, 10, 4, 1, 1, 2, 5, 7, 7, 12, 37, 82, 103, 141, 203, 241, 253, 254, 253, 253, 253, 253,
-        253, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 251, 244, 230, 201, 117,
-        66, 56, 36, 21, 28, 30, 25, 9, 3, 3, 4, 4, 1, 1, 1, 2, 2, 5, 6, 5, 7, 10, 3, 1, 3, 6, 5, 9,
-        12, 11, 30, 92, 172, 224, 247, 253, 253, 253, 253, 253, 252, 254, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
-        254, 253, 249, 244, 235, 211, 174, 118, 51, 56, 109, 61, 10, 6, 29, 71, 40, 8, 1, 0, 0, 0,
-        1, 3, 4, 2, 3, 5, 9, 14, 16, 7, 2, 4, 9, 6, 1, 2, 5, 33, 61, 55, 69, 133, 204, 244, 253,
-        253, 254, 252, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 254, 254,
-        254, 254, 254, 254, 254, 254, 255, 254, 253, 252, 239, 190, 163, 175, 178, 138, 71, 43, 49,
-        85, 53, 9, 2, 12, 48, 51, 12, 1, 1, 0, 0, 0, 2, 7, 6, 3, 3, 6, 9, 6, 5, 5, 2, 3, 10, 5, 8,
-        30, 78, 86, 37, 12, 25, 71, 149, 229, 252, 253, 253, 253, 255, 255, 255, 254, 254, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 253, 254, 254, 254, 254, 254, 254, 253, 254, 253, 254, 254, 250, 223, 175,
-        126, 66, 37, 38, 46, 55, 74, 75, 25, 10, 11, 15, 25, 22, 11, 9, 2, 5, 16, 19, 12, 12, 9,
-        12, 27, 46, 43, 20, 12, 9, 11, 14, 8, 6, 15, 29, 44, 56, 42, 25, 24, 41, 55, 40, 32, 100,
-        193, 239, 253, 254, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254,
-        249, 247, 251, 254, 253, 250, 227, 166, 83, 35, 15, 15, 12, 6, 1, 4, 25, 46, 16, 0, 2, 24,
-        73, 54, 21, 4, 6, 39, 74, 75, 115, 115, 51, 35, 76, 152, 168, 99, 72, 90, 96, 69, 38, 17,
-        18, 33, 25, 15, 25, 38, 58, 93, 61, 25, 28, 45, 70, 119, 196, 244, 252, 253, 253, 253, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 254, 254, 253, 253, 253, 247, 221, 216, 227, 240, 242, 190, 107, 50, 36, 17,
-        4, 9, 30, 39, 19, 1, 2, 3, 12, 8, 9, 23, 36, 18, 12, 15, 41, 88, 120, 150, 212, 210, 153,
-        145, 177, 213, 221, 201, 200, 216, 198, 172, 142, 100, 50, 23, 19, 41, 88, 100, 98, 93, 49,
-        36, 77, 58, 30, 40, 87, 159, 218, 246, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 253,
-        246, 216, 184, 181, 184, 179, 150, 81, 30, 27, 64, 61, 25, 25, 63, 119, 80, 8, 2, 10, 35,
-        25, 27, 38, 30, 37, 75, 119, 163, 196, 216, 234, 247, 250, 247, 247, 250, 251, 252, 252,
-        252, 253, 250, 247, 244, 235, 207, 139, 78, 54, 44, 35, 34, 42, 41, 61, 136, 122, 90, 79,
-        55, 46, 85, 169, 237, 252, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 245, 198, 149, 136, 143, 121,
-        61, 36, 33, 20, 11, 33, 80, 103, 68, 50, 95, 110, 39, 30, 80, 105, 63, 79, 109, 116, 158,
-        212, 241, 251, 253, 253, 254, 252, 253, 254, 253, 253, 254, 254, 254, 253, 253, 254, 253,
-        253, 254, 254, 249, 224, 161, 81, 40, 30, 35, 38, 40, 41, 36, 42, 51, 41, 27, 30, 56, 129,
-        206, 242, 253, 255, 254, 254, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 253, 253, 252, 215, 130, 90, 95, 75, 32, 11, 9, 18, 20, 9, 9, 27,
-        54, 30, 10, 22, 53, 61, 77, 118, 158, 155, 184, 221, 236, 249, 253, 254, 254, 254, 254,
-        254, 254, 254, 254, 254, 254, 254, 255, 254, 254, 254, 255, 254, 254, 254, 255, 254, 252,
-        247, 216, 156, 80, 25, 16, 12, 4, 1, 5, 17, 30, 28, 25, 34, 53, 87, 139, 207, 242, 252,
-        254, 253, 253, 253, 252, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        254, 253, 247, 196, 118, 83, 66, 25, 7, 3, 3, 15, 29, 38, 37, 23, 12, 5, 1, 6, 28, 69, 103,
-        153, 212, 238, 247, 253, 253, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 253, 241, 186, 79, 25, 6,
-        1, 2, 9, 20, 32, 37, 65, 76, 29, 19, 34, 78, 146, 211, 247, 253, 253, 253, 253, 254, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 225, 160, 113, 65, 22, 10,
-        4, 3, 3, 11, 39, 110, 142, 63, 16, 28, 30, 32, 70, 146, 200, 238, 252, 254, 254, 254, 253,
-        254, 254, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 253, 253, 254, 254, 253, 251, 224, 149, 54, 12, 30, 60, 75, 80, 90,
-        174, 116, 12, 1, 3, 7, 18, 66, 148, 215, 247, 253, 253, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 254, 252, 207, 100, 39, 12, 3, 2, 3, 5, 7, 7, 19, 88, 130,
-        58, 30, 105, 152, 167, 212, 246, 253, 254, 254, 254, 253, 253, 254, 254, 254, 254, 253,
-        254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        254, 253, 254, 254, 254, 254, 254, 250, 214, 146, 118, 125, 125, 117, 88, 80, 29, 5, 4, 4,
-        3, 0, 4, 22, 60, 139, 207, 245, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 254,
-        254, 253, 249, 167, 38, 7, 4, 2, 0, 2, 5, 7, 6, 8, 33, 53, 45, 78, 156, 221, 246, 253, 254,
-        254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 255, 254,
-        254, 253, 246, 212, 156, 84, 29, 8, 4, 6, 36, 30, 8, 5, 16, 38, 49, 46, 32, 56, 145, 233,
-        251, 254, 254, 254, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 253, 253, 252, 254, 250, 198, 66, 14, 14, 7, 2, 1,
-        2, 4, 3, 4, 5, 9, 25, 86, 181, 238, 252, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 241, 191, 85,
-        17, 4, 2, 29, 40, 12, 12, 73, 112, 102, 100, 46, 30, 67, 136, 193, 241, 253, 253, 253, 254,
-        253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 254, 252, 253, 253, 253, 207, 72, 12, 27, 21, 6, 0, 1, 2, 3, 4, 2, 3, 12, 81, 197,
-        249, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 253, 252, 254, 252, 235, 179, 110, 37, 12, 30, 51,
-        56, 51, 34, 23, 30, 35, 69, 110, 77, 66, 146, 223, 245, 252, 254, 253, 253, 254, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 251,
-        234, 144, 35, 11, 12, 5, 1, 2, 6, 2, 0, 2, 3, 9, 44, 137, 227, 253, 254, 253, 254, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 254, 253, 254, 253, 253, 252, 242, 192, 107, 56, 56, 56, 29, 21, 20, 17, 15,
-        19, 28, 24, 18, 42, 87, 135, 204, 245, 252, 252, 253, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 252, 250, 210, 113, 61, 22, 10, 3, 0, 0,
-        1, 3, 1, 1, 0, 11, 38, 80, 151, 231, 253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254,
-        254, 254, 254, 253, 251, 233, 179, 105, 41, 23, 24, 23, 14, 9, 5, 5, 7, 7, 14, 21, 37, 102,
-        189, 236, 251, 253, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253,
-        253, 253, 254, 252, 212, 80, 8, 10, 11, 11, 6, 2, 2, 0, 0, 0, 1, 1, 15, 70, 151, 191, 235,
-        252, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 254, 254, 254, 254, 254, 252,
-        226, 147, 64, 25, 11, 6, 5, 6, 7, 8, 6, 11, 14, 11, 34, 85, 141, 210, 247, 253, 254, 253,
-        253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 252, 253, 252, 253, 253, 226, 108, 18, 6, 14,
-        36, 46, 25, 11, 5, 0, 1, 0, 3, 6, 24, 103, 215, 232, 244, 253, 253, 254, 254, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 249, 217, 141, 65, 22, 8,
-        2, 1, 3, 6, 9, 11, 8, 8, 12, 46, 132, 212, 247, 253, 254, 253, 254, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 253, 253, 253, 252, 227, 125, 81, 54, 25, 37, 89, 110, 55, 18, 7, 5, 7, 12,
-        19, 49, 67, 86, 133, 171, 221, 250, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 253, 253, 252, 242, 201, 115, 43, 12, 2, 3, 6, 5, 5, 6, 5, 5,
-        23, 89, 160, 196, 242, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253,
-        234, 125, 37, 39, 42, 33, 27, 29, 42, 59, 33, 9, 8, 23, 28, 22, 59, 61, 33, 35, 70, 150,
-        233, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
-        253, 253, 252, 253, 252, 229, 167, 90, 38, 12, 7, 5, 2, 2, 2, 5, 12, 33, 59, 102, 190, 245,
-        253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 253, 242, 154, 83, 63, 28, 18, 15, 6, 2,
-        10, 42, 36, 20, 27, 49, 55, 20, 19, 27, 15, 8, 24, 86, 201, 253, 254, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 253, 254, 253, 253, 242,
-        196, 106, 38, 14, 6, 4, 2, 6, 15, 21, 22, 41, 89, 140, 203, 246, 254, 254, 254, 254, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253,
-        253, 253, 253, 254, 246, 170, 85, 93, 61, 22, 9, 6, 4, 3, 4, 9, 22, 60, 71, 99, 98, 34, 45,
-        83, 53, 21, 30, 72, 172, 247, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253, 244, 186, 90, 43, 20, 9, 5, 11, 27,
-        23, 12, 27, 74, 113, 136, 199, 249, 253, 254, 253, 254, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 253, 253, 251, 186, 54, 40, 56,
-        32, 12, 7, 11, 18, 7, 2, 2, 46, 125, 110, 84, 48, 30, 83, 123, 70, 33, 42, 77, 145, 236,
-        253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 254, 253, 252, 241, 171, 82, 41, 25, 32, 32, 22, 14, 19, 30, 30, 55, 95,
-        147, 225, 253, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 254, 254, 253, 253, 252, 218, 80, 12, 9, 18, 12, 7, 7, 23, 42, 16, 5,
-        38, 164, 205, 147, 80, 34, 12, 28, 34, 30, 56, 119, 147, 151, 221, 253, 254, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 252,
-        253, 253, 232, 137, 61, 50, 85, 72, 28, 21, 42, 40, 11, 17, 73, 132, 193, 247, 253, 253,
-        254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
-        254, 253, 254, 233, 107, 17, 12, 6, 3, 5, 5, 7, 16, 29, 18, 45, 179, 247, 223, 129, 54, 22,
-        11, 12, 9, 14, 59, 156, 181, 154, 205, 252, 254, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253, 253, 253, 251, 215, 125,
-        69, 72, 58, 30, 30, 37, 25, 25, 36, 73, 155, 203, 227, 252, 253, 254, 254, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 254, 235, 136, 27, 3,
-        7, 10, 5, 3, 4, 3, 3, 6, 30, 160, 249, 253, 236, 142, 51, 23, 24, 25, 16, 12, 30, 81, 113,
-        131, 194, 249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 250, 210, 110, 56, 27, 9, 7, 17, 32, 80,
-        102, 96, 128, 172, 196, 241, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 254, 253, 246, 140, 27, 1, 0, 3, 9, 8, 4, 4, 5, 8, 30, 126,
-        237, 253, 253, 250, 200, 113, 68, 58, 34, 30, 25, 14, 30, 70, 126, 205, 250, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 254, 253, 246, 176, 83, 36, 12, 6, 10, 12, 21, 33, 36, 46, 75, 133, 210,
-        251, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        254, 252, 181, 30, 1, 0, 2, 7, 12, 30, 28, 17, 19, 60, 161, 235, 252, 253, 253, 253, 244,
-        198, 144, 103, 54, 61, 56, 25, 32, 76, 118, 186, 244, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
-        253, 252, 212, 110, 69, 61, 32, 7, 2, 1, 2, 10, 27, 51, 90, 165, 238, 253, 254, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 209, 61, 4, 2, 10,
-        25, 25, 27, 76, 112, 96, 88, 162, 247, 253, 253, 254, 253, 253, 245, 196, 160, 127, 93, 84,
-        85, 90, 82, 76, 66, 122, 225, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 240, 154, 109,
-        115, 56, 7, 3, 0, 0, 7, 25, 48, 73, 128, 213, 253, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 254, 254, 254, 254, 224, 92, 14, 10, 10, 30, 65, 55, 33, 30, 54, 87,
-        133, 221, 253, 253, 253, 254, 253, 254, 249, 201, 155, 129, 108, 90, 103, 121, 65, 25, 38,
-        119, 221, 252, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 254, 251, 209, 142, 98, 38, 5, 3, 1, 0,
-        2, 12, 25, 53, 105, 193, 247, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
-        253, 253, 253, 247, 154, 33, 23, 27, 19, 24, 46, 41, 17, 3, 10, 70, 187, 249, 254, 254,
-        254, 254, 254, 254, 253, 233, 178, 136, 110, 107, 103, 56, 17, 25, 89, 159, 221, 250, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 254, 254, 254, 253, 234, 151, 70, 24, 8, 6, 6, 2, 5, 10, 11, 30, 88,
-        157, 229, 253, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 217,
-        90, 37, 30, 30, 17, 7, 10, 12, 6, 8, 28, 134, 240, 253, 254, 255, 255, 255, 254, 254, 254,
-        251, 235, 187, 137, 87, 38, 10, 30, 109, 162, 184, 224, 251, 254, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
-        254, 254, 254, 245, 168, 71, 41, 30, 18, 16, 25, 33, 23, 12, 33, 77, 90, 179, 249, 253,
-        253, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253, 244, 168, 72, 25, 12, 21, 29,
-        25, 20, 24, 37, 82, 113, 215, 252, 253, 254, 255, 255, 255, 254, 254, 254, 253, 252, 239,
-        203, 98, 25, 17, 73, 153, 159, 169, 219, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254,
-        253, 216, 119, 67, 50, 22, 8, 46, 38, 12, 32, 61, 51, 59, 162, 245, 253, 253, 254, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 254, 253, 249, 191, 90, 76, 71, 51, 64, 84, 71, 42, 49, 93,
-        174, 215, 250, 252, 253, 254, 255, 255, 255, 254, 254, 254, 254, 254, 247, 196, 100, 64,
-        77, 95, 112, 122, 151, 217, 251, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 242,
-        178, 85, 46, 27, 11, 18, 9, 2, 14, 30, 24, 59, 164, 236, 251, 254, 253, 254, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254,
-        255, 254, 254, 254, 253, 224, 109, 38, 41, 61, 73, 58, 45, 30, 15, 12, 40, 178, 251, 253,
-        254, 254, 254, 255, 255, 255, 255, 254, 253, 254, 254, 242, 171, 120, 137, 165, 136, 115,
-        116, 155, 224, 247, 245, 246, 246, 242, 242, 244, 245, 247, 253, 254, 254, 255, 254, 254,
-        254, 254, 254, 254, 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 252, 224, 132, 76,
-        64, 39, 10, 1, 0, 1, 7, 24, 71, 100, 165, 237, 253, 253, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254,
-        254, 236, 134, 36, 14, 8, 11, 19, 14, 11, 14, 30, 51, 105, 227, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 246, 203, 184, 180, 177, 189, 170, 153, 167, 184,
-        178, 163, 175, 212, 204, 181, 165, 160, 161, 167, 175, 186, 201, 229, 247, 253, 253, 252,
-        254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 246, 181, 107, 72, 46, 17, 6,
-        3, 1, 2, 10, 28, 37, 85, 189, 250, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 254, 254, 249, 176, 56,
-        20, 19, 15, 11, 12, 12, 15, 17, 40, 99, 199, 251, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 253, 242, 230, 214, 197, 180, 140, 121, 93, 102, 137, 128, 93,
-        110, 108, 87, 79, 76, 61, 37, 32, 42, 64, 99, 138, 181, 232, 251, 254, 254, 254, 253, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 253, 253, 220, 144, 84, 58, 44, 30, 15, 3, 0, 3, 8, 19, 48,
-        141, 241, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 254, 253, 254, 254, 223, 96, 32, 38, 64, 83, 72, 30, 15, 10,
-        8, 20, 116, 233, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
-        252, 251, 246, 221, 140, 73, 56, 37, 79, 165, 137, 44, 23, 18, 19, 19, 15, 9, 4, 4, 12, 46,
-        61, 41, 49, 123, 229, 244, 250, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 254, 242,
-        171, 106, 80, 60, 37, 17, 6, 4, 12, 18, 23, 54, 141, 236, 253, 254, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254,
-        254, 247, 160, 53, 40, 51, 88, 125, 107, 36, 7, 4, 6, 44, 184, 250, 253, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 252, 224, 153, 109, 51, 25, 9,
-        36, 87, 70, 23, 5, 3, 4, 2, 0, 0, 3, 33, 74, 141, 115, 39, 16, 46, 133, 155, 191, 235, 250,
-        253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 253, 251, 214, 168, 141, 78, 27, 12, 9, 10, 34, 54,
-        68, 122, 167, 209, 249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 253, 227, 129, 100, 73, 40, 45, 37, 27,
-        23, 25, 37, 61, 151, 242, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253,
-        254, 254, 254, 253, 221, 113, 38, 17, 8, 10, 4, 2, 2, 3, 14, 22, 9, 1, 0, 0, 2, 17, 70, 87,
-        100, 66, 21, 5, 7, 18, 38, 88, 159, 206, 229, 249, 253, 254, 254, 253, 254, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253,
-        250, 231, 200, 121, 49, 20, 15, 16, 25, 51, 132, 186, 133, 115, 216, 252, 254, 254, 253,
-        254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254,
-        253, 246, 183, 151, 168, 93, 49, 53, 28, 15, 30, 66, 112, 161, 227, 252, 254, 254, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 254, 254, 244, 152, 59, 21, 2, 2,
-        14, 8, 0, 0, 3, 19, 33, 12, 2, 2, 3, 8, 16, 12, 6, 5, 5, 2, 1, 1, 0, 8, 29, 65, 149, 195,
-        218, 250, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 254, 254, 253, 252, 216, 135, 93, 63, 33, 29, 39, 17, 14, 56,
-        97, 88, 90, 177, 245, 253, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 254, 252, 209, 99, 95, 100, 51, 38, 34, 12, 4, 11, 20, 68,
-        181, 247, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 253,
-        250, 210, 145, 122, 78, 18, 6, 12, 7, 0, 1, 3, 4, 12, 12, 15, 27, 29, 17, 8, 1, 0, 0, 1, 3,
-        3, 1, 0, 1, 5, 24, 93, 144, 168, 226, 252, 253, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 253, 217, 100,
-        53, 42, 28, 30, 34, 7, 0, 10, 36, 76, 115, 164, 231, 253, 253, 254, 254, 254, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 242, 157, 49, 39, 46,
-        36, 19, 6, 5, 10, 8, 12, 85, 220, 253, 252, 254, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 254, 254, 254, 253, 249, 205, 118, 82, 63, 38, 20, 14, 14, 10, 5, 6, 5, 8, 23, 50, 90,
-        118, 105, 76, 59, 46, 30, 14, 6, 16, 42, 56, 30, 3, 1, 9, 30, 68, 117, 181, 242, 254, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 253, 254, 245, 174, 106, 100, 103, 93, 58, 30, 25, 23, 33, 61, 112, 165,
-        221, 251, 253, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
-        254, 254, 254, 252, 216, 127, 33, 10, 17, 25, 18, 6, 7, 24, 53, 80, 164, 246, 253, 254,
-        254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 218, 96, 25, 17, 14,
-        19, 37, 40, 25, 18, 14, 30, 54, 88, 142, 186, 215, 221, 220, 218, 212, 204, 187, 113, 30,
-        11, 17, 35, 27, 9, 2, 1, 4, 24, 85, 164, 235, 253, 254, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 253, 234,
-        164, 119, 133, 132, 56, 74, 110, 65, 37, 43, 73, 131, 197, 244, 253, 253, 253, 254, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 242, 147, 66, 17, 5,
-        9, 18, 20, 12, 12, 30, 71, 141, 223, 253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 254, 254, 249, 169, 43, 9, 10, 20, 38, 66, 76, 58, 34, 15, 43, 144, 224,
-        245, 251, 253, 253, 254, 254, 253, 252, 247, 179, 60, 17, 5, 1, 2, 6, 4, 1, 2, 12, 50, 136,
-        230, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 254, 254, 254, 254, 254, 250, 197, 117, 93, 79, 37, 61, 96, 53, 38, 49,
-        68, 105, 168, 231, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        254, 254, 253, 254, 253, 204, 67, 17, 12, 14, 11, 15, 17, 15, 18, 15, 33, 160, 246, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 244, 161, 64,
-        30, 33, 42, 46, 50, 65, 64, 39, 18, 55, 184, 252, 253, 253, 255, 255, 255, 255, 254, 253,
-        252, 200, 78, 30, 17, 8, 4, 3, 6, 11, 8, 12, 35, 115, 221, 253, 254, 254, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 254, 253, 234, 168, 105, 56, 28, 24, 25, 21, 33, 51, 68, 100, 160, 224, 251, 253, 253,
-        254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 247, 162, 46,
-        14, 16, 19, 14, 14, 18, 16, 19, 11, 56, 209, 252, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 254, 254, 249, 221, 166, 106, 76, 51, 25, 20, 29, 23, 18, 40,
-        106, 213, 253, 253, 253, 255, 255, 255, 255, 254, 254, 253, 217, 119, 82, 61, 37, 21, 15,
-        15, 33, 23, 25, 68, 154, 225, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 251, 220, 151,
-        82, 33, 7, 3, 6, 12, 15, 24, 56, 134, 214, 247, 253, 253, 254, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 253, 254, 254, 246, 176, 70, 15, 6, 14, 23, 34, 37, 24, 29,
-        55, 157, 247, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
-        254, 255, 246, 233, 197, 123, 68, 35, 18, 19, 25, 22, 19, 79, 179, 241, 253, 253, 254, 255,
-        255, 255, 255, 254, 253, 253, 231, 175, 159, 103, 34, 28, 38, 30, 25, 40, 61, 98, 183, 240,
-        253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 253, 252, 218, 139, 82, 46, 16, 2, 1, 1, 1, 4, 24,
-        84, 164, 221, 251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254,
-        254, 250, 219, 165, 99, 28, 7, 15, 44, 71, 58, 30, 44, 107, 221, 253, 254, 254, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 241, 207, 137, 59, 21, 11,
-        12, 25, 42, 61, 72, 116, 179, 238, 253, 253, 254, 254, 254, 254, 249, 246, 253, 253, 234,
-        158, 128, 85, 25, 12, 34, 37, 23, 42, 64, 83, 170, 244, 253, 254, 254, 254, 254, 254, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        254, 253, 254, 230, 140, 68, 54, 48, 14, 0, 0, 1, 15, 48, 83, 117, 172, 241, 254, 254, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 219, 109, 35, 25, 20, 6, 8, 36,
-        64, 49, 24, 37, 134, 245, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 254, 254, 221, 129, 53, 19, 9, 7, 10, 18, 39, 100, 144, 123, 152, 231, 254,
-        253, 253, 253, 252, 240, 195, 184, 225, 244, 219, 83, 22, 22, 29, 11, 14, 16, 15, 15, 29,
-        77, 177, 245, 253, 253, 254, 253, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 254, 246, 183, 85, 55, 58, 22,
-        3, 1, 4, 19, 51, 77, 100, 156, 227, 252, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 254, 253, 245, 156, 50, 22, 17, 11, 8, 6, 11, 14, 11, 14, 78, 200, 252, 253, 253, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 223, 126, 49,
-        25, 15, 8, 7, 21, 36, 77, 121, 123, 155, 230, 254, 253, 253, 253, 244, 184, 110, 103, 137,
-        163, 156, 55, 8, 4, 9, 5, 3, 2, 2, 3, 14, 58, 163, 238, 253, 252, 253, 252, 253, 254, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        254, 254, 253, 251, 232, 148, 78, 53, 33, 20, 12, 5, 4, 16, 37, 67, 126, 196, 244, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 252, 218, 97, 49, 64, 41, 22, 36,
-        25, 11, 7, 10, 51, 159, 241, 253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 254, 254, 254, 238, 166, 80, 30, 12, 7, 12, 32, 41, 54, 95, 135, 171,
-        229, 253, 253, 251, 242, 177, 95, 58, 63, 82, 93, 88, 71, 59, 25, 5, 2, 3, 3, 0, 1, 3, 8,
-        38, 115, 191, 238, 251, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 253, 250, 196, 84, 35, 33, 23,
-        8, 2, 1, 4, 14, 33, 69, 134, 217, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        254, 251, 176, 61, 35, 45, 44, 63, 90, 42, 15, 15, 32, 110, 212, 252, 253, 254, 254, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 242, 184, 99,
-        30, 9, 10, 23, 30, 27, 41, 86, 100, 120, 178, 217, 227, 207, 138, 49, 24, 33, 60, 89, 109,
-        95, 90, 93, 42, 11, 5, 3, 4, 2, 0, 4, 12, 11, 12, 37, 106, 207, 246, 253, 253, 254, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
-        254, 253, 253, 253, 217, 95, 38, 30, 20, 7, 1, 1, 4, 10, 17, 32, 71, 170, 247, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 254, 254, 255, 254, 254, 254, 247, 158, 65, 27, 9, 28, 90, 96, 39, 25, 33,
-        59, 139, 231, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 254, 252, 242, 176, 98, 45, 22, 15, 17, 12, 5, 18, 38, 17, 14, 33, 76, 128,
-        96, 21, 1, 7, 38, 87, 105, 129, 131, 67, 22, 10, 9, 6, 3, 3, 1, 1, 16, 61, 55, 20, 7, 23,
-        99, 154, 193, 240, 253, 254, 254, 253, 254, 254, 254, 254, 254, 253, 254, 254, 254, 254,
-        253, 254, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 236, 166, 115, 58, 28, 12, 4, 3, 10, 18,
-        17, 20, 44, 136, 238, 254, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 254, 254, 253, 240, 160, 112,
-        83, 36, 28, 49, 68, 80, 73, 56, 71, 175, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 245, 181, 82, 46, 30, 15, 4, 2, 1,
-        5, 6, 1, 1, 2, 12, 21, 9, 1, 6, 17, 45, 61, 28, 16, 23, 30, 20, 10, 3, 2, 1, 2, 6, 9, 23,
-        72, 73, 29, 12, 19, 28, 34, 60, 138, 219, 249, 253, 253, 253, 253, 252, 252, 252, 253, 254,
-        254, 254, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 254, 253, 254, 254, 254, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 249, 216, 166, 75, 24, 12,
-        7, 8, 16, 25, 24, 22, 54, 134, 227, 253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 254, 249,
-        196, 100, 82, 105, 82, 35, 17, 30, 83, 72, 37, 75, 210, 252, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 250, 190, 76, 34, 33,
-        24, 8, 3, 3, 1, 0, 0, 4, 16, 5, 1, 1, 5, 30, 34, 24, 18, 3, 0, 0, 4, 23, 37, 14, 3, 3, 6,
-        9, 16, 16, 14, 15, 12, 17, 34, 27, 21, 29, 61, 129, 209, 249, 253, 253, 253, 253, 253, 253,
-        251, 242, 227, 214, 206, 203, 205, 215, 231, 239, 242, 250, 252, 252, 253, 254, 254, 254,
-        254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 200, 116,
-        55, 28, 19, 7, 1, 4, 23, 42, 65, 90, 136, 212, 252, 253, 254, 253, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253,
-        253, 229, 141, 69, 44, 51, 58, 25, 4, 4, 19, 23, 27, 105, 236, 254, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 253, 235,
-        152, 71, 38, 17, 6, 2, 1, 0, 0, 0, 3, 11, 0, 0, 1, 5, 11, 11, 9, 6, 1, 0, 1, 1, 6, 19, 28,
-        21, 8, 5, 18, 48, 30, 15, 5, 5, 16, 23, 18, 17, 24, 49, 99, 165, 238, 253, 253, 253, 253,
-        249, 226, 194, 168, 123, 95, 81, 71, 63, 71, 92, 108, 150, 199, 209, 227, 244, 253, 254,
-        253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 221,
-        142, 93, 61, 38, 19, 8, 9, 24, 49, 93, 106, 121, 183, 247, 253, 254, 254, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254,
-        254, 254, 251, 205, 110, 58, 25, 15, 18, 24, 29, 25, 22, 50, 115, 203, 251, 254, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254,
-        253, 253, 240, 187, 112, 46, 12, 4, 0, 0, 6, 25, 24, 4, 0, 2, 10, 4, 1, 3, 9, 7, 10, 24,
-        21, 7, 3, 8, 40, 65, 36, 35, 134, 207, 162, 93, 39, 18, 14, 17, 21, 41, 79, 115, 155, 209,
-        247, 253, 253, 253, 239, 179, 110, 87, 129, 128, 88, 56, 45, 50, 39, 15, 16, 53, 100, 90,
-        90, 110, 157, 214, 242, 252, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 242, 183, 106, 58, 48, 45, 25, 9, 11, 22, 48, 53, 61, 127, 232, 253, 254,
-        254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 254, 253, 254, 242, 165, 65, 34, 24, 12, 6, 7, 18, 22, 25, 64, 159, 242,
-        254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 254, 254, 254, 254, 254, 254, 249, 226, 171, 102, 48, 19, 11, 29, 59, 39, 10, 12, 25,
-        22, 12, 18, 20, 23, 35, 68, 123, 113, 39, 12, 12, 23, 38, 45, 123, 234, 252, 250, 233, 180,
-        116, 56, 36, 65, 120, 172, 194, 213, 242, 252, 253, 253, 241, 162, 97, 77, 51, 58, 65, 51,
-        48, 93, 131, 80, 16, 5, 7, 16, 22, 18, 15, 30, 60, 108, 180, 235, 251, 253, 254, 253, 254,
-        255, 255, 255, 255, 255, 255, 255, 254, 254, 251, 207, 108, 51, 35, 22, 8, 2, 2, 7, 17, 27,
-        46, 103, 212, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 254, 226, 110, 20, 11, 23, 25, 9, 1, 0,
-        1, 10, 44, 144, 244, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253, 250, 233, 186, 122, 72,
-        51, 44, 25, 20, 44, 61, 28, 37, 67, 49, 46, 99, 113, 118, 99, 38, 19, 25, 44, 48, 103, 215,
-        252, 253, 254, 253, 251, 236, 195, 139, 122, 134, 168, 213, 239, 252, 253, 253, 242, 179,
-        123, 92, 53, 28, 20, 20, 20, 34, 79, 77, 35, 18, 15, 3, 3, 12, 11, 6, 14, 18, 18, 41, 116,
-        200, 242, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 227, 151, 93,
-        36, 7, 2, 1, 1, 1, 7, 30, 60, 105, 201, 252, 253, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 251, 194, 78, 7,
-        0, 9, 22, 14, 4, 2, 2, 12, 58, 173, 251, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 254, 254,
-        254, 253, 242, 219, 169, 123, 103, 100, 97, 67, 35, 44, 42, 29, 46, 88, 50, 20, 9, 4, 8,
-        38, 109, 161, 221, 250, 252, 252, 254, 253, 253, 253, 254, 249, 229, 201, 201, 233, 250,
-        253, 253, 247, 183, 74, 69, 53, 20, 10, 8, 6, 8, 8, 9, 4, 2, 18, 33, 12, 7, 22, 19, 10, 20,
-        42, 34, 16, 37, 93, 184, 249, 254, 254, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254,
-        241, 177, 106, 46, 17, 5, 3, 0, 0, 6, 41, 72, 110, 195, 247, 254, 254, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254,
-        238, 148, 61, 9, 2, 2, 2, 4, 9, 12, 16, 39, 112, 219, 254, 253, 254, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 254, 254, 254, 254, 254, 253, 253, 252, 247, 242, 239, 194, 116, 96, 64, 23, 17, 28,
-        30, 15, 7, 5, 5, 12, 42, 129, 223, 252, 253, 253, 253, 254, 254, 254, 253, 254, 254, 253,
-        254, 254, 253, 253, 254, 252, 207, 105, 29, 21, 21, 12, 11, 12, 4, 6, 20, 18, 11, 9, 17,
-        18, 9, 9, 14, 19, 27, 46, 68, 49, 24, 41, 84, 161, 237, 250, 254, 255, 255, 255, 255, 255,
-        255, 255, 254, 254, 254, 242, 157, 53, 38, 34, 12, 5, 3, 0, 3, 32, 78, 115, 174, 241, 253,
-        254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 253, 254, 219, 103, 30, 6, 6, 5, 3, 3, 10, 25, 45, 74, 161, 242, 253, 253,
-        254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 246,
-        221, 210, 152, 75, 54, 56, 54, 58, 56, 37, 41, 73, 132, 217, 251, 254, 254, 254, 254, 254,
-        254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 236, 138, 54, 15, 22, 49, 35, 23,
-        38, 16, 8, 23, 61, 74, 51, 34, 23, 21, 19, 9, 12, 27, 35, 25, 20, 19, 39, 73, 107, 144,
-        204, 247, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 247, 198, 82, 25, 18, 17, 12,
-        12, 9, 2, 12, 50, 100, 163, 236, 253, 254, 254, 254, 254, 254, 254, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 252, 199, 83, 23, 22, 39, 25,
-        14, 20, 42, 75, 84, 103, 198, 250, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 241, 203, 181, 173, 137, 103, 93,
-        90, 109, 167, 227, 252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 253, 219, 100, 37, 17, 23, 61, 61, 49, 65, 48, 20, 12, 63, 107, 98, 75, 80,
-        105, 107, 63, 38, 25, 9, 1, 1, 4, 15, 41, 53, 56, 135, 231, 254, 254, 254, 253, 254, 254,
-        254, 253, 254, 254, 252, 220, 116, 46, 27, 20, 12, 23, 35, 11, 6, 23, 73, 150, 225, 252,
-        254, 254, 254, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 254, 241, 140, 42, 23, 80, 127, 60, 23, 53, 132, 133, 89, 135, 231, 253,
-        254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 254, 253, 253, 250, 240, 205, 159, 150, 183, 221, 245, 252, 254, 254, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 251, 211, 125, 92,
-        66, 20, 16, 45, 63, 41, 55, 41, 50, 141, 199, 214, 213, 217, 227, 229, 206, 138, 43, 3, 0,
-        0, 0, 3, 18, 35, 55, 128, 218, 252, 254, 254, 254, 253, 253, 253, 253, 254, 252, 251, 210,
-        118, 84, 41, 10, 5, 15, 27, 18, 7, 16, 54, 119, 189, 239, 251, 253, 254, 254, 253, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 219, 90,
-        30, 21, 46, 66, 42, 35, 55, 80, 55, 58, 166, 247, 254, 253, 254, 254, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253, 253,
-        253, 251, 246, 245, 249, 252, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 253, 239, 191, 180, 181, 144, 38, 7, 12, 18, 11, 21, 51, 119,
-        221, 251, 252, 253, 253, 253, 238, 181, 93, 25, 7, 7, 5, 6, 6, 6, 17, 60, 137, 212, 250,
-        253, 253, 253, 253, 253, 251, 249, 242, 224, 187, 127, 61, 38, 20, 9, 5, 2, 3, 5, 11, 30,
-        69, 85, 110, 150, 186, 221, 245, 252, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 254, 252, 217, 106, 48, 22, 10, 9, 19, 34, 34, 20, 18, 65,
-        198, 252, 254, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 254, 254, 253, 253, 254, 254, 253, 253, 253, 254, 254, 254,
-        253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 233,
-        197, 210, 196, 134, 25, 2, 1, 3, 5, 20, 61, 143, 237, 253, 254, 253, 253, 254, 242, 152,
-        58, 23, 38, 54, 22, 16, 12, 11, 20, 53, 119, 203, 249, 253, 253, 252, 247, 229, 198, 186,
-        179, 131, 75, 38, 17, 8, 9, 18, 10, 1, 1, 1, 7, 23, 41, 43, 53, 56, 59, 105, 170, 216, 246,
-        253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 219,
-        155, 96, 51, 23, 27, 22, 12, 9, 9, 33, 110, 226, 253, 254, 254, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254,
-        254, 254, 255, 255, 254, 254, 255, 255, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 253, 231, 165, 120, 79, 49, 15, 6, 10, 15, 16, 28, 48,
-        121, 235, 253, 254, 253, 254, 254, 247, 158, 61, 34, 56, 82, 42, 30, 34, 34, 37, 60, 103,
-        177, 242, 242, 224, 197, 160, 102, 55, 63, 77, 50, 25, 12, 6, 3, 5, 11, 4, 0, 0, 0, 1, 4,
-        3, 5, 9, 16, 37, 78, 112, 152, 218, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 254, 237, 171, 118, 99, 95, 123, 160, 61, 5, 0, 11, 63, 152, 239, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 214, 107, 46,
-        34, 30, 27, 24, 19, 15, 16, 25, 40, 112, 231, 253, 254, 254, 254, 254, 250, 177, 97, 71,
-        58, 41, 24, 23, 34, 53, 65, 75, 90, 131, 173, 120, 73, 61, 58, 30, 8, 4, 3, 5, 8, 8, 2, 2,
-        1, 0, 0, 0, 0, 0, 0, 3, 2, 7, 18, 38, 87, 150, 176, 207, 242, 254, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 227, 138, 51, 22, 46, 140, 150, 46, 7, 6,
-        21, 69, 171, 247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 252, 210, 95, 30, 18, 25, 36, 25, 9, 3, 12, 42, 65, 125, 227, 253, 254, 254, 254, 254,
-        251, 198, 123, 81, 51, 22, 10, 7, 9, 30, 58, 61, 59, 71, 84, 34, 10, 7, 10, 7, 1, 0, 0, 1,
-        3, 7, 11, 10, 2, 0, 0, 0, 0, 0, 0, 1, 1, 9, 43, 85, 140, 193, 210, 242, 253, 254, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 218, 112, 21, 3, 18, 69,
-        38, 8, 11, 28, 49, 99, 203, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 253, 227, 139, 56, 20, 22, 34, 28, 19, 16, 24, 48, 66, 125, 223, 253,
-        254, 255, 254, 254, 253, 216, 123, 48, 23, 20, 17, 9, 3, 8, 17, 17, 22, 36, 44, 15, 4, 3,
-        0, 0, 1, 2, 6, 3, 0, 2, 7, 9, 4, 0, 0, 0, 0, 0, 0, 0, 0, 5, 34, 77, 119, 184, 231, 252,
-        254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 247, 187,
-        83, 14, 3, 4, 6, 2, 5, 14, 25, 51, 123, 223, 254, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 247, 210, 122, 61, 25, 25, 60, 109, 132, 75, 29,
-        42, 123, 224, 253, 253, 254, 254, 254, 252, 223, 133, 46, 20, 30, 39, 27, 19, 12, 6, 3, 1,
-        4, 4, 3, 6, 7, 5, 12, 28, 11, 3, 2, 1, 0, 3, 6, 6, 2, 0, 0, 2, 1, 1, 4, 11, 24, 65, 146,
-        210, 240, 252, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253,
-        254, 254, 223, 122, 51, 28, 14, 9, 4, 6, 32, 54, 27, 34, 123, 230, 254, 254, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 251, 219, 137, 73, 25, 15, 38,
-        83, 115, 80, 35, 56, 138, 211, 246, 253, 253, 254, 254, 247, 193, 166, 170, 79, 18, 15, 20,
-        22, 12, 11, 10, 1, 0, 0, 2, 8, 12, 19, 45, 54, 18, 2, 3, 12, 19, 20, 12, 8, 5, 1, 1, 8, 21,
-        10, 9, 24, 61, 128, 217, 253, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 254, 253, 254, 253, 193, 82, 46, 51, 37, 32, 23, 24, 54, 69, 46, 72, 160,
-        241, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
-        253, 226, 122, 60, 46, 30, 10, 7, 8, 12, 24, 43, 74, 134, 213, 250, 253, 254, 253, 221, 98,
-        84, 134, 49, 5, 3, 5, 5, 3, 8, 11, 3, 0, 0, 1, 5, 10, 21, 32, 27, 24, 32, 27, 49, 84, 85,
-        59, 39, 17, 4, 2, 12, 27, 14, 11, 32, 93, 163, 229, 253, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 249, 168, 67, 34, 30, 27, 30, 36,
-        46, 58, 46, 61, 156, 221, 251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 254, 253, 240, 163, 138, 149, 75, 12, 1, 0, 0, 2, 7, 30, 75, 150, 232,
-        253, 252, 234, 135, 51, 36, 24, 9, 0, 0, 0, 0, 0, 3, 3, 1, 0, 0, 1, 5, 12, 12, 12, 18, 28,
-        51, 86, 139, 184, 195, 162, 109, 46, 15, 6, 6, 6, 9, 21, 44, 89, 160, 229, 254, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 246, 157,
-        61, 12, 2, 5, 8, 24, 58, 59, 40, 59, 160, 237, 254, 253, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 249, 207, 181, 171, 110, 33, 8, 3, 1, 4,
-        15, 36, 48, 90, 183, 240, 200, 115, 35, 44, 35, 7, 0, 2, 0, 0, 0, 0, 0, 0, 0, 5, 15, 25,
-        45, 51, 35, 42, 76, 97, 131, 207, 245, 252, 242, 194, 135, 68, 28, 14, 8, 3, 5, 18, 25, 41,
-        120, 217, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        254, 254, 254, 242, 163, 74, 25, 12, 10, 15, 40, 59, 37, 32, 69, 144, 231, 253, 254, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253, 238,
-        176, 123, 132, 66, 14, 3, 5, 22, 30, 19, 28, 81, 143, 158, 80, 34, 15, 22, 25, 10, 0, 2, 1,
-        0, 0, 0, 3, 10, 30, 76, 112, 138, 153, 153, 153, 181, 220, 239, 247, 253, 254, 254, 237,
-        150, 82, 46, 23, 18, 27, 23, 9, 10, 16, 38, 115, 213, 253, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 240, 152, 93, 93, 88, 51, 39,
-        34, 33, 32, 51, 103, 179, 242, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 254, 254, 250, 212, 125, 98, 78, 45, 22, 14, 17, 12, 5, 15,
-        58, 96, 72, 38, 27, 17, 14, 20, 12, 2, 6, 5, 4, 3, 8, 35, 76, 131, 192, 224, 237, 240, 241,
-        246, 251, 253, 254, 254, 254, 254, 254, 239, 148, 73, 44, 25, 11, 11, 29, 30, 34, 43, 48,
-        109, 209, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        254, 254, 253, 225, 138, 115, 156, 179, 110, 49, 18, 12, 25, 60, 123, 204, 247, 255, 254,
-        254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254,
-        253, 247, 195, 90, 86, 123, 122, 66, 12, 4, 8, 10, 12, 18, 23, 41, 48, 50, 38, 23, 14, 18,
-        35, 42, 30, 30, 66, 120, 187, 225, 244, 252, 253, 253, 254, 253, 254, 254, 254, 253, 254,
-        254, 253, 245, 197, 132, 66, 25, 20, 23, 29, 21, 25, 43, 53, 103, 209, 253, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253, 216, 156, 126,
-        90, 78, 65, 24, 7, 6, 12, 38, 110, 211, 249, 254, 254, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 254, 250, 191, 128, 142, 153,
-        98, 27, 11, 16, 9, 2, 0, 1, 11, 33, 68, 83, 61, 53, 93, 109, 79, 88, 162, 216, 236, 252,
-        254, 254, 254, 254, 254, 253, 254, 254, 254, 254, 253, 254, 254, 253, 239, 184, 148, 67,
-        14, 49, 100, 63, 15, 12, 29, 60, 125, 216, 253, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 254, 251, 206, 134, 78, 29, 11, 14, 11, 8, 9, 16,
-        40, 120, 220, 251, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 254, 254, 254, 254, 254, 253, 247, 218, 163, 84, 36, 23, 23, 25, 15, 6, 3,
-        3, 2, 6, 19, 41, 51, 88, 173, 167, 113, 163, 242, 253, 254, 253, 254, 254, 254, 253, 254,
-        254, 254, 255, 254, 253, 254, 254, 254, 253, 233, 159, 112, 46, 18, 60, 139, 116, 41, 20,
-        27, 66, 134, 213, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 253, 250, 184, 77, 30, 14, 3, 2, 10, 14, 24, 51, 85, 146, 227, 253, 254,
-        253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254,
-        254, 254, 254, 254, 254, 250, 220, 126, 43, 23, 19, 20, 30, 28, 22, 25, 18, 16, 32, 46, 54,
-        86, 134, 155, 191, 240, 254, 254, 255, 255, 254, 254, 254, 254, 254, 254, 255, 255, 254,
-        253, 253, 255, 254, 254, 233, 161, 92, 33, 20, 27, 56, 90, 90, 74, 63, 88, 146, 212, 253,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 247,
-        157, 42, 24, 27, 11, 6, 15, 24, 46, 113, 148, 155, 223, 252, 254, 254, 254, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253,
-        253, 252, 241, 187, 112, 53, 23, 37, 51, 58, 75, 71, 87, 106, 99, 107, 123, 148, 201, 244,
-        253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 254,
-        254, 234, 157, 75, 19, 9, 2, 3, 29, 137, 206, 157, 136, 180, 229, 254, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 241, 141, 43, 29, 28, 16,
-        18, 41, 35, 37, 87, 117, 136, 219, 252, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 253, 252, 253,
-        244, 210, 148, 84, 53, 48, 61, 67, 93, 100, 97, 123, 161, 203, 242, 252, 254, 254, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 254, 254, 234, 131,
-        46, 12, 6, 1, 1, 12, 84, 143, 127, 122, 179, 239, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 237, 140, 60, 34, 18, 8, 21, 59, 51, 21,
-        24, 49, 117, 223, 252, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 254, 253, 252, 253, 253, 247,
-        220, 165, 112, 81, 88, 122, 134, 129, 147, 190, 234, 252, 253, 253, 254, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 254, 254, 236, 127, 42, 27, 22,
-        8, 6, 8, 15, 28, 44, 86, 169, 238, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 253, 239, 170, 97, 45, 19, 10, 10, 22, 30, 12, 9, 30, 119,
-        229, 253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 254, 253, 254, 254, 254, 252, 240,
-        217, 206, 221, 232, 232, 236, 245, 252, 253, 254, 254, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 241, 176, 119, 92, 84, 71, 53, 32,
-        30, 24, 21, 53, 147, 232, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 253, 253, 235, 181, 119, 61, 35, 30, 20, 11, 20, 17, 20, 48, 125, 229, 253,
-        254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 253, 254, 254, 245, 217, 200, 163, 106, 89, 70, 56, 69, 65,
-        51, 77, 161, 236, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 253, 227, 157, 135, 126, 93, 48, 25, 22, 42, 23, 17, 37, 110, 227, 254, 254,
-        253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 254, 253, 253, 254, 242, 187, 139, 81, 28, 25, 34, 30, 35, 51, 82, 132,
-        196, 242, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        254, 253, 231, 171, 163, 145, 82, 24, 11, 15, 28, 11, 6, 23, 110, 235, 254, 253, 253, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 254, 254, 254, 253, 254, 231, 152, 71, 19, 4, 7, 18, 19, 23, 30, 60, 109, 173, 238,
-        253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 252,
-        234, 174, 110, 49, 12, 3, 5, 5, 3, 2, 8, 35, 139, 244, 254, 254, 253, 254, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254,
-        254, 254, 253, 210, 117, 51, 12, 7, 11, 11, 24, 37, 33, 29, 49, 126, 230, 253, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 252, 211, 99, 28, 8,
-        4, 9, 28, 32, 16, 18, 40, 69, 151, 245, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 252,
-        187, 81, 38, 14, 8, 11, 9, 9, 17, 24, 29, 51, 138, 235, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 250, 201, 100, 39, 18, 17, 24, 40, 61,
-        68, 72, 79, 90, 155, 244, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 252, 189, 86, 34, 9,
-        9, 14, 8, 5, 9, 17, 32, 77, 167, 241, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 253, 250, 199, 120, 70, 48, 53, 49, 28, 44, 88, 99, 85, 95,
-        170, 247, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 252, 201, 106, 38, 7, 5, 8, 8, 7, 7,
-        9, 30, 102, 189, 245, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 249, 198, 102, 54, 49, 56, 41, 19, 23, 46, 61, 65, 97, 189, 251, 254, 254,
-        254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 254, 254, 254, 254, 251, 194, 110, 68, 35, 15, 12, 14, 11, 5, 5, 29, 121,
-        205, 250, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        254, 247, 204, 109, 49, 23, 12, 9, 15, 19, 20, 30, 51, 93, 189, 251, 254, 254, 254, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 254, 254, 254, 254, 251, 187, 117, 99, 63, 20, 15, 23, 20, 16, 24, 46, 107, 200, 250,
-        254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 247,
-        211, 148, 65, 17, 3, 7, 16, 16, 12, 22, 46, 90, 189, 250, 254, 254, 254, 254, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
-        254, 254, 254, 251, 189, 120, 85, 44, 18, 23, 38, 33, 37, 74, 89, 93, 193, 250, 254, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 247, 206, 158,
-        73, 27, 18, 20, 18, 11, 12, 19, 44, 102, 203, 251, 254, 254, 254, 254, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254,
-        254, 247, 167, 86, 44, 18, 25, 44, 55, 44, 30, 58, 85, 112, 204, 251, 253, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 244, 190, 108, 61, 45, 25,
-        18, 19, 14, 11, 16, 41, 115, 219, 253, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 239,
-        141, 51, 16, 8, 25, 46, 48, 51, 28, 17, 46, 134, 223, 252, 253, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 244, 184, 81, 38, 25, 9, 9, 24, 28,
-        17, 16, 43, 113, 215, 252, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 235, 164, 79, 21, 6,
-        12, 28, 30, 38, 46, 56, 66, 120, 227, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 245, 178, 69, 30, 21, 7, 5, 12, 17, 12, 18, 53,
-        123, 216, 253, 254, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 234, 174, 115, 45, 11, 12, 20,
-        18, 12, 30, 92, 144, 172, 240, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 253, 237, 150, 68, 43, 23, 6, 2, 6, 7, 4, 12, 44, 99, 203, 254,
-        254, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 254, 254, 252, 212, 116, 95, 78, 32, 15, 14, 12, 8, 15, 48,
-        133, 227, 252, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 234, 136, 59, 33, 12, 3, 2, 10, 20, 17, 21, 36, 80, 201, 254, 254, 254, 254,
-        254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 254, 254, 249, 178, 56, 42, 82, 72, 16, 8, 7, 27, 48, 67, 135, 233, 253,
-        253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
-        236, 148, 59, 21, 7, 3, 4, 16, 48, 83, 92, 75, 105, 216, 253, 253, 253, 253, 254, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
-        253, 254, 244, 161, 39, 16, 40, 41, 8, 4, 5, 21, 37, 65, 137, 227, 253, 254, 254, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 234, 158, 73, 25, 12,
-        17, 23, 21, 37, 74, 112, 115, 142, 224, 254, 253, 253, 253, 254, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 236,
-        154, 67, 28, 18, 14, 7, 8, 12, 8, 11, 44, 130, 233, 253, 254, 254, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 230, 144, 69, 25, 19, 42, 55, 22,
-        12, 9, 32, 97, 157, 219, 253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 220, 136, 113, 59,
-        21, 22, 28, 27, 33, 24, 34, 76, 164, 246, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 232, 133, 45, 15, 12, 21, 25, 21, 27, 27, 45,
-        108, 174, 230, 253, 254, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 250, 193, 90, 46, 19, 7, 12, 42, 68,
-        64, 55, 61, 100, 198, 252, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 241, 160, 64, 25, 19, 18, 23, 37, 71, 76, 74, 100, 151, 227,
-        253, 254, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 254, 254, 237, 148, 48, 11, 10, 11, 11, 25, 56, 59, 39, 46,
-        112, 223, 254, 254, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 254, 244, 186, 112, 68, 48, 43, 56, 70, 63, 39, 33, 46, 88, 206, 254, 254,
-        254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 253, 204, 98, 45, 30, 30, 25, 12, 8, 18, 27, 35, 95, 186, 246,
-        253, 254, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 254, 242, 198, 159, 113, 55, 23, 37, 80, 64, 23, 15, 28, 76, 201, 254, 254, 253, 253,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254,
-        254, 254, 254, 247, 157, 61, 46, 58, 67, 50, 25, 23, 23, 22, 55, 122, 209, 252, 253, 254,
-        253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
-        244, 191, 127, 71, 25, 6, 11, 35, 33, 18, 16, 41, 107, 217, 253, 253, 253, 254, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 254, 254,
-        253, 237, 128, 51, 45, 74, 72, 37, 17, 19, 17, 12, 40, 126, 225, 254, 254, 254, 254, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 242, 171,
-        84, 30, 11, 5, 7, 8, 7, 6, 15, 51, 125, 223, 253, 253, 254, 254, 254, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253, 254, 253, 220, 118,
-        55, 46, 64, 45, 16, 8, 4, 3, 4, 43, 168, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 236, 159, 92, 45, 17, 5, 7, 18,
-        22, 9, 33, 74, 126, 217, 254, 253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 254, 252, 253, 249, 191, 90, 38, 25, 19, 14, 14,
-        15, 8, 6, 15, 93, 224, 252, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 240, 173, 116, 72, 29, 6, 6, 35, 71, 42, 79,
-        132, 165, 227, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 253, 253, 252, 237, 128, 30, 8, 5, 3, 5, 8, 15, 19, 25, 45,
-        138, 244, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 240, 170, 86, 51, 32, 14, 4, 9, 25, 30, 59, 102, 153, 224,
-        254, 253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 253, 253, 250, 196, 53, 5, 2, 2, 3, 5, 11, 12, 9, 23, 77, 199, 253, 253,
-        254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 242, 176, 95, 59, 45, 24, 5, 1, 1, 12, 25, 54, 122, 218, 253, 253, 254, 254,
-        254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 254,
-        252, 225, 129, 25, 2, 3, 10, 9, 12, 36, 50, 21, 44, 134, 242, 254, 253, 254, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 244,
-        189, 133, 103, 64, 22, 3, 1, 3, 19, 39, 61, 122, 220, 254, 254, 254, 254, 254, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 247, 153, 55,
-        40, 25, 39, 72, 51, 28, 39, 56, 71, 149, 218, 253, 254, 253, 254, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 245, 184, 109,
-        64, 28, 5, 2, 6, 18, 46, 78, 83, 108, 201, 253, 254, 253, 254, 254, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 252, 233, 110, 41, 80, 93, 65,
-        65, 48, 30, 39, 67, 116, 210, 249, 253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 242, 172, 75, 25, 10, 4,
-        4, 19, 35, 48, 61, 63, 78, 174, 250, 254, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 254, 254, 254, 254, 254, 247, 174, 77, 49, 79, 89, 34, 16, 14, 18, 39,
-        92, 150, 226, 253, 254, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 241, 157, 61, 33, 30, 23, 16, 20, 22, 15,
-        20, 43, 82, 175, 247, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        254, 253, 254, 253, 253, 252, 203, 63, 23, 25, 28, 23, 17, 22, 17, 11, 22, 82, 197, 247,
-        254, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 254, 239, 144, 59, 41, 38, 30, 23, 20, 14, 7, 20, 67, 128,
-        199, 249, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253,
-        254, 253, 253, 239, 146, 38, 8, 4, 4, 9, 30, 61, 46, 22, 17, 97, 236, 253, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 254, 242, 178, 84, 24, 8, 8, 19, 25, 22, 16, 41, 84, 130, 200, 250, 253,
-        254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 254, 253, 246,
-        181, 83, 34, 14, 6, 3, 5, 18, 32, 36, 39, 50, 170, 252, 253, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        253, 247, 211, 115, 25, 4, 3, 10, 12, 15, 46, 55, 59, 100, 199, 251, 254, 254, 254, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 252, 253, 252, 205, 73, 14, 8, 9,
-        12, 16, 11, 16, 18, 30, 71, 148, 238, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 249,
-        200, 100, 41, 24, 12, 2, 1, 9, 61, 51, 42, 103, 215, 252, 254, 254, 254, 254, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 254, 254, 254, 254, 254, 253, 253, 231, 134, 48, 16, 12, 24, 35, 30,
-        12, 9, 9, 19, 100, 223, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 250, 201, 102,
-        60, 45, 27, 9, 6, 8, 24, 36, 49, 89, 184, 247, 253, 253, 253, 254, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 254, 254, 253, 254, 253, 253, 244, 135, 50, 42, 23, 25, 45, 39, 14, 7, 12, 15, 41,
-        180, 250, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 252, 221, 139, 72, 30, 16, 25,
-        19, 7, 5, 30, 46, 51, 123, 234, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253,
-        253, 254, 253, 253, 221, 76, 12, 12, 12, 30, 60, 37, 5, 6, 16, 29, 123, 240, 253, 253, 253,
-        254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 253, 238, 175, 79, 17, 5, 22, 17, 4, 3, 16, 22, 32,
-        100, 221, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253, 253, 253, 235,
-        189, 86, 11, 5, 9, 23, 35, 18, 5, 8, 18, 87, 223, 251, 253, 254, 253, 254, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 254, 253, 232, 161, 75, 37, 21, 5, 3, 3, 8, 6, 17, 53, 130, 221, 253, 253,
-        254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 239, 146, 61, 32, 17, 16, 18,
-        8, 2, 3, 12, 27, 74, 201, 252, 253, 253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
-        253, 225, 131, 74, 85, 80, 24, 12, 20, 15, 10, 33, 77, 131, 216, 252, 254, 254, 254, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 253, 253, 245, 176, 71, 15, 9, 15, 14, 12, 8, 7, 15, 40, 78,
-        175, 247, 254, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 232, 129,
-        56, 50, 73, 92, 72, 51, 20, 27, 48, 65, 112, 207, 250, 254, 254, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 253, 252, 251, 174, 49, 21, 20, 19, 12, 11, 15, 29, 56, 65, 61, 144, 237, 253,
-        253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 244, 159, 56, 15, 12,
-        37, 40, 29, 32, 60, 71, 80, 117, 198, 246, 254, 254, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        253, 251, 204, 50, 4, 12, 30, 43, 32, 16, 14, 25, 45, 37, 84, 227, 252, 253, 253, 254, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 247, 183, 87, 34, 7, 2, 2, 4, 16,
-        41, 66, 84, 110, 171, 239, 254, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 201, 73, 9, 36,
-        51, 32, 23, 25, 21, 10, 9, 12, 48, 192, 253, 253, 252, 254, 254, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 253, 251, 200, 136, 107, 46, 5, 3, 4, 6, 14, 27, 43, 73, 141,
-        230, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 231, 108, 25, 50, 107, 83, 25, 8, 19, 40,
-        29, 12, 36, 152, 247, 253, 253, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 254, 253, 253, 217, 142, 123, 74, 16, 11, 15, 15, 12, 11, 18, 46, 121, 216, 253, 254,
-        254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 254, 253, 253, 244, 174, 92, 77, 95, 80, 43, 25, 20, 22, 38, 34, 34, 136,
-        238, 253, 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
-        254, 253, 224, 103, 44, 25, 17, 17, 28, 40, 30, 18, 25, 60, 125, 205, 250, 254, 254, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        253, 253, 252, 231, 142, 100, 117, 105, 37, 16, 30, 49, 40, 19, 7, 21, 121, 235, 253, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 254,
-        230, 112, 38, 17, 16, 36, 73, 55, 21, 14, 27, 78, 143, 207, 249, 253, 254, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 252,
-        225, 123, 37, 16, 22, 30, 12, 15, 43, 50, 19, 7, 15, 102, 231, 253, 253, 254, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 241, 151,
-        77, 49, 35, 45, 88, 39, 7, 8, 25, 65, 121, 184, 244, 254, 254, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 234, 118, 34,
-        17, 5, 1, 2, 5, 11, 25, 25, 11, 9, 73, 210, 252, 254, 253, 254, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253, 249, 191, 140, 126, 78,
-        41, 53, 38, 32, 30, 29, 44, 93, 152, 231, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 254, 230, 127, 46, 24, 9, 2, 4, 5, 14,
-        12, 8, 7, 6, 55, 192, 252, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 229, 179, 123, 82, 64, 46, 70, 95, 61,
-        36, 59, 112, 148, 221, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
-        253, 254, 255, 255, 253, 253, 252, 216, 102, 37, 33, 14, 4, 3, 15, 33, 38, 22, 8, 2, 42,
-        187, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 254, 253, 254, 253, 240, 174, 98, 65, 45, 27, 50, 71, 43, 35, 73, 127,
-        168, 224, 252, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253, 254,
-        254, 253, 251, 213, 100, 25, 25, 35, 23, 12, 12, 25, 33, 25, 20, 22, 56, 173, 247, 253,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 253, 254, 253, 240, 164, 95, 54, 14, 6, 14, 25, 21, 23, 44, 82, 150, 224,
-        252, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 253, 251,
-        211, 92, 27, 17, 22, 35, 30, 21, 17, 14, 9, 7, 15, 80, 193, 249, 253, 254, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253,
-        254, 253, 253, 247, 177, 90, 49, 12, 3, 7, 14, 12, 10, 16, 38, 97, 183, 242, 254, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 254, 249, 205, 86, 32, 44, 36, 17,
-        12, 11, 9, 5, 2, 2, 10, 63, 187, 249, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 251,
-        199, 100, 58, 38, 17, 16, 14, 7, 4, 15, 41, 68, 115, 212, 252, 254, 254, 254, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        254, 254, 254, 253, 254, 254, 254, 253, 239, 183, 100, 42, 48, 71, 46, 12, 6, 10, 18, 29,
-        25, 30, 84, 197, 249, 253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 225, 139, 77,
-        51, 30, 18, 7, 2, 5, 14, 23, 41, 80, 174, 244, 253, 253, 254, 254, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 252, 254, 253,
-        252, 253, 251, 226, 133, 53, 27, 19, 14, 14, 10, 11, 23, 42, 71, 116, 125, 139, 207, 250,
-        254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 244, 184, 93, 35, 29, 19, 4, 0,
-        6, 12, 8, 19, 48, 123, 221, 252, 252, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 254, 252, 253, 249, 206,
-        93, 15, 5, 6, 6, 10, 19, 28, 35, 48, 75, 89, 87, 148, 223, 252, 253, 254, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 251, 214, 110, 60, 49, 25, 7, 2, 2, 5, 12, 29, 68,
-        122, 196, 247, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 241, 177, 85, 17, 1, 4, 9, 12, 25,
-        56, 66, 43, 40, 58, 74, 118, 212, 251, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 254, 253, 239, 170, 126, 82, 43, 25, 16, 6, 10, 44, 69, 87, 122, 178, 238,
-        253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254,
-        254, 254, 254, 254, 254, 253, 247, 218, 133, 56, 36, 18, 4, 6, 9, 9, 16, 38, 46, 24, 23,
-        51, 130, 218, 251, 253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        254, 254, 251, 221, 166, 92, 46, 46, 56, 42, 40, 97, 85, 60, 82, 141, 211, 250, 254, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 253,
-        254, 254, 240, 183, 95, 33, 17, 21, 27, 10, 4, 7, 14, 17, 17, 19, 25, 51, 117, 215, 253,
-        254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254,
-        238, 171, 100, 49, 37, 61, 71, 59, 69, 39, 28, 53, 99, 166, 240, 253, 254, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 253, 251, 227, 137,
-        51, 24, 27, 21, 12, 32, 18, 10, 25, 43, 24, 12, 34, 110, 177, 227, 252, 254, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 246, 187, 137,
-        98, 51, 27, 25, 18, 6, 5, 19, 54, 85, 129, 212, 253, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 254, 254, 254, 253, 253, 253, 250, 227, 191, 142, 51, 11, 18, 50, 45,
-        27, 30, 20, 23, 45, 32, 6, 21, 103, 219, 247, 253, 253, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 251, 213, 159, 142, 116, 61,
-        30, 17, 7, 4, 9, 29, 61, 113, 198, 250, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 254, 254, 254, 253, 252, 241, 187, 110, 67, 46, 24, 12, 16, 42, 78, 51, 11, 5, 12, 16,
-        14, 34, 92, 192, 247, 253, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 254, 252, 254, 237, 171, 112, 93, 66, 45, 45, 37, 12, 3, 8,
-        32, 105, 205, 242, 253, 254, 254, 254, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 255, 254, 254, 254,
-        249, 226, 174, 83, 25, 10, 10, 19, 32, 23, 15, 30, 25, 3, 1, 1, 3, 25, 116, 205, 247, 255,
-        253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 254, 254, 254, 253, 251, 216, 121, 58, 46, 54, 56, 29, 10, 3, 5, 27, 77, 132, 187,
-        241, 252, 254, 253, 253, 254, 253, 253, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 251, 242, 227, 186, 110, 58, 42, 43,
-        35, 32, 29, 34, 34, 21, 6, 3, 5, 9, 17, 54, 147, 232, 251, 253, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 254,
-        253, 253, 246, 201, 146, 93, 43, 18, 8, 5, 6, 14, 30, 34, 46, 112, 187, 239, 253, 253, 253,
-        254, 253, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253, 253,
-        254, 254, 253, 253, 249, 230, 184, 125, 82, 56, 34, 32, 51, 61, 41, 33, 22, 12, 12, 11, 4,
-        6, 27, 61, 117, 194, 244, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253, 254, 253, 253, 246, 215,
-        123, 37, 9, 12, 19, 23, 16, 10, 6, 12, 37, 67, 136, 213, 242, 250, 252, 253, 253, 254, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 253, 252, 240, 216, 178,
-        122, 60, 23, 12, 15, 32, 37, 21, 12, 7, 9, 10, 8, 6, 12, 22, 33, 78, 162, 227, 250, 253,
-        254, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 251, 210, 108, 49, 42, 40, 61, 77,
-        29, 3, 1, 2, 5, 3, 10, 51, 106, 151, 193, 235, 251, 254, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 254, 253, 247, 231, 215, 201, 141, 84, 51, 24, 7, 7, 12, 17, 24, 12, 1, 0,
-        0, 2, 4, 7, 16, 56, 100, 126, 187, 242, 253, 254, 253, 253, 254, 253, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254,
-        254, 255, 255, 254, 253, 239, 167, 118, 110, 54, 61, 154, 139, 67, 29, 6, 1, 0, 1, 2, 5,
-        11, 30, 82, 139, 200, 240, 252, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253,
-        254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 254, 254, 254, 254, 254, 254,
-        254, 254, 253, 253, 254, 254, 254, 254, 253, 252, 250, 244, 230, 211, 199, 201, 175, 100,
-        72, 77, 48, 16, 4, 3, 12, 20, 12, 4, 0, 1, 3, 8, 16, 12, 7, 10, 37, 122, 203, 234, 252,
-        254, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 240,
-        205, 134, 51, 40, 123, 184, 164, 119, 39, 3, 1, 2, 4, 5, 3, 4, 12, 24, 55, 135, 210, 246,
-        253, 253, 253, 253, 253, 254, 253, 253, 254, 254, 253, 253, 254, 253, 253, 253, 254, 254,
-        253, 253, 253, 253, 253, 253, 254, 253, 253, 252, 253, 252, 250, 249, 246, 242, 233, 223,
-        212, 196, 177, 161, 132, 95, 69, 75, 113, 109, 39, 17, 21, 37, 21, 2, 5, 18, 8, 1, 0, 3,
-        18, 36, 56, 85, 63, 41, 56, 119, 210, 247, 253, 253, 254, 253, 254, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 250, 216, 151, 95, 63, 65, 82, 83,
-        40, 9, 7, 10, 12, 17, 14, 12, 17, 23, 36, 75, 153, 229, 252, 253, 253, 253, 254, 254, 253,
-        253, 253, 254, 253, 254, 254, 253, 253, 253, 253, 252, 251, 252, 251, 247, 245, 242, 238,
-        226, 210, 210, 212, 203, 191, 184, 167, 134, 105, 82, 66, 55, 41, 29, 19, 14, 14, 19, 37,
-        46, 22, 11, 16, 58, 45, 5, 3, 4, 1, 1, 1, 16, 48, 56, 54, 70, 93, 136, 192, 235, 252, 253,
-        253, 254, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254,
-        253, 252, 254, 253, 247, 221, 143, 61, 30, 27, 18, 11, 14, 16, 17, 29, 30, 39, 72, 85, 88,
-        127, 204, 247, 253, 253, 252, 254, 253, 251, 249, 247, 245, 235, 227, 224, 217, 212, 214,
-        215, 197, 172, 172, 203, 194, 143, 116, 148, 170, 129, 77, 75, 85, 70, 50, 46, 34, 18, 12,
-        9, 7, 14, 25, 11, 2, 5, 7, 3, 1, 1, 1, 1, 1, 9, 9, 3, 2, 7, 6, 4, 16, 45, 75, 85, 100, 137,
-        194, 240, 253, 254, 253, 253, 253, 254, 254, 253, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 254, 254, 254, 254, 253, 253, 253, 253, 249, 196, 88, 49, 46, 36, 30,
-        39, 34, 45, 66, 88, 121, 154, 169, 217, 247, 245, 230, 217, 211, 216, 225, 196, 168, 165,
-        161, 120, 88, 75, 83, 116, 161, 138, 65, 50, 65, 95, 84, 43, 23, 51, 110, 113, 73, 43, 33,
-        29, 19, 7, 2, 2, 30, 61, 51, 33, 25, 20, 7, 2, 1, 1, 0, 0, 0, 0, 0, 0, 8, 36, 56, 71, 58,
-        38, 61, 100, 132, 177, 221, 242, 253, 254, 254, 254, 253, 254, 254, 254, 254, 253, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 254, 254, 253, 253,
-        251, 218, 121, 74, 77, 93, 90, 72, 76, 85, 105, 134, 147, 148, 183, 198, 195, 211, 207,
-        160, 100, 77, 93, 123, 108, 97, 93, 74, 41, 17, 14, 59, 105, 115, 79, 33, 43, 67, 46, 23,
-        12, 9, 14, 40, 63, 74, 43, 18, 24, 34, 4, 3, 17, 75, 107, 70, 23, 4, 5, 7, 1, 0, 0, 0, 1,
-        3, 4, 7, 18, 49, 103, 110, 80, 59, 56, 102, 160, 205, 241, 253, 253, 254, 254, 254, 254,
-        254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 254, 253, 253, 237, 138, 45, 42, 44, 39, 39, 39, 56, 98, 143, 181, 162,
-        113, 146, 143, 75, 79, 117, 113, 56, 20, 17, 22, 24, 36, 42, 34, 22, 7, 9, 44, 51, 25, 23,
-        48, 45, 39, 16, 4, 5, 11, 15, 10, 11, 23, 19, 9, 24, 56, 16, 17, 64, 51, 19, 8, 1, 0, 1, 5,
-        4, 2, 2, 5, 19, 28, 33, 58, 79, 81, 90, 93, 74, 80, 129, 198, 237, 251, 254, 254, 254, 253,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 253, 242, 157, 48, 14, 15, 15, 10, 5, 2, 5, 17, 51,
-        88, 73, 33, 40, 46, 15, 9, 14, 20, 18, 7, 3, 1, 0, 1, 8, 30, 32, 12, 3, 2, 2, 0, 3, 12, 3,
-        0, 0, 0, 7, 34, 36, 8, 4, 8, 12, 12, 17, 41, 37, 25, 51, 19, 3, 2, 2, 0, 2, 10, 45, 80, 66,
-        46, 61, 63, 63, 89, 102, 93, 107, 162, 199, 223, 247, 253, 251, 252, 253, 254, 254, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 252, 184, 68, 18, 10, 8, 8, 7, 8, 2, 3, 2, 2, 3, 3,
-        1, 2, 9, 8, 11, 7, 1, 2, 2, 3, 6, 12, 6, 2, 4, 7, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 17,
-        12, 3, 3, 12, 37, 36, 18, 15, 30, 22, 19, 12, 8, 8, 8, 7, 16, 50, 150, 201, 148, 108, 130,
-        131, 133, 159, 191, 213, 233, 249, 252, 253, 254, 253, 253, 253, 253, 254, 254, 254, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 254, 254, 254, 254, 217, 79, 19, 11, 10, 7, 4, 3, 2, 1, 2, 1, 0, 0, 0, 0, 0,
-        0, 1, 7, 12, 11, 4, 7, 16, 22, 45, 20, 1, 0, 1, 4, 4, 1, 0, 0, 1, 1, 3, 4, 3, 7, 9, 8, 4,
-        5, 7, 14, 44, 51, 34, 27, 43, 50, 45, 35, 27, 25, 39, 61, 87, 137, 203, 215, 190, 187, 217,
-        231, 239, 246, 251, 253, 254, 254, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 254, 253, 254, 244, 110, 8, 1, 3, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 1, 15, 34, 25, 16, 20, 12, 15, 12, 15, 20, 14, 7, 6, 14, 28, 19, 8, 21, 35, 19, 24, 41,
-        37, 28, 36, 46, 43, 38, 46, 66, 80, 96, 117, 131, 133, 143, 156, 164, 181, 205, 223, 239,
-        247, 249, 250, 251, 253, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 253, 253, 251, 187, 34, 3, 2, 2, 3, 2, 0, 0, 0, 1,
-        4, 4, 4, 4, 4, 4, 6, 5, 3, 6, 19, 46, 46, 27, 22, 15, 20, 38, 80, 115, 80, 41, 44, 93, 146,
-        138, 117, 127, 128, 115, 123, 141, 149, 155, 167, 183, 190, 187, 192, 205, 218, 227, 236,
-        242, 247, 249, 252, 254, 254, 254, 253, 253, 253, 253, 253, 253, 254, 254, 254, 254, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 254,
-        252, 227, 110, 22, 8, 9, 9, 9, 5, 1, 1, 3, 5, 7, 18, 28, 32, 35, 39, 32, 21, 19, 24, 42,
-        61, 63, 61, 73, 70, 79, 103, 145, 176, 160, 151, 168, 207, 233, 235, 233, 236, 236, 239,
-        240, 244, 246, 247, 249, 251, 252, 252, 252, 252, 254, 254, 254, 254, 254, 253, 254, 254,
-        254, 254, 254, 253, 253, 253, 253, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 246, 160, 63, 46, 27, 25,
-        34, 42, 28, 10, 2, 7, 22, 30, 56, 93, 109, 113, 122, 122, 108, 110, 120, 131, 141, 153,
-        173, 200, 209, 215, 221, 233, 241, 242, 246, 251, 252, 252, 254, 253, 252, 253, 253, 254,
-        254, 253, 253, 254, 254, 254, 254, 253, 253, 254, 254, 254, 254, 254, 253, 253, 254, 255,
-        254, 254, 254, 253, 253, 253, 254, 254, 254, 255, 254, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 254, 254, 253, 254, 254, 253, 205, 89, 81, 123, 85, 54, 48,
-        50, 45, 30, 18, 54, 146, 179, 196, 215, 224, 226, 232, 239, 239, 242, 246, 247, 249, 252,
-        254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 255, 254, 254, 254, 255,
-        254, 254, 254, 254, 254, 254, 254, 255, 255, 254, 254, 255, 254, 254, 254, 254, 254, 255,
-        254, 254, 255, 255, 255, 254, 254, 255, 255, 255, 254, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 253, 253, 253, 253, 253, 241, 150, 113, 113, 67, 32, 35, 36,
-        30, 42, 53, 60, 153, 242, 253, 253, 254, 253, 254, 254, 254, 254, 254, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 252, 254, 253, 253, 252, 209, 118, 119, 88, 25, 19, 56, 54,
-        29, 37, 51, 102, 223, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 254, 253, 253, 253, 227, 120, 53, 41, 36, 48, 69, 105, 78,
-        32, 27, 56, 175, 251, 254, 254, 254, 254, 254, 253, 254, 254, 254, 254, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 254, 254, 254, 254, 254,
-        254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 254, 254, 255, 254, 254, 254, 254, 254,
-        254, 255, 254, 254, 254, 254, 254, 253, 253, 242, 145, 30, 8, 4, 14, 53, 60, 34, 30, 20,
-        24, 110, 238, 253, 254, 254, 254, 254, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 254, 254, 253, 253, 254, 253,
-        253, 253, 253, 253, 253, 254, 254, 254, 254, 254, 254, 253, 254, 253, 253, 253, 253, 254,
-        254, 254, 253, 253, 254, 254, 253, 254, 252, 207, 112, 46, 14, 6, 5, 6, 8, 4, 10, 18, 50,
-        181, 252, 253, 254, 254, 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 252, 253, 253, 254, 253, 254, 253, 252, 253,
-        252, 253, 254, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
-        253, 253, 252, 253, 254, 252, 253, 235, 128, 98, 44, 9, 10, 18, 18, 14, 22, 51, 90, 152,
-        239, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 254, 253, 254, 254, 251, 244, 225, 200,
-        190, 198, 211, 215, 213, 216, 213, 207, 204, 204, 200, 197, 201, 223, 238, 211, 195, 204,
-        207, 197, 189, 193, 196, 190, 174, 99, 21, 21, 16, 23, 42, 74, 93, 72, 77, 96, 153, 232,
-        253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253, 253, 242, 214, 179, 148, 108, 83,
-        72, 76, 88, 97, 95, 102, 103, 93, 79, 64, 56, 69, 89, 98, 135, 127, 73, 43, 51, 69, 74, 69,
-        51, 30, 16, 4, 1, 1, 4, 29, 46, 65, 88, 61, 51, 71, 187, 251, 254, 254, 254, 254, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254,
-        254, 254, 254, 252, 249, 225, 166, 100, 79, 86, 72, 59, 44, 39, 49, 59, 42, 39, 43, 48, 40,
-        30, 25, 41, 53, 21, 23, 56, 48, 22, 16, 28, 35, 30, 17, 5, 2, 8, 10, 2, 1, 6, 11, 12, 15,
-        12, 27, 120, 237, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 254, 252, 231, 183, 139, 95,
-        64, 78, 109, 90, 46, 21, 23, 32, 30, 18, 23, 25, 25, 24, 30, 29, 14, 11, 2, 0, 3, 16, 33,
-        19, 4, 2, 2, 3, 2, 6, 21, 23, 12, 3, 0, 0, 0, 0, 3, 56, 206, 253, 254, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
-        253, 254, 253, 249, 201, 110, 63, 71, 75, 76, 97, 100, 71, 37, 20, 19, 14, 2, 12, 53, 36,
-        12, 11, 27, 38, 16, 14, 9, 2, 0, 2, 8, 5, 0, 1, 2, 2, 4, 9, 9, 6, 11, 8, 11, 19, 17, 11,
-        39, 160, 247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253, 244, 199, 117, 49, 35, 61, 67, 44,
-        25, 12, 7, 22, 30, 21, 8, 1, 7, 33, 10, 0, 1, 6, 18, 32, 49, 41, 11, 2, 1, 2, 2, 6, 15, 28,
-        29, 18, 10, 5, 6, 9, 20, 37, 64, 83, 95, 164, 239, 253, 253, 254, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 254, 254, 255, 255, 254, 254, 255, 255, 255, 254, 254, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 253,
-        246, 183, 80, 46, 48, 59, 35, 16, 7, 3, 2, 6, 14, 23, 25, 12, 1, 1, 3, 3, 2, 4, 5, 11, 25,
-        46, 48, 19, 6, 6, 14, 16, 18, 37, 90, 96, 44, 16, 11, 18, 34, 55, 61, 74, 110, 173, 238,
-        252, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255,
-        254, 254, 254, 254, 254, 254, 254, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 254, 253, 254, 254, 253, 242, 176, 69, 18, 44, 50, 25, 5, 2, 1, 1, 2, 9, 10,
-        27, 54, 39, 12, 11, 14, 25, 51, 76, 83, 85, 110, 136, 84, 39, 39, 56, 71, 61, 44, 58, 110,
-        107, 69, 61, 65, 48, 53, 76, 103, 130, 177, 239, 254, 254, 254, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 252, 253, 253, 254,
-        254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 254, 254, 254,
-        247, 162, 54, 17, 30, 67, 38, 11, 5, 7, 7, 3, 4, 16, 35, 81, 145, 167, 154, 145, 144, 162,
-        186, 184, 179, 184, 194, 198, 166, 152, 170, 184, 190, 190, 170, 155, 169, 172, 160, 155,
-        154, 152, 156, 171, 194, 227, 247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 252, 253, 253, 253, 253, 253,
-        254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 253, 252, 213, 80,
-        21, 22, 37, 25, 19, 19, 24, 33, 25, 15, 30, 64, 113, 177, 223, 242, 247, 247, 247, 249,
-        250, 247, 245, 246, 247, 247, 245, 246, 247, 249, 249, 250, 249, 244, 246, 247, 246, 244,
-        242, 246, 247, 247, 251, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 252, 247, 233, 240, 247, 252, 254, 253,
-        254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 252, 253, 231, 120, 37,
-        20, 25, 25, 10, 25, 39, 53, 53, 51, 88, 135, 174, 220, 246, 253, 253, 254, 254, 253, 253,
-        253, 254, 254, 253, 254, 253, 254, 254, 253, 253, 253, 253, 253, 254, 254, 253, 254, 254,
-        254, 253, 254, 253, 253, 252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 242, 206, 165, 184, 205, 221, 238, 247,
-        253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 252, 242, 149, 33, 12, 12,
-        17, 21, 27, 28, 36, 44, 36, 69, 196, 242, 249, 254, 254, 254, 254, 254, 254, 254, 254, 253,
-        254, 254, 253, 254, 253, 253, 254, 254, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254,
-        254, 254, 253, 254, 254, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 254, 254, 247, 213, 153, 107, 123, 151, 171, 200, 227, 249,
-        254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 218, 106, 50, 33, 18, 17,
-        34, 30, 14, 11, 21, 42, 132, 238, 252, 253, 254, 254, 254, 254, 254, 254, 255, 255, 254,
-        254, 254, 254, 255, 254, 254, 254, 254, 254, 255, 255, 254, 254, 255, 255, 255, 254, 254,
-        254, 254, 254, 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 254, 253, 235, 192, 142, 93, 90, 115, 142, 171, 203, 236,
-        253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 251, 203, 106, 60, 48, 32, 19,
-        23, 27, 23, 14, 38, 97, 198, 252, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 254, 253, 230, 178, 137, 100, 79, 82, 107, 132, 160, 203,
-        246, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 246, 175, 80, 22, 21, 27, 18,
-        11, 24, 40, 46, 58, 113, 216, 253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 254, 253, 234, 170, 116, 93, 65, 45, 56, 92, 143, 191, 234,
-        253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 239, 160, 85, 32, 12, 12, 18, 22,
-        35, 51, 56, 65, 140, 234, 253, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 254, 253, 253, 245, 199, 135, 80, 44, 28, 36, 65, 103, 146, 195, 244,
-        254, 253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 230, 157, 100, 71, 34, 19, 25, 29, 30,
-        50, 48, 72, 164, 242, 253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 254, 253, 254, 251, 220, 143, 56, 27, 25, 34, 44, 56, 85, 143, 225, 252,
-        253, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 253, 232, 164, 102, 84, 72, 54, 37, 29, 28, 33, 37,
-        84, 181, 247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 253, 254, 247, 197, 113, 51, 35, 36, 28, 25, 41, 70, 118, 203, 247, 254,
-        254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 254, 254, 244, 200, 128, 82, 103, 100, 56, 46, 55, 18, 22,
-        89, 194, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 253, 254, 245, 176, 103, 74, 61, 44, 18, 14, 42, 81, 117, 181, 239, 253,
-        254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 247, 221, 162, 103, 107, 113, 75, 53, 54, 20, 28,
-        79, 190, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 253, 254, 249, 192, 113, 63, 37, 24, 16, 15, 32, 56, 79, 138, 215, 250, 253,
-        254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 253, 223, 164, 129, 113, 107, 90, 51, 20, 25, 51, 58, 79,
-        187, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 253, 254, 253, 234, 172, 78, 33, 35, 35, 23, 28, 30, 36, 82, 179, 241, 253, 253,
-        254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 254, 250, 193, 105, 76, 84, 73, 41, 17, 17, 63, 86, 59, 93, 201, 252,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
-        254, 254, 253, 246, 200, 112, 59, 49, 56, 84, 85, 50, 30, 50, 112, 196, 250, 254, 254, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 244, 159, 70, 25, 14, 18, 17, 12, 16, 45, 45, 58, 121, 218, 253, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254,
-        253, 241, 184, 130, 87, 46, 38, 73, 74, 45, 41, 65, 88, 157, 242, 254, 254, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        254, 236, 137, 60, 14, 2, 5, 10, 10, 21, 32, 25, 73, 169, 238, 254, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 247,
-        193, 122, 93, 69, 34, 28, 30, 30, 46, 76, 103, 166, 239, 254, 254, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 231,
-        135, 68, 25, 10, 14, 15, 17, 41, 68, 54, 105, 198, 247, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 252, 224, 150,
-        103, 88, 46, 29, 32, 48, 70, 92, 126, 196, 245, 253, 254, 254, 254, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 227, 134,
-        89, 73, 42, 24, 23, 29, 46, 73, 79, 127, 201, 247, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 247, 214, 134,
-        69, 54, 44, 46, 72, 129, 162, 148, 180, 221, 250, 254, 254, 253, 253, 254, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 254, 253, 216, 107, 83,
-        103, 64, 22, 15, 18, 16, 20, 49, 122, 207, 251, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 247, 201, 128,
-        84, 60, 29, 22, 44, 108, 146, 120, 125, 181, 241, 253, 254, 253, 253, 254, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 254, 252, 207, 90, 40, 29,
-        23, 19, 12, 7, 5, 20, 64, 143, 231, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 249, 181, 109, 100, 60,
-        15, 7, 20, 55, 81, 84, 86, 144, 225, 252, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 253, 254, 254, 251, 212, 103, 30, 14, 12, 12, 11,
-        11, 19, 70, 143, 183, 242, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 251, 191, 92, 59, 32, 12, 9, 10, 20,
-        56, 85, 71, 102, 184, 242, 254, 254, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 254, 253, 254, 254, 242, 159, 72, 32, 22, 16, 15, 23, 30, 33, 82, 161,
-        191, 242, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 254, 253, 215, 113, 53, 24, 22, 22, 12, 6, 25, 56, 46,
-        65, 138, 226, 253, 254, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 253, 253, 253, 230, 117, 39, 29, 23, 14, 24, 33, 25, 14, 25, 82, 163, 242,
-        253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 254, 232, 156, 95, 41, 22, 18, 9, 5, 7, 18, 24, 43, 105, 203,
-        251, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
-        253, 253, 252, 225, 110, 33, 22, 16, 12, 28, 39, 30, 25, 25, 64, 166, 247, 253, 254, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 254, 244, 190, 138, 71, 32, 18, 15, 12, 6, 5, 18, 50, 92, 179, 247, 254,
-        253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 254,
-        251, 216, 108, 32, 12, 12, 28, 39, 40, 50, 56, 53, 81, 200, 252, 253, 254, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        254, 254, 250, 198, 135, 103, 84, 63, 50, 40, 20, 12, 37, 86, 108, 158, 231, 254, 253, 254,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 253, 253, 247, 192,
-        98, 41, 12, 17, 72, 66, 29, 25, 39, 64, 120, 233, 253, 254, 254, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
-        252, 214, 149, 128, 116, 88, 66, 49, 32, 39, 71, 98, 93, 119, 205, 253, 254, 254, 254, 254,
-        254, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 253, 253, 249, 209, 134, 103, 86,
-        40, 33, 59, 43, 20, 17, 32, 100, 196, 250, 253, 253, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253,
-        235, 189, 133, 73, 46, 44, 35, 22, 28, 46, 61, 65, 93, 180, 249, 253, 253, 254, 254, 254,
-        254, 254, 254, 254, 254, 253, 254, 253, 253, 254, 253, 246, 187, 83, 43, 73, 116, 98, 67,
-        34, 25, 49, 79, 79, 163, 240, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 240, 178,
-        113, 51, 30, 32, 39, 24, 8, 7, 27, 74, 120, 178, 242, 252, 252, 252, 252, 251, 250, 249,
-        247, 247, 247, 247, 247, 247, 247, 244, 223, 169, 76, 20, 12, 12, 30, 86, 131, 97, 78, 60,
-        55, 122, 226, 253, 254, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 247, 190, 110, 64,
-        44, 34, 37, 50, 36, 14, 25, 86, 160, 174, 167, 172, 178, 187, 209, 207, 180, 156, 137, 128,
-        142, 168, 183, 183, 174, 159, 120, 61, 25, 20, 12, 3, 7, 35, 61, 72, 122, 82, 50, 177, 250,
-        253, 254, 254, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 251, 219, 144, 109, 99, 65, 39, 77,
-        97, 41, 30, 53, 109, 138, 121, 109, 89, 81, 99, 96, 73, 53, 41, 34, 48, 90, 99, 72, 51, 46,
-        33, 19, 15, 12, 8, 6, 12, 20, 12, 14, 56, 90, 148, 239, 253, 253, 253, 254, 253, 254, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 254, 254, 253, 253, 237, 170, 150, 161, 110, 49, 48, 50, 16, 8, 12, 23, 42, 69,
-        63, 33, 14, 10, 12, 16, 15, 11, 10, 12, 30, 25, 8, 2, 2, 3, 7, 10, 5, 4, 12, 25, 20, 15,
-        16, 35, 121, 227, 252, 253, 254, 254, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253,
-        244, 183, 145, 135, 85, 33, 12, 3, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 2, 3, 2, 1, 2, 2, 3, 1,
-        0, 0, 0, 4, 5, 5, 14, 24, 20, 19, 54, 79, 117, 209, 251, 254, 254, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 254, 253, 254, 251, 219, 146, 80, 34, 12, 6, 2, 3, 5, 5, 4, 2, 1, 2, 2,
-        3, 4, 3, 1, 0, 2, 2, 1, 0, 0, 0, 1, 2, 2, 2, 6, 12, 20, 21, 15, 32, 90, 164, 227, 251, 253,
-        253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 254, 250, 220, 146,
-        76, 32, 12, 4, 2, 4, 6, 7, 4, 3, 9, 21, 25, 23, 9, 3, 4, 8, 10, 6, 5, 4, 5, 17, 30, 22, 15,
-        14, 17, 21, 29, 61, 113, 175, 234, 252, 253, 253, 253, 254, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 254, 254, 253, 242, 220, 175, 103, 51, 20, 8, 6, 4, 3, 3, 12,
-        41, 67, 49, 25, 17, 16, 12, 15, 25, 24, 19, 25, 59, 97, 73, 51, 56, 69, 68, 79, 144, 211,
-        245, 253, 253, 253, 254, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        254, 254, 254, 254, 253, 254, 254, 247, 218, 169, 103, 64, 51, 48, 43, 41, 49, 56, 46, 40,
-        49, 58, 40, 43, 61, 51, 43, 54, 86, 100, 79, 82, 112, 134, 152, 190, 235, 252, 254, 254,
-        254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 254, 253, 250, 242, 219, 200, 189, 176, 164, 157, 157, 158, 164,
-        175, 186, 181, 177, 179, 175, 175, 184, 194, 195, 189, 199, 219, 233, 244, 251, 253, 253,
-        254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 253, 253, 253, 252, 250, 247, 247, 247,
-        247, 249, 251, 251, 252, 251, 250, 250, 251, 251, 253, 252, 251, 253, 253, 253, 253, 253,
-        253, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 253, 254, 254, 254, 253,
-        253, 253, 254, 253, 253, 253, 253, 253, 252, 253, 253, 254, 254, 254, 253, 254, 253, 253,
-        254, 252, 254, 254, 254, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 254,
-        254, 255, 255, 254, 254, 254, 253, 254, 254, 254, 253, 254, 254, 254, 253, 253, 254, 254,
-        254, 254, 254, 254, 253, 254, 254, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 254,
-        254, 254, 254, 255, 255, 254, 254, 254, 254, 255, 255, 254, 254, 254, 254, 254, 254, 254,
-        254, 254, 255, 255, 254, 254, 254, 254, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-        255, 255, 255, 255, 255,]
\ No newline at end of file
diff --git a/ableos/assets/img_array/output.in b/ableos/assets/img_array/output.in
deleted file mode 100644
index eed7185..0000000
--- a/ableos/assets/img_array/output.in
+++ /dev/null
@@ -1 +0,0 @@
-[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 81, 83, 88, 89, 89, 91, 92, 94, 98, 103, 104, 106, 107, 108, 111, 112, 115, 116, 116, 117, 116, 116, 115, 116, 114, 113, 114, 115, 112, 108, 111, 118, 121, 124, 126, 127, 127, 128, 128, 127, 126, 125, 126, 132, 135, 137, 137, 136, 134, 130, 128, 128, 128, 128, 129, 129, 128, 130, 150, 158, 158, 159, 160, 160, 162, 164, 167, 170, 173, 180, 186, 184, 174, 154, 140, 138, 136, 135, 135, 135, 135, 135, 135, 135, 135, 133, 130, 129, 130, 133, 137, 142, 143, 144, 143, 143, 142, 139, 136, 132, 131, 132, 133, 135, 139, 146, 154, 166, 179, 186, 188, 189, 189, 188, 188, 189, 190, 192, 192, 192, 194, 197, 198, 198, 198, 198, 198, 198, 200, 201, 203, 205, 206, 207, 206, 204, 201, 200, 202, 205, 209, 212, 214, 213, 211, 209, 207, 205, 204, 201, 200, 203, 207, 209, 211, 214, 216, 218, 220, 222, 224, 225, 225, 226, 225, 224, 222, 220, 217, 215, 213, 213, 213, 212, 211, 211, 211, 212, 212, 211, 213, 217, 218, 218, 219, 221, 223, 225, 226, 227, 227, 228, 228, 228, 229, 231, 234, 237, 239, 239, 238, 236, 233, 230, 227, 226, 224, 225, 227, 229, 229, 232, 236, 238, 239, 239, 238, 238, 238, 238, 237, 237, 237, 237, 238, 238, 238, 238, 238, 238, 238, 239, 240, 241, 242, 241, 239, 238, 239, 240, 240, 239, 239, 239, 241, 243, 245, 246, 247, 247, 248, 248, 248, 247, 244, 243, 244, 246, 246, 246, 246, 245, 244, 242, 241, 239, 238, 235, 235, 238, 239, 239, 240, 241, 243, 245, 247, 247, 248, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 83, 85, 86, 87, 88, 89, 92, 94, 99, 102, 103, 104, 106, 106, 107, 109, 110, 111, 112, 113, 114, 114, 115, 114, 113, 111, 112, 107, 105, 110, 116, 119, 122, 124, 124, 125, 124, 124, 125, 125, 124, 123, 127, 133, 134, 134, 135, 133, 130, 126, 125, 125, 126, 126, 127, 126, 114, 126, 156, 157, 157, 158, 159, 159, 161, 163, 165, 167, 170, 177, 185, 196, 212, 235, 223, 169, 138, 135, 134, 135, 135, 134, 134, 133, 131, 128, 128, 128, 130, 134, 138, 141, 142, 142, 141, 141, 139, 137, 135, 133, 133, 134, 133, 131, 133, 136, 141, 151, 163, 176, 180, 181, 181, 181, 182, 182, 184, 186, 188, 190, 191, 191, 191, 191, 191, 191, 192, 193, 194, 195, 197, 198, 199, 200, 199, 197, 195, 193, 194, 198, 202, 206, 208, 207, 205, 204, 202, 200, 199, 198, 198, 200, 202, 203, 206, 209, 211, 213, 215, 216, 217, 219, 220, 221, 220, 218, 217, 214, 211, 209, 207, 207, 206, 205, 206, 205, 206, 207, 209, 210, 212, 213, 214, 215, 216, 218, 220, 222, 223, 224, 225, 225, 226, 227, 228, 230, 231, 232, 233, 233, 232, 231, 229, 227, 224, 222, 223, 225, 226, 228, 229, 232, 235, 237, 238, 238, 238, 238, 238, 237, 236, 235, 234, 234, 234, 235, 235, 236, 236, 237, 237, 237, 238, 240, 240, 241, 241, 241, 239, 238, 238, 238, 237, 237, 238, 238, 240, 243, 245, 246, 246, 246, 247, 247, 247, 247, 247, 246, 246, 246, 245, 244, 241, 240, 238, 237, 237, 237, 237, 237, 237, 238, 238, 239, 240, 242, 244, 247, 247, 247, 247, 246, 246, 246, 246, 246, 246, 246, 246, 246, 84, 85, 85, 86, 89, 93, 97, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 111, 112, 112, 113, 111, 109, 104, 103, 109, 114, 117, 120, 121, 122, 122, 122, 120, 121, 122, 123, 122, 122, 128, 131, 132, 132, 132, 129, 125, 122, 122, 122, 122, 123, 122, 115, 113, 137, 157, 156, 156, 157, 157, 158, 161, 162, 163, 164, 167, 174, 183, 196, 219, 239, 245, 246, 231, 187, 142, 135, 134, 133, 133, 130, 127, 126, 127, 130, 132, 134, 137, 140, 142, 142, 142, 141, 138, 137, 134, 133, 133, 134, 135, 135, 134, 135, 138, 144, 155, 167, 175, 177, 179, 181, 182, 183, 184, 187, 188, 190, 190, 189, 189, 189, 190, 191, 192, 193, 195, 195, 196, 197, 198, 198, 196, 195, 193, 193, 195, 198, 201, 204, 205, 204, 203, 203, 201, 200, 199, 198, 199, 200, 202, 204, 206, 209, 211, 212, 213, 214, 215, 216, 218, 218, 217, 216, 214, 211, 209, 207, 206, 205, 205, 204, 205, 205, 206, 206, 209, 211, 212, 213, 214, 215, 217, 219, 221, 224, 225, 226, 226, 227, 227, 229, 230, 231, 231, 230, 230, 230, 228, 227, 225, 224, 222, 221, 223, 225, 225, 227, 228, 230, 233, 236, 238, 239, 240, 240, 239, 238, 238, 236, 235, 234, 233, 234, 235, 235, 236, 236, 236, 237, 238, 240, 240, 241, 242, 242, 240, 238, 237, 237, 237, 237, 237, 237, 238, 239, 242, 244, 246, 246, 246, 246, 247, 247, 247, 247, 247, 246, 245, 242, 240, 238, 237, 236, 236, 236, 237, 237, 237, 237, 238, 238, 239, 241, 243, 244, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 84, 85, 86, 90, 94, 97, 100, 100, 101, 102, 103, 104, 105, 106, 106, 106, 108, 109, 110, 110, 111, 111, 108, 100, 101, 109, 112, 116, 118, 119, 120, 120, 119, 116, 117, 120, 120, 120, 119, 124, 129, 130, 130, 130, 128, 124, 120, 119, 119, 120, 120, 117, 107, 115, 119, 147, 157, 156, 156, 156, 156, 157, 159, 160, 161, 162, 165, 171, 180, 193, 228, 242, 247, 246, 247, 246, 241, 206, 154, 135, 131, 125, 123, 125, 129, 131, 132, 133, 137, 140, 142, 142, 142, 141, 139, 136, 134, 132, 132, 134, 135, 135, 133, 135, 138, 144, 152, 162, 170, 173, 175, 179, 182, 184, 186, 188, 189, 189, 188, 188, 188, 188, 190, 191, 192, 194, 195, 196, 196, 196, 196, 195, 194, 193, 192, 193, 195, 198, 200, 202, 202, 201, 201, 201, 201, 200, 200, 199, 199, 200, 202, 205, 207, 209, 211, 212, 213, 213, 213, 213, 214, 214, 213, 212, 210, 208, 207, 206, 205, 204, 203, 203, 204, 205, 206, 207, 208, 210, 211, 213, 215, 217, 219, 221, 222, 224, 226, 226, 227, 227, 228, 229, 229, 229, 229, 228, 227, 226, 224, 222, 222, 221, 221, 221, 223, 224, 226, 226, 228, 229, 231, 235, 238, 239, 240, 240, 241, 241, 240, 239, 238, 236, 234, 233, 233, 234, 234, 235, 236, 237, 238, 240, 241, 242, 242, 242, 241, 239, 238, 237, 237, 237, 237, 237, 237, 237, 239, 242, 244, 246, 246, 246, 246, 246, 247, 247, 247, 245, 243, 242, 240, 238, 237, 236, 236, 237, 237, 237, 237, 237, 237, 238, 239, 240, 242, 243, 245, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 245, 84, 88, 92, 94, 95, 97, 99, 100, 101, 101, 103, 103, 104, 105, 106, 106, 106, 107, 108, 108, 105, 98, 98, 106, 110, 114, 116, 117, 118, 117, 115, 113, 113, 117, 118, 118, 117, 118, 125, 127, 128, 128, 128, 124, 118, 116, 116, 116, 117, 113, 108, 109, 99, 118, 152, 156, 155, 155, 155, 155, 156, 156, 158, 161, 161, 163, 167, 176, 187, 224, 245, 246, 247, 247, 247, 247, 247, 245, 220, 163, 127, 126, 128, 130, 130, 130, 132, 136, 140, 141, 142, 142, 141, 140, 137, 134, 131, 131, 133, 135, 134, 132, 132, 135, 141, 149, 159, 170, 173, 174, 177, 181, 184, 187, 188, 187, 187, 187, 187, 187, 188, 190, 191, 193, 194, 194, 195, 195, 195, 194, 193, 192, 191, 191, 192, 195, 197, 200, 200, 200, 200, 200, 200, 200, 201, 200, 200, 199, 200, 202, 205, 207, 209, 211, 212, 212, 211, 211, 211, 211, 211, 210, 209, 208, 206, 205, 204, 203, 201, 200, 202, 202, 204, 205, 207, 208, 210, 212, 213, 215, 217, 220, 222, 224, 226, 226, 226, 227, 228, 228, 227, 228, 227, 226, 226, 225, 223, 222, 221, 221, 220, 220, 221, 222, 224, 225, 226, 228, 229, 231, 234, 237, 238, 240, 240, 241, 241, 241, 241, 240, 238, 236, 234, 233, 233, 233, 233, 234, 236, 237, 239, 241, 242, 243, 242, 242, 240, 239, 237, 237, 237, 237, 237, 237, 237, 238, 240, 243, 244, 246, 246, 246, 246, 246, 246, 245, 244, 242, 240, 238, 237, 236, 236, 236, 237, 237, 237, 237, 237, 237, 238, 239, 240, 241, 243, 244, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 245, 243, 87, 91, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 103, 103, 104, 104, 104, 105, 100, 95, 96, 103, 107, 111, 113, 114, 115, 114, 112, 110, 110, 114, 116, 117, 116, 114, 119, 124, 126, 127, 126, 124, 119, 115, 114, 114, 114, 108, 105, 110, 115, 115, 129, 155, 155, 154, 154, 153, 154, 154, 155, 155, 158, 160, 162, 164, 171, 182, 203, 239, 246, 246, 247, 247, 247, 247, 247, 247, 246, 228, 175, 136, 128, 127, 127, 129, 134, 139, 141, 141, 141, 141, 140, 138, 135, 131, 130, 132, 135, 133, 131, 130, 132, 137, 144, 154, 166, 175, 178, 179, 182, 185, 186, 186, 185, 185, 185, 186, 187, 188, 190, 192, 193, 194, 193, 193, 193, 193, 192, 191, 190, 189, 190, 192, 194, 196, 198, 199, 199, 199, 199, 199, 200, 201, 200, 200, 200, 201, 203, 206, 207, 209, 211, 211, 211, 211, 210, 209, 208, 208, 207, 207, 205, 204, 203, 202, 200, 199, 199, 198, 199, 202, 205, 207, 208, 210, 212, 214, 216, 218, 221, 223, 225, 226, 227, 228, 228, 227, 227, 227, 226, 224, 223, 222, 221, 221, 220, 220, 220, 220, 221, 221, 222, 223, 224, 226, 228, 229, 231, 233, 236, 239, 239, 240, 241, 241, 241, 241, 241, 240, 238, 237, 235, 234, 233, 233, 234, 235, 238, 239, 240, 242, 242, 242, 242, 241, 239, 237, 237, 236, 237, 237, 237, 237, 237, 239, 241, 243, 245, 246, 246, 246, 246, 245, 244, 243, 241, 239, 237, 236, 236, 236, 237, 237, 237, 237, 237, 237, 237, 238, 239, 240, 241, 242, 244, 244, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 245, 243, 243, 243, 89, 92, 93, 94, 95, 96, 97, 98, 99, 100, 100, 102, 102, 102, 101, 101, 94, 90, 94, 100, 104, 109, 110, 111, 112, 111, 109, 107, 107, 111, 113, 115, 115, 113, 114, 120, 123, 124, 125, 125, 120, 114, 112, 112, 112, 105, 103, 109, 114, 120, 124, 144, 155, 154, 153, 152, 152, 152, 153, 154, 154, 155, 158, 160, 162, 166, 177, 190, 218, 242, 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 235, 178, 129, 125, 125, 130, 135, 138, 139, 140, 140, 140, 138, 136, 131, 128, 130, 133, 132, 128, 126, 129, 133, 139, 148, 161, 172, 178, 181, 183, 184, 184, 183, 183, 183, 184, 185, 187, 189, 191, 192, 192, 192, 192, 191, 191, 190, 190, 189, 188, 188, 189, 191, 193, 195, 196, 197, 197, 198, 198, 199, 200, 200, 200, 200, 200, 201, 204, 206, 207, 209, 210, 210, 210, 209, 208, 207, 206, 205, 205, 204, 203, 202, 201, 199, 199, 198, 198, 198, 199, 200, 203, 205, 207, 210, 212, 215, 217, 219, 222, 224, 225, 226, 227, 229, 228, 227, 225, 224, 223, 221, 220, 219, 218, 219, 219, 220, 220, 220, 221, 221, 222, 222, 224, 226, 227, 228, 230, 233, 235, 238, 239, 240, 240, 241, 241, 241, 241, 240, 238, 237, 235, 234, 233, 234, 235, 236, 238, 238, 241, 241, 242, 242, 242, 241, 239, 238, 237, 236, 236, 236, 237, 237, 238, 239, 241, 243, 244, 245, 246, 246, 245, 244, 243, 241, 239, 238, 237, 236, 236, 236, 237, 237, 237, 237, 237, 237, 238, 238, 239, 240, 241, 242, 242, 243, 244, 244, 246, 246, 246, 244, 242, 240, 238, 236, 237, 239, 241, 242, 242, 88, 91, 93, 94, 95, 96, 97, 98, 99, 100, 100, 100, 98, 96, 89, 87, 93, 97, 100, 105, 106, 108, 109, 108, 106, 104, 104, 107, 111, 113, 113, 113, 112, 116, 120, 122, 122, 123, 121, 114, 111, 111, 110, 103, 101, 108, 116, 122, 127, 126, 147, 154, 153, 151, 151, 151, 151, 151, 152, 153, 153, 155, 158, 160, 163, 169, 182, 201, 229, 245, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 238, 183, 126, 129, 132, 134, 136, 138, 137, 138, 137, 135, 130, 127, 129, 131, 128, 124, 123, 125, 129, 134, 143, 156, 169, 178, 181, 182, 181, 181, 181, 182, 183, 184, 185, 187, 188, 190, 191, 191, 190, 189, 189, 188, 187, 186, 186, 185, 186, 187, 190, 191, 193, 194, 194, 195, 196, 198, 199, 200, 200, 200, 200, 200, 202, 204, 206, 207, 208, 209, 209, 209, 209, 207, 206, 204, 203, 202, 201, 200, 200, 198, 198, 198, 198, 199, 199, 201, 203, 204, 205, 206, 209, 212, 215, 218, 220, 222, 224, 226, 227, 228, 228, 227, 225, 223, 221, 220, 219, 217, 216, 216, 217, 218, 220, 220, 221, 221, 222, 222, 222, 224, 226, 228, 228, 230, 232, 235, 238, 239, 240, 240, 241, 241, 241, 241, 240, 238, 237, 235, 233, 233, 234, 236, 237, 238, 239, 240, 241, 241, 242, 242, 241, 239, 237, 237, 236, 236, 236, 236, 237, 238, 240, 241, 243, 244, 245, 246, 245, 244, 244, 243, 240, 238, 237, 236, 236, 236, 237, 237, 237, 237, 237, 237, 237, 238, 238, 239, 240, 240, 241, 241, 241, 242, 242, 243, 241, 236, 226, 216, 209, 204, 201, 199, 202, 208, 218, 229, 239, 89, 91, 93, 95, 98, 99, 101, 100, 99, 99, 95, 90, 84, 85, 92, 95, 98, 101, 103, 104, 104, 103, 102, 101, 102, 103, 107, 111, 111, 111, 111, 112, 117, 120, 121, 121, 120, 116, 110, 109, 108, 101, 100, 111, 119, 124, 126, 126, 121, 146, 152, 152, 151, 150, 150, 149, 149, 150, 151, 152, 153, 154, 157, 160, 164, 172, 188, 213, 239, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 240, 188, 132, 133, 133, 133, 134, 135, 135, 132, 127, 124, 127, 130, 127, 122, 120, 122, 124, 131, 138, 151, 166, 177, 179, 178, 178, 178, 179, 180, 182, 184, 185, 187, 188, 188, 189, 189, 187, 186, 186, 185, 185, 183, 183, 183, 184, 186, 188, 189, 191, 192, 192, 193, 195, 197, 199, 200, 200, 200, 200, 200, 201, 203, 206, 207, 207, 208, 207, 208, 208, 206, 205, 203, 202, 200, 200, 199, 198, 197, 197, 197, 197, 198, 201, 204, 207, 207, 208, 208, 209, 211, 214, 218, 219, 221, 224, 225, 226, 227, 226, 224, 223, 220, 218, 217, 216, 215, 215, 216, 216, 217, 219, 221, 221, 221, 221, 221, 222, 223, 226, 228, 229, 230, 232, 234, 236, 238, 239, 240, 241, 241, 241, 241, 240, 238, 237, 235, 233, 233, 234, 235, 237, 238, 239, 240, 241, 241, 242, 242, 241, 239, 238, 237, 236, 236, 236, 236, 237, 238, 240, 242, 243, 244, 245, 245, 244, 244, 243, 241, 240, 237, 236, 236, 236, 237, 237, 237, 237, 237, 237, 237, 237, 238, 238, 239, 240, 240, 240, 240, 239, 239, 239, 236, 227, 213, 198, 184, 170, 161, 155, 151, 150, 154, 163, 176, 193, 211, 93, 97, 101, 102, 101, 101, 100, 98, 95, 88, 80, 82, 88, 90, 96, 99, 101, 102, 102, 100, 98, 96, 98, 100, 102, 107, 109, 110, 110, 110, 112, 117, 118, 119, 119, 116, 110, 107, 106, 99, 100, 114, 120, 124, 124, 124, 125, 120, 145, 150, 151, 150, 150, 148, 148, 148, 149, 149, 150, 151, 153, 153, 156, 161, 165, 175, 195, 223, 243, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 242, 192, 132, 133, 131, 131, 131, 130, 124, 121, 123, 128, 127, 121, 119, 117, 121, 127, 136, 147, 161, 172, 175, 175, 175, 176, 177, 179, 181, 183, 185, 186, 187, 187, 186, 185, 184, 183, 183, 183, 182, 181, 180, 181, 182, 184, 186, 188, 189, 190, 191, 193, 196, 197, 199, 199, 199, 199, 200, 200, 201, 203, 205, 206, 206, 206, 206, 206, 206, 205, 204, 202, 201, 200, 199, 197, 196, 196, 196, 196, 197, 198, 201, 204, 206, 209, 211, 212, 212, 212, 214, 216, 218, 219, 220, 222, 223, 224, 223, 222, 219, 218, 216, 215, 214, 214, 214, 215, 216, 218, 220, 222, 221, 221, 220, 221, 221, 223, 226, 228, 229, 230, 232, 233, 236, 238, 239, 240, 241, 241, 241, 241, 239, 238, 236, 234, 233, 233, 234, 235, 236, 237, 238, 239, 240, 241, 241, 241, 241, 239, 238, 236, 235, 235, 236, 236, 237, 239, 241, 242, 244, 244, 244, 245, 245, 243, 242, 241, 238, 237, 236, 236, 236, 237, 238, 237, 237, 237, 237, 237, 238, 238, 239, 239, 240, 240, 239, 239, 238, 237, 237, 228, 209, 188, 169, 150, 135, 123, 115, 111, 109, 108, 111, 119, 132, 149, 170, 105, 103, 102, 101, 101, 99, 97, 88, 81, 82, 77, 83, 94, 97, 99, 99, 98, 98, 96, 94, 95, 96, 97, 101, 106, 107, 107, 108, 109, 112, 114, 116, 116, 116, 111, 107, 104, 97, 103, 117, 122, 123, 123, 123, 123, 123, 117, 143, 150, 150, 150, 149, 148, 148, 148, 148, 148, 148, 149, 149, 150, 151, 154, 159, 165, 178, 198, 229, 245, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 243, 193, 132, 130, 128, 125, 120, 117, 119, 125, 127, 122, 116, 114, 118, 125, 135, 143, 153, 164, 170, 171, 172, 174, 176, 179, 180, 182, 183, 184, 184, 184, 183, 182, 180, 179, 179, 179, 178, 177, 177, 178, 179, 181, 184, 185, 187, 188, 191, 194, 197, 199, 199, 199, 199, 199, 199, 200, 201, 202, 203, 204, 205, 205, 205, 205, 205, 204, 203, 202, 201, 199, 198, 196, 195, 194, 195, 195, 197, 200, 203, 205, 207, 210, 212, 212, 213, 214, 215, 217, 217, 218, 219, 219, 219, 219, 218, 217, 216, 215, 214, 212, 212, 213, 214, 215, 217, 218, 221, 222, 222, 221, 220, 220, 220, 222, 225, 228, 230, 231, 231, 233, 235, 238, 239, 239, 240, 240, 241, 240, 239, 237, 235, 233, 233, 233, 234, 234, 235, 236, 236, 237, 238, 240, 241, 242, 241, 240, 238, 237, 235, 235, 235, 237, 238, 239, 241, 243, 244, 244, 244, 244, 245, 243, 241, 239, 237, 236, 236, 236, 237, 237, 238, 237, 237, 237, 237, 238, 238, 239, 239, 240, 240, 240, 239, 239, 238, 237, 235, 221, 197, 170, 145, 124, 109, 100, 97, 97, 98, 99, 99, 100, 100, 103, 112, 128, 105, 103, 102, 101, 99, 89, 81, 83, 87, 88, 92, 90, 84, 96, 97, 95, 91, 89, 91, 93, 93, 97, 102, 104, 105, 105, 108, 109, 112, 114, 114, 114, 112, 106, 100, 97, 106, 118, 121, 122, 122, 121, 121, 121, 121, 117, 141, 148, 148, 149, 148, 147, 147, 147, 147, 147, 148, 148, 148, 148, 148, 148, 149, 152, 166, 179, 201, 232, 246, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 243, 193, 127, 123, 116, 113, 115, 123, 126, 121, 112, 112, 118, 124, 131, 137, 145, 155, 165, 169, 172, 174, 176, 178, 179, 180, 181, 181, 182, 181, 180, 178, 176, 175, 176, 176, 175, 174, 174, 175, 176, 177, 179, 182, 185, 188, 192, 195, 197, 199, 200, 199, 198, 198, 198, 199, 200, 201, 202, 202, 203, 204, 204, 204, 205, 203, 202, 201, 200, 198, 196, 194, 194, 193, 194, 195, 198, 200, 204, 205, 207, 210, 211, 212, 212, 213, 215, 216, 218, 219, 219, 219, 218, 219, 217, 215, 214, 212, 210, 210, 211, 212, 214, 215, 217, 220, 222, 222, 223, 222, 221, 220, 220, 222, 224, 227, 229, 230, 231, 233, 235, 237, 239, 239, 240, 240, 240, 239, 238, 236, 234, 232, 232, 233, 233, 234, 235, 234, 234, 234, 237, 238, 240, 241, 241, 240, 238, 236, 235, 235, 236, 237, 238, 240, 242, 243, 244, 244, 244, 244, 243, 241, 240, 238, 237, 236, 236, 236, 237, 238, 238, 238, 237, 238, 238, 239, 239, 240, 240, 241, 240, 240, 239, 238, 238, 237, 233, 215, 188, 158, 130, 107, 96, 95, 96, 97, 98, 98, 99, 99, 100, 100, 101, 101, 103, 105, 103, 102, 91, 82, 84, 86, 86, 90, 94, 96, 96, 96, 83, 81, 88, 89, 90, 90, 92, 97, 101, 102, 103, 105, 107, 109, 112, 112, 112, 112, 107, 98, 98, 108, 119, 120, 120, 121, 120, 120, 121, 120, 120, 116, 139, 147, 148, 148, 148, 148, 147, 147, 147, 146, 147, 147, 148, 148, 147, 148, 146, 147, 141, 164, 177, 203, 233, 245, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 243, 181, 114, 113, 114, 119, 119, 114, 112, 114, 118, 121, 126, 131, 138, 148, 160, 168, 172, 174, 175, 175, 177, 178, 178, 178, 178, 177, 175, 173, 172, 172, 172, 172, 172, 172, 172, 172, 173, 175, 177, 179, 182, 186, 191, 195, 198, 198, 198, 198, 197, 197, 197, 198, 199, 200, 200, 201, 201, 202, 202, 203, 204, 203, 202, 201, 199, 197, 195, 193, 193, 193, 193, 196, 198, 201, 204, 206, 208, 210, 212, 212, 212, 212, 213, 215, 217, 218, 218, 219, 219, 220, 220, 218, 217, 215, 211, 209, 210, 211, 214, 215, 218, 220, 222, 224, 225, 223, 221, 220, 219, 221, 223, 227, 229, 231, 231, 232, 235, 237, 239, 239, 239, 239, 239, 239, 238, 235, 233, 232, 232, 232, 233, 234, 234, 233, 233, 233, 235, 237, 239, 241, 241, 240, 238, 237, 235, 235, 237, 238, 239, 241, 242, 243, 244, 244, 244, 243, 242, 239, 237, 236, 235, 236, 236, 237, 237, 238, 238, 238, 238, 238, 239, 239, 240, 240, 241, 241, 240, 240, 239, 238, 238, 236, 232, 212, 183, 151, 121, 99, 93, 94, 95, 96, 97, 97, 98, 98, 99, 100, 100, 100, 101, 101, 103, 91, 82, 84, 85, 85, 88, 93, 95, 96, 95, 93, 90, 88, 86, 76, 84, 89, 93, 98, 100, 101, 102, 104, 106, 109, 110, 109, 109, 106, 97, 97, 109, 118, 118, 118, 118, 118, 118, 118, 118, 117, 115, 112, 135, 147, 147, 147, 147, 147, 147, 147, 146, 147, 147, 147, 146, 141, 137, 140, 145, 146, 146, 139, 155, 175, 204, 232, 242, 245, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 243, 177, 114, 118, 110, 108, 113, 116, 115, 117, 119, 124, 132, 144, 157, 166, 169, 172, 173, 173, 174, 175, 175, 174, 172, 171, 169, 168, 167, 168, 168, 168, 168, 169, 168, 168, 171, 174, 178, 181, 183, 187, 190, 192, 193, 194, 195, 195, 195, 195, 196, 196, 197, 198, 199, 200, 200, 201, 202, 202, 203, 203, 202, 200, 197, 195, 194, 193, 192, 192, 194, 197, 200, 202, 204, 207, 209, 211, 212, 212, 211, 211, 211, 213, 216, 217, 218, 218, 219, 220, 221, 222, 222, 219, 215, 212, 211, 211, 214, 216, 218, 221, 224, 226, 227, 226, 223, 221, 220, 221, 223, 227, 229, 230, 231, 232, 234, 236, 239, 238, 239, 239, 239, 238, 236, 233, 232, 231, 232, 232, 233, 234, 233, 233, 233, 233, 234, 237, 238, 240, 241, 240, 238, 237, 236, 236, 237, 238, 240, 242, 243, 244, 244, 244, 244, 242, 240, 238, 236, 235, 233, 233, 234, 236, 237, 237, 238, 238, 238, 239, 239, 240, 241, 241, 241, 240, 240, 240, 239, 239, 238, 237, 230, 209, 179, 146, 116, 95, 91, 93, 94, 95, 96, 96, 97, 98, 98, 99, 99, 100, 100, 101, 101, 83, 84, 84, 84, 86, 91, 94, 94, 95, 93, 89, 87, 87, 88, 89, 89, 82, 81, 98, 100, 100, 102, 103, 106, 109, 108, 107, 105, 95, 96, 108, 114, 115, 116, 116, 116, 116, 117, 116, 115, 113, 111, 106, 126, 147, 147, 147, 147, 147, 146, 136, 121, 105, 89, 73, 57, 46, 41, 41, 38, 49, 70, 88, 105, 114, 166, 203, 224, 232, 238, 244, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 243, 175, 108, 113, 112, 112, 112, 111, 113, 119, 129, 140, 153, 163, 167, 168, 171, 171, 172, 171, 170, 168, 167, 165, 163, 163, 163, 164, 165, 164, 164, 163, 164, 165, 168, 173, 179, 184, 188, 191, 192, 191, 190, 189, 189, 189, 190, 193, 194, 195, 196, 197, 198, 199, 199, 200, 201, 202, 202, 202, 201, 198, 195, 193, 192, 191, 192, 193, 196, 198, 200, 202, 204, 207, 209, 210, 210, 211, 210, 210, 210, 212, 214, 216, 218, 218, 219, 220, 221, 222, 221, 220, 218, 216, 214, 213, 215, 217, 219, 222, 226, 228, 229, 228, 226, 222, 221, 221, 223, 227, 229, 230, 231, 232, 233, 236, 238, 238, 239, 239, 239, 238, 235, 233, 231, 231, 231, 232, 233, 233, 233, 233, 233, 233, 234, 236, 238, 240, 241, 240, 239, 238, 236, 236, 238, 239, 241, 243, 243, 244, 244, 244, 243, 241, 238, 236, 234, 233, 232, 232, 234, 235, 235, 236, 236, 237, 238, 239, 240, 240, 241, 242, 242, 240, 240, 240, 240, 239, 239, 238, 227, 204, 174, 141, 112, 93, 90, 91, 93, 94, 94, 96, 96, 97, 97, 98, 99, 99, 100, 100, 100, 101, 83, 83, 84, 89, 92, 93, 93, 92, 89, 86, 86, 87, 87, 87, 88, 92, 97, 98, 86, 90, 101, 101, 106, 108, 108, 105, 95, 97, 109, 112, 113, 114, 114, 115, 115, 115, 114, 113, 111, 108, 107, 104, 117, 147, 146, 146, 145, 126, 96, 71, 48, 43, 44, 45, 38, 38, 40, 46, 49, 41, 43, 45, 47, 50, 51, 61, 107, 163, 200, 223, 227, 229, 234, 237, 237, 241, 243, 244, 244, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 241, 165, 112, 108, 106, 106, 111, 118, 126, 136, 148, 159, 165, 166, 168, 168, 168, 165, 163, 162, 161, 159, 158, 158, 159, 160, 161, 161, 160, 158, 159, 162, 168, 175, 181, 186, 190, 192, 193, 192, 190, 188, 186, 187, 186, 187, 189, 191, 193, 196, 196, 198, 199, 200, 201, 201, 201, 199, 197, 193, 191, 191, 191, 190, 191, 193, 196, 198, 200, 201, 203, 206, 208, 210, 211, 210, 209, 209, 209, 211, 213, 215, 217, 218, 219, 221, 222, 221, 220, 219, 217, 215, 215, 214, 216, 219, 222, 225, 228, 230, 230, 229, 226, 223, 221, 220, 223, 227, 229, 231, 231, 232, 233, 235, 238, 239, 239, 239, 239, 237, 234, 233, 232, 231, 232, 233, 233, 233, 233, 233, 233, 233, 235, 236, 238, 240, 241, 241, 239, 238, 237, 237, 238, 239, 241, 242, 243, 244, 244, 243, 242, 240, 237, 235, 233, 232, 232, 234, 234, 235, 235, 235, 236, 236, 237, 238, 239, 241, 242, 242, 241, 240, 240, 240, 240, 240, 240, 238, 224, 198, 166, 135, 107, 91, 90, 91, 92, 93, 93, 94, 95, 96, 96, 97, 98, 98, 99, 99, 100, 100, 100, 83, 86, 90, 92, 93, 92, 89, 86, 85, 86, 86, 86, 87, 89, 94, 97, 99, 99, 98, 92, 84, 100, 106, 105, 94, 98, 109, 112, 112, 112, 113, 113, 114, 113, 111, 109, 107, 107, 107, 108, 109, 109, 145, 147, 139, 106, 57, 43, 44, 51, 69, 71, 65, 43, 40, 39, 39, 44, 83, 58, 41, 45, 53, 51, 54, 66, 79, 85, 128, 169, 189, 194, 198, 199, 209, 206, 201, 205, 206, 212, 239, 246, 247, 247, 247, 247, 247, 247, 247, 246, 237, 151, 110, 107, 111, 118, 124, 132, 142, 153, 162, 165, 165, 163, 161, 159, 157, 156, 156, 155, 154, 154, 155, 156, 157, 157, 154, 153, 155, 161, 169, 178, 184, 188, 190, 191, 190, 189, 187, 187, 187, 187, 186, 185, 186, 187, 188, 190, 193, 195, 197, 198, 199, 200, 199, 197, 193, 189, 187, 186, 188, 189, 190, 193, 194, 196, 198, 199, 202, 205, 208, 209, 210, 209, 209, 207, 208, 210, 212, 214, 215, 217, 219, 220, 221, 220, 219, 217, 215, 214, 214, 215, 217, 220, 224, 227, 230, 231, 231, 229, 226, 223, 220, 219, 222, 226, 229, 231, 231, 231, 232, 235, 238, 239, 239, 239, 238, 237, 234, 233, 231, 231, 232, 233, 233, 233, 233, 233, 233, 233, 234, 236, 238, 240, 241, 241, 240, 238, 237, 238, 238, 239, 240, 241, 242, 242, 242, 242, 241, 238, 236, 234, 233, 232, 233, 234, 235, 236, 236, 236, 236, 236, 237, 238, 239, 239, 240, 240, 240, 240, 240, 240, 240, 240, 241, 237, 220, 191, 160, 128, 101, 89, 89, 90, 90, 91, 92, 93, 94, 95, 95, 96, 97, 97, 98, 99, 99, 99, 100, 100, 88, 91, 92, 91, 89, 85, 84, 85, 86, 86, 86, 87, 91, 96, 98, 99, 98, 95, 92, 98, 102, 86, 85, 92, 107, 110, 110, 111, 112, 112, 112, 110, 108, 106, 105, 105, 108, 111, 111, 109, 105, 141, 142, 105, 48, 44, 44, 44, 43, 65, 76, 56, 27, 27, 28, 29, 30, 34, 56, 84, 46, 49, 59, 65, 73, 60, 92, 142, 128, 126, 131, 153, 164, 177, 187, 206, 215, 210, 207, 206, 199, 240, 245, 247, 247, 247, 247, 247, 247, 247, 246, 228, 102, 109, 118, 123, 130, 137, 147, 157, 160, 158, 156, 154, 153, 153, 153, 152, 152, 151, 152, 152, 153, 153, 151, 149, 149, 153, 161, 171, 180, 185, 188, 188, 188, 187, 185, 184, 183, 184, 186, 187, 188, 188, 187, 187, 188, 189, 190, 191, 193, 195, 195, 195, 192, 189, 186, 183, 182, 184, 186, 189, 191, 193, 194, 196, 198, 200, 204, 207, 209, 209, 208, 207, 206, 206, 208, 211, 212, 214, 216, 217, 219, 219, 219, 217, 215, 214, 213, 214, 216, 219, 222, 226, 229, 231, 232, 232, 229, 226, 222, 219, 217, 220, 224, 228, 231, 231, 231, 231, 234, 238, 239, 239, 239, 238, 237, 235, 233, 231, 231, 233, 234, 233, 233, 233, 233, 233, 233, 234, 236, 238, 240, 241, 242, 240, 239, 237, 238, 238, 239, 239, 240, 240, 240, 240, 239, 238, 237, 235, 234, 232, 232, 233, 235, 235, 236, 236, 237, 238, 238, 239, 240, 239, 239, 239, 239, 238, 238, 238, 239, 240, 241, 242, 236, 214, 184, 151, 119, 95, 87, 87, 89, 89, 90, 91, 92, 93, 93, 94, 95, 96, 96, 97, 98, 98, 99, 99, 99, 100, 90, 91, 89, 84, 83, 84, 85, 86, 89, 87, 89, 94, 97, 98, 98, 96, 92, 89, 92, 96, 91, 91, 98, 104, 109, 110, 110, 111, 110, 107, 103, 103, 104, 106, 111, 113, 114, 113, 109, 97, 134, 120, 68, 44, 44, 44, 44, 45, 76, 66, 49, 76, 43, 43, 43, 43, 43, 42, 42, 70, 72, 84, 77, 68, 64, 77, 105, 104, 152, 162, 165, 165, 155, 139, 148, 171, 196, 181, 148, 124, 126, 228, 239, 243, 246, 246, 247, 247, 247, 246, 247, 245, 157, 85, 124, 129, 135, 141, 148, 152, 151, 150, 149, 149, 150, 150, 150, 150, 149, 149, 150, 151, 149, 145, 144, 147, 153, 164, 174, 181, 184, 186, 186, 185, 184, 182, 181, 181, 183, 184, 186, 187, 187, 188, 189, 190, 189, 188, 188, 188, 188, 187, 187, 187, 185, 183, 181, 180, 182, 185, 187, 189, 191, 192, 194, 196, 198, 202, 206, 208, 208, 207, 205, 204, 205, 207, 209, 210, 212, 213, 214, 215, 216, 216, 214, 213, 212, 212, 214, 217, 221, 224, 227, 230, 231, 232, 231, 228, 225, 221, 218, 217, 218, 222, 226, 229, 231, 230, 231, 233, 236, 239, 239, 239, 238, 238, 236, 234, 232, 232, 233, 233, 233, 234, 234, 234, 234, 233, 234, 236, 238, 239, 241, 242, 240, 239, 238, 237, 237, 238, 238, 238, 238, 238, 238, 237, 236, 235, 234, 233, 233, 233, 235, 235, 235, 236, 237, 238, 238, 239, 240, 241, 242, 241, 240, 239, 237, 236, 237, 237, 238, 239, 241, 232, 208, 177, 143, 112, 90, 85, 86, 87, 88, 89, 89, 91, 91, 92, 93, 94, 95, 95, 96, 97, 97, 98, 98, 99, 99, 99, 89, 85, 82, 83, 84, 86, 92, 96, 93, 94, 96, 97, 97, 96, 94, 88, 89, 88, 83, 88, 97, 96, 96, 105, 109, 109, 107, 102, 99, 101, 103, 107, 111, 114, 114, 114, 113, 110, 91, 85, 63, 44, 44, 44, 44, 44, 49, 82, 66, 43, 42, 78, 51, 43, 43, 43, 43, 45, 70, 80, 77, 64, 78, 87, 122, 160, 79, 90, 100, 117, 149, 167, 170, 170, 184, 207, 197, 200, 227, 212, 154, 185, 237, 238, 240, 246, 246, 247, 247, 247, 247, 246, 201, 97, 107, 138, 139, 142, 145, 146, 146, 147, 147, 147, 148, 148, 148, 148, 148, 149, 149, 144, 140, 141, 147, 156, 167, 176, 181, 182, 183, 184, 182, 179, 178, 178, 180, 182, 184, 185, 186, 187, 187, 188, 189, 189, 189, 188, 186, 183, 181, 178, 179, 179, 179, 179, 180, 181, 183, 185, 186, 188, 190, 191, 194, 197, 200, 204, 207, 207, 205, 203, 202, 203, 205, 207, 208, 209, 210, 211, 210, 211, 211, 211, 211, 211, 213, 216, 219, 222, 225, 227, 230, 231, 230, 228, 227, 223, 220, 218, 217, 217, 219, 224, 228, 229, 229, 231, 233, 236, 238, 238, 238, 238, 237, 236, 235, 234, 233, 233, 233, 234, 234, 234, 234, 234, 234, 234, 236, 237, 239, 240, 241, 240, 239, 238, 237, 237, 237, 237, 237, 237, 237, 236, 235, 234, 234, 234, 233, 234, 234, 235, 235, 236, 237, 237, 238, 239, 240, 241, 242, 242, 241, 240, 239, 238, 237, 237, 237, 238, 239, 239, 227, 201, 169, 135, 105, 86, 84, 85, 86, 87, 87, 88, 89, 90, 91, 92, 93, 93, 94, 95, 96, 96, 97, 98, 98, 99, 99, 99, 82, 82, 83, 85, 93, 99, 100, 100, 99, 98, 97, 97, 95, 91, 87, 85, 81, 83, 89, 94, 99, 102, 103, 103, 101, 96, 94, 99, 102, 105, 108, 112, 112, 113, 114, 112, 102, 79, 49, 43, 44, 44, 44, 44, 42, 40, 39, 47, 41, 41, 40, 43, 44, 40, 42, 43, 64, 85, 74, 48, 77, 88, 87, 67, 139, 105, 75, 85, 97, 121, 117, 115, 147, 190, 197, 191, 221, 229, 210, 207, 230, 204, 223, 237, 237, 239, 245, 247, 247, 247, 247, 246, 227, 109, 101, 128, 140, 141, 143, 143, 144, 144, 145, 145, 147, 147, 148, 148, 148, 146, 140, 138, 141, 148, 157, 168, 177, 180, 180, 181, 180, 178, 176, 175, 176, 179, 181, 183, 184, 185, 186, 186, 186, 186, 186, 185, 184, 183, 181, 177, 174, 172, 173, 175, 177, 179, 180, 181, 183, 184, 185, 187, 190, 193, 196, 199, 203, 205, 206, 203, 201, 200, 200, 201, 205, 207, 208, 208, 207, 206, 207, 208, 208, 210, 213, 215, 217, 220, 223, 225, 227, 228, 228, 227, 226, 225, 222, 219, 217, 216, 216, 218, 223, 226, 228, 228, 228, 231, 234, 238, 238, 237, 236, 235, 235, 234, 234, 234, 233, 234, 234, 234, 234, 234, 233, 233, 234, 236, 237, 239, 240, 241, 240, 239, 237, 237, 236, 237, 237, 236, 236, 236, 235, 234, 234, 234, 234, 234, 234, 235, 236, 236, 236, 237, 238, 239, 239, 240, 241, 242, 241, 240, 240, 239, 238, 238, 238, 239, 240, 240, 239, 223, 195, 161, 127, 99, 84, 83, 83, 84, 85, 86, 87, 88, 89, 90, 91, 91, 92, 93, 94, 94, 95, 96, 96, 97, 98, 98, 99, 99, 82, 84, 92, 101, 103, 103, 103, 103, 101, 99, 97, 94, 88, 82, 80, 83, 88, 94, 99, 102, 102, 100, 95, 91, 91, 96, 100, 103, 106, 107, 109, 111, 112, 112, 106, 89, 56, 42, 44, 44, 44, 44, 44, 44, 44, 42, 40, 41, 43, 44, 44, 43, 43, 39, 34, 30, 50, 53, 41, 42, 62, 79, 69, 72, 120, 95, 65, 69, 86, 110, 123, 139, 130, 119, 184, 222, 220, 196, 198, 208, 194, 214, 223, 212, 236, 237, 238, 243, 246, 247, 247, 247, 239, 117, 112, 183, 136, 144, 142, 143, 143, 144, 145, 146, 147, 148, 148, 145, 139, 138, 142, 145, 148, 157, 170, 177, 178, 179, 179, 178, 175, 174, 174, 177, 179, 180, 181, 183, 183, 184, 184, 184, 183, 182, 180, 178, 176, 174, 172, 171, 170, 171, 173, 176, 178, 179, 180, 181, 182, 183, 186, 188, 192, 196, 199, 203, 205, 203, 201, 198, 197, 197, 199, 201, 204, 205, 205, 204, 203, 204, 205, 207, 209, 214, 218, 220, 222, 223, 224, 225, 226, 225, 225, 225, 223, 220, 218, 216, 215, 215, 217, 221, 226, 228, 229, 228, 229, 232, 235, 237, 237, 236, 234, 232, 232, 233, 233, 233, 234, 234, 234, 234, 234, 233, 233, 233, 235, 236, 238, 240, 241, 241, 239, 238, 237, 235, 235, 235, 236, 236, 236, 235, 234, 234, 235, 236, 236, 236, 236, 236, 236, 237, 237, 238, 239, 240, 241, 241, 241, 240, 239, 238, 238, 237, 238, 239, 239, 241, 242, 239, 221, 190, 155, 121, 94, 82, 82, 82, 83, 84, 85, 86, 87, 87, 88, 89, 90, 91, 92, 92, 93, 94, 95, 95, 96, 97, 97, 98, 98, 99, 90, 100, 103, 104, 104, 103, 103, 103, 102, 99, 95, 83, 78, 83, 90, 96, 100, 101, 100, 97, 91, 88, 89, 93, 98, 102, 105, 105, 106, 107, 108, 110, 108, 104, 74, 38, 44, 44, 44, 44, 44, 44, 43, 38, 33, 24, 21, 26, 29, 39, 44, 43, 43, 43, 43, 43, 40, 32, 24, 32, 44, 85, 52, 158, 209, 164, 67, 71, 72, 101, 111, 118, 137, 172, 140, 146, 209, 218, 172, 164, 155, 164, 187, 225, 206, 222, 237, 237, 240, 246, 246, 246, 241, 122, 128, 237, 179, 140, 143, 143, 145, 146, 147, 147, 147, 146, 138, 135, 141, 146, 147, 149, 158, 171, 175, 176, 177, 177, 175, 172, 172, 173, 176, 178, 179, 180, 181, 182, 182, 181, 180, 178, 177, 174, 173, 170, 167, 166, 167, 168, 169, 172, 174, 176, 177, 178, 180, 182, 184, 186, 189, 192, 195, 199, 202, 204, 202, 199, 196, 194, 195, 196, 198, 200, 200, 200, 200, 199, 201, 203, 208, 211, 216, 219, 221, 222, 222, 222, 222, 222, 223, 222, 222, 221, 219, 217, 215, 214, 214, 215, 218, 225, 229, 231, 230, 229, 230, 232, 235, 237, 235, 234, 232, 231, 231, 231, 231, 232, 234, 234, 234, 233, 233, 233, 233, 234, 236, 238, 240, 241, 241, 239, 238, 237, 235, 235, 235, 235, 235, 234, 233, 233, 234, 235, 236, 237, 237, 237, 236, 237, 237, 238, 239, 240, 240, 241, 240, 240, 239, 238, 238, 237, 237, 237, 239, 239, 240, 242, 238, 219, 187, 151, 116, 90, 81, 81, 81, 82, 83, 84, 85, 86, 86, 87, 88, 89, 90, 90, 91, 92, 92, 93, 94, 95, 96, 96, 97, 97, 98, 98, 103, 103, 103, 103, 104, 104, 103, 103, 100, 87, 80, 86, 92, 97, 100, 100, 98, 93, 89, 87, 87, 90, 96, 101, 103, 105, 105, 105, 107, 107, 106, 104, 102, 59, 35, 43, 44, 44, 44, 44, 44, 44, 44, 43, 37, 23, 22, 38, 43, 43, 44, 43, 43, 43, 43, 42, 42, 42, 40, 32, 23, 58, 58, 162, 214, 184, 82, 72, 72, 75, 104, 110, 112, 129, 187, 172, 118, 162, 172, 156, 157, 131, 137, 168, 215, 189, 158, 169, 193, 210, 223, 226, 212, 126, 203, 245, 236, 164, 145, 146, 146, 147, 148, 146, 137, 132, 139, 145, 145, 146, 147, 159, 172, 174, 174, 175, 175, 172, 169, 170, 172, 174, 176, 178, 179, 179, 179, 179, 178, 176, 173, 170, 168, 167, 164, 163, 163, 164, 166, 169, 170, 172, 174, 175, 178, 179, 182, 184, 187, 189, 192, 195, 198, 201, 202, 201, 197, 193, 191, 191, 193, 194, 195, 195, 195, 196, 197, 200, 203, 209, 213, 217, 220, 222, 222, 220, 219, 219, 220, 220, 220, 220, 219, 218, 216, 215, 213, 212, 213, 216, 221, 227, 231, 233, 232, 230, 231, 233, 235, 234, 234, 233, 232, 231, 231, 231, 232, 231, 231, 232, 232, 233, 233, 233, 234, 236, 237, 239, 241, 241, 239, 238, 237, 235, 235, 235, 235, 235, 233, 232, 232, 234, 235, 236, 237, 237, 237, 237, 237, 238, 239, 240, 240, 241, 241, 240, 239, 238, 237, 237, 237, 237, 238, 238, 239, 240, 241, 236, 215, 182, 147, 112, 87, 80, 80, 81, 81, 82, 83, 84, 84, 85, 86, 87, 87, 88, 89, 90, 91, 91, 92, 93, 94, 94, 95, 96, 96, 97, 97, 98, 102, 102, 103, 103, 103, 104, 100, 86, 82, 89, 93, 97, 98, 98, 94, 89, 86, 86, 86, 88, 93, 99, 103, 104, 104, 105, 107, 108, 107, 106, 105, 94, 38, 27, 34, 43, 44, 44, 44, 44, 44, 44, 44, 37, 19, 19, 25, 38, 43, 43, 43, 43, 42, 42, 40, 37, 38, 41, 42, 43, 44, 35, 37, 104, 188, 200, 82, 88, 71, 72, 76, 102, 109, 110, 120, 159, 165, 129, 119, 145, 141, 144, 129, 117, 148, 191, 192, 116, 96, 106, 128, 130, 164, 216, 246, 246, 245, 230, 154, 147, 147, 145, 138, 130, 136, 142, 142, 143, 143, 145, 155, 168, 170, 171, 172, 170, 167, 166, 168, 170, 172, 174, 175, 176, 176, 175, 175, 173, 170, 167, 164, 163, 161, 160, 160, 161, 163, 165, 167, 169, 171, 173, 175, 177, 180, 182, 185, 188, 190, 192, 195, 197, 198, 200, 200, 196, 191, 188, 188, 189, 190, 191, 190, 191, 193, 195, 200, 205, 210, 215, 218, 220, 221, 220, 218, 217, 218, 217, 217, 218, 218, 217, 216, 215, 214, 213, 211, 211, 214, 218, 224, 230, 234, 233, 232, 232, 233, 234, 233, 233, 233, 233, 233, 233, 232, 231, 231, 230, 229, 230, 230, 231, 233, 235, 236, 237, 239, 240, 240, 239, 238, 236, 235, 235, 235, 235, 234, 233, 232, 232, 233, 235, 236, 237, 237, 237, 237, 237, 239, 239, 240, 241, 241, 240, 239, 238, 237, 237, 237, 237, 237, 238, 239, 239, 239, 239, 234, 211, 178, 142, 108, 85, 79, 79, 79, 80, 81, 81, 82, 83, 84, 85, 85, 86, 87, 88, 89, 90, 90, 91, 92, 92, 93, 94, 95, 95, 96, 97, 97, 97, 102, 102, 102, 102, 97, 86, 84, 92, 94, 95, 96, 95, 90, 86, 85, 85, 86, 86, 90, 97, 102, 103, 104, 104, 106, 108, 108, 107, 104, 105, 85, 24, 23, 35, 44, 44, 44, 44, 44, 44, 44, 44, 37, 25, 22, 30, 42, 43, 43, 43, 43, 43, 42, 42, 42, 42, 37, 28, 29, 38, 55, 88, 49, 75, 129, 188, 123, 79, 99, 79, 69, 74, 100, 109, 109, 114, 147, 163, 142, 107, 127, 129, 127, 123, 103, 132, 168, 193, 202, 218, 223, 233, 243, 246, 247, 247, 247, 242, 223, 139, 135, 138, 141, 140, 138, 138, 139, 142, 145, 149, 156, 161, 162, 162, 158, 157, 161, 162, 163, 165, 166, 168, 168, 167, 167, 166, 165, 162, 159, 159, 158, 156, 156, 157, 160, 163, 165, 167, 168, 171, 173, 176, 179, 181, 182, 184, 187, 190, 192, 194, 195, 196, 197, 197, 194, 189, 185, 184, 186, 187, 187, 186, 188, 192, 196, 201, 206, 212, 215, 218, 219, 218, 216, 215, 215, 216, 217, 216, 216, 216, 215, 214, 214, 213, 212, 210, 211, 212, 215, 221, 228, 232, 233, 232, 233, 233, 233, 232, 233, 232, 233, 233, 233, 233, 233, 233, 231, 230, 229, 230, 231, 232, 233, 235, 237, 238, 240, 240, 239, 237, 236, 235, 235, 235, 235, 233, 232, 231, 232, 233, 236, 237, 237, 237, 237, 237, 238, 239, 240, 240, 241, 240, 239, 238, 238, 237, 236, 236, 237, 237, 238, 239, 239, 239, 238, 232, 208, 174, 138, 104, 82, 79, 79, 79, 79, 79, 80, 81, 82, 83, 84, 84, 85, 86, 87, 88, 88, 89, 90, 91, 91, 92, 93, 94, 94, 95, 96, 96, 97, 97, 102, 100, 95, 85, 85, 92, 92, 91, 91, 89, 86, 85, 85, 85, 85, 85, 87, 94, 100, 103, 103, 103, 105, 107, 108, 108, 107, 104, 106, 78, 22, 25, 39, 44, 44, 44, 44, 44, 44, 44, 43, 37, 23, 20, 22, 37, 44, 43, 43, 43, 43, 43, 42, 42, 42, 42, 42, 42, 38, 28, 35, 77, 63, 48, 115, 126, 128, 79, 95, 110, 129, 72, 70, 96, 108, 109, 112, 139, 150, 138, 107, 107, 119, 113, 116, 97, 120, 154, 191, 189, 222, 236, 237, 241, 246, 247, 246, 244, 239, 212, 126, 154, 152, 139, 138, 140, 149, 154, 150, 145, 149, 151, 149, 145, 142, 159, 190, 186, 159, 153, 157, 165, 166, 158, 154, 160, 164, 162, 155, 151, 151, 151, 152, 159, 166, 170, 169, 168, 170, 173, 178, 185, 187, 185, 183, 185, 188, 191, 193, 193, 194, 194, 195, 192, 187, 183, 181, 182, 183, 183, 184, 187, 191, 197, 203, 208, 212, 215, 217, 217, 215, 213, 212, 212, 214, 215, 215, 215, 214, 212, 212, 212, 212, 211, 209, 209, 210, 214, 219, 225, 229, 232, 233, 232, 232, 232, 232, 232, 231, 232, 233, 233, 233, 233, 232, 231, 232, 232, 231, 231, 232, 234, 235, 237, 237, 238, 238, 238, 237, 236, 235, 234, 234, 233, 232, 231, 231, 232, 234, 236, 237, 237, 237, 237, 237, 238, 239, 240, 240, 240, 239, 238, 237, 237, 236, 236, 237, 237, 238, 239, 239, 239, 238, 238, 231, 206, 172, 135, 101, 81, 77, 78, 78, 79, 79, 79, 80, 81, 82, 82, 83, 84, 85, 86, 86, 87, 88, 89, 89, 90, 91, 92, 92, 93, 94, 95, 95, 96, 96, 97, 93, 83, 85, 93, 91, 86, 84, 83, 82, 83, 84, 84, 85, 85, 85, 89, 98, 102, 103, 103, 104, 106, 107, 107, 108, 107, 105, 107, 75, 22, 28, 42, 44, 44, 44, 44, 44, 44, 44, 45, 43, 42, 42, 42, 43, 44, 44, 43, 42, 43, 43, 43, 42, 42, 42, 42, 42, 43, 43, 56, 81, 53, 36, 31, 107, 113, 118, 82, 67, 101, 126, 164, 89, 67, 89, 108, 109, 112, 138, 140, 123, 103, 93, 109, 107, 110, 95, 108, 145, 182, 195, 213, 230, 237, 240, 245, 245, 244, 242, 236, 176, 148, 165, 165, 149, 166, 195, 200, 193, 149, 145, 149, 163, 160, 148, 180, 207, 210, 187, 154, 170, 185, 189, 181, 170, 179, 190, 190, 175, 162, 163, 161, 158, 166, 178, 183, 181, 177, 175, 177, 186, 196, 197, 190, 184, 186, 190, 193, 195, 192, 191, 191, 191, 189, 185, 180, 179, 179, 180, 182, 186, 192, 198, 206, 212, 213, 214, 216, 216, 214, 212, 210, 211, 212, 214, 215, 215, 212, 210, 210, 211, 211, 209, 208, 207, 208, 211, 217, 222, 227, 230, 231, 231, 231, 231, 231, 231, 231, 232, 233, 233, 232, 232, 231, 231, 231, 231, 232, 232, 234, 235, 237, 237, 237, 237, 237, 236, 235, 235, 234, 234, 233, 232, 231, 231, 231, 232, 234, 236, 237, 238, 237, 237, 238, 238, 239, 240, 239, 239, 238, 237, 237, 236, 236, 236, 237, 237, 238, 239, 239, 239, 237, 237, 231, 205, 170, 133, 99, 80, 77, 77, 77, 77, 77, 78, 79, 80, 80, 81, 82, 83, 84, 84, 85, 86, 87, 87, 88, 89, 90, 90, 91, 92, 93, 93, 94, 95, 95, 96, 96, 86, 93, 91, 86, 82, 82, 82, 82, 82, 82, 82, 83, 84, 85, 93, 100, 101, 102, 102, 104, 106, 105, 105, 104, 104, 104, 104, 76, 22, 23, 37, 43, 43, 43, 44, 44, 42, 37, 36, 36, 38, 40, 45, 45, 44, 44, 44, 43, 42, 43, 43, 42, 42, 42, 42, 42, 42, 43, 44, 77, 100, 103, 67, 29, 95, 117, 116, 97, 78, 58, 103, 141, 196, 111, 70, 80, 106, 109, 113, 135, 132, 112, 96, 81, 99, 104, 104, 95, 97, 134, 168, 202, 219, 214, 232, 239, 244, 243, 241, 235, 214, 167, 183, 197, 191, 190, 206, 207, 208, 192, 175, 194, 209, 206, 201, 210, 213, 213, 202, 180, 197, 205, 206, 209, 206, 207, 211, 212, 208, 198, 195, 189, 177, 181, 196, 202, 200, 193, 187, 187, 195, 207, 205, 193, 185, 189, 196, 202, 203, 199, 194, 194, 197, 198, 195, 187, 181, 180, 184, 189, 195, 201, 208, 215, 220, 221, 219, 217, 216, 215, 212, 211, 212, 214, 216, 216, 214, 212, 210, 210, 209, 208, 206, 206, 206, 208, 213, 218, 223, 228, 229, 229, 229, 229, 229, 230, 230, 231, 232, 232, 232, 231, 230, 231, 230, 231, 231, 231, 233, 236, 237, 239, 239, 238, 237, 236, 234, 233, 232, 232, 231, 231, 231, 231, 231, 232, 234, 237, 237, 237, 237, 237, 238, 239, 239, 239, 239, 238, 237, 237, 236, 235, 236, 237, 237, 238, 239, 239, 239, 238, 237, 237, 230, 206, 170, 132, 99, 79, 77, 77, 77, 77, 77, 77, 78, 78, 79, 80, 81, 82, 83, 83, 84, 85, 86, 86, 87, 88, 89, 89, 90, 91, 92, 92, 93, 94, 94, 95, 95, 96, 92, 88, 82, 81, 81, 82, 82, 82, 82, 82, 82, 82, 86, 94, 97, 99, 98, 98, 99, 99, 97, 96, 96, 101, 108, 113, 88, 23, 21, 36, 42, 42, 42, 43, 44, 39, 35, 35, 33, 31, 33, 30, 22, 28, 36, 44, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 42, 55, 92, 102, 106, 87, 55, 74, 123, 123, 117, 81, 50, 67, 107, 142, 192, 131, 73, 75, 100, 110, 113, 130, 121, 105, 92, 76, 90, 102, 99, 94, 89, 126, 154, 200, 233, 217, 215, 216, 225, 222, 212, 235, 225, 166, 199, 205, 206, 209, 208, 209, 210, 212, 212, 213, 211, 209, 211, 213, 213, 213, 212, 216, 218, 217, 217, 216, 216, 216, 218, 220, 215, 209, 207, 196, 194, 208, 215, 215, 209, 203, 202, 204, 208, 206, 197, 191, 196, 204, 213, 216, 214, 209, 208, 212, 216, 214, 205, 197, 194, 198, 205, 211, 214, 218, 224, 229, 230, 228, 225, 223, 221, 219, 218, 219, 221, 222, 220, 219, 217, 215, 211, 208, 206, 205, 205, 205, 206, 211, 218, 223, 226, 227, 227, 228, 228, 229, 230, 231, 231, 231, 231, 230, 229, 230, 230, 231, 231, 231, 232, 234, 237, 239, 240, 240, 239, 237, 235, 233, 231, 230, 229, 229, 229, 230, 231, 232, 235, 237, 237, 237, 237, 237, 238, 239, 239, 239, 239, 237, 237, 236, 235, 236, 237, 237, 238, 239, 239, 239, 239, 238, 237, 235, 230, 206, 171, 133, 99, 79, 76, 77, 76, 77, 77, 77, 77, 77, 78, 79, 80, 81, 81, 82, 83, 83, 84, 85, 86, 87, 87, 88, 89, 90, 90, 91, 92, 92, 93, 94, 95, 95, 96, 86, 82, 80, 80, 79, 78, 78, 77, 77, 77, 77, 86, 93, 97, 105, 94, 93, 92, 92, 96, 89, 81, 84, 101, 110, 103, 30, 21, 35, 40, 39, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 45, 44, 41, 33, 30, 39, 42, 42, 42, 42, 42, 42, 42, 42, 43, 42, 44, 74, 99, 104, 106, 95, 62, 40, 123, 127, 128, 96, 74, 25, 77, 112, 122, 171, 141, 72, 69, 91, 108, 109, 123, 113, 98, 89, 75, 82, 99, 95, 93, 84, 122, 144, 205, 233, 235, 236, 232, 236, 238, 237, 234, 217, 177, 207, 208, 209, 209, 209, 210, 212, 213, 213, 212, 210, 211, 212, 213, 214, 215, 218, 218, 218, 218, 217, 216, 217, 219, 222, 218, 213, 213, 203, 199, 216, 220, 222, 219, 214, 212, 210, 209, 209, 205, 204, 207, 212, 217, 225, 228, 225, 224, 228, 233, 232, 224, 217, 216, 221, 225, 226, 226, 228, 233, 238, 239, 237, 234, 232, 231, 229, 229, 230, 230, 230, 229, 228, 225, 221, 218, 214, 211, 209, 206, 204, 206, 212, 218, 222, 225, 226, 226, 227, 228, 229, 230, 231, 230, 230, 229, 229, 229, 229, 229, 231, 231, 231, 233, 236, 238, 239, 240, 240, 238, 236, 235, 233, 231, 229, 229, 229, 230, 231, 233, 236, 237, 237, 237, 237, 237, 238, 238, 239, 238, 238, 236, 236, 235, 236, 237, 237, 238, 239, 239, 239, 239, 238, 237, 237, 234, 229, 207, 172, 133, 99, 78, 76, 76, 75, 75, 75, 76, 77, 76, 77, 78, 79, 80, 80, 81, 82, 82, 83, 84, 85, 85, 86, 87, 88, 88, 89, 90, 91, 91, 92, 93, 93, 94, 95, 95, 77, 76, 75, 82, 81, 72, 73, 75, 83, 93, 90, 103, 107, 102, 113, 106, 104, 108, 106, 110, 101, 77, 87, 101, 103, 46, 23, 25, 30, 29, 43, 44, 44, 44, 44, 44, 42, 33, 30, 34, 40, 44, 44, 42, 42, 42, 39, 39, 41, 42, 42, 42, 42, 42, 42, 43, 42, 52, 90, 102, 105, 106, 103, 66, 45, 107, 130, 130, 121, 83, 45, 27, 90, 125, 127, 158, 133, 55, 65, 81, 106, 107, 116, 106, 94, 88, 76, 76, 95, 93, 91, 81, 116, 143, 211, 233, 236, 237, 237, 238, 238, 236, 233, 204, 190, 205, 207, 209, 208, 209, 210, 212, 213, 211, 210, 210, 211, 205, 208, 214, 218, 218, 218, 217, 216, 216, 216, 218, 221, 218, 214, 214, 210, 206, 218, 223, 224, 222, 220, 218, 216, 215, 217, 218, 219, 218, 217, 219, 226, 232, 232, 232, 234, 236, 237, 235, 232, 233, 236, 238, 238, 237, 237, 239, 242, 243, 243, 241, 240, 239, 238, 238, 237, 238, 239, 238, 236, 234, 231, 228, 225, 224, 221, 216, 213, 214, 218, 222, 224, 225, 226, 227, 229, 229, 230, 230, 230, 229, 228, 229, 229, 229, 229, 229, 230, 231, 232, 235, 237, 239, 240, 239, 238, 237, 235, 233, 231, 230, 230, 229, 230, 232, 235, 237, 238, 238, 237, 237, 237, 237, 238, 238, 238, 236, 236, 235, 236, 236, 237, 238, 239, 240, 240, 239, 239, 238, 237, 236, 234, 228, 207, 172, 134, 100, 78, 75, 75, 75, 75, 75, 75, 75, 75, 76, 77, 77, 78, 79, 80, 81, 82, 82, 83, 83, 84, 85, 86, 87, 87, 88, 89, 89, 90, 91, 92, 92, 93, 94, 94, 95, 68, 71, 77, 97, 102, 83, 82, 98, 106, 112, 112, 112, 111, 107, 113, 112, 112, 115, 114, 111, 107, 96, 101, 101, 72, 22, 22, 20, 25, 42, 44, 44, 44, 44, 44, 42, 32, 20, 21, 33, 43, 44, 44, 42, 42, 42, 42, 43, 39, 37, 42, 42, 42, 45, 44, 43, 43, 68, 97, 103, 106, 106, 106, 76, 54, 76, 133, 132, 132, 93, 72, 30, 29, 100, 135, 138, 144, 113, 33, 53, 71, 101, 103, 111, 102, 92, 88, 77, 73, 92, 91, 88, 80, 108, 147, 218, 233, 236, 237, 237, 237, 237, 236, 232, 195, 193, 204, 207, 208, 208, 209, 210, 209, 207, 205, 207, 207, 199, 204, 211, 217, 217, 217, 216, 216, 215, 216, 218, 219, 218, 213, 214, 216, 218, 222, 224, 224, 223, 221, 221, 221, 221, 222, 224, 225, 225, 223, 222, 226, 231, 232, 232, 233, 236, 237, 237, 237, 238, 240, 241, 241, 241, 240, 240, 241, 243, 244, 244, 244, 243, 242, 242, 242, 242, 243, 243, 241, 239, 239, 238, 237, 237, 236, 231, 228, 227, 230, 232, 231, 231, 232, 233, 234, 233, 231, 230, 229, 229, 230, 230, 229, 230, 231, 231, 231, 232, 235, 237, 239, 239, 239, 238, 237, 235, 232, 230, 230, 230, 230, 232, 234, 236, 237, 238, 238, 238, 237, 237, 237, 238, 237, 237, 236, 235, 236, 236, 237, 238, 239, 239, 240, 240, 239, 238, 237, 236, 235, 232, 229, 211, 176, 137, 100, 78, 73, 74, 74, 75, 75, 75, 75, 75, 75, 75, 76, 77, 78, 79, 79, 80, 81, 82, 82, 83, 84, 85, 85, 86, 87, 88, 88, 89, 89, 90, 91, 92, 93, 93, 94, 95, 82, 95, 92, 109, 111, 105, 106, 112, 113, 114, 114, 115, 115, 114, 113, 111, 111, 114, 112, 106, 100, 100, 102, 95, 29, 22, 19, 25, 42, 44, 44, 44, 44, 44, 44, 35, 23, 23, 32, 42, 44, 44, 44, 42, 42, 42, 42, 42, 43, 37, 30, 41, 43, 48, 44, 46, 47, 83, 100, 104, 106, 106, 106, 89, 61, 46, 124, 133, 133, 120, 79, 43, 52, 42, 104, 140, 140, 141, 100, 26, 38, 60, 95, 100, 107, 99, 90, 86, 77, 70, 82, 83, 86, 78, 102, 150, 217, 233, 236, 237, 237, 237, 237, 234, 231, 186, 203, 205, 207, 207, 207, 206, 205, 201, 196, 196, 198, 192, 192, 202, 213, 215, 215, 215, 215, 215, 216, 216, 217, 214, 210, 213, 219, 223, 224, 224, 224, 224, 221, 221, 223, 224, 224, 226, 228, 229, 228, 227, 228, 230, 231, 229, 230, 233, 236, 237, 237, 237, 238, 239, 240, 240, 239, 239, 239, 240, 242, 242, 244, 243, 242, 241, 242, 243, 244, 243, 243, 242, 243, 243, 245, 247, 247, 244, 241, 241, 243, 242, 241, 240, 241, 241, 241, 239, 237, 234, 234, 234, 235, 235, 235, 235, 236, 236, 237, 237, 237, 239, 240, 240, 239, 237, 235, 231, 230, 229, 229, 230, 233, 235, 236, 238, 238, 238, 238, 237, 237, 237, 237, 237, 237, 236, 236, 236, 237, 238, 239, 239, 240, 240, 239, 238, 237, 236, 235, 233, 231, 229, 217, 184, 143, 104, 78, 73, 73, 74, 73, 73, 73, 74, 75, 75, 75, 75, 76, 77, 77, 78, 79, 80, 81, 81, 82, 83, 84, 84, 85, 86, 86, 87, 88, 88, 89, 89, 90, 91, 92, 93, 94, 94, 108, 110, 104, 110, 113, 111, 109, 113, 114, 114, 114, 114, 115, 115, 113, 109, 106, 109, 102, 60, 43, 95, 102, 64, 22, 22, 19, 39, 44, 44, 44, 44, 44, 44, 42, 33, 32, 39, 44, 44, 44, 44, 42, 42, 42, 42, 42, 42, 42, 42, 38, 28, 41, 43, 44, 37, 50, 71, 75, 83, 92, 103, 106, 101, 64, 50, 99, 134, 134, 134, 92, 69, 52, 64, 57, 101, 140, 141, 140, 92, 25, 28, 48, 85, 95, 104, 95, 90, 82, 76, 66, 72, 72, 83, 79, 98, 144, 220, 233, 236, 236, 237, 237, 236, 233, 227, 183, 204, 205, 205, 205, 203, 200, 194, 192, 191, 191, 190, 191, 193, 204, 211, 212, 213, 214, 214, 214, 214, 212, 206, 206, 210, 220, 225, 226, 226, 226, 224, 221, 221, 225, 227, 228, 229, 230, 231, 232, 230, 230, 230, 230, 227, 227, 230, 234, 235, 236, 234, 233, 235, 237, 238, 238, 238, 239, 238, 239, 239, 239, 241, 241, 241, 241, 242, 243, 243, 243, 243, 244, 245, 246, 249, 250, 249, 249, 249, 250, 249, 248, 248, 248, 249, 248, 246, 243, 242, 242, 243, 243, 244, 243, 243, 244, 244, 243, 242, 242, 242, 242, 241, 239, 236, 232, 230, 229, 230, 231, 233, 236, 237, 238, 238, 238, 238, 237, 237, 237, 237, 237, 237, 236, 236, 236, 238, 239, 239, 240, 240, 239, 238, 237, 236, 235, 234, 232, 230, 229, 223, 195, 154, 113, 81, 72, 73, 73, 73, 73, 73, 73, 73, 74, 75, 75, 75, 75, 76, 77, 78, 79, 79, 80, 81, 82, 82, 83, 84, 85, 85, 86, 87, 87, 88, 87, 87, 88, 90, 92, 93, 93, 94, 113, 113, 109, 110, 114, 113, 110, 114, 115, 115, 112, 107, 111, 112, 109, 106, 103, 98, 56, 71, 57, 79, 89, 23, 23, 22, 21, 41, 44, 44, 44, 44, 43, 38, 37, 42, 44, 43, 44, 44, 44, 44, 42, 42, 42, 42, 42, 42, 42, 42, 42, 40, 27, 39, 43, 45, 46, 53, 67, 68, 67, 69, 83, 97, 74, 55, 60, 135, 135, 136, 123, 80, 63, 62, 64, 64, 91, 139, 142, 141, 82, 24, 26, 39, 70, 90, 101, 93, 89, 79, 75, 64, 64, 65, 81, 79, 93, 155, 228, 233, 235, 237, 237, 237, 235, 232, 218, 171, 198, 203, 203, 201, 199, 197, 193, 193, 194, 195, 194, 195, 200, 207, 211, 212, 212, 212, 213, 211, 207, 200, 199, 203, 218, 225, 226, 226, 226, 225, 223, 223, 227, 229, 228, 229, 230, 231, 232, 232, 230, 228, 229, 228, 227, 228, 231, 232, 231, 230, 228, 230, 231, 232, 232, 232, 233, 233, 231, 231, 231, 234, 237, 238, 239, 240, 241, 241, 241, 242, 244, 245, 246, 249, 250, 250, 250, 250, 252, 251, 252, 252, 252, 252, 252, 251, 250, 250, 250, 251, 251, 251, 250, 250, 251, 251, 249, 247, 246, 245, 245, 244, 242, 238, 235, 233, 233, 234, 236, 237, 238, 239, 239, 239, 238, 238, 237, 238, 238, 237, 237, 236, 236, 237, 238, 238, 239, 239, 238, 237, 236, 235, 234, 233, 232, 230, 229, 228, 226, 206, 168, 126, 89, 72, 71, 72, 73, 73, 73, 73, 73, 73, 73, 73, 75, 75, 75, 76, 76, 77, 78, 79, 80, 81, 81, 82, 82, 83, 84, 85, 86, 86, 87, 87, 86, 86, 87, 90, 91, 92, 93, 93, 114, 114, 113, 113, 114, 113, 111, 114, 115, 115, 112, 103, 105, 106, 103, 102, 102, 74, 97, 102, 96, 68, 46, 22, 23, 24, 27, 40, 42, 39, 43, 44, 43, 40, 37, 38, 44, 44, 44, 44, 44, 43, 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 40, 26, 38, 51, 61, 48, 49, 65, 64, 61, 63, 65, 65, 56, 49, 114, 138, 138, 136, 99, 51, 61, 61, 64, 64, 82, 135, 144, 138, 67, 24, 25, 32, 60, 85, 98, 91, 89, 77, 74, 62, 60, 62, 79, 77, 90, 145, 220, 232, 235, 237, 236, 236, 233, 232, 204, 192, 194, 188, 200, 202, 201, 196, 195, 196, 197, 197, 198, 201, 204, 209, 211, 209, 211, 213, 211, 207, 204, 201, 199, 213, 224, 226, 226, 226, 226, 226, 225, 228, 229, 229, 228, 227, 228, 227, 227, 225, 223, 220, 219, 218, 216, 214, 212, 209, 207, 208, 211, 215, 217, 219, 219, 220, 221, 221, 219, 221, 223, 227, 229, 229, 230, 231, 231, 232, 233, 235, 237, 240, 245, 248, 249, 249, 249, 250, 252, 251, 252, 252, 252, 252, 252, 252, 252, 252, 252, 253, 253, 253, 253, 253, 253, 252, 251, 251, 250, 250, 249, 247, 244, 242, 240, 241, 241, 242, 243, 243, 243, 242, 240, 239, 240, 240, 240, 239, 238, 236, 236, 237, 237, 238, 238, 237, 236, 236, 234, 233, 231, 231, 230, 229, 229, 228, 228, 216, 182, 140, 99, 74, 72, 71, 72, 73, 73, 73, 73, 73, 73, 74, 74, 75, 75, 75, 75, 76, 77, 78, 79, 79, 80, 81, 82, 82, 83, 84, 84, 85, 86, 86, 87, 85, 85, 87, 89, 91, 92, 92, 93, 114, 114, 114, 114, 114, 112, 111, 113, 114, 114, 113, 106, 107, 107, 107, 104, 98, 94, 102, 102, 103, 41, 22, 22, 23, 24, 23, 39, 44, 42, 34, 36, 43, 44, 44, 44, 44, 43, 42, 41, 42, 42, 42, 42, 42, 42, 42, 41, 41, 41, 42, 43, 44, 36, 24, 47, 61, 62, 44, 49, 64, 64, 59, 60, 59, 55, 49, 65, 107, 86, 56, 50, 54, 76, 45, 58, 65, 64, 71, 125, 145, 137, 56, 24, 24, 28, 49, 78, 94, 90, 87, 75, 73, 60, 59, 60, 77, 77, 87, 115, 197, 232, 234, 236, 237, 235, 232, 231, 189, 198, 212, 203, 197, 191, 195, 198, 198, 198, 200, 203, 201, 204, 208, 205, 200, 204, 214, 213, 211, 211, 208, 204, 212, 222, 222, 220, 220, 219, 217, 217, 216, 215, 209, 201, 197, 193, 191, 190, 190, 186, 184, 190, 192, 182, 178, 177, 171, 173, 175, 177, 182, 187, 193, 198, 202, 204, 206, 207, 210, 214, 217, 219, 221, 222, 222, 222, 222, 222, 223, 223, 226, 231, 238, 242, 245, 247, 249, 251, 252, 252, 251, 252, 252, 252, 252, 252, 252, 252, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 252, 252, 251, 250, 249, 248, 248, 248, 248, 248, 249, 248, 246, 244, 244, 244, 245, 245, 242, 239, 237, 236, 237, 236, 236, 235, 234, 233, 231, 230, 230, 229, 228, 227, 228, 228, 228, 223, 194, 153, 111, 79, 71, 72, 72, 73, 73, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 76, 76, 77, 78, 78, 79, 80, 80, 81, 82, 82, 83, 84, 85, 85, 86, 86, 84, 84, 85, 89, 90, 91, 92, 93, 113, 114, 114, 113, 112, 111, 109, 112, 113, 114, 113, 108, 107, 108, 108, 107, 92, 102, 105, 103, 105, 42, 23, 23, 23, 22, 35, 40, 44, 44, 42, 33, 27, 39, 44, 44, 44, 44, 44, 44, 41, 38, 37, 41, 41, 41, 41, 41, 41, 42, 42, 44, 44, 44, 37, 26, 60, 69, 61, 42, 54, 63, 62, 56, 56, 55, 50, 49, 49, 49, 50, 55, 64, 96, 95, 51, 58, 66, 64, 64, 107, 143, 130, 43, 23, 23, 25, 33, 70, 91, 90, 86, 73, 72, 60, 59, 60, 75, 77, 83, 112, 159, 223, 233, 235, 236, 233, 232, 227, 176, 188, 188, 193, 198, 194, 195, 196, 199, 195, 191, 191, 194, 195, 193, 190, 191, 204, 202, 199, 197, 194, 185, 180, 179, 179, 184, 199, 205, 208, 211, 212, 213, 210, 205, 202, 199, 198, 195, 192, 187, 184, 191, 193, 177, 173, 175, 172, 171, 165, 153, 150, 154, 162, 171, 180, 190, 198, 202, 204, 206, 209, 213, 217, 218, 218, 217, 215, 214, 213, 214, 214, 217, 222, 228, 232, 238, 245, 249, 250, 252, 252, 252, 251, 251, 251, 251, 249, 250, 252, 253, 253, 254, 254, 253, 253, 253, 253, 253, 253, 253, 252, 252, 252, 252, 252, 252, 252, 252, 252, 251, 251, 250, 249, 249, 250, 249, 246, 242, 239, 237, 237, 237, 236, 233, 231, 229, 228, 228, 228, 227, 226, 226, 227, 228, 228, 206, 166, 123, 86, 72, 72, 72, 73, 73, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 76, 76, 76, 77, 78, 78, 79, 79, 80, 81, 81, 82, 82, 84, 84, 85, 86, 85, 82, 82, 84, 88, 90, 91, 91, 92, 109, 112, 113, 113, 113, 110, 105, 112, 113, 114, 113, 111, 108, 109, 109, 105, 97, 104, 111, 114, 102, 22, 23, 23, 24, 24, 43, 43, 43, 42, 37, 33, 34, 22, 35, 43, 43, 44, 43, 42, 42, 41, 41, 37, 36, 40, 41, 41, 42, 42, 43, 44, 44, 41, 46, 49, 29, 81, 78, 61, 44, 65, 63, 62, 54, 55, 53, 50, 50, 50, 50, 51, 61, 98, 106, 102, 65, 55, 68, 64, 64, 83, 130, 123, 34, 22, 22, 22, 28, 65, 88, 91, 86, 73, 72, 60, 59, 60, 75, 78, 89, 119, 132, 204, 233, 234, 234, 233, 231, 218, 170, 198, 201, 201, 194, 178, 186, 189, 190, 189, 188, 186, 183, 173, 172, 174, 181, 176, 179, 188, 196, 201, 206, 213, 221, 223, 225, 225, 226, 226, 226, 227, 229, 229, 229, 229, 227, 224, 223, 222, 219, 217, 216, 210, 208, 209, 206, 204, 192, 170, 153, 145, 144, 147, 156, 167, 179, 191, 201, 205, 207, 211, 215, 221, 224, 225, 223, 222, 219, 216, 212, 211, 213, 217, 222, 228, 234, 242, 248, 251, 252, 251, 251, 251, 251, 248, 247, 248, 251, 253, 253, 254, 254, 254, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 252, 252, 252, 252, 252, 252, 250, 247, 245, 243, 242, 241, 237, 234, 231, 229, 228, 227, 227, 226, 226, 226, 227, 228, 214, 178, 135, 95, 73, 72, 73, 73, 74, 74, 74, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 77, 77, 78, 78, 79, 79, 80, 80, 81, 81, 82, 83, 84, 84, 85, 83, 79, 79, 82, 87, 89, 90, 91, 92, 102, 106, 110, 111, 112, 111, 109, 110, 113, 113, 113, 113, 111, 109, 109, 97, 106, 109, 115, 115, 79, 22, 24, 24, 24, 25, 43, 43, 43, 31, 33, 37, 43, 38, 20, 30, 38, 41, 42, 42, 41, 41, 41, 41, 41, 37, 36, 41, 42, 42, 43, 43, 37, 42, 56, 60, 49, 82, 122, 85, 60, 50, 79, 63, 61, 51, 57, 54, 52, 51, 51, 51, 51, 74, 103, 106, 105, 79, 52, 73, 64, 64, 66, 117, 113, 29, 22, 22, 20, 28, 63, 88, 93, 86, 72, 73, 61, 59, 61, 75, 79, 153, 133, 155, 196, 210, 233, 232, 232, 230, 195, 145, 171, 194, 201, 200, 201, 202, 204, 205, 203, 201, 203, 193, 193, 194, 205, 208, 212, 216, 218, 216, 217, 221, 225, 224, 225, 226, 226, 227, 227, 228, 229, 229, 230, 227, 225, 225, 225, 226, 225, 224, 225, 228, 226, 223, 222, 219, 216, 209, 192, 179, 164, 152, 148, 151, 159, 172, 187, 198, 206, 211, 213, 217, 224, 232, 233, 233, 233, 232, 228, 223, 220, 220, 221, 223, 227, 232, 239, 247, 251, 252, 252, 252, 250, 247, 246, 246, 250, 252, 253, 253, 253, 254, 254, 254, 254, 254, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 252, 251, 249, 248, 247, 245, 242, 240, 237, 234, 231, 228, 228, 228, 228, 228, 230, 221, 188, 146, 105, 77, 72, 73, 74, 74, 74, 74, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 77, 77, 77, 78, 78, 79, 79, 79, 80, 80, 81, 81, 82, 83, 84, 85, 82, 78, 78, 81, 87, 88, 89, 90, 91, 101, 103, 107, 110, 111, 112, 112, 111, 112, 112, 112, 113, 112, 110, 109, 98, 108, 112, 115, 121, 46, 22, 24, 24, 26, 24, 43, 40, 32, 19, 20, 34, 37, 43, 40, 67, 129, 122, 104, 64, 39, 41, 41, 41, 41, 41, 40, 36, 40, 43, 41, 35, 44, 49, 57, 61, 62, 46, 125, 135, 89, 57, 70, 86, 65, 61, 52, 61, 58, 53, 51, 51, 51, 50, 65, 100, 106, 106, 91, 53, 81, 66, 64, 64, 100, 78, 28, 22, 22, 21, 26, 60, 89, 96, 85, 73, 77, 65, 59, 62, 79, 93, 208, 171, 170, 206, 195, 201, 216, 231, 229, 163, 157, 152, 162, 184, 199, 202, 202, 203, 202, 202, 205, 207, 209, 209, 212, 212, 215, 215, 215, 210, 217, 223, 226, 226, 225, 226, 226, 227, 227, 229, 229, 230, 230, 225, 222, 224, 225, 226, 225, 224, 224, 227, 227, 224, 223, 220, 221, 225, 223, 213, 202, 189, 179, 167, 155, 153, 166, 182, 197, 206, 212, 215, 221, 230, 239, 241, 241, 241, 239, 237, 235, 235, 232, 228, 227, 230, 235, 239, 244, 247, 250, 250, 249, 246, 245, 246, 249, 253, 253, 253, 253, 253, 254, 254, 254, 254, 254, 253, 253, 253, 253, 253, 254, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 252, 251, 251, 249, 248, 245, 244, 241, 238, 235, 234, 234, 234, 232, 227, 199, 158, 116, 83, 73, 73, 74, 75, 75, 75, 75, 76, 76, 76, 76, 77, 76, 77, 77, 77, 77, 77, 77, 77, 77, 78, 79, 79, 79, 79, 79, 79, 80, 80, 81, 82, 83, 84, 82, 78, 77, 80, 85, 86, 86, 88, 90, 105, 108, 109, 111, 111, 112, 112, 111, 111, 111, 111, 112, 110, 107, 106, 100, 113, 114, 114, 118, 19, 21, 24, 25, 26, 23, 41, 33, 19, 19, 18, 29, 42, 38, 41, 42, 114, 143, 143, 143, 123, 81, 40, 40, 41, 41, 42, 42, 38, 35, 35, 42, 46, 56, 59, 66, 70, 64, 51, 170, 141, 91, 85, 103, 90, 70, 58, 59, 67, 61, 54, 52, 51, 51, 50, 59, 97, 106, 106, 92, 51, 88, 72, 64, 64, 57, 52, 30, 22, 21, 22, 25, 61, 93, 100, 82, 76, 82, 74, 61, 68, 85, 131, 227, 212, 193, 210, 215, 204, 189, 211, 224, 174, 198, 193, 184, 179, 186, 188, 190, 194, 200, 205, 208, 206, 210, 214, 215, 214, 214, 213, 215, 219, 222, 225, 227, 226, 225, 226, 226, 227, 227, 228, 229, 230, 227, 221, 224, 225, 225, 225, 223, 222, 226, 227, 225, 224, 222, 222, 226, 228, 225, 221, 217, 211, 201, 182, 161, 152, 162, 178, 193, 202, 208, 215, 223, 233, 242, 242, 243, 244, 244, 245, 245, 244, 241, 235, 233, 235, 238, 240, 242, 244, 246, 249, 246, 245, 246, 249, 252, 253, 253, 253, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 252, 252, 251, 250, 250, 251, 249, 245, 243, 242, 242, 240, 235, 213, 173, 128, 91, 74, 74, 74, 75, 75, 76, 76, 76, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 78, 79, 78, 78, 78, 78, 79, 79, 80, 80, 82, 83, 81, 77, 76, 79, 83, 83, 84, 87, 89, 111, 111, 111, 112, 112, 112, 111, 110, 107, 108, 109, 111, 110, 103, 99, 101, 114, 114, 115, 94, 20, 21, 25, 25, 27, 23, 38, 36, 18, 19, 22, 33, 43, 43, 39, 38, 43, 117, 143, 143, 143, 143, 129, 85, 42, 42, 42, 42, 40, 35, 36, 45, 44, 61, 73, 72, 77, 85, 71, 120, 183, 142, 91, 137, 111, 95, 75, 56, 73, 75, 65, 56, 53, 52, 51, 50, 55, 93, 106, 106, 97, 55, 83, 80, 65, 64, 63, 59, 32, 22, 20, 24, 25, 63, 97, 102, 76, 82, 88, 83, 64, 77, 86, 175, 231, 231, 212, 198, 209, 215, 188, 230, 209, 181, 197, 197, 198, 198, 199, 200, 196, 191, 192, 198, 195, 194, 206, 212, 214, 214, 216, 216, 219, 220, 225, 226, 226, 225, 225, 226, 227, 227, 227, 228, 228, 225, 223, 225, 226, 225, 224, 222, 221, 223, 225, 225, 225, 224, 224, 226, 228, 227, 225, 223, 219, 216, 205, 182, 158, 152, 160, 173, 186, 197, 203, 214, 224, 234, 242, 242, 243, 243, 246, 246, 247, 246, 245, 243, 241, 239, 240, 240, 240, 240, 243, 246, 247, 249, 250, 252, 252, 252, 253, 253, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 252, 252, 253, 253, 252, 251, 250, 250, 249, 244, 227, 188, 143, 101, 76, 74, 75, 76, 76, 76, 77, 77, 77, 77, 77, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 77, 77, 77, 77, 77, 77, 77, 77, 77, 79, 80, 79, 76, 74, 77, 81, 82, 83, 86, 89, 113, 113, 112, 112, 113, 112, 110, 108, 105, 104, 110, 112, 111, 102, 93, 105, 115, 115, 116, 69, 20, 21, 25, 26, 27, 24, 34, 35, 20, 20, 25, 31, 43, 43, 42, 40, 36, 45, 125, 143, 143, 143, 142, 143, 126, 78, 43, 41, 36, 43, 41, 60, 74, 57, 72, 94, 95, 93, 99, 84, 175, 183, 130, 127, 168, 121, 98, 79, 101, 86, 83, 68, 56, 55, 53, 52, 50, 53, 89, 106, 106, 101, 55, 68, 84, 67, 64, 91, 62, 36, 23, 19, 24, 25, 66, 101, 100, 70, 89, 94, 87, 63, 84, 92, 210, 231, 231, 232, 211, 195, 183, 217, 229, 188, 191, 197, 197, 194, 194, 194, 195, 196, 200, 204, 204, 201, 203, 197, 203, 204, 212, 217, 218, 217, 223, 224, 224, 224, 224, 225, 226, 226, 226, 227, 227, 226, 226, 227, 227, 226, 225, 223, 222, 223, 224, 224, 224, 224, 226, 227, 229, 230, 228, 225, 222, 220, 216, 198, 166, 147, 151, 157, 163, 174, 187, 197, 212, 225, 237, 241, 242, 242, 244, 246, 247, 247, 246, 246, 246, 246, 244, 241, 239, 238, 239, 243, 249, 250, 251, 251, 252, 252, 252, 252, 252, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 252, 252, 252, 252, 241, 206, 158, 114, 81, 75, 76, 76, 77, 77, 77, 77, 78, 78, 78, 78, 78, 78, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 78, 78, 77, 76, 76, 76, 76, 75, 74, 73, 73, 73, 74, 74, 71, 71, 73, 77, 80, 82, 86, 88, 113, 113, 113, 113, 113, 113, 110, 105, 103, 103, 114, 117, 115, 103, 94, 111, 120, 117, 111, 36, 21, 22, 25, 26, 26, 26, 30, 33, 25, 20, 26, 31, 42, 43, 43, 42, 41, 35, 53, 133, 143, 143, 144, 143, 143, 142, 116, 44, 45, 46, 45, 43, 88, 115, 65, 85, 112, 115, 108, 108, 112, 111, 156, 152, 181, 167, 132, 98, 91, 134, 99, 90, 71, 55, 58, 55, 52, 51, 53, 85, 105, 106, 100, 70, 62, 75, 72, 119, 104, 63, 38, 22, 19, 23, 26, 70, 103, 93, 69, 97, 98, 77, 64, 93, 126, 227, 231, 232, 232, 230, 210, 195, 229, 227, 175, 196, 195, 195, 194, 193, 195, 201, 203, 206, 207, 207, 206, 209, 212, 211, 193, 200, 205, 215, 217, 220, 219, 219, 224, 224, 225, 226, 226, 226, 227, 227, 227, 229, 229, 228, 227, 227, 227, 225, 225, 225, 226, 226, 227, 228, 229, 230, 230, 229, 226, 224, 221, 213, 186, 157, 145, 147, 150, 150, 160, 176, 192, 214, 230, 239, 240, 240, 242, 244, 246, 246, 246, 247, 248, 248, 248, 246, 241, 238, 238, 241, 247, 250, 251, 251, 251, 251, 252, 251, 252, 252, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 253, 253, 254, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 252, 252, 249, 223, 177, 128, 89, 76, 76, 77, 77, 77, 78, 78, 78, 78, 78, 78, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 78, 77, 76, 76, 74, 74, 73, 71, 69, 67, 66, 65, 65, 62, 63, 66, 72, 78, 81, 85, 86, 111, 112, 113, 113, 113, 113, 108, 101, 101, 107, 115, 117, 115, 105, 99, 118, 127, 115, 116, 17, 20, 21, 25, 26, 26, 26, 24, 34, 27, 20, 26, 35, 41, 43, 43, 42, 41, 41, 35, 70, 140, 144, 144, 148, 146, 144, 120, 138, 94, 48, 56, 63, 65, 107, 141, 78, 109, 120, 98, 36, 49, 158, 203, 218, 197, 190, 176, 129, 100, 115, 150, 105, 96, 76, 55, 61, 56, 53, 52, 55, 84, 104, 106, 99, 86, 78, 56, 70, 172, 74, 64, 39, 22, 21, 23, 28, 74, 105, 82, 73, 102, 95, 67, 69, 99, 173, 230, 231, 232, 232, 230, 229, 229, 228, 215, 176, 198, 198, 197, 198, 200, 204, 205, 206, 207, 208, 210, 212, 215, 215, 204, 201, 212, 202, 200, 210, 208, 211, 222, 223, 224, 224, 224, 225, 226, 226, 226, 227, 228, 228, 228, 229, 229, 227, 225, 225, 225, 226, 228, 228, 229, 230, 231, 231, 230, 227, 224, 221, 210, 182, 149, 137, 140, 139, 139, 152, 169, 196, 221, 237, 239, 239, 240, 241, 243, 245, 246, 247, 247, 246, 246, 246, 245, 240, 239, 241, 246, 250, 251, 252, 251, 252, 251, 251, 251, 252, 253, 254, 254, 254, 254, 254, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 252, 237, 196, 146, 100, 77, 77, 77, 77, 78, 78, 78, 79, 79, 79, 79, 79, 79, 80, 80, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 78, 77, 76, 75, 73, 72, 70, 68, 65, 62, 57, 54, 54, 51, 52, 55, 62, 69, 74, 78, 81, 111, 112, 112, 112, 113, 113, 109, 101, 101, 107, 112, 122, 124, 125, 106, 124, 119, 130, 95, 20, 18, 21, 24, 25, 26, 26, 19, 36, 26, 21, 23, 39, 43, 43, 43, 43, 41, 41, 41, 34, 94, 143, 143, 146, 150, 137, 138, 144, 142, 115, 59, 87, 105, 99, 136, 152, 97, 76, 39, 42, 71, 104, 198, 245, 208, 215, 196, 174, 129, 101, 144, 150, 110, 103, 82, 58, 63, 57, 55, 53, 57, 81, 101, 105, 96, 89, 97, 63, 130, 172, 65, 64, 37, 20, 23, 24, 30, 80, 103, 69, 81, 105, 79, 65, 73, 102, 210, 230, 231, 232, 230, 229, 229, 228, 228, 194, 189, 197, 198, 201, 202, 206, 207, 208, 208, 210, 213, 214, 215, 214, 213, 215, 215, 215, 210, 195, 188, 204, 219, 221, 222, 221, 223, 224, 225, 225, 225, 226, 227, 228, 229, 229, 229, 228, 225, 225, 225, 225, 227, 228, 228, 229, 230, 231, 231, 229, 227, 223, 219, 201, 160, 133, 133, 134, 134, 136, 149, 177, 212, 235, 240, 240, 240, 241, 241, 243, 244, 245, 245, 244, 243, 243, 243, 243, 240, 241, 246, 249, 251, 251, 251, 251, 252, 250, 250, 252, 253, 254, 254, 254, 254, 253, 253, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 253, 246, 213, 163, 115, 82, 77, 77, 78, 78, 78, 79, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 80, 80, 80, 80, 80, 80, 79, 79, 78, 76, 75, 74, 72, 70, 69, 65, 60, 55, 49, 45, 42, 41, 41, 44, 50, 55, 59, 63, 67, 111, 111, 112, 112, 112, 112, 112, 105, 106, 113, 136, 136, 134, 105, 109, 124, 125, 137, 73, 20, 19, 21, 23, 24, 24, 26, 21, 31, 31, 24, 21, 37, 43, 43, 43, 42, 41, 41, 41, 41, 34, 119, 143, 144, 147, 125, 150, 151, 149, 144, 135, 94, 118, 125, 122, 159, 79, 42, 43, 73, 80, 87, 88, 212, 217, 231, 208, 207, 167, 126, 97, 171, 151, 117, 108, 85, 61, 65, 58, 56, 54, 56, 72, 90, 98, 94, 92, 106, 95, 192, 132, 36, 33, 23, 21, 24, 24, 32, 85, 99, 62, 85, 98, 64, 65, 81, 134, 224, 230, 231, 231, 229, 229, 229, 228, 227, 175, 197, 200, 201, 202, 204, 208, 209, 210, 211, 212, 213, 214, 215, 214, 216, 216, 212, 212, 211, 192, 164, 200, 219, 219, 219, 217, 222, 224, 224, 224, 225, 226, 226, 227, 228, 228, 227, 225, 224, 224, 224, 225, 227, 228, 228, 228, 229, 230, 229, 227, 225, 221, 213, 175, 137, 131, 131, 132, 133, 140, 162, 203, 234, 241, 241, 241, 241, 241, 241, 242, 243, 242, 242, 241, 241, 242, 243, 243, 243, 247, 249, 250, 250, 251, 251, 250, 250, 249, 250, 252, 254, 254, 254, 254, 254, 254, 254, 253, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 251, 226, 181, 132, 91, 77, 78, 78, 79, 80, 80, 81, 81, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 80, 80, 79, 77, 76, 74, 73, 71, 69, 63, 58, 52, 46, 41, 38, 36, 35, 35, 36, 38, 41, 44, 46, 50, 111, 112, 112, 112, 112, 112, 112, 112, 108, 130, 135, 125, 108, 105, 106, 113, 137, 137, 39, 19, 21, 22, 22, 24, 24, 25, 20, 21, 38, 24, 22, 30, 43, 43, 42, 42, 41, 41, 40, 41, 40, 49, 137, 143, 123, 143, 150, 152, 153, 156, 166, 181, 116, 126, 124, 95, 40, 61, 172, 83, 107, 122, 131, 155, 229, 233, 209, 230, 203, 154, 127, 123, 182, 150, 123, 112, 85, 66, 66, 58, 55, 53, 55, 67, 80, 89, 89, 96, 108, 143, 201, 79, 24, 22, 21, 27, 28, 23, 35, 92, 89, 60, 87, 76, 64, 67, 90, 151, 226, 229, 231, 230, 229, 229, 228, 228, 218, 175, 201, 201, 201, 201, 205, 209, 211, 212, 212, 213, 214, 214, 215, 216, 217, 216, 215, 215, 205, 203, 171, 170, 213, 217, 216, 218, 222, 223, 223, 224, 225, 226, 226, 226, 226, 225, 224, 223, 223, 224, 224, 225, 226, 227, 228, 228, 227, 227, 227, 225, 222, 221, 193, 145, 131, 131, 131, 133, 135, 154, 199, 233, 239, 241, 241, 241, 241, 240, 239, 240, 240, 240, 240, 240, 241, 243, 244, 245, 247, 249, 250, 250, 250, 250, 250, 249, 248, 249, 251, 253, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 252, 238, 199, 149, 103, 79, 78, 79, 80, 80, 81, 81, 81, 81, 82, 82, 82, 82, 82, 82, 82, 82, 82, 81, 82, 81, 81, 81, 81, 81, 80, 80, 79, 77, 75, 73, 70, 65, 59, 53, 48, 43, 38, 35, 32, 32, 31, 31, 31, 32, 32, 33, 34, 36, 112, 112, 112, 112, 112, 113, 113, 113, 107, 126, 125, 131, 132, 114, 114, 124, 137, 127, 24, 23, 21, 21, 21, 23, 23, 23, 18, 18, 33, 29, 24, 25, 41, 43, 42, 41, 41, 41, 41, 39, 40, 39, 96, 142, 115, 148, 151, 152, 153, 161, 188, 209, 198, 126, 119, 32, 37, 78, 124, 95, 126, 161, 167, 155, 231, 232, 219, 227, 231, 197, 141, 122, 158, 183, 149, 126, 115, 82, 73, 66, 58, 54, 54, 54, 63, 72, 78, 81, 100, 104, 181, 165, 74, 36, 24, 21, 38, 33, 24, 37, 94, 78, 60, 79, 63, 63, 76, 102, 177, 227, 230, 230, 230, 229, 229, 228, 226, 197, 188, 200, 200, 202, 202, 208, 210, 211, 212, 212, 213, 213, 214, 216, 217, 217, 217, 216, 216, 215, 202, 181, 140, 201, 218, 218, 221, 222, 223, 223, 224, 225, 226, 226, 226, 224, 222, 221, 223, 223, 223, 223, 224, 225, 225, 225, 224, 224, 224, 222, 220, 222, 203, 150, 132, 132, 131, 131, 131, 151, 193, 225, 231, 235, 238, 241, 240, 239, 239, 238, 239, 239, 240, 239, 240, 242, 244, 246, 248, 250, 250, 250, 250, 250, 250, 248, 247, 249, 251, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 253, 253, 253, 254, 254, 254, 254, 254, 254, 254, 253, 253, 253, 253, 252, 252, 246, 214, 166, 118, 84, 79, 80, 81, 81, 82, 82, 82, 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 81, 81, 81, 80, 79, 76, 71, 65, 59, 52, 47, 42, 38, 35, 32, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 117, 113, 112, 112, 113, 113, 109, 122, 134, 136, 136, 129, 119, 108, 114, 120, 133, 114, 27, 27, 21, 20, 21, 23, 23, 22, 18, 19, 22, 38, 23, 28, 38, 43, 43, 41, 41, 41, 41, 41, 38, 39, 42, 120, 123, 145, 152, 153, 153, 168, 199, 218, 212, 207, 94, 26, 71, 81, 107, 122, 135, 185, 201, 212, 232, 232, 227, 227, 233, 230, 184, 133, 119, 182, 183, 148, 128, 116, 83, 92, 65, 60, 54, 53, 54, 59, 63, 65, 65, 103, 125, 168, 111, 86, 67, 35, 23, 48, 44, 27, 36, 87, 69, 60, 64, 62, 66, 85, 136, 190, 226, 230, 229, 228, 228, 227, 225, 222, 173, 198, 201, 201, 201, 203, 208, 210, 211, 212, 212, 213, 213, 214, 216, 216, 217, 218, 218, 216, 211, 199, 182, 137, 186, 219, 219, 221, 222, 222, 223, 224, 225, 225, 224, 222, 221, 221, 221, 221, 221, 220, 220, 221, 220, 218, 217, 217, 218, 218, 216, 211, 193, 164, 159, 157, 153, 154, 156, 167, 190, 204, 208, 213, 217, 225, 232, 236, 238, 237, 238, 238, 239, 239, 239, 241, 244, 246, 248, 249, 249, 250, 250, 250, 249, 249, 248, 249, 251, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 254, 254, 254, 254, 254, 253, 253, 252, 250, 249, 249, 247, 225, 183, 134, 93, 80, 81, 82, 82, 82, 82, 83, 83, 83, 84, 84, 84, 84, 84, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 82, 82, 81, 79, 74, 67, 59, 52, 46, 41, 37, 34, 32, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 117, 116, 113, 112, 112, 111, 123, 136, 136, 136, 132, 122, 110, 123, 114, 119, 124, 100, 33, 27, 20, 20, 21, 22, 22, 21, 18, 20, 20, 33, 29, 29, 35, 43, 43, 41, 41, 41, 41, 41, 40, 37, 39, 56, 126, 142, 150, 154, 150, 175, 208, 219, 207, 177, 55, 53, 76, 115, 109, 133, 155, 201, 204, 232, 232, 231, 231, 232, 235, 236, 228, 166, 136, 154, 188, 188, 149, 128, 115, 117, 99, 63, 62, 55, 53, 55, 57, 58, 58, 63, 91, 139, 140, 78, 74, 76, 39, 24, 50, 54, 37, 26, 61, 61, 59, 61, 62, 76, 90, 174, 194, 222, 228, 227, 226, 225, 222, 219, 207, 169, 200, 200, 200, 201, 206, 209, 211, 211, 212, 212, 212, 213, 214, 216, 216, 217, 217, 216, 210, 210, 196, 189, 161, 179, 218, 218, 219, 220, 223, 223, 223, 223, 224, 220, 219, 218, 218, 217, 218, 218, 217, 216, 214, 209, 210, 212, 213, 209, 205, 205, 207, 211, 213, 208, 202, 200, 196, 192, 191, 188, 186, 185, 188, 196, 209, 220, 226, 228, 231, 233, 236, 238, 239, 240, 243, 246, 247, 249, 249, 249, 250, 250, 250, 249, 249, 250, 251, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 254, 254, 253, 253, 253, 252, 249, 246, 244, 244, 232, 196, 150, 106, 82, 81, 82, 83, 83, 83, 83, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 83, 83, 83, 83, 80, 75, 69, 61, 53, 46, 40, 35, 32, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 116, 115, 114, 113, 112, 107, 135, 130, 127, 121, 108, 117, 108, 123, 115, 121, 119, 89, 37, 23, 20, 21, 21, 21, 22, 20, 19, 20, 28, 23, 39, 22, 33, 41, 42, 41, 40, 40, 41, 41, 40, 40, 36, 45, 79, 140, 145, 147, 161, 185, 213, 216, 209, 187, 77, 151, 102, 87, 122, 165, 202, 198, 232, 233, 232, 231, 232, 233, 236, 237, 238, 220, 146, 126, 213, 197, 197, 151, 127, 113, 149, 96, 63, 63, 58, 53, 56, 57, 56, 56, 56, 100, 143, 113, 91, 75, 54, 29, 28, 49, 56, 53, 38, 37, 54, 60, 61, 64, 85, 99, 200, 200, 212, 225, 224, 222, 218, 213, 206, 182, 182, 199, 199, 201, 204, 208, 209, 210, 210, 210, 211, 212, 213, 214, 216, 216, 216, 215, 208, 205, 210, 195, 189, 143, 183, 216, 214, 216, 221, 222, 222, 223, 223, 219, 215, 216, 216, 215, 215, 216, 214, 210, 208, 205, 207, 206, 209, 210, 216, 223, 226, 225, 221, 213, 206, 202, 200, 201, 201, 201, 199, 194, 188, 188, 198, 211, 218, 220, 222, 223, 225, 228, 233, 237, 242, 245, 248, 248, 249, 249, 249, 250, 251, 250, 250, 251, 251, 253, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 253, 253, 253, 252, 250, 246, 243, 241, 235, 211, 168, 121, 87, 82, 82, 83, 84, 84, 84, 85, 85, 85, 86, 86, 86, 86, 86, 85, 85, 85, 84, 84, 84, 84, 84, 84, 84, 82, 77, 70, 63, 54, 46, 39, 35, 32, 31, 31, 31, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 115, 114, 114, 114, 114, 109, 122, 133, 135, 135, 129, 113, 113, 126, 119, 124, 119, 63, 33, 21, 20, 21, 21, 22, 22, 20, 19, 19, 35, 24, 34, 30, 29, 39, 42, 42, 41, 40, 40, 40, 40, 40, 40, 37, 58, 102, 143, 152, 159, 196, 217, 209, 220, 157, 130, 195, 208, 105, 140, 209, 194, 215, 234, 233, 232, 229, 232, 234, 236, 237, 239, 238, 194, 138, 183, 232, 205, 202, 146, 125, 115, 172, 87, 63, 63, 61, 55, 56, 58, 56, 55, 48, 135, 140, 87, 82, 70, 53, 29, 24, 44, 53, 59, 55, 46, 49, 60, 61, 73, 90, 111, 211, 208, 194, 217, 214, 210, 206, 200, 193, 161, 194, 199, 200, 204, 206, 207, 208, 208, 205, 208, 212, 212, 214, 215, 216, 215, 214, 207, 205, 210, 214, 198, 185, 157, 203, 210, 209, 217, 220, 220, 221, 219, 217, 212, 216, 216, 214, 210, 211, 207, 201, 201, 198, 197, 210, 212, 206, 208, 212, 209, 204, 199, 197, 201, 209, 215, 221, 225, 227, 228, 223, 218, 213, 214, 218, 221, 221, 220, 220, 220, 220, 223, 229, 237, 243, 246, 248, 249, 249, 249, 250, 250, 248, 248, 249, 251, 251, 252, 252, 253, 253, 253, 252, 252, 253, 253, 253, 252, 252, 252, 253, 253, 254, 254, 253, 253, 253, 252, 251, 249, 244, 241, 237, 225, 192, 145, 101, 82, 83, 83, 85, 85, 86, 86, 86, 86, 86, 87, 87, 87, 87, 87, 86, 86, 86, 86, 86, 85, 85, 85, 83, 80, 73, 64, 56, 47, 40, 34, 31, 31, 31, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 115, 114, 113, 114, 110, 122, 135, 135, 127, 114, 128, 109, 121, 133, 126, 129, 109, 40, 24, 22, 21, 22, 22, 24, 21, 20, 19, 18, 35, 36, 24, 39, 23, 38, 42, 41, 41, 40, 40, 40, 40, 40, 41, 42, 47, 69, 124, 150, 174, 208, 222, 212, 227, 183, 162, 233, 241, 236, 187, 209, 170, 235, 233, 231, 231, 229, 231, 234, 236, 238, 240, 241, 230, 161, 139, 239, 234, 209, 204, 139, 123, 126, 183, 81, 63, 64, 63, 58, 54, 56, 56, 54, 105, 142, 118, 79, 65, 54, 44, 28, 22, 38, 52, 58, 64, 62, 58, 55, 59, 81, 93, 117, 211, 222, 184, 197, 201, 197, 191, 187, 185, 165, 196, 198, 203, 205, 206, 206, 207, 204, 201, 208, 212, 214, 216, 215, 213, 211, 206, 206, 207, 214, 215, 204, 184, 179, 208, 207, 210, 217, 218, 218, 215, 210, 210, 214, 215, 213, 205, 203, 198, 193, 179, 182, 200, 193, 188, 193, 197, 199, 203, 207, 211, 214, 217, 220, 222, 224, 228, 229, 231, 229, 217, 211, 212, 214, 216, 222, 225, 226, 223, 219, 219, 225, 232, 239, 241, 244, 247, 247, 247, 247, 248, 247, 246, 247, 248, 250, 251, 251, 251, 251, 251, 251, 251, 251, 252, 250, 250, 249, 250, 251, 251, 252, 252, 252, 252, 252, 252, 250, 247, 243, 239, 232, 217, 176, 129, 92, 83, 84, 85, 86, 86, 87, 87, 87, 88, 88, 88, 88, 88, 87, 87, 88, 87, 87, 87, 87, 86, 86, 82, 76, 67, 59, 49, 41, 35, 32, 31, 31, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 114, 114, 113, 109, 129, 135, 133, 122, 114, 129, 107, 119, 125, 136, 126, 131, 92, 38, 21, 22, 23, 23, 24, 25, 21, 20, 19, 17, 32, 42, 30, 33, 33, 29, 37, 36, 39, 41, 40, 39, 40, 41, 42, 44, 54, 68, 85, 143, 183, 222, 228, 228, 234, 222, 183, 245, 246, 247, 245, 243, 236, 234, 232, 228, 224, 228, 233, 235, 236, 238, 240, 241, 241, 206, 144, 199, 245, 235, 211, 203, 133, 119, 151, 180, 75, 64, 69, 66, 62, 56, 53, 55, 65, 117, 122, 74, 62, 51, 43, 37, 27, 22, 31, 49, 54, 64, 61, 59, 52, 51, 66, 79, 103, 188, 222, 196, 171, 185, 186, 186, 186, 180, 169, 193, 200, 203, 205, 206, 206, 204, 198, 201, 221, 229, 236, 235, 240, 239, 232, 226, 223, 217, 207, 205, 197, 193, 205, 206, 205, 210, 213, 212, 210, 204, 209, 212, 213, 211, 195, 174, 150, 161, 186, 178, 170, 176, 183, 190, 198, 205, 209, 210, 211, 213, 216, 215, 218, 220, 224, 226, 228, 219, 197, 186, 193, 206, 215, 223, 229, 231, 229, 228, 226, 229, 233, 235, 234, 234, 237, 242, 244, 245, 245, 245, 244, 245, 245, 248, 249, 250, 250, 250, 250, 250, 250, 250, 249, 248, 247, 247, 247, 248, 248, 249, 248, 249, 249, 250, 251, 249, 245, 241, 234, 229, 208, 165, 121, 89, 85, 86, 87, 88, 88, 88, 88, 89, 88, 89, 89, 89, 89, 89, 89, 88, 88, 88, 88, 87, 85, 79, 71, 62, 52, 43, 36, 32, 31, 31, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 114, 113, 112, 125, 134, 130, 116, 125, 130, 128, 106, 107, 128, 136, 125, 132, 75, 34, 64, 23, 25, 22, 25, 25, 24, 19, 19, 18, 27, 41, 40, 28, 39, 23, 29, 29, 32, 38, 40, 39, 40, 41, 41, 44, 45, 86, 76, 114, 184, 234, 236, 236, 238, 238, 209, 246, 246, 245, 243, 240, 236, 232, 229, 224, 221, 228, 233, 235, 237, 239, 241, 242, 244, 238, 168, 154, 245, 245, 234, 211, 197, 126, 111, 176, 164, 73, 66, 74, 74, 66, 60, 54, 52, 53, 48, 37, 38, 41, 38, 35, 33, 27, 23, 27, 48, 53, 59, 61, 61, 61, 67, 77, 71, 62, 57, 62, 67, 82, 149, 184, 186, 186, 178, 173, 187, 199, 204, 197, 199, 219, 238, 251, 254, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 242, 218, 187, 200, 206, 204, 203, 204, 203, 203, 200, 197, 187, 169, 145, 111, 122, 162, 170, 163, 162, 164, 169, 176, 182, 185, 182, 179, 183, 185, 203, 217, 216, 220, 225, 227, 229, 230, 232, 221, 200, 189, 200, 215, 233, 239, 239, 235, 230, 231, 235, 237, 236, 230, 227, 227, 231, 237, 241, 243, 244, 244, 245, 245, 247, 249, 250, 250, 250, 250, 250, 249, 248, 247, 246, 246, 245, 244, 245, 246, 246, 245, 246, 247, 248, 249, 247, 244, 238, 232, 228, 202, 158, 115, 87, 87, 87, 89, 89, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 89, 89, 87, 82, 75, 66, 56, 46, 38, 33, 31, 31, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 29, 29, 29, 29, 29, 30, 30, 30, 30, 114, 113, 110, 126, 127, 114, 130, 134, 134, 115, 121, 115, 130, 136, 124, 129, 49, 46, 75, 25, 26, 21, 25, 24, 26, 19, 19, 18, 21, 40, 41, 39, 34, 35, 19, 24, 25, 31, 40, 39, 40, 41, 41, 43, 47, 57, 101, 88, 170, 237, 244, 244, 244, 246, 240, 247, 247, 245, 243, 240, 234, 228, 226, 220, 225, 227, 234, 236, 237, 239, 241, 243, 244, 244, 219, 141, 219, 246, 246, 230, 210, 192, 118, 112, 181, 160, 70, 63, 77, 82, 75, 64, 59, 51, 50, 50, 37, 31, 30, 28, 26, 25, 25, 23, 22, 39, 50, 52, 60, 61, 61, 79, 90, 94, 96, 93, 87, 78, 75, 96, 133, 132, 131, 132, 122, 167, 209, 236, 252, 249, 238, 243, 253, 254, 251, 242, 242, 246, 249, 251, 253, 253, 253, 253, 253, 252, 228, 191, 173, 164, 154, 141, 127, 112, 106, 106, 105, 116, 146, 159, 161, 161, 161, 161, 159, 155, 149, 140, 136, 149, 167, 191, 196, 216, 226, 227, 230, 229, 228, 232, 235, 238, 240, 232, 209, 198, 208, 225, 242, 242, 239, 237, 238, 240, 240, 239, 236, 231, 227, 227, 227, 235, 242, 244, 246, 247, 248, 248, 251, 251, 251, 251, 251, 250, 248, 245, 244, 245, 245, 245, 244, 244, 244, 244, 244, 244, 245, 246, 246, 245, 241, 235, 233, 229, 197, 154, 107, 88, 89, 89, 90, 90, 91, 91, 91, 92, 92, 92, 92, 91, 91, 91, 91, 91, 90, 86, 78, 70, 59, 49, 40, 34, 31, 31, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 114, 113, 110, 123, 116, 131, 134, 133, 123, 115, 121, 117, 130, 136, 127, 113, 40, 83, 69, 26, 27, 20, 25, 24, 25, 22, 19, 18, 18, 37, 41, 41, 39, 40, 26, 18, 22, 26, 34, 41, 40, 41, 41, 42, 50, 54, 100, 98, 135, 227, 246, 247, 247, 247, 247, 247, 247, 245, 242, 239, 231, 224, 221, 220, 225, 231, 235, 236, 238, 240, 241, 244, 245, 245, 246, 180, 180, 246, 247, 245, 225, 210, 181, 108, 130, 182, 159, 69, 60, 75, 87, 86, 74, 64, 58, 50, 49, 41, 29, 28, 26, 25, 24, 24, 22, 21, 22, 35, 40, 49, 57, 63, 81, 90, 93, 95, 96, 95, 95, 95, 95, 98, 108, 154, 217, 249, 250, 245, 232, 225, 228, 241, 252, 241, 227, 228, 232, 236, 241, 244, 249, 252, 253, 254, 254, 253, 253, 249, 221, 142, 115, 110, 108, 106, 107, 125, 144, 156, 160, 160, 161, 159, 151, 138, 125, 118, 113, 122, 167, 193, 200, 203, 214, 223, 226, 228, 231, 231, 231, 234, 236, 238, 241, 241, 224, 212, 215, 218, 235, 244, 242, 241, 241, 243, 243, 242, 241, 242, 238, 229, 223, 224, 238, 246, 247, 248, 250, 251, 251, 252, 252, 252, 251, 250, 247, 244, 244, 245, 244, 244, 244, 244, 245, 245, 244, 244, 245, 244, 244, 242, 237, 233, 234, 229, 197, 149, 103, 89, 90, 91, 91, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 90, 83, 73, 63, 53, 43, 35, 32, 31, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 117, 114, 114, 108, 126, 134, 129, 117, 107, 121, 121, 118, 129, 135, 134, 88, 38, 102, 63, 26, 25, 20, 24, 24, 24, 25, 19, 18, 17, 31, 41, 41, 41, 41, 39, 19, 18, 21, 25, 39, 41, 41, 41, 41, 51, 57, 65, 127, 115, 194, 245, 247, 247, 247, 247, 247, 247, 245, 242, 237, 228, 224, 219, 221, 227, 233, 236, 237, 239, 241, 242, 244, 245, 246, 246, 232, 144, 233, 247, 246, 243, 219, 210, 154, 94, 163, 183, 159, 70, 59, 78, 85, 90, 87, 77, 66, 58, 50, 44, 32, 28, 27, 25, 25, 25, 23, 22, 22, 20, 30, 33, 37, 48, 71, 77, 82, 85, 87, 91, 94, 96, 141, 218, 238, 226, 215, 209, 209, 215, 221, 232, 246, 231, 223, 222, 224, 227, 231, 235, 239, 243, 247, 251, 253, 254, 254, 254, 253, 249, 244, 184, 120, 127, 141, 154, 158, 159, 157, 152, 145, 139, 128, 118, 130, 143, 169, 176, 193, 195, 206, 214, 212, 224, 225, 226, 229, 231, 232, 233, 234, 235, 238, 239, 241, 226, 216, 224, 217, 227, 243, 244, 242, 241, 244, 245, 245, 246, 247, 248, 240, 225, 220, 228, 245, 249, 250, 251, 251, 251, 251, 251, 251, 251, 247, 244, 242, 242, 243, 243, 242, 243, 246, 247, 247, 247, 246, 245, 244, 242, 239, 233, 233, 236, 231, 195, 144, 101, 91, 91, 92, 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 92, 87, 77, 67, 56, 46, 37, 32, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 121, 115, 115, 115, 124, 132, 123, 120, 105, 107, 110, 110, 124, 135, 133, 86, 37, 117, 62, 25, 23, 21, 21, 24, 23, 25, 20, 19, 17, 23, 41, 41, 40, 40, 41, 33, 16, 18, 22, 27, 41, 41, 41, 41, 50, 62, 68, 119, 136, 148, 238, 247, 247, 247, 247, 247, 247, 245, 243, 239, 228, 225, 220, 223, 229, 235, 237, 239, 240, 241, 243, 241, 243, 246, 247, 246, 196, 188, 247, 247, 245, 235, 214, 207, 122, 107, 181, 183, 160, 72, 83, 122, 87, 89, 92, 91, 82, 72, 61, 52, 37, 32, 31, 27, 25, 24, 22, 21, 21, 21, 22, 20, 20, 19, 16, 19, 23, 27, 33, 82, 178, 233, 213, 204, 203, 204, 205, 211, 217, 227, 242, 227, 223, 221, 221, 223, 224, 226, 229, 234, 239, 243, 248, 252, 254, 254, 254, 254, 252, 250, 249, 211, 149, 141, 134, 125, 117, 114, 116, 116, 113, 128, 155, 181, 188, 190, 197, 200, 198, 212, 217, 221, 225, 225, 226, 228, 231, 231, 230, 230, 233, 236, 238, 239, 220, 220, 227, 219, 223, 240, 241, 240, 241, 241, 243, 244, 246, 247, 247, 245, 235, 223, 226, 237, 248, 248, 248, 248, 248, 246, 247, 246, 246, 243, 241, 241, 244, 244, 241, 240, 241, 245, 247, 248, 247, 247, 246, 243, 241, 234, 232, 234, 238, 233, 193, 141, 100, 92, 92, 93, 93, 94, 94, 94, 95, 94, 94, 94, 94, 94, 92, 84, 72, 60, 48, 38, 31, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 114, 113, 115, 116, 116, 132, 123, 121, 110, 121, 121, 115, 121, 130, 130, 78, 62, 120, 64, 24, 22, 20, 19, 23, 23, 24, 23, 18, 18, 19, 35, 41, 41, 40, 39, 41, 25, 15, 19, 21, 32, 41, 41, 40, 47, 66, 70, 94, 174, 131, 207, 246, 247, 247, 247, 247, 247, 245, 243, 240, 230, 227, 223, 228, 232, 236, 239, 240, 241, 242, 244, 236, 228, 242, 247, 247, 244, 157, 231, 247, 246, 241, 227, 211, 193, 91, 149, 183, 183, 162, 75, 72, 150, 141, 86, 89, 95, 95, 93, 85, 75, 61, 53, 50, 51, 49, 45, 44, 44, 44, 43, 39, 34, 29, 27, 26, 28, 42, 114, 218, 218, 202, 202, 202, 203, 203, 207, 209, 221, 241, 228, 223, 221, 221, 221, 221, 221, 222, 225, 229, 235, 239, 244, 249, 253, 254, 254, 254, 254, 252, 250, 249, 199, 115, 113, 108, 105, 105, 105, 146, 176, 188, 188, 192, 194, 195, 201, 207, 210, 217, 222, 225, 221, 222, 225, 228, 231, 231, 231, 231, 231, 233, 238, 231, 215, 227, 228, 217, 220, 236, 236, 237, 238, 240, 239, 240, 242, 244, 243, 241, 241, 233, 225, 228, 242, 246, 245, 244, 244, 241, 241, 242, 241, 238, 240, 242, 246, 246, 242, 238, 239, 243, 246, 246, 246, 245, 244, 242, 237, 233, 233, 237, 242, 234, 192, 140, 100, 93, 94, 94, 94, 95, 95, 95, 95, 95, 95, 95, 95, 91, 80, 66, 53, 42, 32, 27, 28, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 30, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 113, 114, 115, 113, 110, 130, 122, 120, 115, 121, 121, 121, 117, 123, 119, 60, 84, 119, 67, 23, 21, 20, 19, 20, 23, 24, 25, 19, 18, 19, 27, 41, 41, 40, 39, 40, 39, 19, 15, 20, 21, 37, 40, 40, 42, 68, 75, 74, 177, 152, 174, 245, 246, 246, 247, 247, 247, 246, 245, 241, 234, 229, 229, 231, 236, 238, 240, 241, 242, 243, 244, 245, 217, 234, 239, 247, 247, 229, 168, 246, 246, 243, 234, 220, 204, 162, 87, 176, 183, 183, 166, 79, 67, 147, 168, 86, 70, 82, 96, 100, 100, 96, 89, 82, 72, 65, 61, 56, 58, 63, 64, 63, 61, 73, 97, 82, 133, 158, 211, 198, 168, 184, 201, 202, 202, 204, 208, 210, 235, 233, 224, 221, 221, 221, 220, 220, 220, 221, 222, 225, 231, 236, 241, 246, 251, 253, 254, 254, 254, 254, 252, 251, 249, 173, 89, 82, 88, 101, 117, 125, 127, 136, 147, 158, 178, 194, 198, 206, 211, 217, 218, 225, 224, 222, 225, 227, 230, 231, 231, 231, 231, 230, 234, 214, 222, 229, 227, 212, 221, 234, 234, 237, 237, 239, 237, 236, 237, 241, 241, 237, 238, 242, 227, 220, 233, 244, 242, 242, 242, 240, 239, 241, 241, 239, 241, 244, 248, 248, 243, 238, 237, 241, 242, 242, 242, 243, 241, 240, 234, 232, 234, 239, 245, 233, 192, 141, 101, 94, 95, 95, 95, 95, 95, 95, 95, 95, 96, 95, 89, 75, 61, 47, 35, 27, 26, 27, 28, 29, 29, 29, 29, 29, 29, 29, 29, 30, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 113, 115, 115, 112, 112, 116, 124, 120, 120, 117, 119, 117, 120, 118, 113, 52, 98, 120, 72, 23, 21, 20, 19, 17, 22, 24, 25, 21, 17, 19, 22, 37, 41, 40, 39, 37, 39, 35, 17, 56, 21, 24, 40, 40, 40, 65, 79, 76, 155, 179, 143, 238, 246, 246, 247, 247, 247, 247, 245, 244, 240, 233, 235, 237, 239, 240, 241, 241, 243, 244, 245, 246, 230, 202, 239, 247, 247, 247, 203, 203, 246, 244, 237, 227, 208, 183, 151, 109, 183, 183, 183, 171, 87, 67, 130, 174, 110, 87, 100, 94, 92, 90, 89, 90, 91, 89, 84, 78, 84, 82, 95, 94, 158, 150, 144, 153, 176, 189, 156, 135, 146, 148, 199, 202, 203, 207, 197, 220, 232, 224, 222, 221, 221, 220, 220, 219, 219, 220, 220, 222, 228, 233, 239, 244, 249, 253, 254, 254, 254, 254, 254, 252, 251, 243, 137, 111, 114, 121, 129, 138, 145, 150, 156, 161, 159, 155, 168, 184, 203, 209, 213, 223, 221, 220, 224, 227, 229, 231, 231, 231, 231, 232, 213, 206, 213, 225, 218, 210, 229, 237, 236, 238, 240, 241, 238, 235, 235, 240, 242, 238, 240, 244, 232, 212, 224, 243, 243, 243, 243, 242, 241, 242, 243, 243, 244, 247, 248, 246, 243, 239, 237, 238, 239, 239, 239, 240, 240, 236, 230, 232, 237, 244, 246, 234, 194, 143, 103, 94, 95, 96, 96, 96, 96, 96, 97, 96, 95, 88, 73, 57, 43, 30, 24, 24, 26, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 111, 113, 115, 111, 111, 108, 118, 115, 114, 112, 112, 111, 107, 104, 118, 42, 108, 118, 73, 23, 20, 19, 19, 18, 20, 23, 24, 24, 18, 17, 20, 28, 40, 40, 39, 38, 32, 39, 26, 52, 89, 20, 30, 40, 40, 57, 80, 82, 132, 187, 145, 226, 246, 246, 247, 247, 247, 247, 246, 246, 244, 240, 239, 241, 241, 242, 242, 243, 244, 245, 246, 246, 246, 245, 247, 247, 247, 247, 243, 175, 224, 244, 239, 230, 215, 183, 182, 133, 151, 183, 183, 183, 175, 103, 72, 120, 179, 139, 114, 116, 116, 116, 112, 110, 125, 146, 176, 202, 206, 181, 166, 148, 145, 159, 152, 160, 153, 141, 145, 146, 145, 145, 169, 203, 205, 200, 205, 225, 224, 222, 221, 221, 221, 220, 219, 219, 219, 219, 220, 220, 225, 231, 236, 241, 247, 251, 253, 254, 254, 254, 254, 254, 252, 251, 222, 119, 115, 120, 128, 136, 141, 149, 158, 175, 193, 206, 215, 219, 202, 188, 202, 219, 219, 219, 223, 226, 228, 230, 231, 232, 232, 209, 189, 186, 201, 218, 210, 227, 235, 240, 239, 241, 242, 242, 237, 234, 236, 242, 244, 243, 244, 246, 234, 204, 215, 243, 244, 244, 246, 244, 244, 244, 245, 246, 247, 248, 246, 244, 241, 238, 237, 237, 237, 237, 237, 237, 237, 231, 229, 233, 239, 246, 246, 235, 198, 149, 107, 96, 96, 97, 96, 96, 97, 97, 97, 94, 86, 72, 56, 40, 27, 23, 24, 26, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 110, 112, 114, 111, 111, 111, 110, 112, 113, 114, 113, 112, 108, 120, 117, 43, 114, 107, 78, 23, 20, 19, 19, 19, 17, 22, 23, 25, 20, 16, 19, 23, 35, 39, 39, 39, 34, 32, 35, 26, 101, 91, 20, 35, 40, 49, 79, 83, 121, 186, 176, 213, 242, 246, 247, 247, 247, 247, 247, 246, 245, 244, 243, 244, 244, 244, 244, 244, 245, 246, 247, 247, 247, 247, 247, 247, 247, 247, 246, 227, 180, 226, 241, 233, 218, 184, 182, 181, 115, 176, 183, 183, 183, 181, 124, 78, 111, 174, 161, 116, 117, 111, 110, 123, 200, 227, 239, 233, 208, 178, 118, 130, 132, 134, 144, 145, 145, 146, 145, 145, 145, 145, 136, 201, 205, 189, 222, 224, 223, 221, 222, 221, 221, 220, 219, 219, 219, 219, 220, 220, 223, 228, 233, 238, 244, 249, 252, 254, 254, 254, 254, 254, 254, 253, 252, 175, 105, 104, 109, 117, 128, 139, 149, 156, 165, 184, 204, 220, 225, 225, 207, 190, 209, 218, 221, 225, 227, 228, 230, 228, 196, 174, 175, 182, 205, 210, 232, 237, 239, 240, 241, 241, 241, 238, 233, 234, 239, 244, 246, 246, 246, 246, 235, 199, 211, 242, 246, 245, 245, 244, 244, 245, 246, 246, 247, 247, 244, 240, 237, 236, 236, 235, 235, 235, 235, 235, 232, 227, 229, 235, 243, 247, 246, 237, 203, 156, 115, 97, 97, 97, 97, 97, 97, 97, 92, 84, 70, 54, 38, 26, 23, 24, 26, 27, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 26, 25, 26, 27, 29, 29, 29, 29, 29, 28, 110, 111, 112, 111, 110, 109, 110, 110, 112, 114, 112, 111, 127, 122, 114, 55, 107, 111, 88, 23, 20, 19, 19, 19, 18, 20, 23, 24, 24, 18, 16, 21, 28, 38, 39, 39, 39, 25, 37, 39, 48, 126, 96, 24, 37, 40, 73, 85, 134, 177, 199, 216, 232, 239, 245, 246, 247, 247, 247, 247, 247, 246, 246, 245, 245, 245, 245, 245, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 244, 213, 196, 212, 234, 220, 185, 182, 183, 178, 118, 176, 183, 183, 183, 184, 149, 87, 93, 153, 176, 163, 165, 174, 165, 170, 230, 240, 210, 180, 92, 81, 116, 145, 145, 140, 120, 115, 138, 146, 145, 145, 145, 139, 178, 193, 206, 222, 223, 221, 223, 225, 222, 221, 219, 219, 219, 219, 219, 219, 220, 222, 226, 231, 235, 240, 246, 250, 252, 254, 254, 254, 254, 254, 254, 254, 240, 98, 79, 76, 76, 77, 79, 84, 97, 115, 132, 150, 168, 190, 212, 225, 224, 196, 207, 220, 224, 226, 228, 213, 177, 171, 174, 176, 182, 207, 233, 237, 237, 238, 237, 240, 241, 241, 234, 229, 232, 238, 242, 244, 245, 245, 245, 230, 200, 216, 243, 247, 246, 244, 244, 245, 244, 244, 243, 244, 244, 241, 236, 235, 234, 234, 235, 235, 234, 234, 233, 227, 226, 231, 239, 246, 246, 245, 239, 211, 167, 125, 100, 97, 97, 97, 98, 97, 90, 80, 67, 52, 37, 26, 22, 23, 25, 27, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 26, 24, 22, 24, 27, 29, 29, 29, 29, 28, 27, 109, 110, 111, 111, 109, 110, 110, 111, 111, 115, 113, 123, 130, 124, 113, 68, 110, 110, 93, 23, 21, 19, 19, 18, 19, 17, 22, 23, 25, 24, 17, 19, 24, 31, 39, 39, 39, 31, 26, 39, 45, 93, 128, 106, 36, 37, 65, 83, 135, 169, 198, 221, 225, 230, 240, 245, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 237, 209, 214, 197, 213, 187, 182, 182, 142, 79, 110, 170, 183, 183, 183, 183, 170, 110, 92, 121, 170, 180, 172, 181, 164, 197, 196, 189, 89, 85, 101, 143, 133, 114, 94, 86, 95, 131, 146, 145, 145, 146, 146, 159, 192, 221, 223, 222, 222, 227, 226, 221, 221, 220, 220, 220, 220, 219, 219, 220, 220, 224, 228, 233, 237, 243, 248, 252, 253, 254, 254, 254, 255, 255, 255, 254, 183, 93, 121, 143, 116, 121, 136, 92, 82, 79, 81, 96, 124, 147, 174, 210, 224, 203, 209, 221, 211, 180, 166, 173, 174, 173, 183, 214, 224, 222, 223, 220, 219, 216, 219, 222, 225, 223, 222, 224, 226, 230, 232, 234, 236, 237, 220, 203, 225, 244, 246, 246, 245, 245, 244, 242, 239, 238, 239, 239, 237, 234, 234, 234, 234, 236, 235, 234, 233, 230, 225, 227, 234, 243, 245, 245, 245, 238, 218, 179, 138, 110, 98, 98, 98, 96, 88, 77, 63, 49, 34, 26, 23, 23, 25, 27, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 27, 23, 20, 20, 24, 27, 29, 29, 28, 27, 26, 25, 110, 110, 111, 112, 111, 110, 110, 111, 112, 114, 113, 121, 115, 120, 102, 77, 110, 110, 101, 22, 21, 19, 19, 19, 18, 18, 20, 23, 24, 29, 21, 16, 23, 27, 34, 39, 39, 33, 31, 29, 43, 57, 119, 128, 120, 65, 48, 75, 126, 161, 171, 211, 224, 225, 231, 243, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 231, 205, 223, 194, 156, 134, 119, 138, 175, 170, 82, 146, 183, 183, 183, 183, 182, 147, 100, 97, 133, 169, 183, 156, 141, 188, 93, 85, 84, 128, 110, 86, 84, 85, 95, 108, 137, 146, 145, 145, 145, 146, 143, 211, 221, 222, 221, 227, 231, 224, 221, 221, 221, 221, 220, 221, 220, 220, 219, 220, 221, 226, 230, 235, 239, 245, 250, 253, 254, 254, 254, 255, 255, 255, 255, 241, 178, 179, 178, 174, 173, 175, 177, 175, 170, 162, 153, 137, 117, 115, 135, 182, 218, 185, 172, 164, 169, 171, 174, 172, 190, 212, 219, 224, 227, 230, 232, 233, 234, 234, 235, 235, 234, 233, 232, 229, 227, 225, 222, 221, 219, 210, 207, 222, 236, 240, 243, 245, 245, 243, 237, 234, 234, 234, 234, 233, 232, 232, 232, 234, 234, 234, 232, 230, 225, 224, 229, 238, 245, 245, 245, 244, 238, 222, 191, 153, 123, 102, 98, 94, 87, 74, 60, 46, 32, 25, 23, 22, 24, 27, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 25, 20, 19, 20, 25, 28, 29, 28, 25, 22, 22, 22, 110, 110, 111, 112, 113, 111, 110, 111, 112, 114, 114, 111, 112, 108, 104, 83, 109, 109, 108, 25, 21, 19, 19, 19, 18, 18, 17, 22, 23, 27, 33, 18, 17, 23, 27, 34, 38, 33, 38, 25, 33, 53, 79, 127, 128, 122, 61, 79, 76, 64, 63, 158, 224, 224, 225, 237, 246, 246, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 245, 230, 201, 198, 185, 182, 183, 184, 184, 184, 159, 72, 101, 153, 178, 183, 184, 183, 178, 146, 117, 90, 103, 106, 157, 92, 84, 83, 81, 93, 111, 117, 107, 95, 97, 120, 145, 146, 145, 145, 145, 146, 134, 214, 220, 221, 225, 232, 228, 221, 221, 221, 221, 221, 221, 222, 222, 220, 219, 220, 220, 224, 228, 233, 238, 243, 248, 252, 253, 254, 254, 255, 255, 255, 254, 253, 200, 183, 178, 182, 182, 182, 182, 182, 183, 183, 185, 190, 191, 179, 155, 157, 191, 193, 205, 208, 213, 222, 226, 231, 233, 233, 232, 232, 231, 232, 232, 234, 235, 234, 233, 231, 229, 227, 226, 224, 223, 222, 221, 220, 218, 216, 215, 216, 220, 223, 228, 233, 237, 238, 234, 231, 231, 231, 230, 230, 230, 230, 230, 232, 232, 230, 229, 224, 218, 223, 232, 243, 244, 245, 244, 244, 237, 223, 201, 168, 139, 114, 96, 86, 72, 58, 43, 31, 25, 23, 23, 24, 27, 28, 29, 29, 29, 30, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 24, 20, 19, 22, 27, 29, 27, 23, 19, 18, 18, 21, 111, 111, 111, 111, 112, 112, 111, 111, 111, 112, 113, 111, 110, 109, 105, 87, 109, 109, 110, 48, 21, 19, 19, 19, 18, 18, 18, 19, 22, 24, 34, 28, 18, 16, 20, 27, 35, 32, 38, 37, 30, 42, 60, 102, 128, 127, 106, 35, 41, 75, 82, 89, 133, 214, 224, 229, 245, 245, 245, 246, 246, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 243, 232, 207, 185, 181, 182, 184, 184, 184, 184, 150, 77, 82, 100, 130, 145, 166, 181, 181, 181, 179, 174, 157, 109, 69, 74, 69, 68, 105, 136, 141, 141, 137, 138, 142, 144, 145, 145, 145, 146, 146, 134, 209, 220, 222, 232, 231, 222, 221, 221, 221, 221, 222, 223, 223, 222, 221, 220, 219, 220, 221, 227, 231, 236, 240, 245, 251, 253, 254, 254, 255, 255, 255, 254, 254, 231, 154, 157, 157, 160, 160, 167, 163, 159, 151, 154, 151, 147, 148, 159, 172, 177, 183, 192, 202, 212, 216, 220, 223, 226, 223, 214, 207, 203, 203, 202, 199, 187, 174, 165, 160, 156, 156, 157, 159, 164, 171, 178, 182, 179, 174, 180, 191, 193, 196, 202, 207, 208, 213, 218, 223, 227, 229, 229, 229, 230, 230, 230, 230, 229, 224, 212, 198, 205, 222, 237, 243, 243, 244, 244, 242, 235, 221, 204, 182, 157, 126, 96, 73, 56, 41, 29, 24, 23, 23, 24, 26, 28, 29, 29, 30, 30, 30, 30, 30, 30, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 28, 27, 28, 29, 29, 29, 27, 23, 21, 21, 25, 28, 26, 22, 17, 15, 16, 18, 22, 112, 111, 111, 111, 111, 111, 111, 111, 111, 111, 112, 113, 113, 109, 106, 93, 108, 108, 108, 68, 22, 19, 18, 18, 18, 17, 18, 17, 21, 23, 28, 39, 23, 17, 15, 19, 28, 30, 39, 39, 34, 42, 56, 66, 118, 125, 98, 27, 118, 115, 99, 132, 154, 134, 220, 220, 244, 245, 245, 244, 244, 245, 245, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 244, 234, 217, 185, 181, 182, 182, 183, 184, 183, 183, 152, 85, 90, 96, 100, 100, 100, 117, 134, 142, 101, 81, 80, 60, 55, 53, 81, 97, 134, 141, 141, 141, 142, 142, 143, 143, 143, 143, 141, 137, 121, 208, 220, 228, 231, 223, 221, 221, 221, 222, 226, 226, 226, 225, 224, 221, 220, 219, 220, 220, 225, 229, 234, 238, 243, 248, 252, 254, 254, 255, 255, 254, 254, 254, 253, 174, 163, 162, 153, 150, 153, 148, 144, 143, 145, 146, 148, 149, 149, 153, 159, 164, 166, 169, 173, 182, 194, 207, 211, 185, 162, 147, 137, 131, 125, 121, 121, 120, 120, 121, 121, 122, 124, 127, 142, 156, 165, 175, 183, 166, 160, 172, 151, 154, 176, 182, 158, 153, 165, 181, 198, 215, 225, 227, 227, 227, 227, 227, 218, 194, 164, 162, 191, 224, 241, 242, 242, 242, 241, 239, 232, 218, 203, 190, 164, 125, 87, 58, 40, 29, 24, 23, 23, 24, 25, 28, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 27, 26, 26, 27, 28, 29, 28, 25, 23, 22, 24, 27, 27, 22, 17, 14, 14, 18, 22, 26, 111, 111, 112, 112, 111, 110, 111, 111, 111, 111, 112, 113, 115, 111, 106, 95, 108, 108, 108, 84, 22, 19, 19, 18, 19, 17, 17, 19, 17, 22, 24, 34, 36, 18, 16, 14, 18, 24, 37, 39, 39, 33, 62, 67, 80, 116, 45, 25, 58, 81, 114, 147, 170, 182, 203, 215, 239, 245, 246, 244, 243, 244, 245, 245, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 245, 244, 233, 215, 178, 181, 181, 182, 182, 183, 183, 183, 183, 164, 105, 94, 99, 101, 100, 98, 78, 110, 57, 76, 70, 48, 48, 61, 69, 74, 86, 104, 118, 124, 128, 131, 128, 125, 122, 117, 105, 119, 147, 217, 221, 229, 222, 221, 221, 221, 224, 230, 231, 229, 228, 227, 225, 223, 221, 220, 220, 220, 223, 227, 232, 236, 241, 247, 251, 253, 254, 255, 255, 255, 254, 254, 254, 207, 160, 157, 157, 158, 158, 158, 159, 160, 160, 158, 157, 157, 156, 156, 156, 156, 156, 157, 158, 160, 162, 166, 170, 173, 172, 170, 170, 173, 177, 179, 180, 178, 169, 153, 159, 169, 181, 189, 206, 212, 215, 217, 227, 226, 223, 226, 209, 206, 211, 203, 157, 124, 111, 116, 134, 163, 192, 214, 224, 225, 225, 215, 181, 136, 104, 135, 192, 232, 239, 240, 240, 239, 238, 234, 227, 214, 201, 179, 148, 107, 68, 41, 28, 23, 22, 23, 24, 25, 27, 28, 29, 30, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30, 29, 29, 29, 29, 29, 29, 29, 29, 28, 26, 25, 24, 26, 27, 29, 28, 24, 23, 24, 27, 27, 23, 17, 13, 14, 17, 22, 27, 28, 112, 111, 110, 111, 110, 109, 110, 110, 110, 110, 111, 112, 117, 114, 107, 96, 107, 107, 107, 99, 20, 19, 20, 19, 19, 18, 17, 18, 18, 18, 23, 27, 39, 30, 17, 16, 14, 16, 30, 38, 39, 40, 42, 81, 72, 95, 18, 30, 60, 109, 108, 135, 188, 196, 217, 223, 226, 232, 240, 241, 242, 244, 244, 245, 245, 246, 247, 246, 242, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 245, 243, 230, 206, 179, 182, 181, 182, 182, 182, 182, 182, 182, 182, 182, 163, 155, 153, 138, 84, 78, 79, 67, 58, 52, 50, 62, 74, 81, 81, 76, 69, 70, 77, 81, 82, 83, 80, 73, 99, 173, 219, 219, 212, 227, 223, 221, 221, 223, 228, 232, 233, 232, 231, 230, 228, 227, 225, 222, 220, 220, 221, 223, 226, 230, 235, 239, 245, 251, 252, 254, 255, 255, 255, 255, 255, 255, 238, 153, 157, 156, 156, 156, 156, 156, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 156, 156, 157, 157, 156, 156, 155, 156, 156, 157, 159, 173, 214, 229, 229, 223, 215, 208, 210, 219, 230, 232, 233, 235, 236, 237, 238, 238, 237, 234, 225, 204, 179, 137, 110, 100, 105, 130, 164, 198, 218, 217, 186, 130, 74, 79, 148, 213, 235, 237, 238, 237, 236, 234, 229, 221, 208, 186, 152, 115, 76, 44, 28, 23, 22, 23, 23, 25, 26, 28, 29, 29, 30, 29, 29, 30, 29, 29, 30, 30, 30, 30, 30, 30, 29, 29, 29, 29, 29, 29, 29, 28, 26, 24, 23, 25, 27, 28, 26, 24, 24, 25, 28, 25, 19, 14, 13, 17, 23, 27, 29, 29, 111, 111, 110, 109, 109, 109, 109, 109, 109, 110, 111, 111, 117, 117, 110, 94, 107, 107, 107, 107, 39, 19, 20, 19, 19, 19, 17, 17, 18, 17, 20, 24, 32, 38, 24, 16, 15, 14, 15, 31, 39, 39, 52, 51, 96, 76, 13, 57, 65, 80, 119, 164, 204, 198, 217, 222, 225, 226, 231, 238, 240, 241, 243, 244, 244, 245, 246, 219, 239, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 245, 245, 241, 226, 190, 182, 182, 182, 181, 181, 182, 182, 182, 182, 183, 182, 159, 149, 113, 79, 82, 81, 80, 80, 80, 81, 82, 84, 85, 84, 83, 84, 81, 65, 69, 68, 65, 70, 72, 73, 74, 75, 126, 193, 229, 229, 222, 223, 227, 231, 233, 234, 234, 233, 232, 231, 230, 228, 226, 223, 220, 220, 221, 222, 225, 229, 233, 237, 243, 250, 252, 253, 255, 255, 255, 255, 255, 255, 253, 147, 128, 132, 138, 142, 148, 152, 154, 155, 156, 156, 156, 156, 156, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 156, 159, 187, 229, 232, 234, 236, 234, 229, 222, 215, 221, 232, 236, 235, 232, 231, 235, 232, 231, 227, 224, 220, 204, 183, 157, 127, 101, 104, 141, 185, 198, 150, 83, 50, 104, 183, 227, 233, 233, 233, 232, 231, 228, 223, 213, 192, 157, 116, 76, 44, 29, 23, 22, 23, 23, 24, 26, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 30, 29, 29, 29, 29, 29, 29, 27, 25, 23, 22, 24, 26, 25, 22, 21, 24, 27, 27, 22, 17, 16, 17, 23, 27, 29, 29, 29, 110, 109, 109, 109, 109, 109, 109, 109, 109, 109, 110, 111, 115, 118, 115, 91, 107, 107, 107, 107, 68, 20, 25, 19, 19, 19, 17, 17, 18, 17, 16, 21, 26, 36, 36, 19, 16, 15, 14, 16, 28, 38, 42, 65, 58, 111, 38, 80, 130, 96, 93, 183, 158, 187, 217, 220, 223, 227, 230, 235, 239, 240, 242, 243, 244, 245, 246, 240, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 246, 245, 245, 238, 222, 178, 182, 182, 182, 182, 182, 181, 182, 182, 183, 176, 166, 98, 75, 82, 81, 80, 80, 85, 109, 128, 135, 140, 134, 111, 96, 92, 88, 84, 67, 73, 73, 75, 71, 69, 76, 77, 78, 81, 89, 170, 222, 222, 226, 229, 231, 233, 233, 233, 233, 233, 232, 230, 228, 227, 224, 220, 220, 220, 221, 224, 227, 231, 235, 240, 250, 252, 252, 255, 255, 255, 255, 255, 255, 255, 182, 104, 104, 106, 108, 108, 109, 111, 115, 119, 122, 124, 126, 128, 131, 135, 138, 141, 146, 152, 155, 155, 155, 155, 155, 155, 155, 155, 156, 157, 160, 191, 229, 235, 230, 228, 229, 230, 226, 223, 215, 208, 221, 233, 231, 224, 228, 227, 231, 224, 222, 216, 223, 225, 215, 198, 163, 122, 97, 133, 152, 114, 58, 65, 143, 209, 226, 228, 228, 228, 227, 224, 221, 214, 194, 160, 120, 78, 47, 31, 23, 22, 22, 23, 24, 25, 27, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 29, 29, 29, 29, 29, 29, 28, 25, 23, 22, 24, 24, 21, 18, 18, 22, 26, 25, 21, 19, 19, 22, 27, 29, 29, 29, 30, 109, 109, 108, 108, 108, 109, 109, 109, 109, 109, 109, 109, 112, 118, 117, 90, 107, 106, 106, 106, 90, 21, 48, 20, 18, 19, 18, 17, 17, 17, 17, 16, 23, 30, 38, 33, 16, 17, 40, 51, 14, 23, 36, 52, 74, 56, 65, 53, 142, 186, 203, 229, 210, 203, 214, 215, 219, 225, 230, 233, 237, 240, 240, 242, 243, 244, 245, 245, 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 246, 245, 245, 243, 233, 216, 159, 181, 181, 182, 182, 182, 182, 182, 182, 161, 215, 136, 70, 84, 82, 81, 92, 120, 141, 146, 146, 146, 142, 138, 137, 132, 106, 93, 90, 78, 121, 106, 77, 74, 80, 76, 71, 78, 79, 82, 92, 115, 169, 201, 213, 220, 219, 220, 225, 231, 234, 231, 230, 228, 227, 222, 219, 219, 219, 221, 222, 226, 229, 232, 237, 250, 251, 251, 254, 255, 255, 255, 255, 255, 255, 211, 111, 107, 107, 108, 110, 113, 117, 120, 122, 125, 126, 128, 133, 138, 144, 149, 152, 154, 155, 155, 155, 155, 155, 155, 155, 155, 156, 157, 173, 189, 219, 233, 225, 215, 215, 216, 214, 213, 221, 222, 217, 207, 209, 225, 226, 228, 228, 229, 225, 219, 207, 227, 231, 229, 227, 222, 190, 133, 95, 107, 88, 51, 96, 177, 217, 220, 222, 222, 222, 220, 218, 213, 195, 161, 121, 80, 49, 32, 23, 22, 22, 23, 24, 25, 27, 28, 29, 30, 31, 31, 30, 30, 30, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 29, 29, 29, 29, 28, 27, 25, 22, 22, 23, 21, 18, 15, 16, 20, 23, 24, 23, 23, 25, 27, 29, 29, 29, 30, 30, 109, 108, 108, 108, 108, 108, 108, 108, 109, 109, 109, 109, 110, 116, 118, 95, 107, 106, 106, 106, 105, 33, 68, 27, 18, 19, 19, 17, 16, 17, 17, 17, 15, 24, 34, 38, 29, 16, 16, 92, 65, 25, 19, 30, 59, 74, 75, 34, 130, 180, 214, 228, 226, 212, 211, 210, 214, 221, 228, 232, 235, 237, 240, 241, 243, 244, 244, 245, 246, 246, 247, 247, 247, 247, 247, 247, 246, 245, 245, 245, 244, 238, 226, 205, 153, 181, 180, 181, 182, 182, 181, 179, 204, 211, 203, 136, 92, 90, 91, 126, 144, 140, 147, 157, 164, 170, 175, 178, 178, 156, 133, 123, 99, 93, 156, 192, 188, 171, 146, 104, 82, 77, 81, 90, 93, 104, 114, 117, 126, 134, 143, 146, 144, 145, 153, 162, 171, 176, 180, 183, 188, 217, 219, 220, 222, 224, 226, 230, 233, 252, 254, 254, 255, 255, 255, 255, 255, 255, 255, 237, 95, 92, 92, 98, 103, 106, 108, 110, 112, 115, 117, 121, 124, 127, 130, 133, 136, 138, 141, 144, 148, 150, 152, 153, 153, 154, 161, 177, 207, 216, 217, 212, 189, 167, 162, 168, 181, 195, 199, 204, 220, 222, 212, 196, 216, 229, 228, 226, 224, 208, 206, 230, 229, 226, 227, 225, 219, 184, 120, 98, 80, 59, 132, 198, 211, 213, 214, 215, 214, 213, 209, 195, 161, 120, 80, 51, 34, 24, 22, 22, 23, 23, 25, 27, 28, 29, 29, 30, 31, 31, 31, 31, 31, 30, 30, 29, 29, 29, 29, 29, 30, 30, 30, 30, 29, 29, 29, 29, 28, 27, 25, 22, 21, 21, 19, 16, 13, 15, 19, 22, 24, 25, 27, 29, 29, 29, 29, 30, 30, 30, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 109, 114, 118, 99, 110, 107, 107, 107, 107, 73, 50, 77, 20, 18, 20, 18, 16, 16, 17, 17, 17, 16, 25, 34, 31, 23, 15, 37, 100, 71, 58, 70, 31, 58, 92, 100, 97, 157, 190, 209, 212, 211, 208, 209, 210, 217, 224, 229, 232, 234, 237, 240, 240, 243, 244, 244, 245, 245, 245, 245, 245, 245, 245, 246, 245, 245, 244, 243, 240, 232, 219, 183, 165, 180, 181, 182, 183, 170, 205, 249, 206, 240, 168, 167, 165, 120, 120, 148, 166, 197, 220, 227, 226, 222, 218, 211, 191, 192, 189, 164, 135, 110, 144, 219, 219, 214, 203, 206, 188, 154, 69, 66, 83, 88, 90, 91, 92, 94, 99, 115, 130, 142, 147, 147, 147, 147, 147, 148, 146, 219, 219, 220, 221, 223, 224, 227, 232, 252, 252, 251, 250, 251, 251, 253, 255, 255, 255, 251, 136, 86, 79, 77, 80, 89, 95, 100, 103, 106, 107, 107, 108, 108, 108, 108, 108, 108, 108, 108, 109, 109, 111, 114, 119, 128, 142, 160, 175, 180, 183, 180, 166, 158, 157, 157, 157, 158, 164, 178, 186, 204, 221, 208, 187, 205, 226, 225, 220, 200, 217, 228, 225, 220, 219, 219, 216, 197, 138, 107, 74, 86, 166, 200, 204, 206, 207, 207, 206, 204, 192, 158, 119, 80, 53, 36, 25, 22, 22, 22, 23, 24, 26, 28, 29, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 30, 29, 29, 29, 29, 29, 30, 30, 30, 29, 29, 29, 29, 29, 28, 25, 23, 21, 20, 19, 16, 15, 15, 19, 23, 25, 28, 29, 29, 29, 29, 30, 30, 30, 30, 108, 107, 108, 108, 107, 108, 108, 108, 108, 108, 108, 108, 109, 111, 117, 103, 116, 109, 108, 107, 107, 98, 23, 99, 44, 18, 19, 20, 18, 16, 17, 17, 17, 17, 16, 21, 26, 23, 19, 15, 12, 18, 18, 64, 91, 97, 120, 126, 79, 115, 166, 197, 208, 210, 206, 207, 209, 214, 221, 225, 229, 231, 234, 236, 239, 240, 242, 244, 244, 244, 245, 245, 245, 245, 245, 245, 244, 244, 242, 239, 233, 223, 214, 151, 137, 175, 178, 169, 199, 243, 252, 239, 220, 195, 165, 180, 187, 189, 188, 197, 220, 241, 247, 249, 251, 247, 234, 234, 249, 252, 248, 241, 207, 144, 128, 219, 221, 214, 211, 204, 201, 198, 154, 70, 64, 85, 89, 91, 91, 92, 93, 93, 93, 94, 110, 128, 142, 146, 146, 146, 138, 208, 219, 219, 221, 222, 224, 226, 227, 230, 229, 229, 231, 234, 237, 240, 245, 252, 255, 255, 231, 130, 77, 73, 72, 73, 73, 74, 75, 77, 84, 90, 95, 101, 106, 108, 108, 108, 108, 108, 109, 110, 111, 112, 123, 133, 144, 153, 158, 158, 157, 157, 156, 156, 155, 155, 155, 156, 156, 156, 158, 165, 178, 210, 211, 182, 193, 221, 210, 206, 218, 223, 221, 215, 213, 213, 212, 186, 125, 108, 76, 124, 187, 196, 197, 198, 199, 199, 198, 189, 157, 116, 80, 55, 37, 25, 22, 22, 23, 23, 24, 25, 28, 29, 29, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 30, 29, 29, 29, 29, 29, 30, 30, 30, 29, 29, 29, 29, 28, 25, 23, 21, 20, 19, 17, 15, 17, 20, 24, 28, 29, 29, 29, 30, 30, 30, 30, 30, 30, 108, 107, 107, 107, 107, 107, 107, 108, 108, 108, 108, 108, 109, 109, 117, 104, 119, 115, 109, 109, 108, 108, 57, 80, 94, 21, 18, 20, 20, 16, 16, 17, 17, 17, 18, 17, 16, 20, 19, 17, 14, 12, 16, 17, 16, 24, 33, 65, 83, 125, 144, 187, 205, 210, 205, 205, 208, 212, 217, 221, 224, 228, 231, 233, 235, 238, 240, 241, 242, 244, 243, 244, 244, 244, 244, 243, 243, 241, 237, 232, 224, 215, 207, 91, 46, 128, 178, 205, 223, 244, 249, 204, 228, 143, 178, 189, 191, 191, 197, 219, 236, 244, 248, 250, 241, 240, 253, 254, 254, 253, 253, 250, 242, 224, 162, 206, 222, 227, 213, 205, 200, 198, 197, 135, 72, 103, 154, 97, 92, 92, 93, 93, 93, 93, 93, 93, 96, 113, 132, 145, 146, 188, 219, 219, 221, 222, 223, 224, 221, 224, 234, 240, 247, 254, 255, 255, 255, 255, 255, 255, 245, 222, 86, 75, 72, 71, 71, 71, 71, 72, 73, 74, 74, 75, 75, 81, 89, 96, 105, 107, 107, 107, 108, 104, 98, 104, 121, 141, 154, 156, 156, 155, 155, 155, 155, 155, 155, 154, 150, 146, 144, 148, 157, 160, 189, 207, 175, 181, 210, 216, 214, 213, 213, 210, 209, 210, 208, 160, 113, 106, 100, 162, 191, 193, 193, 193, 194, 193, 186, 154, 113, 80, 57, 39, 26, 22, 22, 23, 24, 24, 25, 27, 29, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 30, 29, 29, 29, 29, 30, 30, 30, 29, 29, 29, 29, 28, 26, 23, 21, 20, 18, 17, 15, 18, 21, 26, 29, 29, 30, 30, 30, 30, 30, 30, 30, 31, 107, 107, 107, 107, 107, 107, 107, 107, 107, 108, 108, 108, 109, 108, 114, 105, 118, 120, 116, 110, 108, 107, 94, 68, 108, 73, 18, 18, 21, 19, 15, 17, 17, 17, 17, 17, 17, 15, 14, 17, 17, 13, 12, 16, 17, 22, 33, 26, 23, 36, 91, 151, 202, 210, 207, 206, 207, 210, 213, 217, 220, 223, 226, 229, 231, 234, 236, 238, 240, 240, 241, 242, 242, 242, 241, 240, 238, 235, 230, 223, 215, 209, 160, 115, 177, 188, 186, 195, 209, 221, 220, 191, 159, 168, 191, 196, 196, 197, 204, 221, 235, 243, 244, 239, 251, 253, 254, 254, 254, 254, 254, 253, 249, 246, 237, 233, 239, 232, 219, 215, 208, 197, 196, 190, 85, 69, 154, 174, 129, 90, 93, 93, 93, 93, 93, 93, 93, 93, 94, 111, 138, 164, 218, 220, 221, 219, 222, 229, 244, 252, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 254, 250, 181, 82, 75, 72, 73, 75, 71, 72, 71, 73, 73, 73, 73, 74, 74, 74, 73, 79, 88, 97, 105, 106, 105, 101, 91, 85, 98, 119, 129, 138, 151, 154, 152, 146, 152, 149, 143, 137, 132, 129, 131, 148, 154, 169, 197, 168, 187, 215, 211, 207, 206, 206, 207, 208, 195, 129, 112, 111, 140, 182, 189, 190, 190, 190, 190, 185, 154, 111, 80, 60, 41, 27, 23, 22, 23, 24, 24, 25, 27, 28, 29, 30, 31, 31, 31, 31, 31, 32, 31, 31, 31, 31, 31, 31, 31, 30, 29, 29, 29, 29, 30, 30, 30, 28, 29, 29, 29, 28, 26, 23, 21, 20, 18, 17, 16, 19, 23, 28, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 108, 107, 110, 115, 108, 120, 122, 121, 110, 107, 107, 83, 95, 107, 51, 17, 19, 20, 19, 14, 17, 17, 17, 16, 18, 18, 16, 13, 14, 16, 12, 12, 17, 17, 22, 25, 19, 18, 23, 49, 144, 206, 209, 207, 207, 209, 210, 213, 216, 219, 220, 223, 225, 228, 230, 232, 234, 235, 236, 237, 236, 235, 234, 231, 227, 223, 218, 212, 182, 125, 153, 185, 185, 185, 185, 187, 194, 194, 162, 187, 158, 187, 201, 203, 201, 198, 203, 216, 229, 237, 237, 249, 253, 254, 254, 254, 254, 254, 254, 254, 252, 249, 247, 250, 246, 235, 239, 234, 214, 202, 196, 195, 137, 74, 69, 172, 193, 177, 121, 116, 91, 92, 93, 93, 93, 93, 93, 93, 99, 115, 192, 217, 219, 228, 246, 253, 253, 253, 253, 254, 254, 254, 254, 255, 255, 255, 255, 255, 254, 254, 250, 144, 87, 124, 150, 163, 93, 91, 98, 74, 73, 72, 72, 73, 73, 74, 74, 75, 77, 79, 111, 95, 93, 103, 105, 102, 93, 83, 82, 90, 98, 120, 145, 141, 117, 123, 133, 130, 124, 120, 117, 117, 138, 153, 156, 184, 163, 198, 208, 205, 205, 204, 203, 203, 166, 113, 113, 115, 163, 185, 188, 189, 188, 188, 185, 156, 110, 79, 63, 43, 29, 23, 22, 23, 24, 23, 24, 26, 28, 29, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 30, 29, 29, 29, 29, 30, 30, 28, 29, 29, 29, 29, 26, 24, 21, 20, 18, 16, 18, 21, 25, 29, 29, 30, 30, 30, 30, 30, 30, 31, 31, 32, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 108, 118, 106, 120, 118, 117, 112, 108, 108, 100, 62, 109, 102, 33, 18, 19, 19, 17, 15, 17, 17, 17, 15, 18, 20, 18, 15, 13, 14, 13, 15, 17, 16, 18, 19, 17, 18, 21, 28, 111, 196, 208, 208, 208, 209, 210, 213, 215, 216, 219, 220, 221, 224, 224, 227, 228, 228, 228, 226, 224, 221, 217, 214, 210, 185, 120, 118, 179, 186, 185, 185, 181, 179, 175, 154, 168, 182, 158, 181, 205, 208, 207, 202, 198, 201, 210, 222, 237, 248, 253, 253, 254, 254, 254, 254, 254, 254, 254, 253, 252, 253, 250, 245, 249, 253, 239, 215, 205, 200, 195, 169, 74, 73, 115, 193, 221, 197, 168, 187, 170, 148, 116, 90, 93, 94, 94, 94, 95, 106, 146, 222, 252, 253, 253, 254, 254, 253, 254, 254, 254, 254, 254, 255, 255, 254, 254, 254, 254, 255, 242, 173, 203, 196, 202, 187, 181, 181, 173, 149, 78, 68, 69, 67, 66, 97, 148, 142, 149, 194, 181, 99, 96, 125, 131, 111, 103, 99, 98, 79, 84, 91, 121, 138, 112, 93, 108, 116, 113, 109, 107, 109, 131, 153, 149, 176, 161, 203, 203, 203, 203, 199, 187, 127, 112, 112, 118, 172, 185, 188, 188, 187, 186, 158, 110, 80, 66, 46, 30, 24, 22, 23, 24, 23, 23, 25, 27, 29, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 30, 29, 29, 29, 29, 30, 30, 29, 29, 29, 29, 29, 27, 24, 21, 19, 18, 16, 19, 23, 28, 29, 29, 30, 30, 30, 30, 30, 30, 31, 32, 32, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 114, 107, 112, 114, 113, 112, 109, 108, 108, 71, 97, 109, 96, 25, 18, 19, 18, 16, 16, 17, 17, 17, 15, 18, 23, 22, 17, 14, 14, 15, 15, 16, 16, 18, 18, 18, 23, 25, 25, 62, 169, 207, 207, 209, 209, 210, 212, 213, 214, 215, 217, 218, 220, 219, 220, 219, 217, 215, 213, 211, 208, 177, 110, 57, 113, 160, 161, 162, 176, 159, 161, 160, 166, 172, 155, 159, 187, 206, 212, 210, 204, 197, 197, 201, 211, 232, 245, 252, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 250, 247, 253, 254, 253, 230, 217, 220, 209, 200, 188, 74, 79, 76, 161, 225, 242, 208, 176, 190, 190, 190, 183, 164, 139, 99, 95, 95, 96, 104, 154, 252, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 255, 249, 216, 207, 201, 202, 201, 185, 209, 210, 206, 186, 155, 108, 77, 77, 104, 177, 207, 207, 208, 203, 199, 196, 197, 171, 154, 168, 192, 152, 117, 76, 77, 86, 109, 105, 85, 88, 102, 103, 101, 102, 106, 129, 154, 143, 162, 179, 202, 202, 202, 194, 153, 113, 112, 112, 123, 179, 184, 187, 187, 186, 161, 109, 81, 69, 47, 31, 24, 22, 23, 24, 24, 23, 25, 27, 29, 30, 30, 31, 31, 32, 32, 32, 32, 31, 32, 31, 31, 31, 31, 31, 31, 31, 31, 31, 30, 29, 29, 29, 30, 30, 29, 29, 29, 29, 29, 27, 24, 21, 19, 17, 17, 21, 25, 29, 29, 30, 30, 30, 30, 30, 30, 31, 31, 32, 32, 108, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 108, 107, 106, 108, 110, 107, 111, 111, 111, 107, 107, 107, 104, 67, 109, 111, 92, 20, 18, 18, 17, 15, 15, 18, 17, 17, 15, 15, 24, 30, 22, 17, 15, 15, 16, 16, 16, 19, 19, 24, 25, 25, 26, 29, 132, 199, 207, 208, 209, 209, 210, 210, 211, 212, 212, 212, 212, 211, 210, 208, 207, 195, 161, 96, 33, 61, 114, 157, 176, 172, 174, 162, 170, 152, 160, 156, 162, 181, 192, 208, 213, 212, 202, 196, 195, 196, 201, 217, 242, 248, 252, 253, 254, 254, 254, 254, 254, 254, 254, 253, 253, 249, 247, 252, 254, 254, 249, 228, 230, 239, 225, 209, 196, 91, 80, 80, 103, 194, 210, 207, 179, 180, 189, 174, 188, 207, 217, 209, 173, 131, 101, 102, 109, 247, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 251, 244, 241, 237, 235, 231, 227, 223, 221, 216, 189, 209, 210, 211, 212, 212, 192, 154, 87, 79, 127, 197, 214, 214, 210, 210, 210, 211, 211, 206, 204, 198, 195, 135, 96, 74, 73, 73, 82, 83, 80, 93, 97, 97, 98, 104, 134, 152, 138, 159, 200, 202, 200, 179, 114, 113, 112, 111, 134, 182, 184, 185, 186, 161, 107, 81, 72, 49, 31, 24, 22, 22, 23, 24, 23, 25, 27, 28, 30, 30, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 31, 31, 31, 31, 31, 31, 31, 31, 31, 29, 29, 29, 30, 29, 29, 29, 29, 29, 29, 26, 24, 21, 18, 16, 18, 22, 27, 29, 29, 30, 30, 30, 30, 30, 30, 31, 32, 32, 32, 108, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 108, 107, 107, 106, 106, 109, 107, 109, 109, 110, 106, 106, 107, 107, 91, 88, 112, 112, 90, 25, 41, 21, 17, 16, 15, 17, 17, 17, 16, 14, 19, 27, 25, 18, 15, 14, 16, 16, 16, 20, 25, 25, 25, 25, 27, 26, 63, 147, 197, 208, 208, 208, 208, 207, 208, 208, 207, 207, 204, 186, 153, 105, 46, 29, 44, 105, 115, 124, 135, 123, 146, 145, 148, 152, 168, 175, 178, 186, 187, 206, 214, 211, 199, 196, 195, 195, 197, 203, 224, 244, 249, 251, 253, 254, 254, 254, 254, 254, 254, 253, 250, 247, 249, 252, 253, 254, 253, 246, 233, 246, 250, 240, 217, 201, 114, 80, 79, 80, 155, 179, 182, 184, 175, 189, 200, 219, 216, 203, 206, 235, 244, 204, 131, 109, 236, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 245, 227, 232, 246, 251, 253, 254, 254, 252, 245, 220, 223, 201, 200, 209, 210, 210, 211, 212, 210, 201, 176, 114, 98, 173, 214, 214, 214, 214, 215, 214, 210, 212, 210, 206, 201, 191, 150, 127, 70, 69, 80, 84, 78, 87, 92, 92, 98, 106, 144, 140, 126, 198, 201, 202, 140, 109, 112, 111, 102, 150, 183, 183, 183, 155, 102, 81, 75, 52, 31, 23, 22, 22, 23, 24, 24, 25, 27, 28, 30, 30, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 31, 31, 31, 31, 31, 31, 31, 31, 30, 29, 29, 30, 29, 29, 29, 29, 29, 29, 26, 23, 20, 16, 15, 18, 23, 28, 29, 30, 30, 30, 30, 30, 31, 31, 32, 31, 31, 31, 108, 108, 108, 107, 107, 107, 107, 107, 107, 107, 108, 108, 107, 108, 107, 107, 108, 109, 109, 109, 108, 107, 107, 108, 107, 110, 96, 106, 113, 115, 99, 89, 69, 17, 17, 24, 52, 17, 18, 24, 20, 17, 16, 16, 16, 16, 16, 15, 16, 17, 18, 30, 28, 25, 25, 25, 27, 27, 26, 49, 119, 163, 190, 197, 195, 187, 175, 155, 125, 74, 31, 28, 28, 28, 53, 139, 166, 183, 181, 174, 166, 162, 175, 178, 180, 179, 186, 187, 179, 200, 213, 212, 199, 196, 195, 195, 195, 197, 205, 227, 246, 250, 252, 254, 254, 254, 254, 254, 253, 253, 247, 242, 247, 253, 254, 254, 254, 253, 246, 243, 251, 253, 249, 224, 205, 134, 80, 79, 77, 142, 175, 183, 203, 219, 208, 195, 195, 190, 191, 200, 218, 253, 254, 244, 168, 227, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 246, 225, 221, 245, 253, 254, 254, 254, 254, 254, 254, 253, 228, 226, 223, 184, 200, 209, 209, 209, 210, 211, 209, 206, 198, 172, 159, 160, 212, 214, 214, 214, 214, 214, 215, 215, 213, 207, 205, 201, 181, 109, 75, 69, 82, 82, 76, 81, 78, 84, 99, 114, 154, 118, 198, 200, 185, 108, 112, 111, 100, 92, 167, 183, 182, 154, 93, 80, 78, 56, 32, 23, 21, 22, 23, 24, 25, 25, 26, 28, 30, 30, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 31, 31, 31, 31, 31, 31, 30, 29, 30, 30, 29, 29, 29, 29, 29, 28, 26, 23, 19, 15, 15, 19, 25, 29, 29, 30, 30, 30, 30, 31, 30, 32, 32, 32, 31, 32, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 107, 106, 106, 108, 108, 108, 109, 109, 108, 107, 107, 113, 110, 93, 108, 113, 118, 106, 96, 56, 28, 16, 52, 79, 28, 61, 50, 21, 19, 16, 15, 17, 16, 17, 16, 19, 23, 25, 30, 30, 27, 26, 25, 26, 27, 27, 26, 26, 27, 37, 34, 29, 27, 27, 26, 26, 27, 29, 97, 158, 189, 192, 191, 190, 189, 188, 182, 165, 165, 174, 174, 177, 187, 183, 186, 210, 211, 198, 195, 195, 195, 195, 195, 197, 207, 228, 246, 250, 252, 254, 254, 254, 254, 254, 253, 247, 242, 244, 252, 253, 254, 254, 254, 253, 248, 250, 252, 253, 252, 231, 209, 150, 80, 79, 102, 176, 200, 218, 209, 209, 179, 207, 221, 222, 245, 241, 213, 228, 254, 254, 252, 237, 254, 254, 254, 254, 254, 254, 248, 238, 235, 231, 220, 214, 235, 251, 254, 254, 254, 254, 254, 254, 254, 254, 253, 244, 219, 225, 210, 102, 128, 162, 189, 205, 210, 210, 209, 209, 209, 201, 158, 135, 208, 213, 213, 214, 214, 209, 195, 178, 186, 206, 205, 202, 197, 169, 94, 69, 78, 78, 76, 69, 67, 88, 101, 133, 141, 203, 204, 136, 111, 109, 97, 89, 107, 180, 182, 155, 91, 81, 79, 63, 34, 24, 21, 22, 22, 23, 25, 25, 26, 28, 29, 31, 31, 31, 32, 32, 33, 33, 33, 33, 33, 33, 32, 32, 32, 32, 32, 32, 32, 31, 31, 31, 31, 31, 30, 29, 30, 30, 29, 29, 29, 29, 29, 28, 26, 22, 17, 15, 16, 20, 26, 29, 29, 30, 30, 30, 30, 30, 31, 31, 32, 32, 32, 33, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 107, 107, 108, 108, 108, 105, 105, 105, 107, 107, 107, 107, 106, 106, 107, 111, 114, 112, 105, 109, 120, 109, 106, 93, 71, 50, 19, 53, 98, 91, 88, 34, 25, 47, 39, 18, 17, 20, 23, 19, 28, 28, 24, 30, 30, 28, 27, 27, 27, 27, 27, 27, 26, 26, 25, 25, 26, 29, 33, 39, 92, 164, 192, 193, 193, 193, 193, 193, 192, 192, 191, 191, 167, 171, 161, 178, 187, 174, 205, 211, 199, 196, 195, 195, 195, 195, 195, 197, 208, 228, 247, 250, 252, 254, 254, 254, 254, 253, 250, 242, 242, 251, 253, 254, 254, 254, 254, 254, 250, 252, 253, 253, 252, 236, 213, 162, 81, 79, 86, 197, 219, 220, 208, 172, 207, 211, 211, 223, 244, 252, 253, 226, 242, 254, 254, 251, 248, 247, 249, 251, 239, 224, 219, 223, 223, 221, 217, 245, 253, 254, 254, 254, 254, 254, 254, 253, 253, 253, 251, 251, 221, 227, 224, 192, 185, 168, 153, 137, 130, 140, 154, 162, 171, 174, 156, 77, 115, 162, 157, 149, 123, 139, 169, 200, 212, 211, 208, 205, 204, 184, 103, 69, 70, 75, 76, 74, 67, 68, 93, 110, 140, 209, 192, 110, 104, 89, 86, 88, 131, 182, 158, 90, 81, 80, 69, 37, 26, 22, 22, 22, 24, 24, 26, 26, 28, 29, 31, 31, 31, 32, 32, 33, 33, 33, 33, 33, 33, 33, 33, 33, 32, 32, 32, 32, 32, 32, 31, 31, 31, 31, 30, 29, 30, 30, 29, 29, 29, 29, 29, 28, 25, 20, 15, 14, 18, 23, 28, 29, 30, 30, 30, 30, 31, 31, 32, 32, 31, 32, 33, 33, 107, 108, 108, 108, 108, 108, 108, 108, 109, 109, 109, 109, 110, 111, 112, 107, 106, 105, 106, 108, 108, 108, 107, 107, 108, 110, 116, 121, 115, 106, 101, 101, 98, 106, 97, 69, 41, 27, 64, 101, 106, 92, 80, 93, 74, 25, 20, 22, 21, 24, 27, 29, 29, 23, 30, 32, 30, 28, 28, 29, 28, 28, 28, 29, 32, 35, 38, 42, 54, 142, 189, 192, 193, 194, 195, 195, 196, 196, 197, 197, 196, 196, 196, 164, 160, 179, 176, 188, 209, 201, 196, 195, 195, 195, 195, 195, 195, 198, 208, 227, 246, 250, 253, 254, 254, 254, 253, 251, 242, 241, 247, 253, 254, 254, 254, 254, 254, 254, 253, 253, 254, 253, 252, 241, 217, 175, 79, 80, 79, 195, 219, 212, 177, 200, 219, 221, 222, 245, 252, 252, 252, 254, 221, 242, 237, 233, 231, 225, 221, 220, 222, 222, 221, 221, 216, 231, 252, 254, 254, 254, 254, 254, 254, 253, 250, 248, 248, 248, 249, 250, 230, 230, 225, 217, 191, 189, 180, 168, 174, 156, 123, 146, 173, 168, 167, 167, 129, 119, 186, 200, 207, 208, 209, 210, 210, 211, 211, 210, 206, 202, 168, 120, 71, 72, 75, 75, 70, 66, 69, 88, 108, 184, 142, 96, 85, 85, 86, 86, 155, 161, 91, 81, 80, 74, 42, 27, 23, 22, 23, 24, 24, 25, 26, 27, 29, 30, 31, 32, 32, 32, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 32, 32, 32, 32, 31, 31, 31, 31, 31, 29, 30, 30, 30, 30, 29, 29, 29, 28, 24, 19, 14, 15, 20, 25, 29, 29, 30, 30, 30, 31, 31, 32, 32, 32, 33, 33, 33, 34, 108, 108, 108, 108, 108, 108, 108, 109, 109, 111, 111, 111, 112, 113, 114, 110, 106, 105, 106, 107, 107, 99, 111, 113, 111, 112, 117, 117, 115, 116, 127, 129, 125, 113, 101, 99, 90, 77, 96, 103, 106, 105, 106, 103, 94, 76, 28, 22, 22, 25, 33, 30, 25, 30, 21, 28, 35, 37, 34, 32, 33, 32, 31, 34, 38, 43, 50, 76, 168, 190, 192, 193, 194, 195, 196, 196, 197, 197, 197, 197, 197, 197, 197, 183, 154, 176, 161, 204, 205, 196, 195, 195, 195, 195, 195, 195, 195, 198, 208, 226, 246, 250, 252, 254, 254, 254, 253, 247, 242, 242, 251, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 244, 222, 187, 77, 80, 82, 167, 217, 187, 193, 218, 220, 221, 227, 243, 247, 250, 242, 248, 233, 212, 216, 216, 214, 219, 221, 221, 221, 221, 221, 221, 231, 253, 254, 254, 254, 254, 254, 254, 242, 222, 217, 214, 214, 222, 228, 228, 220, 223, 220, 217, 188, 142, 90, 84, 87, 87, 87, 87, 110, 159, 187, 194, 200, 185, 153, 204, 206, 207, 208, 210, 210, 211, 211, 211, 209, 208, 199, 174, 107, 65, 68, 71, 77, 84, 92, 102, 95, 63, 82, 79, 78, 79, 82, 95, 160, 91, 80, 80, 77, 50, 29, 23, 22, 23, 24, 24, 24, 26, 28, 29, 30, 31, 31, 32, 32, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 32, 32, 32, 32, 31, 31, 31, 31, 30, 29, 30, 30, 30, 29, 29, 29, 27, 22, 16, 14, 17, 23, 27, 29, 29, 30, 30, 30, 31, 32, 32, 31, 32, 33, 33, 33, 33, 108, 108, 109, 105, 97, 90, 101, 108, 107, 107, 110, 111, 111, 113, 116, 115, 107, 106, 106, 104, 103, 133, 141, 119, 119, 105, 111, 120, 128, 128, 128, 130, 132, 136, 138, 126, 110, 99, 101, 106, 106, 106, 106, 106, 103, 97, 30, 27, 22, 28, 32, 38, 38, 25, 25, 17, 23, 36, 44, 45, 40, 40, 43, 47, 51, 55, 62, 166, 190, 192, 193, 195, 196, 196, 196, 196, 197, 197, 197, 197, 197, 197, 197, 198, 153, 162, 168, 205, 198, 196, 195, 195, 195, 195, 195, 195, 195, 197, 207, 224, 245, 250, 253, 254, 254, 254, 252, 247, 245, 246, 252, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 247, 224, 195, 83, 79, 81, 143, 198, 188, 216, 220, 221, 221, 230, 237, 241, 243, 235, 217, 214, 200, 201, 202, 203, 201, 213, 220, 220, 221, 222, 237, 251, 253, 253, 254, 254, 254, 254, 244, 225, 217, 218, 220, 218, 208, 182, 198, 221, 205, 165, 117, 102, 97, 91, 86, 85, 86, 86, 87, 90, 92, 96, 126, 158, 198, 172, 178, 204, 205, 205, 193, 189, 182, 172, 162, 150, 138, 130, 107, 102, 106, 110, 113, 112, 112, 112, 110, 79, 58, 71, 70, 71, 73, 76, 111, 93, 80, 80, 79, 58, 31, 25, 22, 23, 24, 25, 24, 25, 27, 29, 30, 31, 32, 32, 32, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 32, 32, 32, 31, 31, 31, 31, 31, 29, 30, 30, 30, 29, 29, 29, 26, 20, 14, 15, 19, 25, 29, 29, 29, 30, 30, 31, 31, 31, 32, 32, 33, 33, 33, 33, 33, 103, 85, 65, 73, 85, 66, 79, 107, 107, 98, 87, 100, 109, 111, 114, 117, 115, 108, 102, 114, 140, 140, 136, 131, 114, 115, 128, 128, 128, 128, 123, 126, 135, 140, 146, 148, 145, 141, 127, 114, 104, 97, 97, 105, 107, 97, 52, 49, 22, 30, 32, 33, 44, 49, 29, 25, 20, 21, 33, 46, 56, 54, 53, 58, 64, 68, 125, 189, 191, 193, 194, 195, 196, 196, 196, 197, 197, 197, 197, 197, 197, 197, 197, 197, 176, 128, 183, 201, 196, 196, 195, 195, 195, 195, 195, 195, 195, 197, 206, 222, 242, 250, 252, 253, 254, 254, 252, 250, 247, 250, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 247, 224, 199, 100, 79, 80, 117, 193, 212, 220, 220, 221, 222, 230, 233, 233, 229, 223, 209, 209, 212, 218, 220, 220, 219, 207, 199, 209, 221, 230, 249, 253, 253, 252, 252, 252, 253, 253, 214, 221, 221, 221, 220, 220, 220, 212, 158, 140, 112, 109, 106, 101, 97, 91, 85, 85, 86, 86, 88, 90, 95, 100, 104, 103, 111, 108, 101, 108, 121, 104, 98, 98, 99, 99, 97, 97, 97, 96, 96, 97, 106, 112, 112, 112, 112, 112, 96, 62, 56, 63, 64, 66, 68, 70, 81, 80, 80, 79, 66, 34, 27, 23, 23, 24, 25, 25, 25, 27, 28, 30, 31, 32, 32, 32, 33, 34, 34, 34, 34, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 32, 32, 31, 31, 31, 31, 31, 30, 29, 30, 30, 30, 29, 28, 23, 17, 14, 17, 23, 28, 29, 29, 30, 30, 30, 31, 32, 32, 32, 33, 34, 34, 34, 34, 34, 96, 92, 87, 111, 107, 100, 90, 108, 107, 106, 92, 91, 78, 102, 111, 116, 119, 114, 100, 139, 140, 138, 132, 105, 98, 101, 118, 125, 121, 109, 104, 121, 135, 143, 148, 150, 150, 151, 150, 149, 145, 141, 139, 126, 109, 104, 76, 54, 39, 62, 36, 32, 34, 46, 56, 43, 26, 21, 22, 24, 24, 29, 33, 37, 43, 59, 176, 189, 191, 193, 194, 195, 196, 196, 196, 197, 197, 197, 197, 197, 197, 197, 197, 196, 193, 107, 196, 199, 196, 195, 195, 195, 195, 195, 195, 195, 195, 197, 204, 218, 240, 249, 251, 253, 254, 254, 254, 253, 252, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 246, 222, 197, 121, 79, 80, 122, 204, 220, 220, 221, 221, 223, 227, 229, 226, 220, 213, 220, 216, 218, 215, 218, 220, 220, 220, 220, 205, 204, 243, 252, 253, 249, 247, 248, 251, 253, 245, 196, 221, 220, 220, 220, 220, 211, 156, 112, 111, 110, 109, 106, 102, 97, 91, 85, 86, 85, 82, 83, 90, 95, 101, 106, 111, 109, 100, 101, 108, 105, 100, 97, 97, 96, 95, 94, 94, 93, 93, 93, 94, 96, 110, 112, 112, 112, 108, 71, 55, 58, 59, 60, 61, 63, 72, 79, 79, 79, 73, 39, 28, 24, 23, 24, 25, 26, 26, 26, 29, 29, 31, 32, 32, 33, 33, 33, 34, 34, 34, 34, 34, 34, 34, 34, 34, 33, 33, 33, 33, 33, 33, 33, 33, 32, 32, 32, 31, 31, 31, 31, 30, 30, 30, 30, 30, 30, 27, 20, 14, 14, 19, 26, 29, 29, 29, 30, 30, 31, 32, 32, 32, 33, 33, 34, 34, 34, 34, 34, 105, 104, 106, 111, 109, 108, 109, 108, 108, 108, 108, 106, 100, 102, 108, 112, 113, 117, 105, 128, 131, 111, 111, 127, 127, 118, 113, 119, 121, 122, 123, 114, 116, 137, 146, 148, 150, 151, 151, 154, 155, 156, 157, 157, 151, 110, 95, 88, 88, 125, 81, 31, 32, 35, 48, 57, 53, 43, 27, 21, 26, 32, 38, 44, 51, 120, 187, 187, 189, 191, 193, 194, 195, 195, 196, 197, 197, 197, 197, 197, 197, 196, 195, 194, 193, 136, 192, 198, 197, 196, 195, 195, 195, 195, 195, 195, 195, 195, 202, 215, 236, 247, 250, 252, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 244, 219, 196, 146, 80, 81, 148, 216, 220, 220, 221, 221, 223, 225, 224, 219, 217, 220, 220, 220, 220, 217, 211, 208, 209, 210, 219, 223, 220, 223, 253, 249, 241, 242, 246, 252, 253, 220, 204, 220, 220, 220, 220, 189, 120, 113, 111, 110, 110, 110, 108, 105, 97, 91, 81, 75, 89, 105, 108, 107, 106, 105, 105, 103, 102, 99, 99, 101, 98, 94, 86, 80, 85, 85, 84, 82, 79, 75, 67, 60, 63, 83, 110, 112, 112, 89, 65, 51, 56, 56, 57, 59, 72, 80, 79, 79, 77, 47, 30, 25, 23, 24, 25, 26, 26, 27, 28, 29, 30, 32, 32, 33, 33, 33, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 33, 33, 33, 33, 33, 33, 32, 32, 32, 31, 31, 31, 31, 31, 31, 30, 29, 30, 29, 24, 18, 13, 16, 23, 28, 29, 29, 30, 30, 31, 31, 31, 32, 32, 33, 34, 35, 35, 35, 34, 34, 105, 113, 116, 108, 109, 108, 108, 108, 108, 108, 108, 108, 108, 108, 107, 109, 112, 112, 115, 113, 128, 124, 117, 117, 121, 125, 124, 113, 118, 124, 118, 128, 125, 116, 143, 147, 149, 150, 150, 152, 155, 161, 170, 177, 175, 160, 111, 110, 136, 143, 105, 75, 54, 34, 37, 49, 55, 48, 50, 50, 42, 36, 33, 40, 46, 159, 186, 187, 187, 189, 191, 193, 195, 195, 196, 197, 197, 197, 197, 197, 196, 195, 193, 192, 191, 155, 189, 195, 196, 196, 195, 195, 195, 195, 195, 195, 195, 195, 200, 211, 230, 243, 249, 251, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 241, 213, 198, 184, 83, 81, 187, 220, 220, 221, 221, 221, 223, 223, 222, 221, 221, 221, 221, 221, 220, 220, 220, 220, 220, 220, 204, 224, 241, 243, 224, 238, 237, 240, 249, 253, 253, 196, 204, 220, 220, 216, 159, 111, 112, 111, 110, 110, 110, 110, 110, 108, 97, 98, 105, 107, 104, 106, 110, 108, 108, 108, 110, 110, 111, 111, 111, 111, 111, 110, 109, 101, 68, 61, 63, 59, 58, 58, 59, 59, 55, 47, 95, 112, 106, 67, 59, 51, 55, 54, 55, 64, 77, 79, 79, 78, 56, 31, 26, 23, 24, 25, 26, 27, 27, 27, 29, 30, 31, 32, 33, 33, 33, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 33, 33, 33, 33, 33, 32, 32, 32, 31, 31, 31, 31, 31, 31, 30, 29, 28, 22, 16, 14, 18, 25, 29, 29, 29, 30, 30, 31, 32, 32, 32, 33, 33, 35, 35, 35, 35, 35, 35, 111, 120, 109, 108, 109, 108, 108, 108, 107, 107, 107, 107, 109, 110, 107, 108, 110, 111, 113, 110, 114, 130, 135, 135, 138, 139, 138, 135, 132, 112, 116, 128, 128, 112, 131, 146, 147, 150, 150, 152, 158, 166, 182, 195, 200, 196, 178, 140, 149, 149, 144, 120, 48, 36, 37, 41, 51, 57, 52, 44, 44, 52, 57, 61, 70, 180, 185, 185, 186, 188, 190, 192, 194, 194, 196, 196, 197, 197, 197, 197, 196, 194, 192, 190, 190, 161, 188, 194, 196, 196, 195, 195, 195, 195, 195, 195, 195, 195, 197, 207, 226, 238, 246, 250, 252, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 237, 207, 203, 209, 119, 100, 216, 220, 220, 221, 221, 222, 223, 222, 222, 222, 221, 221, 221, 221, 221, 221, 221, 220, 220, 221, 221, 208, 250, 247, 227, 204, 217, 224, 236, 249, 249, 172, 203, 217, 195, 130, 113, 111, 110, 110, 110, 110, 110, 110, 104, 96, 107, 112, 112, 112, 112, 112, 112, 112, 111, 111, 112, 112, 111, 111, 110, 104, 93, 86, 95, 110, 105, 79, 58, 59, 58, 58, 58, 58, 56, 48, 62, 111, 102, 65, 52, 56, 54, 53, 59, 77, 79, 79, 78, 64, 35, 26, 24, 24, 25, 27, 27, 28, 28, 29, 30, 31, 32, 33, 33, 33, 33, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 33, 33, 33, 33, 33, 32, 32, 32, 31, 31, 31, 31, 31, 30, 29, 26, 21, 15, 16, 21, 28, 29, 29, 30, 30, 31, 32, 32, 32, 33, 33, 34, 35, 35, 35, 35, 35, 35, 115, 115, 109, 108, 109, 106, 105, 105, 106, 106, 106, 107, 108, 111, 109, 108, 109, 111, 111, 112, 119, 136, 135, 138, 139, 139, 139, 137, 136, 136, 114, 102, 126, 125, 106, 131, 143, 148, 149, 153, 161, 170, 197, 211, 217, 220, 218, 207, 160, 149, 149, 107, 78, 107, 96, 72, 73, 67, 57, 57, 58, 57, 56, 57, 99, 184, 184, 185, 186, 188, 189, 191, 193, 193, 195, 196, 196, 197, 197, 197, 196, 194, 191, 189, 189, 166, 188, 193, 195, 196, 196, 195, 195, 195, 195, 195, 195, 195, 196, 203, 219, 232, 242, 248, 251, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 251, 232, 203, 206, 212, 161, 150, 220, 220, 221, 221, 221, 222, 222, 222, 222, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 228, 219, 225, 198, 222, 237, 252, 250, 227, 221, 145, 197, 161, 109, 112, 111, 110, 110, 110, 110, 110, 103, 91, 94, 105, 107, 112, 112, 112, 112, 112, 112, 110, 104, 104, 110, 112, 112, 111, 110, 110, 109, 97, 69, 91, 110, 110, 100, 63, 54, 55, 54, 49, 48, 49, 45, 94, 111, 72, 49, 58, 55, 61, 80, 75, 79, 77, 70, 41, 27, 24, 24, 25, 27, 28, 28, 28, 28, 30, 31, 32, 33, 33, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 33, 33, 33, 33, 32, 32, 31, 31, 31, 31, 31, 31, 29, 25, 20, 15, 19, 25, 29, 29, 29, 30, 30, 31, 32, 32, 32, 33, 34, 35, 35, 35, 35, 35, 35, 35, 115, 110, 109, 109, 107, 106, 105, 105, 105, 106, 106, 106, 107, 110, 110, 109, 109, 110, 109, 107, 127, 136, 136, 136, 131, 134, 125, 130, 137, 136, 137, 132, 115, 123, 127, 111, 123, 134, 140, 147, 158, 175, 212, 221, 224, 224, 223, 217, 207, 161, 150, 116, 97, 148, 148, 125, 106, 84, 57, 57, 58, 60, 62, 65, 118, 183, 183, 184, 186, 188, 189, 190, 191, 193, 193, 194, 191, 191, 195, 197, 196, 194, 190, 189, 189, 165, 188, 192, 195, 196, 196, 195, 195, 195, 195, 195, 195, 195, 195, 199, 212, 227, 238, 245, 249, 251, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 246, 224, 203, 208, 206, 194, 191, 220, 220, 221, 221, 221, 222, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 225, 224, 208, 220, 235, 248, 254, 254, 251, 151, 141, 140, 107, 111, 110, 110, 110, 110, 110, 105, 81, 84, 97, 97, 101, 109, 112, 112, 112, 112, 112, 112, 103, 94, 95, 103, 112, 112, 111, 111, 110, 110, 106, 84, 67, 100, 110, 110, 99, 60, 48, 47, 46, 45, 45, 45, 61, 111, 90, 54, 68, 129, 79, 80, 74, 77, 73, 49, 29, 24, 24, 26, 27, 28, 28, 29, 29, 30, 31, 32, 33, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 33, 33, 33, 33, 32, 32, 32, 31, 31, 31, 31, 28, 24, 19, 18, 22, 28, 29, 29, 30, 30, 31, 31, 32, 32, 33, 34, 35, 35, 35, 35, 35, 35, 35, 35, 110, 109, 110, 107, 106, 106, 106, 106, 106, 106, 106, 106, 106, 107, 109, 109, 108, 108, 108, 105, 113, 118, 119, 121, 131, 134, 134, 129, 125, 124, 107, 113, 126, 124, 128, 128, 131, 130, 131, 142, 154, 185, 220, 224, 224, 223, 223, 221, 215, 205, 154, 134, 101, 142, 150, 149, 140, 103, 65, 32, 35, 38, 40, 41, 122, 182, 183, 184, 186, 187, 189, 190, 190, 191, 190, 190, 181, 177, 179, 185, 182, 188, 192, 189, 188, 165, 187, 191, 193, 196, 195, 195, 195, 195, 195, 195, 195, 195, 195, 197, 204, 220, 232, 241, 247, 250, 251, 252, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 251, 239, 214, 206, 212, 201, 208, 219, 220, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 222, 225, 227, 230, 236, 240, 242, 245, 242, 252, 156, 102, 110, 110, 110, 110, 110, 110, 110, 98, 74, 90, 95, 100, 106, 112, 112, 112, 112, 112, 112, 112, 112, 96, 89, 89, 97, 112, 112, 111, 111, 110, 110, 110, 87, 80, 74, 107, 110, 109, 80, 67, 68, 46, 46, 44, 44, 47, 90, 94, 131, 198, 166, 82, 77, 74, 74, 57, 32, 25, 25, 26, 27, 28, 29, 30, 30, 30, 32, 33, 34, 35, 35, 34, 34, 35, 35, 35, 35, 35, 35, 35, 35, 35, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 33, 33, 33, 32, 32, 32, 32, 31, 31, 30, 27, 22, 18, 20, 25, 29, 29, 30, 30, 30, 31, 31, 32, 33, 34, 35, 35, 35, 35, 35, 35, 35, 35, 35, 109, 109, 111, 106, 106, 105, 105, 105, 105, 105, 105, 106, 106, 106, 107, 108, 107, 108, 108, 107, 114, 136, 138, 138, 137, 137, 135, 136, 136, 129, 121, 116, 125, 126, 130, 132, 137, 143, 146, 152, 163, 204, 214, 218, 223, 223, 221, 220, 219, 210, 200, 146, 79, 135, 150, 150, 150, 143, 103, 31, 25, 25, 28, 33, 119, 182, 182, 183, 187, 188, 190, 191, 191, 192, 192, 191, 192, 192, 192, 191, 189, 173, 162, 184, 189, 166, 186, 190, 192, 194, 195, 195, 195, 195, 195, 195, 195, 195, 195, 196, 199, 210, 226, 237, 243, 247, 249, 251, 251, 252, 253, 253, 254, 254, 254, 254, 254, 254, 253, 252, 252, 247, 229, 205, 215, 217, 201, 219, 220, 220, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 222, 226, 234, 243, 250, 255, 254, 254, 254, 246, 242, 149, 114, 111, 110, 110, 110, 110, 106, 87, 81, 96, 102, 108, 111, 112, 112, 112, 112, 112, 112, 112, 112, 111, 92, 88, 88, 93, 112, 112, 111, 111, 110, 110, 110, 94, 84, 58, 92, 109, 109, 97, 65, 83, 88, 64, 44, 46, 49, 82, 188, 228, 227, 133, 81, 73, 75, 65, 37, 26, 25, 26, 28, 29, 30, 31, 31, 31, 33, 33, 34, 35, 36, 36, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 34, 34, 34, 34, 34, 34, 34, 34, 33, 33, 33, 33, 32, 32, 32, 31, 31, 29, 26, 20, 18, 22, 28, 30, 29, 30, 30, 31, 31, 32, 33, 33, 35, 36, 36, 36, 35, 35, 35, 35, 35, 35, 109, 111, 110, 106, 105, 105, 105, 105, 105, 105, 105, 104, 104, 105, 105, 107, 107, 107, 107, 101, 130, 117, 131, 138, 137, 135, 135, 136, 137, 131, 124, 119, 120, 129, 130, 132, 137, 146, 153, 164, 187, 209, 212, 212, 215, 220, 221, 220, 219, 214, 207, 195, 92, 108, 150, 150, 150, 149, 138, 74, 25, 27, 29, 34, 106, 181, 181, 183, 187, 188, 190, 191, 193, 194, 193, 192, 193, 194, 194, 194, 194, 193, 187, 163, 171, 165, 185, 189, 191, 193, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 197, 202, 218, 229, 238, 243, 246, 248, 249, 250, 250, 252, 252, 253, 253, 253, 253, 252, 251, 250, 248, 239, 209, 215, 220, 214, 212, 220, 220, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 223, 225, 228, 241, 248, 254, 255, 254, 252, 250, 249, 242, 158, 117, 113, 110, 110, 110, 110, 94, 70, 91, 106, 110, 111, 111, 112, 112, 112, 112, 112, 112, 112, 112, 111, 109, 90, 88, 88, 91, 111, 112, 112, 111, 111, 110, 110, 102, 85, 63, 69, 101, 106, 99, 68, 72, 93, 94, 78, 55, 111, 211, 229, 229, 227, 107, 79, 70, 69, 43, 27, 25, 27, 29, 29, 31, 32, 33, 33, 34, 35, 36, 37, 37, 37, 37, 37, 36, 36, 36, 36, 35, 35, 36, 36, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 34, 34, 34, 34, 34, 33, 33, 33, 33, 32, 32, 32, 30, 28, 23, 18, 20, 25, 30, 30, 30, 30, 31, 31, 32, 33, 33, 35, 36, 36, 36, 36, 36, 36, 36, 35, 35, 36, 107, 108, 107, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 106, 107, 107, 106, 95, 114, 131, 116, 124, 134, 124, 121, 120, 120, 121, 122, 121, 128, 129, 131, 137, 147, 156, 167, 187, 210, 215, 211, 211, 212, 214, 219, 219, 218, 217, 210, 206, 188, 90, 149, 150, 150, 150, 149, 104, 29, 31, 33, 43, 83, 181, 181, 182, 187, 188, 191, 192, 193, 195, 194, 193, 194, 194, 195, 195, 195, 195, 192, 186, 170, 154, 185, 189, 191, 192, 194, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 199, 211, 220, 231, 238, 241, 244, 245, 247, 248, 248, 249, 250, 250, 250, 250, 250, 249, 247, 242, 228, 198, 219, 220, 214, 219, 220, 220, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 222, 224, 229, 234, 240, 244, 248, 249, 246, 240, 236, 237, 235, 153, 117, 113, 111, 110, 110, 110, 104, 66, 78, 97, 105, 111, 111, 112, 112, 112, 112, 112, 112, 112, 112, 106, 98, 90, 88, 88, 88, 90, 111, 111, 112, 112, 111, 110, 110, 107, 85, 74, 45, 87, 97, 89, 64, 67, 87, 97, 98, 139, 221, 229, 231, 231, 225, 88, 77, 68, 50, 30, 25, 27, 30, 31, 32, 33, 34, 35, 35, 36, 36, 37, 38, 38, 38, 38, 38, 38, 37, 37, 37, 37, 36, 36, 36, 35, 35, 35, 36, 36, 36, 36, 35, 35, 35, 35, 35, 34, 34, 34, 34, 34, 33, 33, 33, 33, 32, 32, 30, 26, 21, 18, 22, 28, 30, 30, 30, 30, 31, 32, 32, 33, 34, 36, 36, 36, 36, 36, 36, 37, 36, 36, 35, 35, 106, 106, 106, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 106, 108, 107, 95, 132, 141, 135, 103, 109, 112, 120, 127, 116, 127, 128, 129, 123, 129, 137, 147, 154, 160, 170, 188, 211, 222, 222, 218, 212, 212, 214, 217, 218, 217, 215, 214, 209, 206, 179, 139, 150, 149, 149, 149, 133, 33, 36, 38, 45, 63, 173, 180, 181, 185, 188, 191, 192, 194, 195, 195, 195, 194, 195, 196, 196, 197, 195, 193, 190, 184, 163, 184, 188, 190, 191, 192, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 196, 206, 214, 221, 230, 235, 238, 240, 241, 242, 243, 243, 244, 245, 245, 245, 245, 244, 241, 232, 203, 207, 218, 219, 219, 220, 220, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 223, 226, 230, 233, 236, 237, 235, 233, 232, 231, 230, 231, 228, 151, 116, 112, 110, 110, 110, 110, 105, 90, 106, 108, 106, 101, 102, 100, 96, 103, 107, 111, 112, 108, 100, 92, 88, 87, 86, 88, 88, 88, 92, 111, 112, 112, 112, 112, 110, 110, 109, 86, 81, 39, 73, 86, 77, 61, 67, 81, 99, 145, 224, 229, 233, 235, 231, 215, 82, 74, 53, 36, 26, 27, 30, 32, 34, 34, 35, 36, 36, 36, 37, 38, 39, 39, 39, 39, 39, 39, 39, 39, 38, 38, 38, 37, 36, 36, 37, 37, 36, 36, 36, 36, 36, 36, 36, 36, 35, 35, 35, 35, 34, 34, 34, 34, 33, 33, 33, 33, 31, 29, 24, 20, 18, 25, 30, 30, 31, 31, 31, 32, 32, 33, 34, 36, 37, 37, 37, 37, 37, 37, 36, 37, 36, 35, 35, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 106, 107, 117, 142, 142, 132, 112, 127, 127, 127, 127, 127, 128, 128, 126, 127, 138, 151, 156, 160, 168, 183, 206, 222, 224, 223, 221, 219, 215, 215, 217, 216, 213, 200, 203, 211, 210, 205, 189, 147, 149, 149, 149, 150, 79, 42, 43, 47, 60, 153, 180, 181, 183, 187, 190, 192, 194, 195, 196, 196, 196, 196, 197, 198, 198, 196, 194, 191, 187, 181, 176, 187, 189, 191, 192, 193, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 200, 209, 215, 221, 227, 231, 234, 235, 236, 236, 236, 236, 237, 237, 238, 237, 235, 228, 216, 190, 210, 216, 215, 219, 220, 220, 220, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 223, 225, 226, 228, 229, 230, 229, 226, 227, 227, 229, 229, 228, 226, 153, 115, 112, 111, 110, 110, 110, 105, 90, 109, 111, 111, 111, 111, 111, 112, 111, 100, 90, 85, 89, 89, 88, 88, 87, 87, 87, 88, 88, 88, 95, 111, 112, 112, 112, 112, 110, 110, 107, 86, 80, 43, 52, 85, 73, 61, 69, 83, 132, 222, 230, 232, 235, 238, 232, 205, 80, 61, 41, 27, 28, 30, 32, 34, 36, 36, 36, 37, 37, 38, 38, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 39, 38, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 36, 36, 36, 35, 35, 35, 34, 34, 34, 34, 33, 33, 33, 30, 27, 22, 18, 21, 29, 31, 31, 31, 32, 32, 32, 32, 34, 35, 37, 37, 37, 37, 37, 37, 37, 37, 37, 36, 36, 35, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 119, 142, 140, 114, 87, 112, 112, 114, 107, 127, 128, 127, 125, 131, 151, 157, 159, 167, 178, 199, 220, 224, 223, 222, 221, 220, 219, 217, 216, 211, 190, 196, 204, 209, 210, 209, 205, 193, 143, 150, 149, 149, 117, 47, 48, 53, 60, 126, 179, 180, 181, 187, 189, 192, 193, 195, 196, 197, 197, 197, 198, 199, 199, 198, 196, 192, 190, 186, 173, 187, 188, 191, 191, 193, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 197, 204, 211, 216, 220, 225, 227, 229, 230, 231, 231, 230, 229, 229, 229, 227, 221, 214, 207, 188, 210, 206, 214, 217, 219, 220, 220, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 222, 223, 224, 225, 225, 226, 227, 226, 224, 224, 224, 226, 227, 226, 225, 160, 114, 112, 110, 110, 110, 110, 103, 81, 101, 111, 111, 111, 111, 111, 111, 112, 112, 112, 112, 112, 106, 96, 89, 84, 86, 87, 87, 88, 88, 88, 101, 112, 112, 112, 112, 111, 110, 109, 101, 85, 78, 45, 33, 76, 68, 61, 77, 125, 220, 231, 233, 238, 244, 242, 232, 195, 68, 52, 29, 28, 30, 33, 36, 37, 37, 38, 38, 38, 38, 39, 39, 40, 41, 40, 41, 41, 41, 41, 41, 41, 40, 40, 40, 39, 39, 38, 37, 38, 37, 38, 38, 38, 38, 37, 37, 37, 37, 36, 36, 35, 35, 35, 34, 34, 34, 34, 33, 32, 28, 25, 21, 18, 24, 31, 31, 31, 31, 32, 32, 32, 33, 35, 36, 38, 38, 38, 38, 38, 38, 38, 37, 37, 37, 36, 36, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 111, 139, 138, 127, 126, 127, 126, 127, 117, 126, 126, 127, 127, 130, 148, 154, 160, 173, 190, 214, 224, 224, 223, 222, 220, 220, 219, 216, 215, 211, 199, 195, 185, 199, 210, 210, 209, 206, 193, 142, 150, 148, 138, 49, 49, 65, 60, 77, 173, 179, 181, 184, 188, 191, 193, 195, 197, 197, 198, 198, 199, 199, 199, 198, 197, 194, 192, 188, 168, 193, 187, 189, 191, 192, 194, 195, 195, 195, 195, 195, 195, 195, 195, 195, 196, 201, 206, 210, 214, 217, 221, 224, 225, 225, 225, 224, 224, 223, 220, 215, 213, 209, 191, 199, 202, 203, 213, 215, 217, 218, 220, 221, 221, 221, 221, 221, 221, 221, 221, 221, 222, 223, 223, 224, 224, 224, 223, 222, 222, 222, 222, 223, 224, 224, 214, 157, 113, 112, 110, 110, 110, 110, 103, 81, 87, 106, 111, 111, 111, 111, 111, 112, 112, 112, 112, 112, 112, 112, 111, 111, 111, 104, 98, 86, 88, 89, 94, 110, 112, 112, 112, 111, 109, 109, 106, 90, 85, 77, 45, 34, 54, 64, 65, 120, 218, 232, 234, 241, 245, 245, 239, 229, 185, 62, 39, 26, 30, 34, 36, 37, 38, 38, 39, 39, 39, 40, 40, 41, 42, 42, 41, 42, 42, 42, 42, 42, 42, 41, 41, 40, 40, 40, 39, 39, 39, 39, 39, 39, 39, 39, 38, 38, 37, 37, 36, 36, 36, 35, 35, 35, 34, 34, 34, 33, 30, 26, 24, 20, 20, 28, 31, 32, 32, 32, 33, 33, 33, 34, 36, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 37, 36, 36, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 103, 99, 139, 133, 121, 127, 126, 126, 126, 118, 126, 127, 127, 127, 128, 132, 142, 153, 173, 197, 214, 216, 217, 218, 219, 219, 217, 216, 215, 214, 213, 211, 209, 205, 196, 204, 210, 210, 208, 206, 195, 140, 149, 148, 64, 50, 74, 62, 60, 131, 180, 180, 182, 187, 190, 192, 194, 196, 198, 198, 198, 199, 200, 201, 200, 198, 196, 193, 190, 182, 184, 187, 188, 189, 190, 192, 194, 195, 195, 195, 195, 195, 195, 195, 195, 195, 197, 202, 206, 209, 212, 213, 215, 217, 218, 218, 218, 217, 215, 214, 212, 208, 204, 185, 199, 186, 209, 210, 212, 214, 217, 220, 221, 221, 221, 221, 221, 221, 221, 221, 222, 222, 222, 222, 222, 221, 221, 221, 221, 221, 221, 220, 221, 218, 164, 105, 109, 111, 110, 110, 110, 110, 104, 83, 86, 91, 110, 111, 112, 112, 112, 112, 112, 111, 111, 111, 112, 112, 112, 112, 112, 112, 112, 112, 110, 100, 98, 100, 103, 102, 103, 108, 109, 107, 104, 92, 85, 85, 76, 45, 36, 41, 63, 112, 219, 232, 235, 244, 245, 244, 243, 237, 222, 176, 50, 31, 29, 34, 37, 38, 39, 39, 40, 40, 41, 41, 41, 42, 42, 43, 43, 43, 44, 44, 44, 43, 43, 43, 42, 42, 41, 41, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 39, 38, 38, 37, 37, 36, 36, 35, 35, 35, 34, 34, 32, 28, 25, 23, 19, 24, 31, 31, 32, 33, 33, 33, 34, 34, 35, 37, 39, 39, 39, 39, 39, 39, 38, 38, 38, 38, 37, 37, 37, 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 103, 104, 103, 102, 114, 124, 119, 118, 124, 126, 126, 126, 127, 127, 127, 127, 128, 133, 144, 166, 189, 199, 201, 203, 205, 209, 210, 210, 213, 214, 212, 211, 210, 210, 209, 209, 209, 210, 210, 210, 209, 208, 198, 140, 150, 80, 59, 77, 66, 64, 91, 173, 180, 181, 184, 189, 192, 193, 196, 198, 199, 199, 200, 201, 202, 202, 199, 197, 194, 193, 189, 175, 193, 188, 189, 190, 190, 191, 194, 195, 194, 195, 195, 195, 195, 195, 195, 195, 199, 202, 204, 207, 209, 211, 211, 212, 213, 213, 213, 211, 209, 207, 203, 198, 181, 186, 194, 206, 208, 210, 212, 216, 220, 221, 221, 221, 221, 221, 221, 221, 222, 222, 222, 221, 221, 221, 221, 221, 221, 221, 220, 220, 220, 204, 166, 143, 107, 111, 110, 110, 110, 110, 107, 85, 83, 88, 100, 111, 111, 111, 112, 112, 112, 111, 111, 111, 111, 111, 111, 111, 111, 112, 112, 112, 112, 112, 112, 111, 112, 112, 112, 106, 93, 88, 85, 72, 75, 83, 85, 73, 46, 38, 41, 111, 218, 232, 236, 245, 245, 244, 243, 242, 234, 213, 166, 38, 31, 32, 37, 39, 40, 40, 40, 41, 42, 42, 42, 42, 43, 44, 44, 44, 45, 45, 45, 45, 44, 44, 44, 43, 43, 42, 42, 42, 41, 41, 41, 41, 41, 41, 41, 40, 40, 39, 39, 38, 38, 37, 37, 36, 36, 35, 35, 34, 34, 31, 26, 24, 22, 19, 29, 32, 32, 32, 33, 33, 34, 35, 35, 37, 39, 40, 40, 40, 40, 40, 40, 40, 39, 38, 38, 38, 37, 36, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 103, 103, 104, 104, 104, 105, 102, 103, 105, 110, 110, 109, 122, 123, 115, 127, 127, 129, 134, 143, 166, 186, 190, 190, 192, 194, 199, 201, 205, 211, 211, 210, 210, 209, 209, 209, 210, 210, 210, 210, 210, 210, 210, 209, 200, 141, 85, 75, 77, 69, 67, 97, 153, 180, 180, 182, 187, 190, 192, 195, 197, 198, 199, 200, 202, 203, 203, 202, 199, 196, 194, 192, 177, 196, 188, 188, 190, 190, 190, 191, 193, 194, 194, 196, 195, 195, 195, 195, 195, 195, 198, 201, 203, 205, 206, 208, 209, 210, 209, 208, 206, 204, 201, 199, 183, 191, 176, 198, 203, 203, 206, 209, 215, 220, 220, 221, 221, 221, 221, 221, 222, 222, 222, 221, 221, 221, 221, 221, 221, 221, 220, 220, 216, 192, 187, 193, 116, 111, 110, 110, 110, 110, 109, 89, 80, 91, 84, 105, 111, 111, 111, 111, 110, 110, 109, 109, 109, 109, 109, 109, 109, 109, 111, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 110, 104, 90, 60, 64, 76, 67, 45, 41, 103, 219, 233, 238, 245, 245, 244, 243, 241, 239, 228, 206, 160, 34, 34, 35, 39, 40, 40, 41, 41, 43, 43, 44, 43, 43, 45, 45, 46, 46, 46, 46, 46, 46, 46, 45, 45, 44, 44, 43, 43, 43, 43, 43, 42, 42, 42, 41, 41, 41, 41, 40, 40, 39, 38, 38, 37, 36, 36, 35, 35, 35, 32, 28, 25, 24, 20, 22, 31, 32, 33, 33, 34, 34, 35, 35, 36, 38, 39, 39, 40, 40, 40, 40, 40, 40, 40, 39, 38, 38, 38, 37, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 105, 104, 103, 104, 105, 105, 105, 105, 104, 104, 104, 104, 105, 106, 106, 104, 103, 115, 121, 128, 136, 144, 154, 171, 173, 169, 178, 190, 193, 194, 197, 206, 210, 210, 209, 208, 207, 208, 209, 210, 210, 210, 211, 211, 211, 210, 210, 202, 97, 88, 78, 72, 70, 104, 139, 161, 180, 181, 184, 188, 192, 194, 197, 198, 200, 200, 201, 203, 203, 202, 200, 198, 195, 193, 191, 182, 199, 187, 189, 190, 190, 190, 191, 192, 193, 194, 196, 195, 195, 195, 195, 195, 195, 197, 200, 201, 202, 203, 204, 204, 204, 203, 202, 200, 197, 192, 174, 183, 185, 196, 199, 199, 202, 207, 214, 220, 220, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 220, 220, 220, 201, 199, 214, 217, 140, 114, 111, 110, 110, 110, 109, 94, 77, 88, 85, 84, 110, 111, 109, 107, 104, 99, 91, 89, 89, 88, 88, 87, 85, 85, 94, 111, 112, 112, 112, 112, 112, 112, 112, 111, 111, 110, 108, 111, 112, 111, 97, 62, 62, 56, 43, 105, 218, 233, 239, 245, 244, 244, 243, 241, 239, 235, 217, 200, 158, 35, 36, 37, 40, 41, 41, 41, 43, 44, 43, 44, 45, 46, 46, 47, 47, 48, 48, 47, 47, 47, 46, 46, 46, 46, 45, 45, 45, 45, 44, 44, 44, 43, 43, 42, 42, 41, 41, 41, 40, 40, 39, 38, 38, 37, 37, 36, 35, 35, 31, 26, 24, 23, 19, 28, 33, 33, 33, 33, 34, 35, 35, 36, 37, 39, 40, 40, 40, 39, 39, 40, 40, 40, 40, 40, 39, 38, 38, 37, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 105, 106, 105, 106, 108, 107, 107, 106, 103, 103, 103, 104, 105, 106, 106, 113, 111, 106, 96, 97, 107, 112, 143, 148, 154, 155, 155, 163, 174, 189, 191, 196, 205, 207, 206, 206, 206, 206, 208, 210, 210, 210, 211, 212, 212, 212, 211, 210, 202, 123, 78, 74, 73, 121, 130, 113, 178, 180, 181, 186, 191, 193, 195, 198, 199, 200, 200, 202, 203, 203, 202, 199, 197, 193, 192, 184, 201, 192, 187, 188, 189, 190, 190, 190, 192, 193, 194, 195, 195, 195, 195, 195, 195, 195, 196, 197, 198, 199, 200, 200, 200, 199, 197, 195, 193, 184, 174, 179, 192, 195, 196, 196, 200, 205, 214, 220, 220, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 220, 220, 211, 198, 220, 220, 165, 110, 111, 111, 110, 110, 110, 99, 75, 79, 79, 98, 109, 110, 109, 106, 105, 103, 96, 90, 89, 89, 88, 88, 86, 85, 85, 104, 112, 112, 112, 112, 112, 112, 112, 112, 111, 102, 75, 73, 82, 105, 112, 112, 94, 67, 60, 108, 219, 233, 239, 245, 244, 244, 243, 241, 239, 235, 228, 206, 195, 157, 38, 39, 39, 41, 41, 42, 44, 45, 45, 45, 45, 45, 47, 48, 48, 49, 49, 49, 48, 48, 48, 47, 47, 47, 47, 47, 47, 47, 47, 46, 45, 45, 44, 44, 43, 43, 42, 42, 41, 41, 40, 40, 39, 38, 37, 37, 36, 36, 34, 28, 25, 24, 22, 20, 31, 33, 33, 34, 34, 34, 35, 36, 37, 38, 39, 40, 40, 40, 40, 40, 40, 39, 40, 40, 40, 40, 39, 38, 38, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 105, 106, 106, 107, 109, 111, 111, 108, 109, 110, 109, 104, 103, 104, 104, 104, 107, 113, 127, 125, 116, 110, 113, 120, 133, 149, 154, 154, 154, 154, 154, 151, 165, 187, 190, 199, 204, 204, 205, 205, 205, 206, 209, 210, 210, 212, 213, 213, 213, 213, 212, 210, 204, 125, 76, 73, 140, 109, 141, 144, 180, 181, 182, 188, 192, 194, 196, 198, 200, 200, 201, 202, 203, 202, 199, 198, 194, 193, 190, 185, 207, 189, 187, 188, 189, 190, 190, 190, 192, 193, 193, 194, 195, 195, 195, 195, 195, 195, 195, 195, 196, 196, 196, 195, 194, 192, 191, 189, 165, 187, 177, 192, 193, 195, 195, 198, 203, 214, 220, 220, 221, 221, 220, 220, 220, 220, 221, 221, 221, 220, 220, 220, 220, 220, 220, 212, 220, 220, 193, 103, 103, 104, 108, 110, 110, 107, 76, 75, 93, 108, 110, 110, 110, 107, 105, 104, 102, 94, 89, 89, 88, 88, 87, 86, 86, 88, 110, 111, 112, 112, 112, 112, 112, 112, 111, 110, 83, 63, 63, 66, 77, 99, 95, 78, 59, 121, 218, 233, 239, 245, 244, 244, 243, 240, 238, 235, 230, 212, 200, 190, 158, 39, 40, 41, 42, 42, 44, 46, 46, 46, 46, 46, 47, 48, 49, 50, 50, 49, 49, 49, 49, 49, 49, 48, 49, 48, 49, 49, 48, 48, 47, 47, 46, 46, 45, 45, 44, 43, 43, 42, 42, 41, 40, 40, 39, 39, 37, 37, 36, 32, 26, 24, 24, 21, 25, 33, 33, 33, 34, 34, 35, 36, 37, 38, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 40, 40, 40, 38, 38, 105, 104, 104, 104, 104, 104, 105, 105, 104, 106, 107, 107, 109, 112, 119, 118, 112, 110, 111, 113, 112, 108, 105, 105, 105, 107, 116, 129, 134, 127, 113, 111, 118, 129, 145, 153, 154, 154, 154, 155, 155, 155, 153, 150, 167, 184, 201, 204, 204, 204, 204, 205, 207, 209, 210, 211, 213, 213, 214, 214, 214, 212, 210, 206, 133, 98, 144, 107, 152, 129, 170, 180, 181, 185, 190, 193, 195, 197, 199, 199, 200, 202, 202, 201, 200, 198, 195, 193, 190, 185, 194, 205, 187, 187, 188, 189, 190, 190, 190, 191, 192, 192, 193, 193, 194, 195, 195, 194, 194, 195, 194, 193, 193, 191, 192, 191, 191, 180, 168, 183, 183, 192, 193, 196, 194, 197, 202, 214, 220, 220, 220, 220, 220, 219, 219, 220, 220, 221, 220, 220, 219, 220, 220, 220, 220, 220, 220, 213, 115, 98, 98, 99, 103, 108, 108, 86, 85, 104, 110, 110, 110, 110, 109, 106, 105, 104, 100, 93, 89, 88, 88, 88, 87, 87, 85, 97, 111, 112, 112, 112, 112, 112, 112, 112, 111, 105, 64, 61, 60, 78, 93, 81, 48, 36, 106, 216, 233, 240, 245, 244, 243, 243, 241, 239, 234, 229, 215, 202, 195, 185, 160, 40, 41, 41, 43, 44, 46, 46, 47, 47, 47, 48, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 49, 49, 48, 47, 46, 46, 45, 45, 44, 44, 43, 42, 42, 41, 41, 40, 39, 38, 37, 36, 30, 25, 24, 23, 20, 29, 33, 34, 34, 34, 34, 35, 36, 37, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 40, 40, 39, 38, 106, 105, 105, 105, 105, 105, 105, 105, 106, 115, 116, 117, 121, 124, 123, 119, 113, 112, 112, 115, 116, 116, 113, 112, 114, 121, 126, 126, 124, 121, 113, 117, 127, 146, 157, 159, 156, 156, 157, 157, 157, 158, 156, 155, 157, 157, 184, 199, 202, 202, 202, 204, 205, 208, 210, 211, 213, 214, 214, 214, 215, 214, 211, 210, 206, 153, 110, 142, 151, 130, 109, 179, 180, 181, 186, 192, 194, 196, 198, 198, 200, 201, 201, 201, 200, 198, 196, 193, 191, 189, 183, 197, 204, 187, 187, 188, 188, 189, 189, 190, 190, 190, 191, 191, 191, 191, 192, 192, 193, 193, 193, 191, 191, 191, 191, 191, 186, 168, 179, 177, 188, 192, 193, 195, 194, 196, 201, 214, 220, 220, 220, 220, 216, 208, 214, 220, 220, 220, 220, 219, 203, 219, 220, 220, 220, 220, 219, 152, 95, 93, 94, 96, 99, 101, 87, 93, 109, 110, 110, 110, 110, 110, 107, 104, 105, 104, 99, 93, 89, 88, 88, 88, 88, 87, 85, 106, 111, 112, 112, 112, 112, 112, 112, 112, 110, 88, 57, 81, 100, 88, 52, 33, 36, 92, 214, 233, 241, 245, 245, 244, 243, 241, 238, 233, 228, 213, 201, 196, 189, 181, 161, 42, 42, 41, 44, 46, 47, 47, 47, 47, 48, 49, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 52, 52, 52, 51, 50, 50, 49, 49, 48, 48, 47, 47, 46, 46, 45, 44, 43, 43, 42, 41, 41, 40, 39, 38, 35, 27, 24, 24, 23, 21, 33, 33, 34, 34, 35, 35, 36, 37, 38, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 40, 39, 38, 107, 106, 105, 105, 105, 105, 105, 105, 107, 116, 117, 121, 123, 122, 121, 120, 117, 114, 113, 117, 120, 120, 121, 122, 125, 123, 119, 116, 116, 115, 117, 125, 144, 159, 165, 166, 169, 162, 164, 163, 164, 167, 168, 161, 155, 156, 155, 187, 193, 200, 201, 201, 204, 206, 209, 211, 212, 214, 214, 214, 214, 214, 213, 211, 210, 207, 162, 146, 150, 132, 40, 152, 179, 180, 182, 187, 192, 194, 196, 198, 199, 200, 200, 200, 199, 198, 196, 193, 192, 189, 187, 181, 195, 206, 189, 186, 187, 187, 188, 188, 189, 189, 188, 188, 188, 189, 188, 188, 189, 189, 190, 190, 191, 191, 191, 190, 176, 168, 182, 178, 192, 193, 193, 195, 194, 196, 201, 214, 220, 220, 220, 217, 195, 193, 207, 220, 220, 220, 220, 210, 213, 220, 220, 220, 220, 220, 188, 90, 89, 90, 92, 94, 96, 85, 74, 93, 104, 110, 110, 110, 110, 109, 105, 105, 105, 104, 99, 92, 89, 88, 88, 88, 88, 86, 90, 111, 111, 112, 112, 112, 112, 112, 112, 112, 107, 70, 94, 94, 59, 31, 33, 35, 60, 206, 233, 241, 246, 245, 244, 243, 241, 237, 233, 226, 210, 199, 195, 190, 184, 176, 164, 47, 42, 42, 45, 47, 48, 47, 48, 48, 50, 51, 52, 53, 52, 52, 52, 52, 52, 52, 52, 53, 53, 53, 54, 53, 53, 52, 51, 51, 50, 49, 50, 49, 48, 48, 48, 47, 46, 45, 44, 43, 43, 42, 41, 40, 40, 39, 34, 26, 24, 24, 23, 25, 34, 34, 34, 34, 35, 35, 36, 37, 39, 40, 40, 40, 41, 41, 41, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 38, 116, 107, 106, 105, 105, 105, 105, 106, 109, 112, 114, 118, 119, 120, 118, 118, 118, 116, 114, 117, 123, 123, 122, 124, 127, 115, 111, 110, 111, 116, 123, 139, 159, 170, 173, 175, 179, 177, 176, 179, 178, 173, 173, 172, 164, 155, 155, 157, 178, 193, 196, 199, 201, 203, 207, 210, 211, 212, 214, 215, 214, 214, 213, 211, 211, 210, 207, 174, 147, 131, 40, 86, 175, 179, 180, 183, 189, 193, 195, 196, 198, 199, 199, 199, 199, 198, 196, 193, 192, 190, 188, 187, 181, 198, 209, 194, 185, 185, 186, 186, 186, 186, 187, 188, 188, 188, 188, 187, 188, 188, 189, 190, 190, 190, 189, 185, 168, 175, 176, 187, 193, 193, 192, 194, 192, 193, 200, 215, 220, 220, 220, 202, 187, 188, 212, 220, 220, 220, 220, 204, 220, 220, 220, 220, 220, 211, 104, 84, 84, 86, 89, 92, 92, 87, 105, 106, 97, 92, 97, 109, 110, 108, 105, 106, 106, 103, 98, 91, 89, 89, 88, 88, 90, 99, 109, 112, 112, 112, 112, 112, 112, 112, 112, 111, 90, 96, 75, 35, 31, 32, 35, 48, 190, 233, 241, 246, 245, 244, 243, 240, 237, 232, 220, 205, 197, 193, 189, 184, 179, 172, 165, 60, 43, 45, 45, 48, 48, 48, 49, 50, 52, 53, 53, 53, 53, 54, 53, 53, 54, 54, 54, 55, 55, 55, 54, 54, 54, 53, 52, 52, 51, 51, 50, 49, 49, 49, 48, 48, 47, 46, 46, 45, 44, 43, 42, 41, 40, 40, 32, 25, 24, 25, 22, 29, 34, 34, 34, 35, 35, 36, 37, 38, 41, 41, 41, 42, 42, 42, 42, 42, 42, 41, 40, 41, 40, 40, 40, 40, 40, 38, 125, 118, 110, 106, 106, 107, 108, 108, 108, 109, 110, 112, 114, 114, 116, 117, 116, 114, 114, 117, 123, 121, 121, 120, 122, 109, 107, 108, 112, 119, 133, 156, 170, 176, 178, 180, 182, 183, 181, 181, 181, 180, 177, 175, 172, 163, 155, 155, 158, 176, 185, 193, 198, 201, 203, 207, 210, 211, 212, 214, 213, 213, 213, 212, 211, 210, 209, 206, 179, 115, 44, 64, 137, 178, 179, 181, 185, 189, 192, 194, 196, 198, 198, 198, 198, 197, 196, 195, 193, 190, 188, 188, 186, 158, 186, 211, 201, 188, 184, 184, 184, 185, 185, 186, 186, 187, 187, 187, 186, 187, 188, 188, 189, 189, 188, 172, 169, 179, 182, 193, 193, 193, 193, 193, 188, 188, 199, 215, 220, 220, 216, 190, 186, 195, 218, 220, 220, 220, 220, 210, 220, 220, 220, 215, 208, 145, 78, 77, 78, 81, 85, 90, 82, 95, 100, 101, 103, 105, 103, 90, 95, 104, 104, 105, 103, 98, 94, 88, 87, 89, 98, 106, 111, 111, 111, 112, 112, 112, 112, 112, 112, 112, 111, 108, 82, 87, 32, 31, 32, 35, 58, 174, 233, 242, 246, 246, 244, 243, 240, 236, 225, 212, 201, 195, 191, 188, 184, 180, 175, 170, 166, 83, 44, 47, 45, 48, 48, 49, 51, 52, 53, 54, 54, 54, 55, 54, 54, 55, 55, 55, 56, 56, 56, 56, 56, 55, 55, 54, 53, 53, 52, 52, 51, 50, 50, 49, 49, 48, 47, 47, 46, 46, 45, 44, 43, 42, 40, 39, 29, 25, 25, 25, 21, 33, 34, 34, 35, 35, 36, 36, 38, 39, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 40, 40, 40, 40, 40, 38, 122, 120, 116, 112, 112, 113, 112, 109, 109, 110, 110, 108, 108, 112, 114, 115, 113, 112, 112, 113, 114, 114, 115, 115, 118, 106, 107, 110, 114, 124, 148, 169, 177, 179, 180, 181, 182, 183, 183, 181, 182, 181, 178, 174, 171, 165, 158, 155, 154, 155, 166, 188, 194, 199, 201, 203, 207, 210, 211, 211, 213, 213, 213, 213, 212, 211, 210, 209, 205, 179, 79, 63, 80, 170, 178, 180, 182, 186, 190, 192, 195, 197, 198, 197, 197, 196, 195, 194, 192, 191, 189, 188, 186, 178, 80, 151, 206, 207, 196, 185, 183, 183, 184, 185, 185, 185, 185, 185, 186, 186, 187, 187, 188, 186, 174, 165, 177, 181, 192, 193, 193, 193, 193, 193, 187, 182, 197, 215, 220, 220, 208, 189, 188, 208, 216, 217, 218, 219, 219, 215, 220, 220, 214, 199, 177, 74, 70, 70, 72, 76, 81, 86, 81, 94, 94, 94, 96, 100, 107, 110, 106, 90, 97, 100, 97, 94, 92, 91, 99, 108, 111, 111, 111, 111, 112, 112, 112, 112, 112, 112, 112, 112, 110, 91, 89, 49, 31, 32, 61, 151, 177, 231, 242, 246, 246, 245, 243, 239, 228, 215, 205, 199, 194, 190, 187, 184, 181, 178, 174, 169, 166, 105, 46, 47, 45, 49, 49, 51, 52, 53, 54, 55, 55, 55, 55, 55, 56, 56, 56, 56, 57, 57, 57, 57, 56, 56, 55, 54, 54, 54, 53, 53, 52, 52, 51, 51, 50, 49, 48, 48, 47, 46, 46, 44, 44, 43, 41, 38, 27, 25, 25, 26, 24, 34, 34, 35, 35, 36, 36, 37, 38, 40, 42, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 40, 40, 40, 40, 38, 120, 121, 121, 117, 113, 114, 113, 108, 110, 111, 110, 107, 108, 109, 112, 112, 111, 109, 109, 108, 110, 112, 113, 113, 114, 106, 108, 113, 117, 132, 162, 176, 180, 180, 181, 182, 183, 183, 183, 183, 182, 181, 178, 172, 167, 163, 157, 156, 155, 154, 146, 164, 188, 196, 199, 200, 202, 207, 210, 211, 211, 211, 213, 213, 213, 212, 211, 210, 209, 204, 186, 105, 74, 127, 177, 179, 181, 182, 186, 190, 193, 194, 196, 196, 195, 195, 194, 194, 193, 191, 189, 188, 187, 186, 144, 69, 101, 175, 207, 205, 194, 187, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 184, 177, 165, 173, 180, 190, 193, 193, 193, 193, 193, 193, 187, 176, 194, 211, 219, 219, 205, 189, 190, 207, 213, 214, 214, 216, 214, 214, 220, 218, 196, 187, 102, 64, 64, 65, 68, 72, 78, 76, 89, 88, 87, 86, 88, 94, 103, 110, 110, 109, 92, 90, 97, 97, 104, 111, 111, 111, 111, 111, 111, 111, 112, 112, 112, 112, 112, 112, 112, 111, 109, 76, 66, 34, 104, 145, 156, 167, 222, 242, 245, 245, 243, 235, 222, 211, 205, 201, 196, 192, 189, 186, 184, 182, 179, 175, 172, 169, 166, 126, 49, 48, 46, 49, 51, 52, 53, 54, 55, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 58, 58, 57, 57, 56, 56, 55, 55, 54, 54, 53, 53, 52, 51, 51, 50, 50, 49, 48, 48, 46, 46, 45, 43, 42, 36, 27, 25, 26, 26, 28, 35, 35, 35, 36, 36, 37, 38, 39, 41, 42, 42, 42, 41, 41, 41, 41, 41, 42, 42, 42, 42, 42, 40, 40, 40, 39, 38, 124, 126, 122, 121, 116, 114, 114, 110, 111, 114, 110, 110, 110, 110, 110, 107, 106, 107, 107, 108, 111, 113, 113, 114, 113, 107, 112, 115, 125, 142, 172, 179, 180, 181, 182, 182, 183, 183, 183, 183, 183, 183, 179, 172, 162, 158, 156, 156, 156, 155, 156, 149, 179, 190, 197, 199, 200, 202, 206, 209, 210, 211, 212, 213, 214, 214, 214, 213, 212, 210, 204, 191, 113, 81, 168, 177, 179, 180, 183, 186, 189, 192, 194, 194, 194, 194, 193, 192, 192, 191, 189, 189, 188, 186, 183, 96, 72, 76, 110, 169, 203, 206, 205, 204, 203, 202, 199, 198, 195, 192, 187, 182, 180, 168, 172, 179, 182, 193, 193, 193, 193, 193, 193, 193, 189, 172, 189, 198, 209, 215, 201, 188, 187, 198, 208, 209, 209, 211, 204, 214, 219, 204, 186, 147, 60, 57, 58, 60, 64, 68, 74, 80, 82, 79, 80, 78, 79, 86, 99, 110, 110, 110, 109, 96, 73, 95, 109, 111, 111, 111, 111, 111, 111, 112, 112, 112, 112, 112, 112, 111, 111, 111, 93, 65, 50, 139, 179, 173, 167, 208, 240, 243, 236, 224, 211, 204, 201, 198, 195, 193, 191, 188, 186, 184, 182, 180, 177, 174, 172, 169, 167, 146, 49, 49, 48, 49, 52, 54, 54, 55, 56, 56, 57, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 58, 58, 58, 57, 57, 57, 56, 55, 54, 54, 53, 53, 52, 52, 51, 50, 49, 49, 48, 47, 47, 46, 44, 43, 33, 28, 26, 27, 25, 32, 35, 35, 35, 36, 36, 37, 39, 40, 42, 42, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 42, 42, 41, 40, 40, 39, 37, 122, 121, 122, 122, 118, 117, 116, 113, 114, 111, 108, 108, 108, 108, 109, 107, 106, 107, 107, 108, 111, 111, 112, 112, 113, 117, 126, 133, 156, 168, 178, 181, 181, 182, 182, 183, 183, 183, 183, 183, 183, 184, 183, 175, 159, 159, 158, 156, 155, 155, 155, 135, 107, 179, 193, 198, 198, 199, 202, 206, 209, 210, 212, 213, 214, 215, 215, 215, 214, 212, 210, 204, 191, 133, 146, 171, 177, 179, 181, 183, 186, 189, 192, 194, 193, 193, 191, 191, 190, 189, 189, 188, 187, 186, 186, 163, 64, 74, 79, 80, 89, 137, 173, 199, 208, 208, 209, 208, 206, 202, 193, 184, 179, 177, 179, 182, 188, 192, 193, 193, 193, 193, 193, 193, 190, 177, 182, 190, 196, 201, 195, 185, 185, 191, 204, 204, 205, 207, 194, 212, 215, 188, 179, 79, 52, 51, 53, 55, 60, 65, 70, 83, 77, 77, 75, 73, 74, 79, 97, 110, 110, 110, 110, 109, 95, 61, 70, 97, 109, 111, 111, 111, 112, 112, 112, 112, 112, 112, 111, 111, 111, 110, 67, 60, 121, 179, 165, 172, 195, 225, 224, 211, 203, 201, 198, 196, 195, 192, 191, 189, 187, 186, 184, 182, 181, 179, 176, 174, 172, 170, 168, 162, 59, 50, 50, 49, 53, 54, 55, 56, 57, 58, 59, 59, 59, 59, 60, 60, 60, 60, 60, 60, 59, 59, 59, 58, 58, 58, 57, 57, 56, 56, 55, 54, 54, 53, 53, 52, 51, 51, 50, 49, 47, 47, 46, 45, 43, 31, 28, 27, 27, 24, 34, 35, 35, 36, 36, 37, 38, 40, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 41, 42, 42, 42, 40, 40, 39, 37, 119, 117, 120, 122, 121, 120, 120, 117, 112, 108, 107, 108, 107, 107, 107, 107, 106, 106, 106, 107, 109, 109, 107, 108, 120, 132, 141, 156, 171, 181, 183, 186, 186, 184, 183, 184, 183, 183, 183, 183, 183, 183, 182, 174, 166, 167, 165, 159, 154, 154, 154, 120, 84, 129, 163, 195, 198, 198, 199, 202, 206, 210, 211, 213, 215, 215, 216, 216, 215, 215, 214, 211, 205, 199, 174, 155, 168, 176, 180, 181, 184, 186, 189, 192, 192, 192, 192, 192, 192, 190, 189, 188, 187, 186, 186, 186, 125, 62, 76, 79, 80, 74, 66, 64, 100, 137, 161, 178, 192, 197, 197, 190, 179, 178, 186, 192, 193, 193, 193, 191, 188, 187, 191, 193, 191, 180, 172, 186, 188, 191, 187, 184, 184, 186, 198, 199, 200, 202, 189, 209, 198, 183, 142, 50, 48, 48, 49, 52, 57, 65, 71, 75, 71, 72, 72, 70, 71, 76, 99, 108, 104, 102, 96, 93, 96, 103, 65, 42, 67, 94, 108, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 96, 58, 77, 176, 150, 169, 190, 196, 201, 197, 196, 195, 194, 193, 192, 191, 189, 188, 186, 185, 184, 183, 182, 180, 177, 176, 174, 172, 171, 169, 168, 95, 51, 52, 51, 55, 55, 57, 57, 58, 59, 60, 60, 60, 60, 60, 60, 61, 61, 60, 60, 60, 60, 59, 59, 59, 59, 58, 58, 57, 57, 56, 56, 56, 55, 54, 53, 52, 51, 51, 50, 48, 47, 46, 46, 41, 30, 28, 27, 27, 26, 35, 35, 35, 36, 37, 38, 39, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 42, 41, 40, 39, 36, 116, 114, 115, 122, 123, 123, 120, 116, 112, 109, 107, 108, 107, 106, 106, 106, 106, 106, 106, 107, 108, 107, 106, 117, 132, 141, 155, 171, 179, 183, 186, 188, 189, 189, 184, 185, 183, 183, 181, 180, 181, 182, 179, 174, 172, 172, 172, 165, 154, 154, 154, 102, 85, 154, 154, 175, 196, 197, 197, 198, 202, 207, 210, 212, 214, 215, 216, 216, 216, 216, 216, 216, 214, 210, 204, 193, 160, 158, 174, 181, 183, 183, 184, 189, 192, 194, 203, 210, 214, 215, 207, 199, 192, 189, 188, 187, 180, 82, 63, 77, 79, 78, 66, 62, 60, 59, 59, 51, 69, 75, 121, 181, 186, 180, 188, 192, 193, 192, 190, 186, 182, 181, 185, 193, 192, 181, 168, 186, 185, 186, 185, 184, 184, 184, 193, 195, 196, 198, 185, 202, 185, 179, 76, 46, 45, 45, 47, 50, 56, 64, 73, 60, 71, 68, 68, 68, 69, 75, 101, 90, 76, 74, 70, 70, 74, 104, 110, 81, 33, 41, 63, 91, 108, 111, 111, 110, 111, 111, 111, 111, 111, 71, 61, 127, 141, 169, 187, 188, 190, 191, 190, 190, 190, 190, 189, 189, 188, 187, 186, 185, 184, 183, 182, 181, 178, 177, 175, 174, 173, 171, 170, 169, 129, 52, 53, 52, 56, 57, 58, 58, 59, 60, 60, 60, 61, 61, 61, 61, 61, 61, 61, 61, 61, 60, 60, 60, 59, 59, 59, 59, 58, 58, 57, 57, 56, 56, 55, 54, 53, 52, 51, 50, 50, 48, 47, 46, 39, 29, 27, 27, 27, 28, 35, 35, 36, 37, 37, 38, 40, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 41, 40, 38, 36, 114, 113, 112, 118, 123, 119, 116, 115, 112, 110, 109, 107, 106, 106, 106, 105, 105, 106, 106, 106, 107, 106, 107, 126, 142, 154, 169, 183, 184, 185, 189, 189, 187, 193, 188, 184, 184, 183, 182, 180, 180, 182, 181, 178, 177, 175, 174, 169, 154, 154, 150, 87, 98, 162, 154, 122, 189, 197, 197, 196, 199, 204, 209, 211, 214, 215, 216, 216, 217, 219, 220, 220, 219, 217, 214, 209, 204, 188, 160, 159, 181, 182, 183, 184, 195, 217, 227, 230, 231, 231, 232, 229, 223, 212, 198, 190, 187, 158, 60, 64, 77, 79, 72, 63, 60, 59, 60, 54, 63, 73, 72, 127, 212, 189, 182, 184, 181, 180, 181, 181, 180, 179, 180, 189, 193, 183, 164, 186, 183, 184, 183, 184, 184, 184, 189, 192, 193, 194, 179, 190, 182, 148, 45, 43, 43, 43, 45, 49, 60, 46, 49, 71, 68, 67, 67, 67, 68, 74, 99, 86, 74, 71, 70, 70, 96, 110, 111, 112, 91, 36, 33, 40, 62, 89, 106, 110, 110, 110, 111, 111, 101, 57, 60, 118, 166, 184, 185, 187, 188, 188, 188, 188, 188, 188, 187, 187, 186, 186, 185, 184, 184, 183, 182, 179, 178, 176, 175, 174, 173, 172, 172, 170, 156, 55, 55, 55, 54, 58, 59, 59, 60, 60, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 60, 60, 60, 59, 59, 59, 58, 58, 57, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 36, 29, 28, 27, 24, 31, 35, 35, 36, 37, 38, 39, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 41, 40, 38, 35, 109, 110, 110, 112, 118, 115, 114, 114, 113, 111, 107, 106, 106, 106, 106, 105, 105, 106, 106, 106, 107, 106, 112, 136, 156, 174, 180, 189, 192, 198, 200, 189, 184, 191, 194, 186, 187, 188, 183, 180, 182, 182, 182, 181, 180, 177, 175, 169, 154, 154, 137, 84, 120, 162, 140, 83, 134, 194, 196, 196, 197, 200, 205, 209, 212, 215, 216, 216, 219, 221, 221, 222, 222, 222, 221, 219, 216, 212, 206, 193, 175, 173, 182, 183, 183, 206, 227, 232, 232, 232, 233, 232, 232, 231, 227, 212, 196, 188, 119, 58, 65, 77, 77, 66, 62, 62, 62, 60, 51, 71, 70, 70, 137, 192, 186, 181, 180, 179, 180, 180, 180, 179, 179, 183, 193, 185, 163, 185, 183, 184, 183, 183, 184, 184, 186, 190, 191, 192, 169, 184, 182, 97, 43, 41, 42, 42, 44, 50, 57, 42, 70, 69, 67, 66, 66, 66, 67, 73, 94, 86, 71, 70, 73, 90, 110, 110, 112, 112, 112, 95, 37, 33, 33, 40, 60, 87, 106, 110, 110, 110, 78, 61, 59, 157, 182, 183, 184, 185, 186, 186, 186, 186, 186, 186, 185, 185, 185, 184, 184, 183, 183, 181, 180, 179, 177, 176, 176, 175, 174, 173, 172, 172, 170, 92, 57, 57, 55, 59, 59, 60, 61, 61, 61, 61, 61, 61, 62, 62, 62, 61, 61, 62, 61, 61, 61, 61, 61, 61, 60, 60, 60, 59, 59, 58, 58, 57, 57, 56, 55, 54, 54, 52, 51, 50, 49, 46, 34, 29, 28, 27, 25, 33, 35, 36, 36, 37, 38, 39, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 41, 39, 37, 35, 106, 107, 107, 108, 109, 112, 113, 113, 112, 107, 106, 106, 106, 106, 106, 105, 105, 105, 105, 106, 106, 113, 123, 145, 177, 182, 186, 192, 197, 201, 201, 192, 185, 193, 198, 197, 197, 195, 185, 181, 182, 183, 182, 181, 181, 176, 173, 165, 154, 154, 120, 84, 140, 165, 103, 84, 81, 152, 194, 196, 196, 197, 201, 206, 211, 214, 216, 217, 220, 221, 222, 223, 223, 224, 224, 224, 223, 222, 220, 217, 211, 203, 183, 178, 184, 186, 207, 228, 232, 232, 233, 233, 233, 233, 232, 231, 220, 199, 181, 81, 56, 68, 76, 72, 66, 64, 64, 65, 51, 66, 68, 67, 67, 63, 63, 72, 94, 136, 195, 205, 204, 198, 190, 182, 189, 186, 172, 176, 183, 183, 183, 183, 184, 185, 185, 188, 189, 190, 163, 184, 167, 43, 41, 41, 41, 41, 44, 55, 50, 69, 69, 68, 66, 66, 66, 66, 66, 72, 88, 82, 70, 72, 91, 110, 110, 111, 112, 112, 112, 112, 98, 41, 34, 33, 33, 39, 57, 88, 106, 90, 56, 63, 117, 180, 181, 182, 183, 184, 184, 185, 185, 185, 185, 185, 185, 184, 184, 184, 183, 183, 182, 180, 179, 178, 177, 177, 176, 175, 175, 174, 173, 172, 171, 138, 58, 58, 55, 59, 60, 61, 61, 61, 61, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 61, 61, 61, 60, 60, 59, 59, 58, 57, 56, 56, 55, 54, 53, 52, 50, 49, 45, 33, 28, 27, 27, 26, 34, 35, 35, 36, 37, 38, 39, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 41, 40, 37, 34, 106, 107, 107, 105, 106, 111, 113, 113, 107, 105, 105, 106, 106, 106, 106, 105, 105, 105, 105, 106, 108, 125, 138, 170, 186, 183, 187, 190, 200, 201, 201, 197, 191, 194, 198, 200, 198, 190, 182, 181, 181, 183, 182, 180, 179, 173, 171, 165, 155, 154, 101, 92, 158, 142, 83, 83, 85, 107, 152, 188, 196, 196, 198, 202, 208, 212, 215, 217, 220, 222, 223, 223, 225, 226, 227, 226, 227, 227, 226, 225, 224, 221, 215, 207, 193, 185, 180, 195, 218, 231, 232, 233, 233, 233, 233, 232, 232, 221, 196, 160, 57, 54, 69, 74, 69, 67, 66, 67, 59, 57, 67, 64, 64, 62, 62, 63, 60, 51, 78, 170, 213, 216, 212, 199, 189, 188, 180, 167, 183, 183, 183, 183, 184, 183, 184, 187, 187, 186, 166, 183, 133, 41, 40, 39, 40, 42, 46, 58, 71, 71, 69, 68, 66, 67, 67, 67, 66, 69, 81, 84, 71, 94, 110, 110, 111, 112, 112, 112, 112, 112, 112, 104, 53, 32, 33, 33, 33, 38, 56, 55, 60, 70, 163, 179, 181, 182, 182, 183, 183, 184, 184, 184, 184, 184, 184, 184, 183, 183, 183, 182, 181, 180, 179, 179, 178, 178, 176, 176, 175, 174, 174, 173, 172, 162, 82, 59, 59, 57, 61, 61, 61, 62, 62, 62, 62, 62, 62, 62, 63, 62, 63, 63, 63, 63, 63, 63, 63, 62, 62, 70, 63, 61, 60, 60, 59, 59, 58, 57, 57, 56, 55, 54, 53, 52, 50, 43, 31, 28, 27, 27, 27, 35, 35, 35, 36, 37, 38, 39, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 41, 40, 39, 36, 34, 108, 107, 107, 105, 105, 111, 112, 107, 105, 105, 105, 106, 106, 106, 106, 105, 104, 104, 104, 106, 115, 135, 159, 184, 193, 186, 184, 184, 190, 193, 201, 201, 198, 193, 199, 197, 196, 187, 180, 183, 180, 181, 181, 175, 172, 171, 169, 167, 161, 151, 87, 125, 163, 92, 83, 83, 97, 143, 155, 157, 178, 195, 195, 199, 204, 209, 213, 216, 220, 221, 222, 224, 226, 227, 228, 228, 229, 229, 229, 228, 228, 228, 227, 226, 222, 217, 209, 190, 185, 199, 221, 232, 232, 232, 233, 233, 232, 232, 218, 192, 127, 53, 53, 69, 70, 68, 67, 67, 64, 49, 64, 62, 61, 59, 58, 60, 63, 50, 45, 45, 94, 192, 218, 216, 195, 187, 179, 166, 183, 183, 183, 183, 183, 183, 183, 182, 187, 179, 171, 183, 82, 39, 38, 39, 40, 42, 51, 64, 72, 70, 69, 68, 66, 67, 67, 67, 66, 66, 73, 85, 80, 110, 110, 111, 111, 112, 112, 112, 112, 112, 112, 111, 108, 89, 53, 34, 34, 36, 34, 57, 64, 123, 178, 179, 181, 182, 183, 183, 183, 183, 184, 184, 184, 184, 184, 183, 183, 183, 182, 182, 181, 181, 180, 180, 179, 178, 177, 176, 176, 175, 174, 174, 173, 168, 130, 60, 60, 59, 61, 61, 62, 62, 62, 62, 62, 63, 63, 63, 63, 63, 64, 64, 64, 64, 64, 64, 63, 64, 68, 76, 62, 62, 61, 61, 60, 59, 59, 58, 57, 56, 56, 55, 53, 52, 50, 41, 31, 28, 27, 26, 30, 35, 35, 35, 36, 37, 38, 40, 42, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 41, 41, 40, 39, 36, 33, 110, 108, 107, 106, 106, 110, 108, 105, 105, 105, 105, 105, 105, 106, 105, 104, 104, 104, 104, 109, 122, 148, 178, 194, 199, 194, 188, 184, 184, 186, 196, 201, 199, 199, 196, 188, 192, 186, 180, 183, 181, 180, 179, 167, 166, 173, 170, 168, 167, 144, 85, 156, 121, 83, 85, 89, 127, 153, 155, 152, 169, 195, 195, 196, 199, 204, 210, 215, 218, 221, 223, 224, 226, 227, 228, 229, 230, 231, 231, 231, 231, 231, 231, 231, 230, 229, 227, 225, 217, 203, 192, 199, 220, 229, 232, 232, 233, 232, 231, 216, 188, 90, 50, 54, 66, 66, 66, 66, 64, 47, 59, 59, 58, 57, 55, 54, 61, 55, 43, 41, 41, 48, 157, 211, 214, 189, 181, 164, 183, 183, 183, 182, 182, 182, 182, 180, 186, 175, 176, 169, 38, 38, 38, 38, 40, 42, 54, 58, 71, 70, 69, 68, 67, 67, 67, 66, 66, 66, 66, 79, 93, 111, 111, 111, 111, 112, 112, 112, 112, 112, 112, 103, 101, 104, 102, 69, 41, 36, 44, 61, 79, 168, 179, 180, 181, 182, 183, 183, 183, 183, 184, 184, 184, 184, 183, 183, 183, 183, 182, 182, 181, 181, 181, 180, 180, 178, 177, 177, 176, 176, 175, 174, 173, 171, 159, 89, 60, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63, 63, 64, 65, 64, 65, 65, 64, 65, 64, 64, 64, 64, 63, 63, 62, 62, 62, 61, 60, 60, 58, 58, 57, 56, 55, 55, 53, 50, 38, 30, 28, 27, 25, 32, 36, 35, 35, 36, 37, 38, 40, 42, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 41, 40, 39, 36, 33, 107, 107, 106, 106, 106, 108, 105, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 107, 117, 134, 169, 186, 198, 199, 199, 195, 194, 191, 187, 193, 200, 198, 196, 190, 184, 185, 184, 181, 180, 183, 179, 178, 169, 166, 175, 174, 171, 169, 133, 110, 149, 81, 83, 104, 131, 152, 154, 155, 155, 155, 187, 195, 195, 195, 199, 205, 211, 215, 220, 222, 224, 226, 228, 228, 229, 231, 231, 231, 231, 232, 232, 232, 232, 232, 232, 232, 231, 230, 229, 227, 216, 195, 191, 217, 229, 232, 232, 232, 229, 214, 175, 56, 46, 54, 62, 62, 62, 61, 50, 52, 56, 55, 54, 52, 51, 53, 59, 43, 39, 38, 38, 38, 81, 190, 211, 183, 167, 180, 183, 182, 181, 180, 181, 181, 176, 184, 167, 179, 141, 38, 37, 37, 37, 39, 46, 67, 42, 60, 71, 70, 69, 67, 67, 67, 66, 66, 66, 63, 70, 96, 111, 112, 112, 112, 112, 112, 112, 113, 102, 82, 66, 65, 64, 63, 62, 62, 42, 57, 74, 135, 178, 180, 181, 182, 183, 183, 183, 183, 184, 184, 184, 184, 184, 183, 183, 183, 183, 182, 182, 182, 182, 182, 181, 180, 179, 178, 177, 177, 176, 176, 175, 174, 173, 167, 138, 61, 61, 62, 62, 62, 63, 63, 63, 63, 64, 64, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 64, 64, 63, 63, 62, 62, 61, 60, 60, 58, 57, 56, 56, 55, 54, 49, 36, 29, 28, 27, 25, 33, 35, 35, 35, 36, 37, 38, 41, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 41, 40, 38, 36, 33, 107, 108, 106, 106, 107, 106, 106, 104, 105, 105, 105, 105, 105, 105, 106, 105, 105, 106, 114, 128, 155, 180, 187, 200, 201, 194, 190, 198, 200, 197, 198, 197, 190, 189, 184, 183, 183, 183, 180, 180, 180, 179, 177, 172, 168, 173, 174, 171, 169, 116, 130, 89, 83, 83, 106, 152, 154, 153, 155, 155, 156, 143, 190, 194, 194, 195, 199, 205, 211, 216, 221, 222, 225, 227, 228, 230, 231, 231, 231, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 231, 229, 224, 207, 196, 221, 232, 232, 230, 226, 210, 148, 47, 43, 54, 56, 57, 56, 53, 45, 52, 51, 50, 49, 48, 46, 57, 47, 39, 37, 37, 36, 32, 53, 153, 195, 179, 170, 183, 182, 180, 179, 180, 180, 174, 183, 165, 181, 107, 37, 37, 37, 38, 40, 48, 80, 33, 38, 68, 70, 70, 68, 67, 67, 66, 66, 65, 63, 63, 95, 112, 112, 112, 112, 112, 112, 101, 79, 65, 63, 63, 64, 63, 61, 60, 60, 58, 68, 104, 169, 180, 181, 182, 183, 183, 183, 183, 184, 184, 184, 184, 184, 184, 184, 183, 183, 183, 183, 183, 183, 182, 183, 182, 180, 180, 179, 178, 177, 177, 176, 176, 175, 174, 172, 159, 100, 61, 62, 62, 63, 63, 63, 64, 64, 64, 65, 65, 66, 66, 66, 66, 66, 66, 65, 65, 65, 65, 65, 65, 64, 64, 63, 63, 62, 62, 61, 60, 59, 58, 57, 56, 55, 54, 47, 34, 29, 28, 27, 27, 33, 35, 35, 35, 36, 37, 38, 41, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 40, 38, 35, 33, 108, 107, 106, 107, 106, 106, 106, 105, 105, 105, 105, 105, 105, 106, 106, 106, 106, 110, 123, 150, 180, 184, 192, 201, 201, 198, 194, 200, 201, 201, 194, 191, 187, 187, 183, 183, 182, 181, 181, 180, 180, 178, 176, 173, 169, 172, 173, 169, 166, 89, 87, 82, 82, 91, 120, 153, 153, 154, 155, 155, 154, 155, 146, 190, 194, 193, 194, 198, 205, 211, 216, 221, 223, 227, 228, 229, 231, 231, 231, 232, 232, 232, 232, 233, 233, 233, 233, 233, 233, 233, 232, 233, 232, 231, 227, 214, 185, 215, 230, 231, 229, 221, 205, 112, 42, 41, 49, 51, 52, 50, 41, 48, 47, 47, 45, 44, 42, 46, 53, 40, 37, 36, 35, 32, 36, 66, 83, 142, 169, 183, 181, 179, 180, 180, 179, 169, 183, 168, 182, 58, 37, 37, 37, 37, 41, 65, 77, 33, 39, 52, 69, 70, 68, 66, 66, 66, 66, 66, 64, 60, 93, 111, 112, 112, 110, 97, 76, 63, 62, 60, 61, 62, 63, 61, 60, 59, 59, 65, 102, 143, 175, 181, 183, 183, 183, 183, 183, 184, 184, 184, 184, 184, 184, 184, 184, 184, 183, 183, 183, 183, 183, 183, 183, 182, 181, 180, 180, 179, 178, 178, 177, 176, 175, 174, 173, 167, 146, 67, 62, 62, 62, 64, 64, 64, 64, 65, 66, 66, 66, 66, 66, 67, 67, 66, 66, 66, 66, 66, 65, 65, 65, 65, 64, 64, 63, 63, 62, 61, 60, 59, 58, 56, 56, 54, 44, 33, 28, 28, 28, 28, 33, 34, 34, 35, 36, 37, 39, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 41, 40, 38, 36, 33, 109, 108, 108, 107, 106, 106, 105, 106, 105, 105, 105, 105, 105, 106, 106, 106, 110, 118, 134, 162, 168, 189, 199, 198, 199, 201, 201, 201, 201, 201, 195, 194, 189, 185, 183, 183, 180, 181, 181, 180, 179, 178, 175, 173, 168, 169, 170, 171, 151, 71, 82, 82, 83, 134, 153, 153, 154, 154, 154, 155, 157, 158, 156, 152, 193, 193, 193, 194, 197, 205, 211, 216, 221, 223, 226, 228, 230, 231, 232, 232, 232, 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, 233, 232, 232, 231, 228, 214, 185, 212, 230, 230, 227, 215, 192, 73, 39, 38, 44, 46, 46, 37, 44, 43, 42, 42, 40, 39, 37, 49, 41, 37, 36, 36, 35, 27, 55, 71, 72, 141, 183, 181, 179, 179, 179, 179, 172, 180, 165, 168, 36, 36, 36, 37, 38, 42, 80, 73, 33, 50, 39, 62, 70, 68, 66, 67, 66, 66, 65, 64, 59, 79, 101, 99, 88, 70, 63, 61, 61, 60, 60, 60, 62, 61, 61, 60, 58, 64, 102, 109, 168, 179, 182, 183, 183, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 183, 183, 183, 183, 182, 182, 181, 181, 180, 179, 178, 177, 177, 176, 175, 174, 172, 161, 120, 64, 63, 61, 63, 64, 65, 66, 66, 66, 67, 67, 67, 67, 67, 67, 67, 67, 65, 65, 66, 66, 65, 65, 65, 65, 64, 64, 63, 62, 62, 60, 60, 58, 57, 56, 55, 40, 32, 28, 27, 27, 28, 33, 34, 34, 34, 36, 37, 39, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 41, 39, 39, 35, 33, 110, 109, 109, 107, 106, 106, 106, 106, 105, 105, 106, 106, 106, 106, 106, 108, 116, 129, 148, 170, 171, 191, 200, 193, 198, 200, 199, 190, 196, 201, 200, 200, 190, 184, 182, 182, 181, 180, 180, 180, 179, 177, 177, 173, 168, 170, 170, 169, 108, 81, 81, 82, 104, 151, 155, 154, 154, 154, 155, 156, 157, 157, 157, 156, 172, 193, 193, 192, 193, 196, 204, 210, 215, 219, 222, 224, 227, 230, 231, 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 232, 232, 231, 228, 203, 186, 220, 231, 229, 223, 210, 157, 38, 35, 34, 37, 40, 37, 37, 42, 40, 39, 38, 37, 35, 37, 42, 37, 36, 36, 36, 30, 37, 67, 72, 100, 182, 181, 179, 179, 179, 179, 176, 173, 165, 149, 36, 35, 35, 36, 38, 47, 90, 71, 33, 40, 61, 39, 67, 68, 66, 66, 66, 65, 65, 64, 59, 58, 63, 63, 62, 60, 60, 60, 60, 60, 60, 60, 60, 61, 61, 59, 65, 102, 111, 146, 171, 182, 183, 183, 184, 184, 184, 184, 184, 184, 185, 185, 185, 185, 185, 185, 185, 185, 185, 184, 184, 184, 183, 183, 183, 183, 182, 181, 181, 180, 179, 178, 177, 176, 176, 175, 174, 169, 155, 88, 63, 64, 61, 65, 66, 66, 66, 67, 67, 67, 67, 67, 67, 67, 67, 67, 66, 67, 66, 66, 66, 66, 66, 65, 64, 64, 63, 63, 62, 61, 60, 59, 58, 56, 54, 37, 31, 27, 27, 25, 29, 33, 33, 33, 34, 36, 37, 39, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 40, 38, 35, 33, 112, 110, 109, 108, 107, 107, 107, 107, 108, 107, 106, 106, 106, 106, 107, 115, 132, 169, 167, 187, 192, 193, 197, 199, 198, 199, 191, 184, 194, 201, 201, 202, 194, 188, 188, 183, 183, 183, 181, 180, 178, 177, 178, 177, 172, 170, 168, 118, 79, 80, 84, 119, 152, 153, 156, 154, 154, 154, 155, 153, 130, 106, 96, 74, 79, 157, 193, 192, 192, 193, 196, 203, 209, 214, 217, 220, 222, 225, 228, 231, 232, 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 232, 232, 232, 225, 190, 199, 229, 230, 227, 216, 196, 91, 33, 31, 30, 31, 34, 32, 39, 39, 37, 36, 35, 33, 32, 37, 39, 36, 36, 36, 35, 27, 55, 70, 73, 152, 182, 179, 179, 179, 179, 179, 170, 168, 127, 35, 35, 35, 37, 39, 49, 97, 75, 32, 33, 63, 51, 44, 69, 67, 66, 66, 66, 64, 63, 60, 56, 57, 58, 59, 59, 59, 59, 59, 59, 59, 60, 61, 61, 60, 66, 100, 112, 122, 168, 174, 183, 184, 184, 184, 184, 184, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 184, 184, 183, 183, 183, 182, 182, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 165, 142, 67, 64, 64, 61, 66, 66, 67, 67, 67, 67, 67, 68, 68, 68, 67, 67, 67, 67, 67, 66, 66, 66, 66, 65, 65, 64, 64, 63, 62, 62, 61, 60, 58, 56, 51, 35, 30, 27, 27, 24, 30, 33, 33, 33, 35, 36, 37, 40, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 41, 40, 38, 35, 33, 112, 110, 109, 107, 107, 107, 107, 107, 107, 108, 106, 106, 107, 108, 113, 125, 154, 192, 187, 199, 197, 190, 193, 201, 198, 198, 194, 194, 201, 202, 202, 202, 198, 190, 191, 185, 186, 189, 184, 180, 178, 178, 178, 176, 172, 165, 117, 78, 79, 76, 127, 152, 153, 155, 157, 154, 154, 154, 133, 78, 109, 142, 130, 109, 68, 35, 146, 192, 192, 192, 192, 195, 202, 208, 213, 216, 219, 222, 224, 227, 229, 231, 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 232, 232, 232, 208, 196, 227, 230, 228, 222, 204, 148, 33, 30, 28, 29, 30, 27, 33, 35, 33, 32, 32, 32, 31, 32, 39, 36, 34, 36, 37, 28, 36, 68, 73, 101, 182, 179, 179, 179, 179, 179, 168, 172, 97, 35, 35, 35, 37, 37, 50, 102, 105, 72, 32, 52, 67, 40, 50, 68, 66, 66, 65, 64, 63, 61, 59, 58, 59, 59, 59, 59, 59, 59, 60, 60, 61, 61, 60, 66, 96, 112, 110, 159, 163, 176, 183, 184, 184, 184, 185, 185, 185, 185, 185, 185, 185, 185, 186, 185, 185, 185, 185, 185, 185, 185, 185, 184, 184, 184, 183, 183, 182, 183, 181, 181, 180, 179, 178, 177, 176, 175, 174, 171, 160, 122, 65, 65, 64, 62, 67, 67, 67, 67, 69, 76, 91, 85, 68, 68, 67, 67, 67, 67, 67, 66, 65, 66, 65, 65, 65, 64, 64, 63, 62, 61, 60, 59, 56, 48, 33, 29, 27, 27, 23, 31, 32, 32, 33, 35, 36, 38, 40, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 40, 38, 35, 33, 111, 111, 109, 107, 107, 107, 107, 107, 106, 105, 107, 108, 109, 113, 122, 138, 169, 197, 200, 200, 199, 196, 200, 201, 200, 200, 200, 198, 200, 201, 202, 201, 197, 187, 188, 187, 190, 192, 188, 180, 181, 179, 175, 173, 169, 112, 76, 77, 68, 121, 161, 156, 155, 156, 157, 155, 152, 110, 86, 138, 110, 44, 39, 31, 26, 19, 26, 154, 192, 191, 191, 192, 194, 201, 207, 212, 216, 219, 222, 224, 227, 228, 230, 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 232, 232, 232, 223, 209, 226, 231, 228, 224, 211, 179, 38, 29, 27, 28, 30, 27, 31, 38, 34, 32, 33, 32, 31, 31, 35, 37, 32, 37, 37, 31, 27, 58, 71, 73, 151, 180, 179, 179, 179, 179, 169, 177, 60, 34, 34, 34, 36, 35, 52, 102, 107, 106, 75, 34, 62, 62, 34, 51, 68, 66, 65, 63, 62, 61, 59, 59, 59, 58, 59, 59, 59, 60, 60, 61, 62, 56, 64, 94, 112, 112, 123, 174, 165, 179, 184, 184, 185, 185, 185, 185, 185, 185, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 185, 185, 185, 185, 184, 184, 184, 183, 183, 182, 182, 181, 181, 180, 179, 178, 177, 176, 175, 173, 169, 156, 100, 65, 66, 64, 64, 67, 68, 69, 84, 110, 112, 84, 68, 68, 68, 68, 68, 67, 67, 67, 66, 66, 66, 65, 65, 64, 64, 63, 62, 61, 60, 59, 56, 43, 33, 28, 26, 26, 23, 31, 32, 32, 33, 34, 37, 39, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 41, 40, 38, 35, 33, 84, 110, 107, 108, 108, 108, 107, 105, 106, 108, 109, 112, 119, 129, 145, 169, 185, 197, 199, 197, 200, 200, 201, 201, 201, 201, 199, 191, 196, 199, 201, 194, 192, 186, 189, 193, 192, 192, 190, 183, 188, 175, 171, 165, 109, 75, 70, 67, 94, 155, 161, 161, 157, 157, 158, 154, 104, 103, 133, 75, 50, 49, 50, 32, 25, 29, 29, 67, 167, 192, 191, 191, 191, 193, 198, 205, 211, 215, 220, 222, 224, 227, 229, 231, 231, 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, 233, 232, 232, 231, 225, 230, 231, 228, 225, 216, 191, 85, 28, 27, 27, 30, 28, 30, 40, 41, 35, 33, 33, 32, 31, 33, 37, 36, 33, 37, 35, 24, 41, 69, 74, 88, 174, 179, 179, 179, 179, 170, 178, 65, 34, 34, 34, 34, 30, 50, 96, 108, 107, 104, 78, 41, 65, 56, 33, 48, 68, 65, 63, 61, 60, 59, 59, 59, 59, 59, 59, 59, 60, 61, 67, 57, 63, 91, 112, 112, 109, 161, 164, 171, 182, 185, 185, 185, 185, 185, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 185, 185, 185, 184, 184, 184, 183, 183, 183, 182, 181, 181, 180, 179, 177, 177, 175, 174, 173, 166, 151, 85, 66, 67, 64, 64, 67, 75, 109, 117, 97, 74, 68, 68, 68, 68, 68, 68, 68, 67, 67, 66, 65, 66, 65, 65, 64, 63, 62, 61, 61, 58, 56, 38, 32, 28, 27, 26, 24, 31, 31, 31, 33, 35, 37, 39, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 40, 40, 38, 35, 33, 51, 75, 104, 108, 108, 106, 105, 107, 108, 109, 110, 118, 138, 159, 180, 193, 188, 195, 198, 192, 199, 200, 201, 199, 199, 197, 191, 190, 200, 200, 198, 188, 189, 188, 187, 193, 192, 192, 188, 187, 190, 171, 163, 102, 71, 92, 87, 93, 145, 157, 161, 163, 163, 160, 159, 112, 99, 111, 63, 54, 50, 58, 47, 32, 30, 28, 42, 79, 90, 168, 191, 191, 191, 190, 192, 196, 204, 210, 216, 220, 222, 224, 227, 229, 231, 231, 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, 232, 232, 232, 232, 232, 231, 229, 225, 217, 193, 121, 28, 27, 27, 30, 29, 28, 37, 44, 40, 37, 36, 32, 32, 32, 37, 37, 34, 37, 38, 25, 29, 62, 72, 75, 105, 167, 179, 179, 179, 178, 169, 55, 34, 34, 34, 31, 32, 43, 55, 91, 108, 108, 97, 82, 47, 63, 51, 33, 42, 64, 67, 62, 60, 60, 60, 60, 59, 59, 59, 60, 62, 68, 65, 57, 85, 108, 108, 108, 122, 180, 159, 172, 184, 185, 185, 185, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 185, 185, 185, 184, 184, 184, 183, 183, 182, 182, 181, 180, 179, 178, 177, 176, 175, 173, 172, 163, 144, 76, 67, 67, 64, 66, 77, 99, 94, 78, 69, 69, 68, 68, 68, 69, 68, 68, 68, 67, 67, 67, 66, 65, 65, 64, 63, 62, 61, 60, 58, 53, 34, 30, 27, 26, 25, 25, 31, 31, 31, 33, 35, 37, 40, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 41, 40, 37, 35, 33, 55, 53, 58, 91, 104, 106, 108, 108, 109, 108, 112, 130, 154, 178, 198, 200, 196, 199, 197, 189, 198, 198, 199, 191, 196, 193, 187, 196, 199, 195, 190, 186, 187, 187, 186, 191, 192, 190, 182, 187, 187, 156, 92, 83, 135, 147, 75, 104, 155, 157, 162, 166, 167, 171, 137, 68, 82, 65, 56, 54, 58, 45, 37, 34, 29, 30, 71, 83, 85, 91, 179, 191, 190, 190, 190, 191, 194, 201, 208, 215, 219, 222, 224, 226, 229, 231, 231, 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, 232, 232, 232, 232, 232, 229, 225, 219, 196, 142, 28, 26, 27, 31, 29, 27, 34, 45, 42, 40, 43, 35, 33, 32, 37, 39, 39, 34, 41, 28, 27, 49, 70, 74, 75, 72, 115, 145, 156, 168, 161, 53, 34, 34, 34, 30, 34, 41, 47, 50, 76, 104, 105, 96, 85, 46, 58, 44, 33, 35, 54, 68, 62, 60, 60, 59, 60, 59, 60, 63, 68, 69, 55, 76, 104, 105, 105, 104, 157, 180, 161, 173, 185, 185, 186, 186, 186, 186, 186, 186, 186, 187, 187, 187, 187, 186, 187, 187, 187, 187, 186, 186, 186, 186, 186, 185, 185, 185, 184, 184, 184, 183, 183, 183, 182, 181, 180, 179, 178, 177, 176, 174, 172, 170, 161, 138, 72, 67, 68, 66, 68, 75, 75, 69, 69, 69, 69, 69, 69, 69, 69, 68, 68, 68, 67, 67, 66, 66, 65, 64, 64, 63, 61, 60, 57, 48, 32, 30, 27, 26, 26, 25, 30, 30, 31, 32, 35, 38, 40, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 41, 39, 38, 35, 33, 64, 59, 66, 52, 64, 94, 109, 111, 109, 108, 122, 144, 171, 193, 202, 202, 202, 200, 198, 191, 198, 195, 191, 189, 198, 195, 194, 194, 189, 186, 185, 185, 185, 185, 185, 187, 186, 181, 177, 158, 118, 83, 134, 164, 165, 102, 87, 152, 158, 158, 165, 172, 174, 158, 64, 53, 63, 54, 55, 57, 39, 37, 42, 33, 29, 57, 81, 84, 85, 86, 122, 190, 190, 190, 190, 190, 190, 193, 199, 206, 214, 219, 222, 224, 226, 228, 230, 231, 231, 232, 232, 233, 233, 233, 233, 233, 233, 232, 232, 232, 232, 232, 230, 226, 220, 198, 156, 28, 26, 27, 41, 30, 26, 32, 52, 45, 44, 49, 44, 35, 33, 36, 41, 43, 34, 43, 33, 24, 33, 67, 73, 75, 73, 107, 140, 138, 137, 135, 40, 34, 34, 34, 30, 36, 40, 43, 47, 50, 62, 93, 103, 95, 84, 49, 50, 38, 33, 33, 43, 66, 63, 62, 60, 60, 61, 65, 68, 69, 65, 60, 98, 102, 102, 102, 101, 178, 180, 160, 175, 185, 186, 186, 186, 186, 186, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 186, 186, 185, 185, 185, 184, 184, 184, 183, 182, 182, 181, 181, 179, 178, 177, 176, 175, 173, 172, 169, 160, 134, 70, 68, 68, 66, 64, 68, 68, 68, 69, 69, 69, 69, 69, 68, 68, 68, 68, 68, 67, 66, 66, 65, 64, 63, 62, 61, 59, 57, 41, 31, 29, 26, 26, 26, 25, 29, 30, 31, 32, 35, 38, 40, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 41, 40, 38, 35, 33, 95, 70, 93, 78, 56, 50, 64, 92, 106, 111, 132, 157, 186, 201, 203, 203, 202, 199, 197, 192, 195, 190, 185, 194, 200, 198, 199, 187, 183, 183, 184, 184, 185, 185, 185, 181, 180, 166, 114, 96, 137, 164, 166, 165, 144, 71, 140, 162, 157, 157, 161, 180, 182, 79, 52, 59, 56, 57, 56, 36, 37, 45, 55, 33, 43, 79, 83, 84, 85, 85, 79, 156, 190, 190, 190, 190, 190, 190, 191, 196, 204, 211, 217, 221, 223, 225, 227, 229, 231, 231, 231, 232, 232, 233, 232, 232, 232, 232, 232, 232, 232, 232, 230, 227, 221, 198, 168, 29, 27, 28, 55, 31, 26, 32, 65, 64, 52, 59, 56, 39, 36, 36, 43, 43, 35, 44, 35, 25, 28, 58, 72, 75, 78, 124, 139, 139, 139, 139, 77, 34, 34, 34, 31, 37, 41, 44, 45, 47, 49, 56, 76, 99, 91, 86, 57, 38, 33, 33, 33, 38, 64, 67, 64, 65, 68, 69, 68, 69, 56, 84, 100, 100, 99, 99, 118, 180, 180, 157, 175, 186, 186, 186, 186, 186, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 186, 185, 185, 185, 184, 184, 183, 183, 182, 182, 181, 180, 179, 178, 176, 175, 174, 172, 170, 168, 160, 133, 71, 67, 68, 67, 64, 68, 68, 68, 69, 69, 69, 69, 68, 68, 69, 68, 68, 67, 67, 66, 65, 64, 63, 61, 60, 59, 53, 37, 30, 29, 26, 29, 31, 27, 31, 29, 31, 32, 35, 38, 40, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 41, 40, 38, 35, 33, 114, 86, 105, 109, 79, 71, 59, 52, 53, 77, 120, 163, 194, 202, 202, 202, 200, 197, 193, 190, 188, 189, 187, 194, 200, 196, 198, 185, 182, 180, 180, 179, 182, 185, 178, 149, 122, 133, 162, 169, 164, 165, 166, 164, 102, 122, 157, 158, 156, 156, 157, 164, 99, 59, 56, 56, 68, 68, 35, 37, 46, 57, 57, 36, 73, 83, 85, 86, 85, 76, 78, 84, 184, 190, 190, 190, 190, 190, 190, 190, 194, 201, 208, 215, 220, 222, 224, 227, 228, 229, 230, 231, 231, 232, 232, 232, 232, 232, 232, 232, 232, 231, 230, 227, 221, 198, 173, 29, 27, 30, 66, 34, 26, 31, 63, 71, 60, 72, 76, 46, 38, 37, 45, 43, 58, 43, 37, 25, 28, 44, 70, 74, 87, 129, 139, 139, 139, 139, 95, 45, 34, 33, 32, 39, 43, 45, 46, 47, 48, 50, 56, 63, 83, 90, 87, 63, 34, 33, 33, 33, 36, 65, 69, 69, 69, 67, 67, 65, 69, 98, 98, 97, 96, 96, 131, 181, 164, 166, 175, 186, 186, 186, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 185, 185, 185, 184, 184, 183, 183, 183, 181, 181, 179, 178, 177, 176, 174, 173, 171, 169, 167, 159, 136, 75, 67, 68, 68, 64, 67, 69, 69, 69, 69, 69, 69, 69, 68, 68, 68, 68, 67, 66, 65, 64, 63, 61, 60, 58, 48, 33, 30, 28, 29, 36, 36, 30, 34, 29, 30, 33, 35, 38, 40, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 41, 40, 38, 35, 33, 116, 113, 121, 124, 120, 116, 84, 56, 58, 62, 65, 78, 114, 145, 169, 183, 195, 193, 187, 180, 178, 187, 189, 189, 192, 188, 187, 181, 182, 181, 172, 152, 133, 147, 140, 157, 177, 177, 177, 172, 168, 172, 168, 144, 92, 155, 166, 157, 155, 154, 151, 91, 56, 53, 55, 77, 83, 36, 38, 48, 57, 57, 57, 65, 81, 85, 100, 127, 124, 85, 85, 123, 146, 172, 174, 190, 190, 190, 189, 190, 190, 192, 197, 205, 211, 217, 221, 223, 225, 227, 228, 228, 228, 231, 231, 232, 231, 231, 232, 232, 232, 231, 229, 227, 221, 197, 176, 29, 27, 40, 73, 42, 29, 30, 61, 78, 60, 72, 90, 61, 42, 39, 44, 44, 69, 69, 39, 28, 27, 31, 67, 74, 77, 126, 139, 139, 139, 134, 66, 66, 37, 32, 35, 41, 45, 47, 47, 47, 47, 48, 51, 57, 63, 74, 85, 83, 64, 38, 33, 33, 33, 51, 69, 69, 68, 64, 66, 60, 91, 96, 95, 94, 93, 94, 131, 181, 159, 169, 174, 186, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 185, 185, 184, 184, 183, 183, 182, 182, 181, 180, 179, 177, 176, 175, 173, 172, 170, 169, 167, 161, 142, 83, 68, 68, 68, 66, 67, 69, 69, 69, 69, 69, 68, 68, 68, 68, 68, 67, 66, 65, 64, 62, 61, 59, 56, 41, 31, 29, 30, 37, 42, 42, 34, 36, 29, 31, 33, 35, 39, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 41, 39, 38, 35, 33, 114, 113, 122, 125, 126, 126, 106, 62, 59, 67, 78, 84, 84, 82, 78, 74, 82, 98, 114, 139, 131, 139, 149, 153, 153, 154, 147, 139, 130, 134, 143, 161, 178, 182, 181, 181, 180, 180, 180, 179, 178, 180, 177, 118, 148, 174, 175, 160, 154, 151, 99, 51, 50, 56, 81, 81, 38, 38, 49, 57, 57, 57, 69, 80, 93, 110, 143, 158, 122, 82, 134, 155, 161, 138, 165, 178, 190, 190, 189, 189, 189, 189, 191, 194, 200, 207, 214, 219, 222, 223, 224, 225, 226, 227, 230, 230, 230, 230, 231, 231, 231, 229, 228, 226, 219, 195, 177, 31, 26, 54, 77, 52, 30, 28, 59, 85, 62, 69, 94, 74, 47, 40, 43, 45, 64, 95, 40, 30, 25, 28, 57, 73, 93, 137, 139, 139, 139, 114, 68, 68, 58, 32, 38, 43, 47, 47, 47, 47, 47, 48, 49, 53, 60, 62, 66, 76, 77, 67, 35, 33, 33, 38, 71, 69, 65, 62, 61, 74, 94, 93, 92, 91, 90, 90, 104, 182, 171, 160, 172, 186, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 185, 185, 185, 184, 184, 184, 182, 182, 181, 180, 179, 178, 177, 176, 174, 173, 171, 169, 168, 167, 163, 149, 100, 68, 68, 68, 68, 68, 67, 68, 69, 68, 68, 68, 67, 68, 68, 67, 66, 64, 63, 61, 60, 58, 50, 37, 30, 28, 36, 45, 48, 45, 37, 36, 29, 31, 33, 35, 39, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 41, 40, 38, 36, 33, 113, 112, 118, 124, 126, 132, 135, 127, 119, 113, 126, 154, 160, 150, 145, 139, 147, 154, 120, 169, 148, 113, 114, 129, 150, 170, 185, 191, 185, 194, 190, 181, 189, 195, 185, 188, 187, 180, 179, 180, 181, 181, 160, 100, 169, 187, 189, 184, 149, 93, 49, 48, 57, 81, 80, 39, 38, 51, 57, 57, 57, 64, 80, 106, 132, 153, 160, 154, 81, 115, 151, 155, 158, 167, 159, 169, 190, 190, 190, 189, 189, 189, 189, 189, 191, 195, 202, 209, 215, 219, 221, 222, 222, 224, 227, 228, 228, 228, 229, 229, 229, 228, 226, 223, 215, 193, 175, 31, 25, 66, 80, 59, 30, 28, 56, 94, 65, 66, 98, 87, 55, 42, 39, 46, 64, 104, 40, 30, 25, 29, 43, 71, 99, 136, 140, 139, 139, 93, 68, 68, 68, 61, 38, 46, 48, 47, 47, 47, 48, 48, 48, 49, 53, 59, 60, 61, 66, 71, 62, 35, 33, 32, 64, 66, 62, 60, 55, 88, 91, 89, 87, 86, 86, 87, 91, 168, 179, 152, 172, 186, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 185, 185, 184, 184, 184, 183, 182, 181, 181, 179, 178, 177, 176, 175, 174, 172, 171, 169, 168, 167, 165, 157, 124, 74, 68, 68, 68, 68, 66, 65, 65, 68, 68, 67, 68, 67, 67, 66, 65, 63, 61, 59, 57, 43, 33, 29, 33, 43, 51, 51, 87, 69, 34, 30, 31, 33, 36, 39, 40, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 40, 40, 38, 36, 33, 112, 112, 113, 121, 123, 127, 136, 145, 155, 170, 187, 194, 196, 195, 191, 191, 193, 192, 186, 191, 192, 186, 179, 179, 189, 193, 189, 195, 195, 196, 188, 185, 197, 199, 189, 197, 194, 181, 181, 181, 181, 182, 113, 124, 184, 187, 196, 190, 116, 49, 48, 58, 80, 79, 38, 38, 52, 57, 57, 57, 62, 97, 101, 138, 161, 162, 162, 120, 83, 147, 153, 163, 168, 170, 156, 170, 170, 188, 190, 189, 189, 189, 189, 189, 189, 190, 192, 196, 203, 210, 215, 217, 220, 221, 224, 225, 226, 226, 227, 227, 227, 225, 223, 220, 210, 191, 171, 30, 26, 69, 83, 66, 30, 29, 51, 99, 68, 63, 99, 92, 60, 45, 36, 46, 69, 91, 39, 31, 25, 29, 32, 67, 92, 136, 142, 139, 131, 64, 68, 68, 68, 68, 41, 47, 49, 48, 48, 48, 48, 48, 48, 49, 48, 55, 60, 60, 60, 62, 67, 62, 35, 33, 50, 62, 60, 48, 65, 89, 86, 83, 81, 80, 80, 80, 87, 146, 182, 152, 171, 185, 187, 187, 187, 187, 187, 187, 187, 187, 187, 188, 188, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 185, 185, 184, 184, 183, 183, 182, 182, 181, 180, 179, 178, 177, 176, 174, 173, 172, 170, 169, 167, 167, 166, 161, 147, 108, 69, 67, 67, 67, 68, 67, 64, 63, 63, 65, 67, 66, 65, 64, 63, 60, 59, 49, 39, 30, 29, 40, 50, 53, 65, 135, 80, 30, 29, 31, 33, 36, 40, 40, 41, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 40, 40, 38, 36, 33, 112, 111, 113, 119, 122, 127, 139, 157, 174, 181, 192, 197, 198, 197, 196, 199, 198, 196, 193, 190, 187, 183, 181, 181, 185, 190, 186, 197, 198, 195, 194, 196, 197, 195, 191, 198, 195, 182, 182, 182, 182, 171, 82, 175, 192, 185, 177, 166, 55, 49, 58, 77, 80, 37, 38, 52, 57, 57, 57, 60, 79, 142, 150, 153, 156, 159, 157, 80, 101, 157, 157, 168, 172, 173, 167, 158, 151, 179, 190, 190, 189, 189, 189, 189, 189, 188, 189, 190, 192, 196, 202, 209, 213, 216, 221, 223, 223, 222, 223, 223, 223, 222, 219, 214, 203, 189, 163, 31, 29, 53, 87, 72, 31, 28, 45, 101, 71, 62, 90, 87, 61, 47, 33, 44, 80, 74, 36, 32, 26, 29, 29, 56, 79, 133, 146, 146, 118, 68, 68, 68, 68, 68, 48, 47, 49, 48, 48, 48, 48, 48, 48, 50, 48, 50, 60, 60, 60, 60, 60, 63, 56, 33, 39, 61, 55, 42, 74, 83, 80, 77, 76, 74, 73, 74, 77, 117, 181, 162, 171, 183, 187, 187, 187, 187, 187, 187, 187, 188, 189, 189, 189, 188, 188, 188, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 185, 185, 184, 184, 183, 183, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 171, 170, 169, 168, 166, 166, 164, 159, 143, 108, 71, 68, 67, 67, 67, 68, 68, 65, 63, 62, 61, 59, 60, 59, 56, 42, 35, 29, 37, 45, 50, 55, 125, 140, 78, 29, 30, 31, 33, 36, 39, 40, 42, 41, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 41, 41, 40, 40, 38, 36, 33, 111, 112, 114, 118, 124, 134, 152, 174, 188, 188, 193, 197, 199, 199, 201, 201, 201, 200, 192, 194, 185, 181, 182, 181, 180, 185, 189, 198, 198, 196, 198, 196, 194, 195, 194, 198, 191, 175, 179, 183, 184, 133, 72, 184, 183, 166, 178, 64, 53, 59, 74, 81, 38, 39, 53, 57, 57, 57, 59, 72, 110, 152, 154, 161, 157, 157, 130, 61, 149, 162, 163, 166, 167, 172, 172, 166, 157, 164, 161, 189, 190, 189, 188, 188, 188, 188, 187, 187, 188, 189, 190, 194, 200, 206, 213, 217, 218, 218, 219, 219, 218, 216, 213, 207, 195, 189, 152, 31, 31, 34, 87, 79, 30, 28, 39, 100, 73, 60, 81, 79, 61, 50, 32, 41, 90, 57, 33, 33, 29, 28, 29, 45, 75, 126, 149, 155, 114, 69, 68, 68, 68, 68, 54, 48, 49, 48, 48, 48, 48, 48, 48, 50, 49, 47, 58, 60, 60, 60, 60, 60, 60, 38, 31, 52, 47, 44, 71, 78, 75, 73, 71, 70, 70, 70, 70, 89, 179, 162, 171, 182, 187, 187, 187, 187, 187, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 188, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 185, 185, 184, 184, 183, 183, 183, 182, 182, 181, 180, 179, 178, 177, 176, 175, 173, 172, 171, 170, 168, 168, 167, 166, 165, 164, 159, 149, 126, 100, 73, 68, 67, 66, 66, 66, 65, 64, 62, 60, 57, 46, 39, 32, 34, 43, 51, 54, 120, 139, 140, 72, 29, 29, 31, 33, 36, 39, 41, 42, 42, 41, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 41, 42, 41, 40, 40, 38, 36, 34, 111, 113, 117, 124, 134, 149, 167, 188, 194, 193, 194, 196, 195, 193, 198, 201, 201, 199, 188, 189, 182, 180, 181, 180, 180, 182, 187, 194, 196, 196, 197, 198, 198, 199, 196, 189, 174, 170, 173, 177, 174, 75, 59, 168, 169, 173, 73, 57, 60, 69, 84, 38, 38, 52, 57, 57, 57, 58, 67, 112, 163, 161, 168, 157, 156, 157, 91, 107, 158, 158, 152, 147, 137, 144, 122, 99, 101, 74, 68, 131, 162, 175, 184, 188, 187, 187, 186, 186, 187, 187, 188, 189, 189, 193, 201, 208, 211, 212, 212, 212, 211, 209, 205, 198, 192, 188, 151, 32, 32, 30, 76, 84, 31, 29, 35, 99, 73, 59, 70, 69, 60, 50, 31, 39, 97, 44, 31, 33, 35, 26, 29, 35, 96, 148, 155, 158, 86, 68, 68, 68, 68, 68, 60, 47, 49, 48, 48, 48, 48, 48, 48, 50, 50, 45, 55, 60, 60, 60, 60, 60, 60, 48, 33, 39, 44, 47, 69, 74, 72, 69, 68, 67, 66, 66, 65, 80, 155, 169, 171, 180, 187, 187, 187, 187, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 188, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 185, 185, 184, 184, 183, 183, 182, 182, 182, 181, 180, 180, 178, 178, 176, 176, 175, 173, 172, 171, 169, 168, 168, 167, 166, 165, 165, 163, 159, 156, 152, 137, 121, 102, 83, 69, 64, 63, 62, 60, 54, 40, 36, 34, 48, 62, 61, 96, 140, 139, 138, 76, 30, 30, 31, 33, 36, 39, 40, 41, 42, 41, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 41, 41, 41, 41, 42, 41, 40, 40, 38, 36, 34, 112, 114, 123, 133, 147, 165, 183, 194, 197, 195, 193, 194, 193, 190, 194, 198, 199, 198, 185, 181, 182, 181, 181, 181, 180, 180, 181, 189, 195, 194, 197, 198, 197, 198, 195, 181, 174, 167, 169, 167, 143, 47, 91, 168, 174, 88, 64, 59, 65, 87, 41, 38, 51, 57, 57, 57, 57, 71, 143, 176, 174, 167, 146, 132, 122, 107, 39, 67, 61, 108, 73, 115, 71, 148, 156, 119, 155, 130, 144, 151, 151, 150, 159, 173, 185, 186, 186, 186, 186, 186, 186, 187, 187, 189, 191, 197, 201, 205, 205, 205, 203, 201, 197, 194, 190, 188, 135, 32, 33, 32, 63, 93, 31, 29, 34, 97, 69, 58, 63, 63, 60, 50, 32, 39, 103, 38, 34, 33, 34, 28, 29, 29, 77, 152, 156, 151, 73, 68, 67, 67, 67, 67, 66, 43, 49, 48, 48, 48, 48, 48, 48, 49, 51, 45, 50, 60, 60, 60, 60, 60, 60, 57, 32, 32, 40, 51, 68, 71, 68, 67, 66, 64, 63, 62, 62, 68, 118, 174, 171, 178, 187, 187, 187, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 188, 187, 187, 187, 187, 187, 187, 186, 186, 186, 185, 185, 184, 184, 183, 183, 183, 182, 182, 181, 181, 180, 179, 178, 178, 176, 175, 174, 173, 172, 171, 169, 168, 168, 168, 167, 166, 165, 164, 164, 162, 160, 158, 157, 157, 153, 146, 140, 137, 133, 133, 135, 139, 147, 161, 167, 112, 138, 139, 138, 140, 80, 30, 30, 31, 33, 36, 39, 40, 41, 42, 41, 41, 41, 41, 42, 42, 42, 42, 42, 42, 42, 41, 41, 41, 42, 42, 41, 40, 40, 38, 35, 33, 110, 116, 128, 143, 161, 180, 193, 195, 197, 198, 195, 193, 190, 186, 190, 195, 196, 194, 185, 181, 183, 182, 181, 180, 174, 178, 183, 193, 197, 195, 195, 194, 197, 199, 194, 185, 179, 165, 161, 156, 107, 41, 131, 149, 100, 76, 59, 61, 88, 46, 37, 50, 57, 57, 57, 56, 72, 132, 127, 105, 86, 79, 81, 87, 91, 74, 82, 115, 124, 146, 152, 154, 160, 165, 172, 154, 157, 151, 152, 151, 151, 150, 152, 153, 172, 185, 186, 186, 186, 186, 186, 186, 186, 186, 188, 190, 193, 195, 197, 197, 197, 196, 194, 190, 189, 188, 125, 34, 33, 34, 42, 95, 31, 30, 32, 96, 65, 58, 60, 60, 59, 48, 33, 37, 111, 36, 35, 33, 34, 28, 31, 29, 47, 133, 155, 135, 67, 68, 67, 67, 67, 67, 67, 61, 43, 48, 48, 48, 48, 48, 48, 48, 51, 45, 48, 60, 60, 60, 60, 60, 60, 60, 38, 31, 38, 58, 65, 68, 67, 65, 63, 62, 61, 60, 59, 59, 86, 167, 171, 176, 187, 187, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 188, 187, 187, 187, 187, 186, 186, 186, 186, 185, 185, 185, 184, 184, 184, 183, 183, 182, 182, 181, 181, 180, 179, 178, 177, 176, 175, 174, 172, 171, 170, 169, 168, 168, 168, 167, 167, 166, 166, 165, 165, 165, 165, 164, 164, 164, 164, 165, 165, 166, 168, 180, 190, 199, 163, 137, 139, 138, 139, 140, 81, 30, 29, 31, 34, 36, 39, 40, 40, 42, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 42, 40, 40, 39, 38, 35, 33, 110, 121, 136, 156, 176, 192, 196, 196, 198, 199, 198, 195, 190, 183, 188, 193, 196, 194, 194, 188, 183, 181, 178, 173, 171, 180, 184, 194, 198, 196, 195, 195, 199, 199, 193, 174, 165, 161, 156, 150, 63, 59, 141, 104, 87, 59, 59, 86, 55, 37, 48, 57, 57, 57, 53, 53, 69, 87, 113, 138, 150, 152, 155, 156, 156, 108, 137, 156, 156, 156, 156, 155, 160, 153, 158, 152, 151, 151, 151, 152, 151, 151, 151, 149, 147, 157, 183, 186, 183, 186, 186, 186, 186, 186, 186, 186, 187, 187, 188, 191, 193, 192, 190, 189, 189, 188, 125, 36, 34, 34, 33, 89, 31, 31, 31, 92, 61, 57, 59, 59, 58, 45, 37, 42, 118, 38, 34, 34, 33, 28, 32, 30, 37, 73, 154, 120, 69, 68, 67, 67, 67, 67, 67, 67, 60, 43, 48, 48, 48, 48, 48, 48, 49, 45, 48, 60, 60, 60, 60, 60, 60, 60, 47, 31, 39, 60, 63, 66, 64, 63, 62, 60, 59, 58, 57, 57, 74, 131, 171, 175, 187, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 187, 187, 187, 187, 186, 186, 186, 186, 185, 185, 185, 185, 184, 184, 183, 183, 182, 183, 182, 181, 180, 180, 179, 178, 176, 175, 174, 173, 172, 170, 170, 169, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 169, 170, 171, 172, 173, 174, 176, 187, 199, 204, 201, 140, 140, 138, 140, 140, 140, 82, 30, 29, 31, 33, 36, 39, 40, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 40, 39, 39, 38, 35, 33, 116, 129, 151, 172, 191, 197, 198, 198, 199, 200, 200, 198, 193, 188, 193, 196, 198, 195, 193, 189, 184, 181, 174, 168, 170, 178, 177, 192, 199, 198, 197, 197, 198, 198, 193, 167, 163, 157, 148, 119, 56, 102, 108, 98, 61, 59, 82, 67, 38, 45, 57, 57, 58, 52, 93, 130, 156, 166, 169, 176, 168, 162, 158, 157, 156, 89, 155, 157, 157, 156, 155, 153, 152, 151, 150, 151, 151, 151, 151, 152, 151, 151, 152, 144, 139, 56, 62, 120, 150, 166, 168, 175, 171, 156, 161, 180, 183, 186, 183, 184, 187, 189, 188, 189, 188, 188, 136, 39, 34, 34, 31, 77, 31, 32, 30, 80, 59, 57, 58, 58, 58, 41, 40, 71, 120, 40, 31, 34, 33, 28, 33, 31, 30, 50, 148, 111, 68, 67, 67, 67, 67, 67, 67, 67, 67, 59, 42, 48, 48, 48, 48, 48, 48, 44, 48, 60, 60, 60, 60, 60, 60, 60, 55, 32, 44, 60, 62, 64, 62, 61, 60, 59, 57, 57, 56, 56, 60, 108, 171, 173, 187, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 187, 187, 187, 187, 186, 186, 186, 186, 186, 185, 185, 185, 184, 184, 184, 183, 183, 183, 182, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 171, 170, 169, 169, 168, 168, 168, 168, 168, 169, 169, 170, 171, 172, 174, 175, 176, 177, 179, 187, 204, 208, 210, 169, 139, 139, 140, 140, 140, 140, 86, 30, 29, 31, 33, 35, 38, 40, 40, 41, 42, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 40, 40, 40, 39, 37, 35, 33, 122, 142, 169, 188, 197, 198, 199, 200, 201, 201, 201, 200, 196, 191, 197, 198, 192, 187, 184, 184, 184, 182, 176, 170, 172, 183, 181, 193, 198, 198, 198, 196, 189, 189, 182, 165, 166, 147, 137, 131, 106, 105, 106, 71, 59, 77, 79, 38, 42, 56, 57, 57, 98, 151, 173, 166, 170, 171, 176, 173, 166, 162, 159, 157, 155, 108, 161, 161, 160, 159, 156, 154, 151, 151, 156, 153, 151, 151, 151, 152, 152, 153, 150, 129, 104, 33, 33, 41, 141, 156, 156, 157, 158, 161, 160, 155, 157, 168, 156, 151, 175, 177, 183, 163, 173, 153, 101, 51, 35, 35, 34, 64, 31, 32, 30, 65, 57, 57, 57, 57, 54, 38, 83, 107, 116, 40, 30, 34, 33, 28, 32, 31, 29, 42, 133, 102, 67, 66, 67, 67, 67, 67, 68, 67, 67, 66, 45, 43, 48, 48, 48, 49, 46, 43, 49, 60, 60, 60, 60, 60, 60, 60, 52, 35, 48, 60, 61, 62, 61, 59, 58, 57, 57, 56, 55, 55, 56, 81, 162, 172, 185, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 187, 187, 187, 187, 187, 186, 186, 186, 186, 186, 185, 185, 185, 184, 184, 184, 183, 183, 182, 182, 182, 181, 180, 179, 178, 177, 176, 174, 173, 172, 171, 170, 169, 169, 169, 169, 169, 169, 170, 170, 171, 173, 174, 175, 176, 177, 180, 186, 204, 209, 211, 195, 139, 139, 140, 140, 140, 140, 140, 89, 30, 30, 31, 33, 35, 38, 40, 41, 41, 42, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 41, 40, 40, 40, 38, 37, 35, 33, 130, 161, 184, 197, 198, 200, 200, 201, 201, 200, 201, 202, 199, 194, 197, 198, 187, 182, 182, 182, 183, 183, 185, 181, 174, 187, 194, 195, 198, 198, 197, 193, 172, 168, 168, 166, 153, 140, 153, 134, 105, 112, 88, 61, 74, 91, 40, 40, 55, 57, 60, 126, 162, 167, 174, 172, 174, 176, 176, 173, 167, 163, 160, 157, 150, 146, 163, 163, 162, 161, 158, 155, 157, 155, 167, 161, 152, 151, 151, 153, 154, 154, 151, 129, 44, 33, 33, 39, 143, 156, 157, 157, 158, 159, 157, 156, 157, 159, 156, 156, 148, 150, 152, 147, 150, 133, 105, 67, 36, 35, 51, 66, 32, 33, 29, 59, 57, 57, 57, 57, 50, 37, 105, 141, 109, 40, 31, 35, 33, 27, 31, 31, 29, 35, 114, 94, 66, 66, 66, 67, 67, 67, 67, 67, 66, 66, 52, 37, 45, 49, 49, 48, 45, 42, 50, 60, 60, 60, 60, 60, 61, 52, 41, 38, 54, 60, 61, 61, 59, 58, 56, 55, 56, 55, 55, 55, 55, 69, 139, 172, 184, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 187, 187, 187, 187, 187, 186, 186, 186, 186, 186, 186, 185, 185, 185, 184, 184, 184, 183, 183, 183, 182, 181, 181, 179, 179, 178, 176, 175, 174, 173, 172, 171, 170, 170, 169, 169, 169, 170, 171, 171, 173, 174, 175, 177, 178, 180, 186, 203, 210, 212, 204, 146, 139, 140, 140, 140, 142, 140, 140, 92, 30, 30, 31, 33, 35, 38, 39, 41, 41, 42, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 40, 40, 39, 39, 39, 37, 35, 33, 148, 176, 192, 196, 198, 200, 201, 201, 201, 200, 201, 201, 201, 199, 201, 200, 188, 182, 183, 182, 184, 187, 195, 186, 174, 191, 195, 181, 183, 193, 195, 191, 166, 165, 166, 147, 147, 154, 152, 115, 114, 101, 68, 78, 104, 52, 38, 52, 71, 77, 147, 163, 165, 168, 175, 176, 176, 176, 176, 171, 167, 164, 161, 162, 149, 160, 163, 163, 162, 161, 159, 155, 160, 157, 161, 166, 152, 153, 156, 159, 160, 158, 148, 95, 35, 35, 34, 86, 155, 159, 161, 159, 161, 164, 161, 161, 161, 161, 160, 159, 154, 151, 150, 151, 150, 133, 104, 80, 39, 37, 86, 93, 32, 33, 28, 58, 57, 57, 57, 57, 45, 39, 108, 149, 101, 39, 31, 34, 32, 27, 31, 31, 30, 31, 82, 91, 61, 65, 65, 65, 65, 65, 66, 66, 65, 65, 56, 43, 37, 46, 50, 48, 44, 42, 51, 60, 60, 60, 60, 60, 56, 41, 40, 38, 60, 60, 61, 61, 58, 57, 55, 55, 55, 55, 55, 55, 55, 58, 112, 172, 182, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 188, 187, 187, 188, 187, 186, 186, 186, 186, 186, 186, 185, 185, 185, 185, 184, 184, 184, 183, 183, 183, 182, 181, 180, 179, 178, 176, 176, 174, 173, 172, 171, 171, 170, 170, 170, 170, 171, 172, 173, 175, 175, 177, 178, 180, 189, 204, 209, 212, 205, 149, 140, 141, 140, 140, 141, 142, 141, 141, 94, 30, 30, 31, 33, 35, 37, 39, 40, 41, 42, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 41, 40, 40, 40, 39, 38, 37, 35, 33, 169, 186, 192, 193, 195, 198, 200, 200, 200, 201, 201, 201, 202, 202, 202, 201, 190, 185, 187, 185, 187, 190, 198, 189, 180, 188, 186, 177, 178, 183, 184, 178, 162, 166, 150, 145, 156, 153, 127, 115, 106, 85, 79, 121, 75, 37, 48, 89, 138, 157, 163, 161, 165, 172, 176, 176, 176, 176, 176, 172, 168, 165, 164, 165, 143, 164, 163, 162, 162, 161, 160, 159, 161, 172, 169, 169, 157, 159, 161, 162, 162, 165, 144, 91, 36, 36, 52, 126, 156, 161, 168, 163, 163, 173, 171, 167, 171, 163, 161, 161, 161, 157, 151, 148, 145, 127, 104, 90, 43, 46, 107, 109, 30, 33, 28, 57, 57, 57, 57, 57, 40, 58, 133, 150, 97, 36, 30, 35, 31, 27, 30, 30, 30, 30, 39, 84, 52, 61, 64, 63, 65, 64, 64, 64, 64, 64, 61, 43, 43, 36, 48, 46, 44, 41, 52, 60, 60, 60, 60, 60, 48, 40, 40, 44, 60, 60, 61, 64, 58, 56, 55, 55, 55, 55, 55, 55, 55, 55, 78, 166, 180, 188, 189, 189, 189, 189, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 188, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 186, 185, 185, 185, 184, 184, 184, 183, 183, 183, 182, 181, 181, 179, 178, 177, 176, 175, 174, 173, 173, 171, 171, 171, 171, 172, 173, 173, 174, 176, 177, 179, 181, 194, 206, 210, 212, 196, 144, 140, 140, 140, 140, 140, 140, 142, 142, 142, 98, 30, 30, 31, 32, 35, 37, 39, 40, 40, 41, 42, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 41, 40, 40, 40, 39, 38, 36, 35, 33, 184, 190, 191, 192, 193, 195, 196, 196, 198, 198, 199, 201, 202, 203, 202, 201, 192, 189, 191, 192, 192, 190, 193, 188, 181, 184, 187, 187, 184, 178, 169, 163, 163, 152, 152, 155, 154, 137, 112, 108, 99, 83, 124, 109, 40, 52, 97, 137, 157, 160, 165, 162, 169, 176, 178, 178, 178, 177, 176, 172, 168, 166, 166, 166, 146, 165, 163, 162, 161, 161, 161, 161, 160, 163, 173, 172, 168, 165, 161, 163, 163, 164, 135, 78, 38, 47, 105, 148, 159, 165, 174, 171, 168, 174, 175, 170, 171, 172, 166, 161, 167, 166, 157, 155, 150, 130, 104, 98, 53, 99, 148, 121, 31, 32, 29, 57, 57, 57, 57, 55, 37, 93, 155, 148, 83, 34, 27, 35, 29, 29, 30, 30, 30, 30, 30, 43, 41, 53, 58, 60, 62, 63, 63, 63, 63, 62, 62, 52, 52, 39, 36, 44, 43, 41, 53, 60, 60, 60, 60, 58, 42, 40, 40, 50, 60, 60, 60, 66, 59, 56, 55, 54, 54, 55, 55, 55, 55, 55, 69, 146, 177, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 188, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 187, 193, 187, 185, 185, 185, 184, 184, 184, 184, 183, 183, 182, 181, 180, 179, 177, 176, 175, 174, 173, 173, 172, 172, 172, 172, 173, 174, 176, 177, 179, 180, 186, 200, 208, 210, 210, 173, 138, 140, 140, 140, 140, 140, 140, 140, 141, 142, 143, 101, 31, 30, 31, 32, 35, 37, 39, 40, 40, 41, 42, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 42, 41, 40, 40, 39, 38, 37, 36, 34, 33, 189, 190, 192, 194, 196, 196, 195, 195, 196, 195, 196, 199, 201, 201, 201, 198, 190, 188, 190, 194, 196, 194, 193, 192, 184, 187, 193, 188, 185, 179, 173, 169, 155, 163, 169, 153, 144, 110, 114, 106, 97, 126, 133, 60, 77, 120, 141, 156, 157, 160, 159, 158, 167, 173, 176, 178, 179, 179, 178, 174, 170, 168, 168, 167, 146, 165, 163, 162, 162, 161, 161, 161, 161, 161, 171, 173, 172, 170, 165, 163, 170, 173, 144, 96, 40, 46, 119, 157, 161, 166, 173, 177, 174, 178, 177, 171, 167, 176, 172, 166, 176, 168, 160, 159, 154, 127, 104, 103, 71, 113, 156, 132, 30, 31, 30, 57, 57, 57, 57, 53, 67, 103, 159, 149, 78, 31, 30, 36, 27, 30, 30, 30, 30, 30, 30, 25, 35, 40, 51, 56, 58, 61, 62, 62, 61, 61, 59, 52, 57, 46, 37, 36, 42, 41, 54, 60, 60, 60, 60, 50, 42, 42, 38, 59, 60, 60, 60, 65, 63, 56, 55, 54, 55, 54, 54, 55, 55, 55, 58, 123, 174, 187, 189, 189, 189, 189, 189, 189, 189, 188, 189, 189, 189, 189, 189, 189, 189, 189, 188, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 196, 192, 186, 186, 185, 185, 185, 184, 184, 184, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 174, 173, 174, 174, 174, 175, 177, 179, 181, 184, 193, 204, 209, 211, 204, 152, 138, 140, 140, 140, 140, 140, 140, 140, 140, 141, 144, 143, 105, 32, 30, 31, 32, 34, 36, 39, 39, 41, 41, 42, 42, 41, 41, 41, 41, 41, 41, 41, 42, 42, 41, 40, 40, 40, 39, 38, 37, 36, 34, 33, 191, 193, 196, 199, 200, 199, 197, 194, 193, 192, 193, 194, 196, 196, 195, 191, 186, 184, 186, 192, 195, 197, 194, 193, 187, 188, 192, 187, 184, 180, 184, 173, 180, 193, 172, 149, 112, 119, 107, 107, 125, 138, 95, 43, 121, 152, 157, 157, 159, 162, 158, 159, 172, 173, 173, 174, 177, 177, 177, 176, 173, 171, 169, 167, 148, 164, 164, 163, 163, 163, 164, 164, 162, 166, 171, 168, 171, 170, 164, 164, 167, 171, 113, 53, 45, 47, 131, 169, 164, 166, 170, 177, 174, 177, 178, 175, 174, 178, 175, 174, 174, 162, 162, 161, 158, 121, 104, 104, 119, 146, 154, 141, 29, 32, 32, 57, 57, 57, 57, 50, 104, 142, 160, 151, 64, 30, 39, 35, 28, 30, 31, 30, 29, 30, 30, 30, 27, 35, 40, 48, 53, 58, 58, 58, 58, 57, 56, 50, 59, 49, 36, 33, 36, 41, 56, 60, 60, 60, 58, 42, 42, 41, 40, 60, 60, 60, 60, 64, 65, 58, 55, 54, 55, 55, 55, 55, 55, 55, 56, 88, 171, 187, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 189, 186, 186, 186, 185, 185, 185, 184, 184, 184, 183, 184, 183, 182, 181, 180, 179, 177, 177, 176, 175, 175, 175, 175, 175, 176, 178, 181, 184, 189, 200, 207, 209, 211, 198, 139, 138, 139, 140, 140, 140, 140, 140, 140, 140, 140, 141, 144, 142, 108, 32, 30, 30, 32, 34, 36, 38, 39, 40, 40, 42, 42, 42, 41, 41, 41, 41, 41, 41, 42, 42, 41, 40, 40, 39, 38, 38, 37, 36, 34, 33, 194, 198, 200, 201, 201, 200, 197, 193, 189, 189, 189, 191, 192, 192, 189, 185, 182, 182, 184, 189, 193, 193, 192, 190, 185, 183, 184, 183, 180, 178, 167, 174, 199, 203, 176, 124, 120, 109, 107, 122, 132, 122, 52, 58, 138, 155, 157, 158, 164, 163, 157, 164, 170, 170, 168, 172, 174, 176, 177, 177, 175, 172, 171, 169, 153, 159, 164, 165, 165, 165, 169, 169, 163, 168, 176, 171, 170, 168, 162, 163, 165, 166, 110, 57, 52, 54, 136, 173, 175, 169, 170, 172, 175, 176, 177, 175, 176, 178, 177, 175, 169, 161, 161, 161, 159, 107, 104, 109, 146, 156, 151, 147, 31, 31, 33, 57, 57, 57, 57, 48, 125, 154, 160, 154, 61, 34, 44, 32, 30, 32, 31, 31, 28, 30, 30, 30, 26, 32, 35, 38, 44, 53, 54, 54, 54, 53, 52, 45, 58, 53, 33, 33, 30, 38, 54, 59, 59, 58, 49, 41, 40, 36, 37, 58, 60, 60, 60, 63, 65, 62, 56, 55, 55, 55, 55, 55, 55, 55, 56, 72, 157, 184, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 188, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 185, 185, 185, 184, 184, 184, 183, 183, 182, 181, 180, 179, 178, 177, 176, 176, 176, 176, 177, 178, 180, 184, 187, 196, 204, 208, 210, 211, 193, 133, 135, 139, 140, 140, 142, 141, 142, 141, 140, 141, 142, 142, 144, 143, 112, 33, 30, 30, 32, 33, 36, 38, 39, 40, 40, 41, 42, 42, 42, 41, 41, 41, 41, 42, 42, 42, 41, 40, 40, 39, 38, 37, 37, 35, 34, 33, 199, 201, 202, 201, 201, 199, 196, 192, 190, 188, 188, 188, 190, 190, 187, 184, 182, 181, 182, 185, 187, 187, 186, 184, 181, 179, 179, 178, 177, 166, 160, 179, 190, 193, 156, 117, 117, 106, 119, 123, 130, 85, 105, 140, 156, 156, 157, 160, 163, 159, 156, 159, 164, 163, 165, 165, 172, 175, 176, 178, 178, 174, 172, 172, 164, 152, 165, 165, 165, 168, 171, 171, 164, 163, 171, 171, 166, 166, 162, 164, 163, 171, 127, 63, 59, 59, 151, 175, 179, 178, 175, 173, 175, 175, 177, 175, 178, 178, 173, 168, 164, 161, 161, 162, 140, 101, 107, 132, 155, 152, 151, 150, 43, 32, 37, 57, 57, 57, 57, 59, 144, 160, 160, 153, 44, 45, 38, 28, 33, 33, 33, 33, 31, 28, 30, 30, 30, 26, 33, 34, 36, 40, 49, 48, 49, 48, 47, 41, 50, 57, 32, 33, 33, 33, 49, 57, 57, 55, 42, 41, 38, 42, 41, 41, 58, 60, 60, 62, 64, 64, 58, 55, 54, 55, 54, 55, 55, 56, 56, 62, 139, 182, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 186, 185, 185, 185, 184, 184, 184, 183, 183, 182, 181, 180, 179, 178, 177, 178, 178, 178, 179, 182, 185, 192, 199, 205, 208, 209, 211, 192, 131, 131, 138, 140, 140, 140, 140, 143, 144, 142, 142, 141, 144, 146, 147, 146, 113, 34, 30, 30, 31, 34, 36, 38, 39, 40, 40, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 40, 40, 39, 38, 38, 37, 36, 35, 34, 32, 199, 202, 202, 202, 201, 200, 198, 195, 193, 191, 191, 191, 192, 191, 189, 186, 183, 182, 181, 181, 181, 181, 181, 180, 178, 178, 177, 177, 167, 158, 171, 174, 178, 172, 125, 129, 110, 114, 122, 118, 119, 59, 132, 155, 156, 160, 161, 163, 161, 158, 156, 156, 159, 157, 163, 161, 171, 175, 176, 178, 178, 180, 176, 173, 173, 151, 168, 166, 166, 170, 172, 172, 165, 163, 164, 167, 165, 169, 165, 164, 164, 175, 116, 71, 67, 64, 171, 177, 179, 179, 178, 177, 177, 176, 176, 177, 178, 178, 168, 169, 166, 164, 163, 164, 100, 105, 113, 153, 152, 151, 151, 150, 58, 33, 40, 57, 57, 57, 57, 91, 149, 161, 160, 116, 37, 52, 34, 28, 32, 33, 35, 33, 33, 29, 30, 30, 30, 30, 28, 32, 34, 34, 37, 41, 42, 42, 42, 35, 40, 59, 33, 33, 33, 32, 48, 53, 54, 48, 41, 41, 49, 50, 42, 41, 42, 58, 60, 61, 64, 64, 62, 56, 54, 55, 55, 55, 55, 55, 55, 56, 114, 179, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 188, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 185, 185, 185, 184, 184, 184, 183, 183, 183, 182, 181, 180, 179, 179, 179, 179, 180, 184, 187, 193, 199, 203, 207, 209, 210, 195, 133, 131, 136, 139, 140, 140, 140, 138, 142, 144, 144, 146, 142, 147, 149, 149, 149, 114, 34, 30, 31, 32, 33, 36, 37, 39, 40, 40, 40, 42, 42, 42, 42, 42, 42, 42, 42, 41, 40, 40, 40, 39, 38, 37, 36, 36, 35, 34, 33, 200, 202, 202, 202, 202, 201, 201, 199, 197, 195, 195, 195, 194, 192, 190, 189, 187, 186, 184, 181, 180, 181, 180, 178, 177, 177, 177, 170, 158, 164, 171, 171, 169, 135, 128, 122, 109, 119, 108, 119, 97, 65, 147, 155, 159, 167, 170, 170, 166, 158, 157, 157, 158, 157, 160, 164, 173, 169, 168, 178, 178, 179, 181, 176, 174, 154, 171, 166, 166, 170, 172, 172, 166, 165, 164, 164, 166, 177, 173, 170, 168, 175, 141, 83, 74, 86, 179, 179, 180, 179, 175, 173, 171, 174, 168, 171, 176, 175, 167, 172, 172, 174, 173, 134, 100, 104, 153, 159, 152, 151, 151, 151, 62, 34, 43, 57, 57, 57, 53, 104, 154, 161, 145, 43, 55, 43, 29, 33, 32, 33, 37, 36, 34, 33, 29, 30, 30, 30, 30, 29, 31, 33, 33, 35, 35, 36, 36, 33, 37, 53, 38, 33, 33, 31, 45, 48, 48, 42, 40, 41, 60, 57, 42, 42, 43, 42, 58, 60, 63, 64, 63, 59, 55, 55, 55, 55, 55, 55, 55, 55, 81, 174, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 185, 185, 185, 184, 184, 183, 183, 183, 182, 181, 181, 180, 180, 180, 182, 184, 187, 192, 198, 202, 205, 207, 209, 197, 134, 136, 138, 139, 140, 140, 139, 139, 140, 143, 144, 144, 147, 144, 147, 149, 149, 149, 118, 35, 30, 31, 32, 33, 36, 38, 39, 40, 40, 40, 41, 42, 42, 42, 42, 42, 42, 42, 41, 40, 40, 40, 39, 38, 37, 37, 36, 35, 33, 33, 200, 202, 202, 202, 202, 202, 202, 201, 200, 199, 199, 199, 196, 193, 191, 189, 189, 189, 187, 184, 182, 183, 182, 179, 178, 177, 173, 160, 158, 167, 167, 166, 142, 121, 132, 112, 112, 106, 102, 111, 78, 72, 130, 155, 163, 170, 173, 173, 171, 162, 166, 166, 163, 158, 161, 172, 173, 164, 168, 178, 178, 178, 180, 179, 175, 156, 171, 168, 165, 169, 171, 170, 165, 164, 165, 171, 172, 179, 179, 179, 171, 175, 168, 85, 79, 108, 170, 179, 180, 179, 176, 173, 167, 167, 163, 164, 176, 173, 165, 168, 171, 176, 140, 91, 103, 153, 166, 162, 156, 151, 151, 151, 67, 36, 46, 57, 57, 57, 52, 103, 160, 157, 72, 42, 60, 34, 28, 33, 33, 33, 37, 44, 37, 34, 32, 30, 30, 30, 30, 30, 30, 31, 32, 33, 33, 33, 33, 34, 39, 40, 46, 33, 33, 31, 40, 43, 42, 41, 40, 52, 60, 60, 48, 43, 44, 44, 43, 57, 63, 63, 63, 62, 56, 54, 54, 54, 55, 55, 55, 55, 69, 157, 187, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 188, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 185, 185, 185, 184, 184, 184, 184, 183, 182, 182, 181, 181, 181, 182, 185, 187, 191, 196, 200, 203, 206, 207, 205, 142, 136, 139, 140, 140, 141, 139, 139, 139, 142, 142, 142, 144, 145, 147, 148, 149, 149, 149, 122, 35, 30, 31, 32, 34, 36, 38, 39, 40, 40, 40, 40, 42, 42, 42, 42, 42, 42, 41, 40, 40, 40, 40, 39, 37, 37, 36, 36, 35, 33, 32, 198, 201, 202, 202, 202, 202, 202, 202, 200, 199, 199, 200, 198, 194, 191, 189, 189, 189, 188, 187, 186, 186, 185, 181, 179, 177, 166, 158, 163, 164, 164, 151, 123, 128, 121, 106, 103, 95, 97, 94, 104, 102, 109, 152, 164, 171, 174, 175, 172, 171, 173, 176, 173, 163, 164, 178, 173, 166, 175, 178, 178, 179, 180, 179, 177, 173, 157, 172, 162, 168, 171, 170, 166, 164, 165, 173, 172, 178, 179, 179, 176, 178, 162, 81, 78, 120, 164, 179, 180, 179, 179, 179, 176, 172, 168, 167, 176, 171, 170, 165, 170, 136, 89, 103, 147, 167, 166, 163, 158, 153, 151, 151, 65, 39, 51, 57, 57, 55, 49, 127, 162, 101, 36, 56, 42, 29, 33, 36, 36, 34, 41, 53, 47, 36, 34, 32, 29, 30, 30, 30, 30, 30, 30, 30, 30, 31, 30, 35, 40, 36, 48, 36, 33, 33, 37, 40, 41, 41, 41, 60, 60, 60, 58, 43, 43, 44, 44, 42, 55, 63, 63, 63, 61, 55, 54, 54, 55, 55, 55, 55, 62, 139, 186, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 188, 188, 189, 188, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 186, 185, 185, 184, 184, 184, 184, 183, 183, 182, 182, 182, 183, 186, 188, 191, 195, 198, 201, 204, 205, 206, 162, 132, 139, 139, 140, 140, 140, 140, 139, 139, 141, 141, 140, 142, 145, 149, 149, 149, 153, 155, 124, 36, 30, 31, 32, 34, 36, 38, 39, 40, 40, 40, 40, 41, 42, 42, 42, 42, 41, 40, 40, 40, 40, 40, 38, 37, 36, 36, 35, 34, 33, 31, 195, 198, 199, 200, 200, 201, 201, 200, 198, 196, 196, 198, 198, 194, 191, 189, 189, 188, 187, 187, 187, 187, 185, 180, 179, 173, 163, 162, 167, 164, 157, 132, 122, 130, 110, 96, 90, 89, 91, 95, 140, 127, 106, 136, 165, 174, 176, 176, 175, 176, 176, 176, 176, 171, 170, 178, 179, 177, 178, 178, 179, 179, 180, 179, 177, 176, 156, 175, 166, 167, 170, 166, 166, 166, 164, 165, 170, 180, 179, 179, 180, 179, 149, 86, 97, 135, 164, 179, 180, 180, 179, 179, 180, 180, 179, 172, 173, 172, 176, 168, 120, 92, 103, 149, 161, 164, 166, 162, 158, 156, 154, 152, 61, 46, 55, 57, 57, 49, 39, 150, 122, 34, 51, 49, 33, 29, 34, 47, 39, 36, 47, 57, 58, 45, 36, 34, 32, 28, 30, 30, 30, 30, 30, 30, 30, 30, 28, 38, 40, 37, 39, 49, 33, 33, 35, 41, 41, 38, 57, 60, 60, 60, 60, 53, 41, 44, 44, 44, 41, 53, 63, 63, 63, 58, 54, 54, 55, 55, 55, 55, 56, 116, 188, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 190, 195, 194, 190, 188, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 185, 185, 185, 184, 184, 183, 183, 184, 183, 183, 184, 186, 188, 192, 194, 197, 200, 202, 204, 205, 181, 131, 134, 139, 140, 139, 140, 140, 140, 140, 140, 140, 140, 140, 141, 146, 149, 149, 152, 162, 164, 133, 36, 30, 31, 32, 34, 36, 38, 39, 40, 40, 40, 40, 40, 41, 42, 42, 41, 40, 40, 40, 40, 40, 39, 38, 37, 36, 36, 35, 34, 33, 32, 193, 193, 195, 195, 197, 199, 199, 198, 195, 193, 193, 194, 194, 193, 190, 189, 187, 186, 185, 186, 187, 187, 183, 180, 178, 169, 164, 169, 170, 166, 144, 124, 130, 121, 96, 85, 82, 84, 97, 126, 154, 146, 114, 115, 159, 179, 178, 176, 176, 176, 176, 176, 176, 177, 177, 178, 180, 183, 180, 180, 179, 179, 179, 179, 177, 176, 170, 159, 173, 165, 171, 173, 172, 174, 166, 162, 172, 177, 179, 180, 180, 179, 168, 94, 110, 151, 177, 180, 180, 180, 180, 179, 180, 180, 180, 175, 172, 178, 163, 111, 95, 106, 156, 162, 163, 165, 168, 166, 161, 158, 159, 158, 59, 53, 57, 57, 57, 39, 85, 134, 37, 49, 52, 36, 27, 34, 37, 57, 41, 39, 50, 58, 60, 59, 49, 37, 34, 33, 29, 28, 30, 30, 30, 30, 30, 30, 26, 40, 40, 37, 40, 46, 39, 34, 35, 40, 41, 45, 60, 60, 60, 60, 60, 60, 46, 44, 44, 44, 44, 41, 51, 63, 63, 63, 56, 55, 54, 55, 54, 55, 55, 85, 185, 188, 189, 189, 189, 189, 189, 189, 189, 189, 188, 189, 189, 189, 188, 194, 202, 203, 200, 192, 189, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 185, 185, 185, 184, 184, 184, 184, 184, 184, 185, 187, 189, 192, 194, 197, 198, 200, 202, 203, 193, 137, 137, 135, 137, 138, 138, 139, 139, 140, 140, 139, 141, 141, 141, 143, 148, 149, 149, 156, 171, 172, 141, 36, 30, 31, 33, 34, 36, 38, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 38, 37, 36, 36, 35, 34, 33, 32, 191, 190, 190, 190, 192, 193, 194, 193, 191, 190, 190, 191, 190, 189, 188, 186, 185, 183, 182, 183, 186, 185, 180, 178, 173, 169, 171, 179, 177, 163, 134, 124, 131, 108, 84, 76, 76, 81, 113, 147, 155, 158, 147, 114, 123, 165, 180, 177, 177, 176, 176, 176, 176, 177, 179, 178, 181, 183, 182, 179, 178, 178, 178, 177, 177, 176, 176, 156, 171, 172, 170, 173, 174, 176, 172, 167, 168, 170, 178, 179, 180, 179, 173, 95, 93, 148, 179, 180, 180, 180, 180, 180, 180, 180, 179, 178, 170, 141, 103, 93, 116, 161, 162, 162, 166, 170, 172, 173, 167, 161, 161, 156, 55, 56, 57, 57, 51, 34, 104, 45, 44, 55, 38, 31, 29, 34, 46, 61, 44, 40, 48, 54, 59, 60, 59, 50, 37, 34, 34, 34, 31, 30, 28, 28, 27, 27, 27, 40, 40, 38, 39, 38, 49, 32, 33, 40, 40, 55, 60, 60, 60, 60, 60, 60, 58, 42, 44, 44, 44, 44, 42, 48, 62, 62, 60, 55, 55, 54, 55, 54, 55, 71, 167, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 190, 198, 204, 204, 203, 200, 192, 189, 188, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 186, 185, 185, 184, 184, 184, 184, 185, 185, 187, 189, 192, 194, 197, 198, 199, 202, 202, 200, 144, 138, 139, 137, 135, 137, 138, 139, 139, 139, 139, 141, 142, 144, 145, 147, 149, 150, 151, 160, 176, 175, 143, 36, 30, 31, 33, 34, 36, 38, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 38, 37, 36, 36, 35, 34, 33, 32, 189, 188, 187, 187, 187, 188, 188, 188, 187, 187, 186, 187, 186, 185, 184, 183, 182, 181, 180, 181, 182, 182, 180, 177, 171, 172, 183, 191, 186, 158, 131, 130, 122, 93, 73, 69, 69, 80, 121, 152, 156, 163, 170, 150, 117, 122, 160, 177, 176, 176, 176, 177, 177, 178, 179, 181, 183, 183, 182, 179, 178, 177, 177, 177, 177, 176, 176, 176, 150, 174, 170, 172, 173, 175, 176, 174, 165, 169, 174, 178, 179, 179, 171, 85, 76, 125, 179, 180, 180, 180, 180, 180, 180, 179, 179, 160, 108, 103, 88, 128, 176, 172, 165, 165, 164, 168, 174, 177, 171, 161, 161, 148, 55, 57, 57, 57, 41, 30, 42, 35, 53, 41, 34, 28, 32, 35, 60, 65, 53, 41, 44, 49, 54, 60, 60, 59, 49, 40, 36, 35, 36, 37, 36, 34, 33, 32, 32, 40, 40, 40, 37, 40, 41, 35, 31, 40, 43, 60, 60, 60, 60, 60, 60, 60, 60, 52, 44, 44, 44, 44, 44, 44, 45, 60, 62, 58, 54, 54, 54, 54, 55, 65, 147, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 196, 203, 204, 204, 203, 199, 190, 189, 189, 188, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 185, 185, 185, 185, 185, 186, 186, 188, 190, 192, 194, 197, 198, 200, 201, 201, 202, 161, 138, 139, 140, 141, 136, 137, 138, 139, 139, 139, 139, 141, 146, 147, 148, 149, 149, 152, 159, 159, 175, 175, 139, 36, 30, 31, 32, 35, 36, 38, 39, 40, 41, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 38, 36, 36, 36, 35, 34, 33, 32, 187, 188, 187, 185, 185, 184, 184, 183, 184, 184, 184, 183, 183, 183, 182, 182, 182, 182, 180, 180, 181, 181, 181, 178, 172, 178, 191, 196, 182, 151, 131, 131, 110, 80, 66, 64, 64, 86, 132, 154, 157, 165, 174, 175, 154, 120, 117, 150, 172, 177, 177, 178, 178, 179, 179, 183, 185, 183, 181, 179, 177, 177, 177, 177, 177, 176, 176, 176, 173, 150, 170, 166, 168, 174, 175, 175, 171, 174, 175, 175, 177, 179, 175, 87, 77, 95, 179, 180, 180, 180, 180, 179, 179, 168, 121, 97, 99, 81, 141, 176, 176, 177, 173, 171, 169, 165, 173, 176, 171, 164, 162, 133, 57, 57, 57, 52, 35, 34, 35, 43, 45, 33, 27, 33, 32, 38, 74, 73, 66, 43, 42, 46, 46, 54, 60, 60, 62, 57, 45, 41, 38, 38, 36, 35, 33, 32, 35, 40, 40, 40, 37, 40, 39, 36, 30, 42, 50, 60, 60, 60, 60, 60, 60, 60, 60, 60, 47, 44, 44, 44, 44, 44, 44, 43, 57, 61, 56, 54, 54, 53, 55, 77, 140, 188, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 197, 203, 203, 204, 202, 191, 189, 189, 189, 189, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 185, 185, 185, 185, 186, 187, 189, 190, 192, 194, 197, 198, 199, 201, 202, 202, 178, 136, 138, 139, 140, 142, 138, 138, 138, 139, 140, 140, 139, 146, 148, 149, 149, 155, 156, 151, 160, 169, 174, 173, 135, 36, 30, 31, 33, 35, 36, 38, 39, 40, 40, 40, 40, 40, 40, 40, 40, 39, 40, 40, 40, 40, 40, 39, 38, 36, 36, 35, 35, 34, 33, 32, 186, 188, 187, 186, 185, 184, 182, 181, 183, 184, 184, 183, 182, 183, 183, 184, 185, 184, 182, 181, 182, 184, 184, 180, 175, 180, 194, 194, 170, 143, 131, 126, 97, 69, 60, 59, 61, 88, 136, 155, 158, 166, 174, 177, 176, 155, 123, 110, 130, 160, 176, 178, 179, 179, 180, 185, 187, 182, 179, 178, 178, 178, 178, 177, 177, 176, 176, 176, 176, 171, 146, 165, 164, 168, 175, 176, 175, 175, 174, 173, 173, 175, 178, 122, 82, 75, 172, 179, 179, 179, 179, 172, 131, 92, 100, 89, 95, 156, 178, 175, 176, 176, 175, 173, 170, 165, 166, 172, 172, 163, 161, 118, 59, 57, 57, 42, 34, 34, 35, 44, 35, 29, 32, 34, 33, 44, 85, 84, 73, 60, 41, 43, 44, 46, 53, 60, 62, 73, 75, 56, 50, 44, 40, 37, 34, 32, 37, 41, 40, 40, 37, 40, 40, 36, 33, 36, 58, 60, 60, 60, 60, 60, 60, 60, 60, 60, 58, 43, 44, 44, 44, 44, 44, 44, 42, 55, 60, 56, 55, 54, 66, 97, 169, 184, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 192, 200, 202, 199, 191, 189, 189, 189, 189, 189, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 186, 186, 186, 186, 187, 189, 190, 192, 194, 197, 198, 200, 201, 202, 202, 187, 134, 136, 138, 139, 139, 142, 137, 139, 139, 141, 142, 142, 142, 147, 149, 149, 151, 167, 173, 167, 155, 175, 176, 173, 125, 35, 31, 32, 33, 35, 37, 38, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 39, 38, 37, 36, 36, 35, 34, 34, 33, 32, 186, 189, 189, 189, 188, 186, 184, 183, 186, 188, 188, 186, 185, 186, 186, 188, 188, 188, 186, 185, 186, 187, 188, 182, 176, 181, 194, 186, 158, 136, 131, 117, 87, 62, 55, 55, 58, 86, 135, 157, 160, 166, 173, 177, 177, 175, 162, 135, 113, 115, 138, 160, 172, 179, 183, 188, 192, 185, 179, 178, 178, 178, 179, 178, 178, 178, 176, 176, 176, 176, 174, 149, 156, 167, 168, 173, 175, 174, 173, 172, 171, 170, 175, 160, 81, 80, 156, 179, 179, 164, 138, 98, 109, 134, 111, 121, 171, 177, 178, 177, 173, 172, 171, 167, 165, 163, 162, 168, 171, 162, 161, 97, 58, 57, 53, 35, 34, 35, 37, 36, 35, 91, 33, 35, 34, 49, 89, 94, 80, 78, 51, 42, 44, 44, 45, 50, 62, 70, 85, 82, 64, 55, 53, 49, 43, 34, 40, 43, 41, 40, 38, 39, 40, 39, 35, 34, 60, 60, 60, 60, 60, 60, 59, 59, 59, 59, 58, 49, 45, 44, 44, 44, 44, 44, 44, 42, 49, 59, 57, 61, 90, 198, 169, 182, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 188, 190, 191, 189, 189, 189, 189, 189, 189, 189, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 186, 186, 187, 188, 189, 191, 192, 194, 197, 198, 200, 201, 202, 202, 193, 139, 134, 135, 137, 140, 140, 141, 136, 138, 140, 142, 142, 144, 147, 149, 149, 149, 149, 157, 169, 169, 164, 177, 177, 175, 126, 35, 31, 32, 33, 35, 37, 38, 39, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 39, 38, 37, 36, 36, 35, 34, 34, 33, 32, 187, 193, 194, 194, 193, 191, 189, 188, 191, 193, 193, 191, 190, 191, 192, 192, 192, 192, 190, 189, 190, 192, 193, 186, 178, 180, 188, 171, 148, 130, 130, 109, 79, 56, 51, 51, 58, 93, 137, 158, 162, 165, 171, 175, 176, 177, 177, 171, 152, 128, 113, 113, 126, 143, 163, 185, 195, 192, 181, 178, 178, 178, 179, 178, 179, 178, 176, 176, 176, 176, 176, 175, 163, 148, 157, 169, 172, 173, 173, 169, 168, 171, 178, 179, 131, 91, 126, 137, 114, 126, 147, 166, 164, 117, 155, 178, 178, 178, 178, 178, 173, 163, 166, 165, 163, 164, 165, 167, 170, 164, 162, 67, 58, 57, 42, 34, 34, 35, 35, 35, 119, 84, 32, 46, 70, 50, 90, 99, 94, 90, 84, 46, 43, 44, 43, 44, 47, 63, 81, 80, 73, 58, 55, 55, 48, 39, 42, 43, 43, 40, 40, 37, 40, 40, 36, 43, 60, 60, 60, 60, 60, 59, 59, 58, 58, 58, 56, 55, 43, 45, 45, 44, 44, 44, 44, 44, 43, 44, 57, 82, 161, 239, 171, 185, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 187, 187, 189, 189, 191, 193, 194, 197, 198, 199, 201, 202, 202, 194, 142, 134, 138, 137, 138, 146, 142, 140, 139, 139, 140, 143, 143, 146, 146, 150, 149, 149, 149, 152, 161, 166, 167, 174, 177, 177, 133, 34, 31, 32, 33, 35, 37, 38, 39, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 38, 37, 36, 35, 35, 35, 34, 32, 32, 188, 194, 196, 196, 196, 196, 195, 194, 197, 199, 199, 196, 195, 196, 197, 196, 197, 195, 194, 193, 193, 194, 196, 190, 182, 179, 175, 159, 139, 129, 127, 102, 72, 52, 49, 49, 64, 105, 146, 160, 163, 165, 170, 174, 176, 176, 177, 177, 176, 170, 155, 137, 122, 114, 113, 123, 143, 163, 173, 173, 175, 177, 178, 178, 177, 176, 176, 176, 176, 176, 177, 179, 177, 175, 167, 151, 150, 150, 153, 157, 156, 159, 158, 161, 154, 97, 89, 164, 180, 179, 178, 143, 140, 175, 178, 179, 178, 178, 177, 177, 172, 164, 166, 173, 166, 165, 165, 164, 167, 168, 155, 56, 57, 53, 35, 34, 34, 35, 34, 71, 144, 37, 38, 58, 128, 46, 89, 99, 100, 99, 99, 80, 44, 43, 43, 43, 43, 45, 50, 59, 63, 59, 56, 55, 46, 34, 43, 43, 44, 45, 41, 37, 40, 40, 39, 41, 60, 60, 60, 60, 59, 58, 57, 57, 57, 57, 54, 54, 49, 43, 45, 44, 45, 44, 44, 44, 44, 45, 50, 106, 231, 220, 175, 186, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 188, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 188, 189, 191, 192, 194, 196, 198, 199, 200, 201, 202, 193, 145, 136, 137, 139, 139, 140, 148, 146, 141, 140, 140, 140, 146, 143, 143, 145, 143, 149, 149, 150, 157, 172, 175, 170, 171, 177, 177, 129, 34, 31, 32, 33, 34, 37, 39, 40, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 38, 37, 36, 35, 35, 35, 34, 33, 31, 189, 193, 194, 195, 197, 199, 199, 200, 201, 202, 201, 200, 200, 201, 201, 201, 200, 199, 197, 195, 195, 197, 199, 196, 187, 180, 164, 148, 131, 131, 123, 97, 66, 49, 46, 47, 66, 110, 150, 161, 164, 168, 172, 176, 178, 178, 178, 177, 177, 177, 178, 177, 170, 162, 154, 148, 145, 139, 136, 138, 143, 153, 165, 173, 176, 176, 176, 176, 176, 176, 178, 180, 181, 176, 176, 176, 176, 174, 168, 169, 172, 176, 179, 179, 179, 158, 100, 117, 174, 167, 153, 175, 179, 179, 180, 178, 178, 177, 176, 175, 171, 164, 165, 174, 173, 165, 162, 161, 165, 171, 135, 58, 57, 41, 34, 34, 34, 34, 40, 136, 125, 35, 57, 98, 152, 38, 84, 96, 98, 97, 100, 99, 79, 45, 43, 43, 42, 42, 43, 45, 47, 50, 52, 51, 47, 37, 42, 43, 44, 53, 51, 38, 40, 40, 39, 42, 59, 60, 60, 59, 58, 57, 56, 56, 56, 55, 53, 53, 53, 44, 45, 45, 44, 44, 44, 44, 44, 47, 78, 189, 244, 187, 174, 184, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 188, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 189, 189, 189, 191, 192, 194, 196, 197, 199, 200, 201, 202, 188, 124, 139, 136, 138, 140, 140, 140, 146, 146, 142, 141, 140, 141, 146, 146, 142, 151, 151, 153, 149, 150, 152, 168, 176, 175, 172, 177, 177, 122, 33, 31, 32, 33, 34, 37, 38, 39, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 38, 37, 37, 35, 35, 35, 34, 33, 33, 32, 188, 192, 192, 193, 196, 199, 202, 202, 202, 203, 201, 201, 201, 202, 202, 202, 201, 200, 198, 196, 196, 198, 200, 199, 191, 180, 158, 139, 128, 133, 121, 93, 61, 47, 45, 45, 63, 108, 149, 161, 166, 171, 174, 177, 180, 180, 180, 178, 177, 179, 184, 186, 182, 180, 181, 184, 190, 191, 189, 189, 193, 194, 185, 179, 177, 176, 176, 176, 176, 176, 176, 179, 181, 178, 176, 176, 176, 176, 174, 175, 177, 177, 178, 180, 179, 179, 149, 100, 108, 152, 179, 179, 179, 179, 180, 179, 177, 177, 174, 173, 173, 167, 168, 174, 175, 168, 164, 163, 167, 144, 81, 56, 52, 34, 34, 34, 39, 42, 114, 151, 101, 54, 82, 123, 162, 47, 72, 90, 88, 81, 83, 93, 98, 82, 49, 43, 42, 42, 42, 42, 42, 42, 43, 44, 43, 37, 42, 43, 45, 57, 60, 51, 37, 40, 37, 44, 57, 60, 60, 58, 57, 56, 55, 55, 55, 54, 51, 51, 51, 50, 43, 45, 44, 44, 44, 44, 44, 49, 106, 238, 211, 174, 173, 181, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 188, 189, 189, 190, 191, 192, 194, 196, 197, 199, 200, 201, 201, 176, 78, 115, 136, 138, 139, 142, 140, 141, 143, 144, 142, 142, 142, 142, 145, 150, 147, 154, 155, 159, 152, 151, 152, 163, 174, 177, 176, 177, 177, 115, 32, 31, 32, 33, 35, 37, 38, 40, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 39, 38, 37, 36, 35, 35, 35, 34, 33, 32, 32, 188, 191, 191, 193, 195, 199, 202, 202, 202, 202, 201, 201, 201, 202, 202, 201, 200, 198, 196, 195, 196, 198, 199, 198, 193, 178, 155, 134, 129, 133, 119, 88, 58, 45, 43, 43, 60, 103, 146, 164, 169, 173, 176, 177, 180, 182, 180, 179, 178, 180, 184, 185, 183, 184, 188, 188, 189, 190, 190, 187, 191, 193, 188, 182, 177, 176, 176, 176, 176, 176, 176, 177, 181, 177, 176, 176, 176, 176, 176, 177, 177, 177, 178, 179, 179, 176, 140, 115, 101, 104, 142, 171, 179, 179, 178, 177, 175, 174, 173, 173, 175, 176, 178, 178, 178, 177, 173, 147, 92, 60, 50, 56, 40, 34, 34, 34, 83, 124, 150, 151, 78, 82, 90, 136, 161, 88, 56, 84, 77, 70, 65, 62, 72, 82, 77, 54, 43, 42, 42, 42, 42, 42, 42, 42, 42, 39, 41, 42, 45, 59, 60, 59, 41, 40, 36, 45, 53, 60, 60, 57, 56, 55, 55, 54, 54, 51, 50, 49, 49, 50, 47, 44, 45, 44, 44, 44, 45, 62, 168, 230, 175, 174, 172, 182, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 187, 187, 187, 187, 187, 187, 187, 187, 188, 189, 189, 189, 190, 191, 192, 193, 195, 197, 198, 199, 200, 200, 152, 59, 56, 131, 136, 139, 140, 145, 145, 144, 145, 145, 146, 145, 143, 146, 151, 154, 155, 156, 157, 164, 162, 163, 154, 171, 175, 177, 177, 176, 177, 103, 32, 31, 32, 33, 35, 37, 38, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 40, 39, 38, 37, 36, 35, 35, 34, 34, 33, 31, 32, 189, 191, 192, 193, 195, 198, 201, 201, 201, 201, 201, 201, 201, 201, 201, 200, 197, 195, 194, 194, 194, 195, 196, 194, 190, 173, 150, 132, 132, 134, 117, 85, 56, 45, 42, 43, 62, 106, 147, 166, 172, 177, 179, 180, 183, 183, 182, 180, 180, 180, 181, 182, 182, 187, 192, 190, 189, 190, 190, 186, 187, 189, 193, 187, 178, 177, 176, 176, 176, 176, 176, 178, 181, 178, 176, 176, 176, 176, 177, 177, 178, 177, 177, 179, 156, 102, 142, 179, 167, 120, 100, 100, 124, 147, 165, 173, 173, 173, 173, 173, 176, 177, 178, 178, 177, 158, 101, 58, 98, 127, 56, 49, 34, 34, 34, 38, 120, 153, 151, 148, 78, 100, 90, 146, 157, 122, 45, 74, 75, 66, 63, 58, 50, 52, 60, 64, 57, 46, 42, 42, 42, 42, 42, 42, 42, 38, 41, 42, 46, 60, 60, 60, 45, 39, 36, 45, 49, 60, 59, 56, 55, 54, 54, 53, 53, 49, 49, 48, 48, 49, 49, 44, 45, 44, 44, 44, 48, 82, 211, 240, 173, 173, 171, 185, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 187, 187, 187, 187, 187, 187, 188, 189, 189, 189, 189, 189, 190, 191, 192, 193, 195, 196, 197, 198, 199, 188, 114, 49, 48, 88, 134, 141, 140, 141, 147, 148, 146, 144, 143, 148, 143, 150, 154, 155, 155, 156, 157, 159, 168, 171, 175, 163, 169, 174, 176, 177, 177, 178, 90, 31, 31, 32, 34, 35, 37, 38, 39, 40, 39, 40, 40, 40, 40, 40, 40, 40, 40, 39, 40, 39, 38, 37, 36, 35, 35, 35, 34, 33, 32, 31, 189, 191, 192, 192, 194, 196, 198, 199, 200, 200, 200, 201, 201, 201, 201, 198, 195, 193, 192, 191, 192, 192, 191, 188, 183, 165, 143, 130, 133, 135, 116, 83, 54, 44, 42, 45, 67, 110, 150, 166, 173, 180, 183, 186, 186, 186, 183, 182, 183, 183, 181, 183, 185, 189, 191, 191, 190, 190, 190, 191, 194, 195, 195, 192, 181, 178, 177, 177, 177, 178, 179, 181, 185, 179, 176, 176, 176, 176, 177, 178, 178, 178, 171, 124, 96, 159, 179, 179, 180, 179, 160, 129, 106, 104, 101, 109, 130, 141, 147, 149, 150, 150, 152, 154, 135, 117, 136, 159, 169, 118, 51, 37, 34, 34, 34, 68, 146, 154, 152, 141, 101, 97, 98, 143, 154, 150, 50, 58, 70, 66, 63, 62, 60, 52, 47, 46, 48, 49, 47, 43, 42, 42, 42, 42, 43, 37, 41, 41, 44, 59, 60, 60, 52, 37, 38, 43, 47, 57, 58, 55, 54, 53, 52, 52, 51, 48, 48, 48, 48, 48, 48, 50, 43, 44, 44, 45, 50, 114, 241, 244, 173, 173, 176, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 188, 188, 188, 188, 189, 189, 189, 189, 189, 188, 189, 190, 191, 192, 193, 194, 196, 197, 198, 198, 159, 69, 48, 47, 47, 116, 139, 146, 144, 145, 144, 144, 146, 145, 143, 145, 146, 154, 157, 156, 156, 157, 159, 163, 168, 171, 177, 175, 171, 175, 169, 176, 177, 178, 73, 31, 31, 32, 34, 35, 38, 38, 40, 40, 39, 39, 40, 40, 40, 40, 40, 40, 39, 40, 39, 38, 38, 37, 36, 35, 35, 34, 33, 33, 32, 31, 189, 191, 191, 191, 192, 193, 194, 196, 198, 200, 201, 201, 201, 201, 200, 197, 194, 190, 188, 188, 189, 187, 183, 179, 173, 155, 137, 129, 136, 136, 114, 82, 54, 44, 41, 46, 67, 106, 147, 166, 173, 183, 189, 192, 189, 188, 184, 185, 188, 186, 187, 192, 193, 194, 193, 192, 193, 193, 194, 195, 197, 198, 196, 192, 188, 184, 182, 179, 179, 179, 180, 181, 183, 178, 177, 177, 176, 177, 178, 178, 178, 152, 91, 104, 169, 179, 180, 181, 186, 183, 181, 183, 179, 169, 157, 147, 141, 139, 140, 145, 145, 147, 152, 157, 160, 166, 167, 166, 164, 65, 38, 34, 34, 34, 48, 123, 154, 153, 152, 148, 106, 94, 103, 132, 153, 153, 110, 49, 59, 63, 63, 63, 62, 62, 61, 56, 48, 46, 46, 44, 41, 37, 70, 70, 124, 64, 40, 41, 44, 52, 60, 60, 57, 38, 40, 39, 45, 54, 57, 54, 52, 52, 51, 51, 50, 48, 47, 47, 47, 47, 47, 49, 48, 43, 45, 46, 58, 181, 245, 238, 173, 173, 172, 181, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 190, 192, 192, 193, 194, 196, 196, 197, 187, 159, 58, 48, 46, 47, 54, 134, 143, 147, 147, 147, 143, 145, 148, 148, 149, 146, 148, 157, 159, 159, 159, 161, 162, 165, 166, 167, 176, 177, 176, 172, 157, 171, 176, 176, 56, 31, 31, 32, 33, 36, 37, 39, 40, 40, 40, 39, 39, 40, 40, 40, 40, 39, 40, 40, 39, 38, 37, 36, 35, 35, 35, 34, 33, 33, 32, 31, 189, 191, 190, 190, 191, 192, 193, 194, 197, 200, 200, 201, 201, 200, 199, 196, 192, 188, 185, 184, 184, 180, 175, 170, 163, 148, 134, 130, 139, 138, 114, 82, 56, 44, 47, 54, 68, 96, 135, 165, 175, 186, 193, 195, 192, 189, 188, 189, 190, 189, 192, 200, 199, 197, 197, 197, 197, 197, 197, 197, 195, 194, 195, 195, 195, 194, 194, 190, 187, 184, 181, 181, 180, 178, 179, 178, 177, 178, 178, 173, 125, 80, 111, 173, 179, 179, 180, 180, 188, 189, 188, 190, 184, 181, 184, 179, 178, 176, 173, 171, 169, 162, 156, 156, 156, 156, 156, 156, 122, 36, 35, 34, 34, 34, 95, 155, 154, 152, 152, 149, 106, 92, 106, 143, 141, 151, 147, 61, 47, 60, 62, 63, 63, 63, 62, 61, 60, 56, 52, 49, 44, 37, 134, 153, 157, 134, 41, 40, 43, 46, 57, 60, 59, 43, 36, 37, 45, 48, 55, 54, 51, 51, 50, 50, 48, 47, 47, 46, 47, 47, 47, 48, 49, 46, 44, 47, 67, 222, 246, 213, 175, 173, 172, 173, 183, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 188, 189, 190, 191, 192, 192, 193, 194, 195, 196, 190, 168, 164, 132, 47, 47, 47, 47, 100, 141, 143, 147, 147, 147, 142, 148, 149, 149, 149, 149, 149, 160, 162, 162, 163, 164, 166, 167, 165, 165, 170, 176, 171, 162, 151, 158, 166, 168, 37, 31, 32, 32, 34, 35, 37, 38, 40, 40, 40, 40, 39, 39, 39, 39, 39, 39, 40, 40, 39, 38, 36, 36, 35, 35, 34, 33, 33, 32, 32, 30, 191, 192, 191, 191, 192, 193, 194, 195, 197, 199, 200, 200, 200, 199, 199, 195, 191, 185, 181, 180, 178, 174, 168, 165, 158, 142, 132, 131, 142, 138, 116, 85, 57, 46, 56, 71, 80, 97, 125, 163, 177, 187, 195, 198, 196, 193, 192, 192, 191, 190, 195, 202, 201, 199, 201, 201, 201, 198, 198, 198, 195, 193, 195, 197, 198, 200, 201, 198, 193, 191, 183, 179, 179, 179, 179, 178, 177, 178, 162, 101, 79, 122, 176, 179, 180, 180, 183, 185, 188, 189, 192, 192, 186, 184, 190, 183, 179, 177, 174, 172, 171, 162, 156, 156, 156, 155, 155, 119, 33, 35, 34, 34, 34, 60, 149, 156, 155, 153, 152, 150, 118, 94, 108, 153, 134, 142, 151, 134, 46, 54, 62, 63, 63, 63, 63, 63, 63, 63, 62, 54, 41, 37, 143, 160, 159, 153, 57, 40, 43, 44, 48, 60, 60, 48, 36, 36, 45, 46, 52, 53, 50, 50, 50, 49, 47, 46, 46, 46, 46, 46, 46, 48, 49, 49, 45, 49, 110, 242, 241, 162, 145, 167, 172, 172, 175, 186, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 190, 190, 191, 192, 192, 193, 194, 195, 186, 168, 160, 168, 168, 73, 46, 47, 49, 52, 129, 147, 145, 147, 148, 146, 147, 151, 150, 150, 151, 150, 150, 155, 164, 165, 167, 168, 170, 168, 165, 165, 166, 169, 162, 154, 150, 158, 164, 156, 28, 31, 32, 32, 33, 35, 37, 38, 38, 40, 40, 40, 40, 39, 39, 39, 39, 40, 40, 40, 38, 37, 36, 36, 35, 34, 33, 34, 33, 32, 31, 65, 194, 195, 193, 194, 195, 195, 196, 196, 198, 199, 199, 199, 199, 199, 197, 195, 191, 185, 180, 176, 173, 170, 166, 162, 155, 140, 132, 133, 144, 139, 118, 88, 60, 48, 65, 91, 98, 101, 120, 159, 177, 185, 192, 196, 197, 195, 193, 192, 192, 191, 195, 201, 202, 201, 201, 202, 201, 198, 198, 199, 195, 191, 190, 193, 195, 199, 201, 199, 194, 190, 184, 180, 180, 180, 178, 178, 175, 148, 90, 81, 129, 177, 179, 180, 183, 187, 189, 190, 190, 188, 192, 190, 182, 186, 191, 185, 178, 177, 175, 173, 172, 162, 155, 156, 155, 154, 109, 36, 31, 35, 34, 34, 41, 138, 156, 156, 156, 155, 153, 155, 123, 99, 109, 154, 152, 135, 134, 151, 132, 54, 51, 60, 62, 63, 63, 61, 56, 49, 36, 32, 35, 33, 96, 154, 154, 153, 109, 41, 42, 44, 44, 54, 60, 53, 40, 34, 41, 45, 48, 52, 50, 49, 49, 49, 47, 46, 46, 46, 46, 46, 46, 47, 48, 49, 52, 60, 157, 238, 167, 147, 144, 133, 144, 169, 173, 180, 188, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 190, 190, 190, 191, 191, 192, 192, 192, 175, 160, 159, 167, 167, 167, 152, 46, 45, 46, 69, 126, 147, 146, 148, 148, 152, 152, 154, 155, 154, 153, 153, 150, 150, 152, 164, 165, 170, 171, 166, 163, 161, 165, 164, 164, 162, 159, 151, 161, 170, 152, 30, 31, 32, 33, 33, 35, 37, 38, 38, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 38, 37, 36, 35, 35, 34, 33, 34, 33, 32, 32, 96, 198, 198, 197, 198, 199, 200, 200, 199, 199, 199, 198, 198, 199, 198, 196, 194, 192, 188, 182, 177, 172, 170, 166, 164, 155, 140, 133, 135, 145, 141, 122, 92, 65, 49, 68, 99, 110, 107, 114, 150, 176, 181, 188, 191, 194, 194, 193, 193, 192, 192, 196, 201, 203, 202, 200, 200, 199, 198, 198, 197, 195, 191, 188, 187, 187, 190, 196, 194, 187, 184, 183, 181, 180, 179, 178, 173, 133, 84, 82, 134, 178, 179, 180, 182, 189, 191, 191, 190, 191, 191, 192, 190, 185, 189, 191, 184, 178, 177, 175, 173, 172, 158, 154, 153, 149, 93, 36, 30, 35, 34, 34, 34, 120, 156, 156, 157, 159, 160, 158, 153, 134, 104, 109, 155, 152, 152, 147, 130, 130, 130, 92, 48, 40, 43, 42, 41, 38, 30, 36, 33, 33, 33, 34, 105, 151, 151, 145, 54, 42, 43, 44, 46, 58, 57, 42, 37, 38, 45, 46, 50, 49, 49, 49, 48, 46, 46, 46, 46, 46, 46, 46, 46, 48, 49, 67, 112, 218, 236, 140, 146, 143, 143, 142, 133, 146, 166, 186, 187, 188, 188, 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 190, 190, 191, 191, 191, 191, 180, 166, 156, 164, 167, 167, 167, 167, 167, 107, 46, 45, 45, 79, 137, 150, 153, 153, 155, 159, 154, 154, 152, 150, 150, 154, 150, 150, 153, 158, 157, 165, 169, 163, 163, 159, 165, 161, 162, 162, 161, 153, 157, 171, 144, 31, 31, 32, 33, 33, 35, 37, 38, 38, 39, 40, 40, 40, 40, 40, 40, 40, 40, 39, 38, 38, 36, 36, 35, 35, 34, 33, 33, 33, 32, 31, 116, 199, 201, 200, 201, 202, 202, 202, 201, 200, 200, 200, 199, 198, 197, 195, 193, 193, 189, 185, 180, 175, 172, 170, 168, 160, 144, 136, 137, 146, 142, 127, 99, 70, 52, 68, 103, 118, 112, 113, 139, 171, 179, 183, 187, 190, 193, 193, 193, 193, 195, 198, 202, 203, 201, 197, 197, 198, 199, 199, 197, 195, 193, 190, 185, 180, 181, 186, 186, 181, 179, 180, 179, 179, 178, 169, 124, 86, 91, 133, 177, 179, 180, 180, 180, 187, 191, 189, 188, 191, 191, 191, 188, 188, 189, 188, 180, 178, 177, 175, 174, 168, 152, 151, 141, 73, 35, 35, 29, 35, 34, 45, 103, 153, 154, 160, 166, 167, 163, 160, 159, 140, 103, 110, 155, 154, 152, 152, 151, 152, 146, 137, 133, 124, 54, 59, 61, 61, 56, 42, 35, 33, 32, 33, 35, 107, 150, 150, 118, 42, 43, 43, 44, 49, 59, 45, 40, 36, 44, 44, 48, 49, 49, 48, 48, 46, 46, 45, 45, 45, 45, 46, 46, 48, 65, 102, 212, 247, 230, 142, 144, 143, 143, 143, 143, 142, 138, 146, 161, 178, 187, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 189, 189, 189, 189, 190, 190, 190, 186, 176, 168, 162, 158, 166, 169, 168, 168, 167, 167, 167, 167, 140, 46, 45, 45, 45, 96, 148, 155, 155, 155, 159, 161, 152, 152, 149, 149, 149, 152, 149, 152, 160, 162, 162, 163, 165, 164, 162, 163, 165, 157, 159, 161, 160, 154, 153, 163, 131, 31, 31, 32, 33, 34, 35, 37, 38, 38, 38, 39, 40, 40, 40, 40, 40, 40, 39, 38, 38, 37, 36, 36, 35, 34, 33, 33, 33, 33, 32, 30, 133, 200, 201, 202, 202, 202, 202, 202, 202, 202, 201, 200, 200, 199, 196, 194, 193, 193, 191, 187, 182, 178, 175, 174, 172, 165, 150, 141, 139, 146, 143, 132, 106, 77, 56, 68, 105, 131, 123, 116, 128, 162, 178, 180, 184, 188, 191, 192, 192, 194, 198, 202, 203, 202, 200, 197, 196, 198, 201, 202, 199, 194, 191, 189, 184, 179, 179, 179, 180, 179, 179, 179, 178, 177, 164, 119, 88, 117, 154, 177, 182, 182, 186, 181, 180, 179, 184, 183, 184, 191, 191, 189, 183, 189, 190, 183, 179, 178, 177, 175, 173, 158, 151, 126, 52, 35, 35, 31, 34, 35, 59, 108, 152, 153, 159, 168, 168, 166, 164, 168, 163, 135, 102, 123, 156, 155, 152, 152, 152, 151, 151, 151, 151, 151, 139, 74, 87, 65, 62, 61, 54, 39, 33, 32, 32, 34, 101, 148, 147, 109, 43, 43, 43, 44, 55, 50, 41, 36, 44, 44, 46, 49, 48, 48, 47, 46, 45, 45, 45, 45, 45, 46, 46, 60, 102, 179, 244, 247, 196, 147, 144, 143, 143, 143, 143, 143, 143, 143, 144, 140, 141, 151, 160, 167, 176, 182, 185, 187, 188, 188, 188, 187, 184, 176, 170, 159, 155, 155, 163, 175, 189, 197, 197, 189, 175, 169, 169, 169, 167, 167, 167, 167, 93, 43, 43, 44, 50, 114, 154, 158, 156, 155, 160, 163, 152, 151, 149, 149, 149, 151, 150, 152, 163, 164, 164, 164, 164, 165, 165, 165, 163, 157, 154, 157, 156, 151, 150, 152, 111, 31, 32, 32, 32, 33, 35, 37, 37, 38, 38, 38, 39, 39, 40, 40, 39, 39, 38, 38, 38, 37, 36, 35, 35, 34, 33, 33, 33, 32, 32, 54, 145, 200, 202, 202, 203, 202, 202, 202, 202, 202, 202, 201, 201, 199, 196, 194, 193, 193, 192, 188, 183, 180, 179, 178, 177, 171, 155, 146, 140, 146, 145, 136, 114, 85, 63, 69, 109, 147, 144, 127, 124, 148, 175, 180, 184, 188, 190, 189, 190, 194, 199, 203, 204, 203, 202, 200, 199, 201, 202, 203, 201, 194, 190, 187, 182, 179, 179, 179, 179, 180, 179, 179, 178, 162, 116, 98, 131, 163, 179, 187, 191, 189, 190, 187, 180, 179, 183, 184, 186, 191, 191, 189, 187, 190, 189, 180, 178, 177, 176, 174, 166, 147, 100, 37, 35, 34, 35, 30, 39, 60, 113, 150, 151, 158, 167, 167, 167, 167, 168, 169, 162, 141, 107, 129, 154, 157, 155, 152, 152, 152, 151, 151, 151, 151, 154, 149, 129, 63, 75, 69, 63, 60, 47, 34, 31, 31, 31, 82, 140, 142, 77, 43, 43, 43, 46, 52, 42, 39, 40, 44, 45, 48, 48, 48, 47, 46, 45, 45, 45, 45, 45, 45, 55, 107, 175, 212, 247, 229, 146, 145, 143, 143, 143, 143, 143, 143, 143, 143, 144, 145, 146, 146, 147, 146, 145, 144, 145, 151, 163, 169, 170, 174, 176, 183, 188, 181, 172, 175, 187, 196, 198, 201, 204, 207, 210, 200, 180, 169, 168, 168, 168, 150, 45, 40, 40, 42, 105, 147, 162, 159, 156, 153, 154, 161, 155, 151, 149, 149, 150, 155, 157, 158, 162, 164, 163, 162, 163, 165, 165, 165, 164, 159, 151, 157, 159, 150, 149, 152, 97, 30, 32, 31, 32, 33, 35, 37, 37, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 37, 36, 35, 35, 34, 33, 34, 33, 33, 32, 32, 85, 148, 201, 201, 201, 202, 202, 202, 202, 202, 202, 201, 201, 201, 200, 197, 194, 193, 193, 191, 188, 185, 182, 182, 181, 180, 176, 162, 150, 143, 146, 146, 140, 122, 94, 69, 70, 107, 153, 166, 143, 130, 137, 166, 184, 189, 191, 192, 191, 190, 195, 201, 203, 204, 203, 203, 203, 203, 203, 204, 204, 202, 198, 193, 188, 183, 183, 185, 185, 184, 185, 184, 181, 160, 116, 91, 133, 170, 179, 186, 191, 193, 192, 192, 192, 189, 183, 189, 193, 192, 189, 190, 190, 190, 188, 183, 177, 176, 175, 173, 167, 135, 67, 35, 34, 34, 35, 60, 35, 60, 117, 147, 152, 157, 166, 167, 167, 167, 167, 168, 169, 164, 154, 137, 117, 142, 157, 158, 154, 153, 153, 151, 151, 151, 153, 157, 153, 155, 141, 146, 106, 74, 63, 62, 56, 44, 34, 33, 32, 52, 114, 109, 55, 42, 43, 44, 47, 43, 41, 38, 45, 45, 46, 48, 47, 47, 45, 45, 45, 45, 45, 45, 52, 106, 175, 183, 235, 229, 152, 146, 144, 143, 143, 143, 143, 143, 143, 143, 143, 145, 147, 147, 148, 148, 148, 150, 155, 165, 173, 176, 179, 182, 185, 187, 190, 192, 192, 191, 188, 193, 196, 199, 202, 205, 209, 212, 217, 220, 176, 147, 173, 162, 68, 37, 38, 39, 96, 144, 150, 167, 161, 156, 151, 151, 155, 157, 152, 149, 149, 152, 159, 162, 163, 163, 164, 161, 162, 159, 165, 166, 165, 165, 162, 156, 162, 164, 155, 150, 162, 81, 30, 32, 31, 32, 34, 35, 36, 36, 37, 37, 38, 38, 38, 38, 38, 38, 38, 38, 37, 37, 36, 35, 35, 34, 33, 33, 33, 33, 32, 32, 105, 144, 201, 201, 201, 202, 202, 203, 202, 202, 201, 201, 201, 201, 200, 198, 196, 193, 192, 190, 188, 187, 186, 186, 185, 183, 180, 167, 154, 146, 144, 146, 142, 130, 105, 78, 69, 100, 148, 180, 162, 141, 136, 153, 183, 193, 197, 197, 195, 195, 198, 202, 203, 204, 204, 204, 204, 204, 204, 204, 204, 203, 201, 197, 191, 186, 186, 189, 190, 188, 188, 186, 165, 121, 86, 107, 158, 176, 180, 190, 192, 193, 192, 191, 194, 193, 190, 192, 193, 190, 183, 183, 186, 185, 185, 180, 174, 174, 171, 158, 105, 41, 35, 34, 34, 36, 100, 81, 36, 73, 148, 154, 155, 163, 166, 167, 167, 167, 167, 168, 169, 169, 160, 151, 134, 145, 157, 162, 160, 155, 154, 152, 152, 151, 156, 163, 152, 156, 156, 159, 155, 140, 102, 84, 107, 71, 56, 47, 38, 33, 32, 42, 40, 41, 42, 43, 45, 44, 41, 37, 44, 45, 46, 48, 47, 47, 45, 45, 45, 45, 45, 54, 107, 175, 180, 192, 208, 148, 146, 144, 143, 143, 143, 143, 143, 143, 143, 143, 144, 146, 151, 157, 159, 160, 163, 169, 172, 175, 178, 179, 181, 184, 186, 188, 191, 192, 192, 194, 194, 196, 197, 200, 203, 177, 181, 198, 192, 143, 107, 142, 146, 63, 35, 35, 37, 50, 137, 147, 152, 170, 164, 157, 151, 150, 151, 159, 153, 149, 149, 150, 161, 163, 164, 164, 163, 163, 164, 158, 163, 162, 166, 165, 161, 158, 163, 165, 159, 163, 170, 55, 31, 32, 31, 32, 34, 34, 36, 36, 36, 37, 37, 38, 37, 37, 38, 38, 38, 38, 37, 36, 35, 34, 34, 33, 34, 33, 33, 32, 32, 31, 121, 142, 202, 201, 201, 201, 201, 202, 202, 202, 202, 201, 201, 201, 201, 199, 197, 194, 192, 188, 188, 188, 188, 188, 188, 187, 183, 173, 159, 150, 143, 146, 144, 136, 116, 89, 71, 89, 133, 176, 182, 155, 143, 145, 168, 192, 199, 200, 198, 196, 197, 199, 201, 203, 204, 204, 204, 204, 204, 204, 204, 204, 202, 198, 192, 186, 186, 190, 189, 186, 184, 166, 126, 89, 87, 129, 172, 181, 185, 191, 193, 193, 192, 193, 192, 191, 191, 189, 189, 186, 180, 177, 179, 178, 179, 174, 164, 160, 131, 69, 36, 35, 58, 53, 82, 110, 128, 40, 36, 108, 154, 154, 158, 164, 167, 167, 167, 167, 167, 169, 170, 171, 167, 155, 137, 123, 134, 159, 163, 161, 156, 154, 152, 151, 163, 165, 151, 155, 154, 153, 157, 159, 157, 147, 149, 107, 66, 80, 56, 51, 43, 37, 31, 40, 42, 43, 44, 43, 41, 37, 44, 45, 46, 46, 47, 47, 45, 45, 45, 45, 52, 105, 175, 179, 180, 131, 145, 146, 144, 143, 143, 143, 143, 143, 143, 143, 143, 145, 148, 157, 166, 169, 170, 172, 175, 178, 179, 179, 179, 179, 181, 184, 187, 189, 191, 192, 193, 194, 160, 165, 174, 161, 115, 50, 53, 56, 60, 62, 60, 38, 33, 35, 35, 34, 59, 128, 147, 148, 150, 171, 168, 159, 154, 150, 150, 156, 155, 150, 149, 150, 158, 163, 162, 163, 162, 164, 164, 162, 163, 162, 161, 164, 162, 153, 157, 160, 166, 174, 172, 31, 31, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 37, 37, 37, 37, 37, 37, 37, 36, 36, 35, 34, 34, 34, 33, 33, 33, 31, 32, 29, 134, 142, 204, 201, 200, 200, 201, 201, 201, 201, 201, 201, 201, 200, 201, 200, 199, 196, 193, 190, 188, 188, 189, 190, 190, 188, 185, 179, 165, 155, 146, 143, 145, 140, 126, 102, 78, 79, 116, 162, 192, 175, 153, 146, 153, 179, 195, 196, 195, 193, 192, 193, 197, 202, 203, 204, 204, 204, 204, 204, 204, 204, 201, 199, 194, 189, 188, 191, 188, 182, 164, 129, 92, 81, 104, 148, 179, 190, 192, 193, 190, 188, 185, 188, 185, 180, 181, 180, 184, 186, 183, 180, 178, 176, 173, 161, 139, 95, 49, 35, 39, 80, 116, 138, 150, 151, 73, 41, 88, 153, 154, 155, 160, 165, 169, 170, 170, 171, 172, 173, 173, 172, 171, 159, 152, 126, 107, 150, 160, 166, 163, 156, 153, 152, 165, 157, 151, 151, 152, 151, 153, 155, 158, 158, 160, 158, 143, 142, 108, 62, 49, 42, 35, 34, 40, 42, 43, 43, 41, 40, 41, 44, 46, 46, 47, 47, 45, 45, 45, 45, 71, 167, 179, 179, 167, 137, 144, 144, 144, 143, 143, 143, 143, 143, 143, 144, 149, 158, 163, 167, 171, 174, 176, 178, 179, 179, 179, 179, 179, 179, 180, 167, 185, 190, 192, 193, 183, 126, 37, 37, 38, 43, 51, 54, 56, 56, 57, 58, 59, 53, 31, 34, 35, 54, 139, 147, 147, 148, 148, 168, 171, 163, 161, 154, 150, 153, 170, 162, 151, 150, 158, 164, 159, 155, 158, 164, 164, 163, 163, 163, 162, 162, 161, 154, 151, 154, 167, 175, 161, 29, 31, 32, 32, 33, 33, 34, 35, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 35, 34, 34, 34, 33, 33, 33, 33, 31, 31, 40, 141, 142, 204, 201, 199, 200, 200, 200, 200, 200, 199, 199, 200, 201, 200, 200, 199, 198, 194, 192, 189, 189, 189, 190, 190, 189, 186, 181, 171, 160, 151, 144, 142, 143, 135, 115, 90, 78, 106, 150, 190, 194, 168, 150, 147, 157, 181, 192, 189, 187, 185, 187, 191, 197, 201, 203, 203, 203, 204, 204, 204, 203, 202, 200, 197, 193, 190, 192, 188, 168, 133, 98, 81, 98, 129, 164, 183, 193, 193, 192, 182, 180, 179, 180, 182, 179, 175, 175, 180, 181, 185, 179, 173, 164, 146, 107, 65, 47, 35, 35, 43, 116, 140, 155, 154, 119, 49, 77, 150, 155, 154, 155, 160, 165, 168, 169, 172, 174, 174, 175, 175, 174, 175, 171, 161, 151, 116, 109, 148, 164, 168, 161, 154, 155, 163, 153, 151, 151, 151, 151, 151, 151, 152, 153, 157, 159, 156, 155, 158, 157, 151, 145, 139, 121, 57, 40, 42, 43, 41, 41, 39, 44, 46, 46, 46, 47, 45, 45, 45, 50, 133, 179, 179, 176, 136, 145, 144, 144, 144, 143, 143, 143, 143, 143, 145, 148, 159, 164, 167, 171, 175, 177, 178, 179, 179, 179, 179, 179, 179, 179, 148, 36, 47, 71, 86, 81, 44, 37, 39, 40, 43, 45, 48, 53, 55, 55, 56, 57, 58, 60, 42, 34, 70, 138, 147, 148, 148, 148, 148, 162, 170, 167, 165, 160, 153, 155, 170, 168, 158, 152, 158, 164, 160, 155, 158, 163, 164, 160, 161, 161, 162, 160, 154, 150, 151, 153, 163, 175, 146, 31, 31, 32, 32, 33, 33, 34, 35, 35, 35, 35, 36, 36, 36, 36, 36, 36, 36, 36, 35, 35, 33, 34, 33, 33, 33, 33, 33, 31, 31, 62, 142, 140, 204, 200, 200, 200, 200, 200, 199, 197, 196, 196, 197, 199, 200, 200, 199, 199, 196, 193, 191, 190, 190, 190, 190, 189, 186, 182, 178, 168, 159, 150, 143, 141, 139, 127, 105, 86, 102, 138, 180, 201, 188, 162, 150, 148, 158, 178, 184, 182, 180, 181, 185, 190, 195, 199, 201, 203, 203, 203, 203, 203, 201, 200, 199, 194, 190, 189, 176, 142, 105, 82, 95, 125, 158, 177, 189, 194, 194, 190, 179, 176, 182, 181, 180, 180, 175, 173, 176, 168, 169, 162, 147, 113, 73, 57, 46, 35, 35, 51, 73, 130, 153, 154, 145, 64, 71, 143, 155, 156, 156, 156, 160, 164, 168, 171, 174, 175, 175, 175, 175, 176, 177, 177, 168, 160, 174, 165, 149, 157, 173, 166, 160, 167, 162, 155, 151, 151, 151, 151, 151, 151, 151, 152, 152, 155, 152, 152, 152, 153, 156, 154, 151, 149, 106, 50, 41, 42, 42, 41, 38, 44, 45, 46, 46, 47, 45, 45, 45, 73, 174, 179, 167, 134, 146, 145, 145, 144, 144, 144, 144, 145, 146, 148, 150, 160, 165, 168, 171, 175, 177, 178, 179, 179, 179, 179, 179, 179, 180, 166, 57, 37, 37, 36, 36, 35, 37, 38, 39, 41, 43, 45, 48, 52, 54, 55, 56, 57, 58, 59, 59, 85, 145, 148, 147, 148, 148, 148, 148, 156, 166, 167, 166, 166, 159, 160, 165, 161, 159, 154, 157, 163, 162, 162, 163, 164, 164, 157, 151, 151, 157, 158, 151, 149, 151, 153, 161, 174, 128, 31, 31, 32, 31, 33, 33, 34, 34, 35, 35, 35, 36, 35, 35, 35, 35, 35, 35, 35, 34, 34, 34, 34, 33, 33, 33, 33, 32, 32, 31, 83, 147, 140, 206, 202, 202, 202, 203, 201, 199, 196, 193, 192, 193, 195, 198, 199, 199, 198, 196, 193, 191, 189, 189, 189, 188, 188, 184, 181, 179, 176, 166, 158, 151, 144, 139, 134, 119, 100, 101, 125, 159, 188, 199, 183, 161, 151, 149, 157, 171, 178, 178, 178, 180, 184, 188, 193, 197, 201, 203, 203, 203, 201, 200, 198, 197, 192, 187, 179, 151, 116, 93, 98, 120, 153, 177, 189, 193, 194, 194, 191, 181, 176, 180, 180, 178, 174, 167, 164, 165, 157, 142, 113, 78, 59, 55, 46, 35, 39, 76, 126, 140, 153, 154, 153, 94, 70, 141, 154, 156, 161, 158, 157, 160, 163, 165, 173, 174, 175, 175, 175, 175, 178, 178, 177, 177, 172, 178, 179, 181, 181, 182, 176, 175, 173, 166, 160, 157, 153, 151, 151, 151, 151, 151, 152, 153, 151, 151, 151, 151, 151, 151, 150, 151, 148, 145, 106, 40, 41, 42, 41, 38, 43, 45, 46, 46, 46, 45, 45, 47, 139, 176, 140, 136, 146, 146, 147, 146, 146, 146, 148, 151, 159, 168, 173, 171, 171, 171, 173, 176, 178, 178, 179, 179, 179, 179, 179, 176, 171, 160, 72, 36, 36, 37, 38, 37, 35, 36, 37, 39, 41, 44, 45, 48, 52, 54, 55, 56, 57, 59, 60, 68, 90, 148, 148, 148, 148, 148, 150, 149, 151, 161, 176, 172, 172, 172, 167, 169, 160, 156, 156, 158, 163, 163, 169, 167, 164, 164, 160, 150, 149, 150, 153, 152, 150, 153, 154, 156, 166, 106, 31, 31, 32, 31, 32, 33, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, 35, 35, 35, 34, 33, 33, 33, 33, 33, 33, 33, 31, 32, 31, 99, 149, 146, 212, 208, 209, 208, 206, 201, 201, 201, 198, 195, 196, 199, 202, 204, 204, 203, 201, 199, 196, 193, 193, 193, 193, 192, 189, 187, 185, 185, 183, 175, 168, 161, 154, 148, 139, 125, 115, 126, 150, 177, 198, 204, 186, 166, 158, 159, 168, 179, 184, 184, 185, 186, 189, 192, 195, 199, 204, 206, 206, 204, 201, 198, 195, 191, 184, 163, 133, 111, 114, 130, 148, 172, 185, 193, 194, 192, 189, 185, 178, 171, 171, 174, 174, 167, 160, 152, 137, 110, 80, 60, 56, 55, 48, 41, 45, 82, 133, 153, 155, 155, 155, 126, 69, 141, 158, 158, 161, 168, 164, 161, 161, 162, 165, 173, 174, 174, 175, 177, 177, 178, 178, 178, 179, 179, 180, 182, 186, 190, 187, 180, 178, 173, 169, 164, 161, 157, 153, 152, 152, 152, 152, 156, 159, 153, 151, 151, 151, 151, 151, 152, 153, 149, 148, 140, 78, 44, 41, 41, 41, 40, 45, 46, 46, 46, 45, 45, 68, 174, 156, 143, 145, 145, 146, 147, 150, 151, 154, 170, 199, 205, 209, 216, 202, 180, 177, 177, 178, 179, 179, 179, 179, 179, 179, 179, 141, 45, 39, 37, 36, 36, 38, 39, 38, 37, 36, 38, 39, 42, 44, 47, 49, 53, 54, 55, 56, 57, 59, 72, 124, 142, 147, 147, 148, 148, 151, 159, 160, 157, 164, 174, 176, 185, 180, 171, 169, 163, 156, 155, 161, 164, 168, 177, 166, 164, 164, 160, 153, 149, 150, 153, 155, 157, 154, 154, 160, 170, 74, 31, 31, 32, 32, 31, 33, 33, 34, 34, 33, 34, 34, 35, 34, 35, 35, 34, 34, 34, 33, 33, 33, 33, 33, 33, 33, 33, 31, 32, 31, 108, 149, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
diff --git a/ableos/assets/kernel.toml b/ableos/assets/kernel.toml
deleted file mode 100644
index 81331d0..0000000
--- a/ableos/assets/kernel.toml
+++ /dev/null
@@ -1,6 +0,0 @@
-[logging]
-enabled = true
-level = "Trace"
-log_to_serial = true
-log_to_vterm = false
-filter = ["ableos::ps2_mouse", "ableos::vterm", "ableos::devices::pci"]
diff --git a/ableos/assets/key_event.txt b/ableos/assets/key_event.txt
deleted file mode 100644
index 0617522..0000000
--- a/ableos/assets/key_event.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-pub struct KeyEvent{
-    lctrl 1
-    rctrl 2
-    lalt 3
-    ralt 4
-    lsup 5
-    rsup 6
-    lshift 7
-    rshift 8
-    caps 9
-
-    down 10
-    # Keycodes
-    key 11-32
-}
-
-
diff --git a/ableos/json_targets/.rustc_info.json b/ableos/json_targets/.rustc_info.json
deleted file mode 100644
index 29caa8f..0000000
--- a/ableos/json_targets/.rustc_info.json
+++ /dev/null
@@ -1 +0,0 @@
-{"rustc_fingerprint":3542195962280373086,"outputs":{"17598535894874457435":{"success":true,"status":"","code":0,"stdout":"rustc 1.58.0-nightly (efd048394 2021-10-20)\nbinary: rustc\ncommit-hash: efd0483949496b067cd5f7569d1b28cd3d5d3c72\ncommit-date: 2021-10-20\nhost: x86_64-unknown-linux-gnu\nrelease: 1.58.0-nightly\nLLVM version: 13.0.0\n","stderr":""},"2797684049618456168":{"success":false,"status":"exit status: 1","code":1,"stdout":"","stderr":"error: `-Csplit-debuginfo` is unstable on this platform\n\n"},"15537503139010883884":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n","stderr":""},"931469667778813386":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/elfein/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_equal_alignment=\"16\"\ntarget_has_atomic_equal_alignment=\"32\"\ntarget_has_atomic_equal_alignment=\"64\"\ntarget_has_atomic_equal_alignment=\"8\"\ntarget_has_atomic_equal_alignment=\"ptr\"\ntarget_has_atomic_load_store=\"16\"\ntarget_has_atomic_load_store=\"32\"\ntarget_has_atomic_load_store=\"64\"\ntarget_has_atomic_load_store=\"8\"\ntarget_has_atomic_load_store=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_thread_local\ntarget_vendor=\"unknown\"\nunix\n","stderr":""}},"successes":{}}
\ No newline at end of file
diff --git a/ableos/json_targets/aarch32-ableos.json b/ableos/json_targets/aarch32-ableos.json
deleted file mode 100644
index 0fe31e6..0000000
--- a/ableos/json_targets/aarch32-ableos.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-    "llvm-target": "arm-none-eabihf",
-    "target-endian": "little",
-    "target-pointer-width": "32",
-    "target-c-int-width": "32",
-    "os": "ableos",
-    "env": "eabi",
-    "vendor": "unknown",
-    "arch": "arm",
-    "linker-flavor": "gcc",
-    "linker": "arm-none-eabi-gcc",
-    "data-layout": "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64",
-    "executables": true,
-    "relocation-model": "static"
-}
diff --git a/ableos/json_targets/aarch64-ableos.json b/ableos/json_targets/aarch64-ableos.json
deleted file mode 100644
index 77631b3..0000000
--- a/ableos/json_targets/aarch64-ableos.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-  "arch": "aarch64",
-  "data-layout": "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128",
-  "disable-redzone": true,
-  "env": "",
-  "executables": true,
-  "features": "+strict-align,+neon,+fp-armv8",
-  "is-builtin": false,
-  "linker": "rust-lld",
-  "linker-flavor": "ld.lld",
-  "linker-is-gnu": true,
-  "pre-link-args": {
-    "ld.lld": ["-Tsrc/arch/aarch64/aarch64-qemu.ld"]
-  },
-  "llvm-target": "aarch64-unknown-none",
-  "max-atomic-width": 128,
-  "os": "none",
-  "panic-strategy": "abort",
-  "relocation-model": "static",
-  "target-c-int-width": "32",
-  "target-endian": "little",
-  "target-pointer-width": "64",
-  "vendor": ""
-}
diff --git a/ableos/json_targets/arm-ableos.json b/ableos/json_targets/arm-ableos.json
deleted file mode 100644
index 0fe31e6..0000000
--- a/ableos/json_targets/arm-ableos.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-    "llvm-target": "arm-none-eabihf",
-    "target-endian": "little",
-    "target-pointer-width": "32",
-    "target-c-int-width": "32",
-    "os": "ableos",
-    "env": "eabi",
-    "vendor": "unknown",
-    "arch": "arm",
-    "linker-flavor": "gcc",
-    "linker": "arm-none-eabi-gcc",
-    "data-layout": "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64",
-    "executables": true,
-    "relocation-model": "static"
-}
diff --git a/ableos/json_targets/x86_64-ableos.json b/ableos/json_targets/x86_64-ableos.json
deleted file mode 100644
index cd32752..0000000
--- a/ableos/json_targets/x86_64-ableos.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-    "llvm-target": "x86_64-unknown-none",
-    "data-layout": "e-m:e-i64:64-f80:128-n8:16:32:64-S128",
-    "arch": "x86_64",
-    "target-endian": "little",
-    "target-pointer-width": "64",
-    "target-c-int-width": "32",
-    "os": "none",
-    "executables": true,
-    "linker-flavor": "ld.lld",
-    "linker": "rust-lld",
-    "panic-strategy": "abort",
-    "disable-redzone": true,
-    "features": "-mmx,-sse,+soft-float",
-    "code-model": "kernel",
-    "pre-link-args": {
-        "ld.lld": [
-            "--gc-sections",
-            "--script=kernel/lds/x86_64.ld"
-        ]
-    }
-}
\ No newline at end of file
diff --git a/ableos/keymaps/empty.keymap b/ableos/keymaps/empty.keymap
deleted file mode 100644
index 996078b..0000000
--- a/ableos/keymaps/empty.keymap
+++ /dev/null
@@ -1,256 +0,0 @@
-0-
-1-
-2-
-3-
-4-
-5-
-6-
-7-
-8-
-9-
-10-
-11-
-12-
-13-
-14-
-15-
-16-
-17-
-18-
-19-
-20-
-21-
-22-
-23-
-24-
-25-
-26-
-27-
-28-
-29-
-30-
-31-
-32-
-33-
-34-
-35-
-36-
-37-
-38-
-39-
-40-
-41-
-42-
-43-
-44-
-45-
-46-
-47-
-48-
-49-
-50-
-51-
-52-
-53-
-54-
-55-
-56-
-57-
-58-
-59-
-60-
-61-
-62-
-63-
-64-
-65-
-66-
-67-
-68-
-69-
-70-
-71-
-72-
-73-
-74-
-75-
-76-
-77-
-78-
-79-
-80-
-81-
-82-
-83-
-84-
-85-
-86-
-87-
-88-
-89-
-90-
-91-
-92-
-93-
-94-
-95-
-96-
-97-
-98-
-99-
-100-
-101-
-102-
-103-
-104-
-105-
-106-
-107-
-108-
-109-
-110-
-111-
-112-
-113-
-114-
-115-
-116-
-117-
-118-
-119-
-120-
-121-
-122-
-123-
-124-
-125-
-126-
-127-
-128-
-129-
-130-
-131-
-132-
-133-
-134-
-135-
-136-
-137-
-138-
-139-
-140-
-141-
-142-
-143-
-144-
-145-
-146-
-147-
-148-
-149-
-150-
-151-
-152-
-153-
-154-
-155-
-156-
-157-
-158-
-159-
-160-
-161-
-162-
-163-
-164-
-165-
-166-
-167-
-168-
-169-
-170-
-171-
-172-
-173-
-174-
-175-
-176-
-177-
-178-
-179-
-180-
-181-
-182-
-183-
-184-
-185-
-186-
-187-
-188-
-189-
-190-
-191-
-192-
-193-
-194-
-195-
-196-
-197-
-198-
-199-
-200-
-201-
-202-
-203-
-204-
-205-
-206-
-207-
-208-
-209-
-210-
-211-
-212-
-213-
-214-
-215-
-216-
-217-
-218-
-219-
-220-
-221-
-222-
-223-
-224-
-225-
-226-
-227-
-228-
-229-
-230-
-231-
-232-
-233-
-234-
-235-
-236-
-237-
-238-
-239-
-240-
-241-
-242-
-243-
-244-
-245-
-246-
-247-
-248-
-249-
-250-
-251-
-252-
-253-
-254-
-255-
diff --git a/ableos/keymaps/qwerty.keymap b/ableos/keymaps/qwerty.keymap
deleted file mode 100644
index 95db614..0000000
--- a/ableos/keymaps/qwerty.keymap
+++ /dev/null
@@ -1,252 +0,0 @@
-# Able doesn't have a full keyboard
-0-NONE
-1-
-2-
-3-BACKSPACE
-4-
-5-
-6-
-7-
-8-
-9-TAB
-10-
-11-
-12-
-13-ENTER
-14-
-15-
-16-SHIFT
-17-CONTROL
-18-ALT
-19-PAUSE
-20-CAPS_LOCK
-21-
-22-
-23-
-24-
-25-
-26-
-27-
-28-
-29-
-30-
-31-
-32-SPACE
-33-PAGE_UP
-34-PAGE_DOWN
-35-END
-36-HOME
-37-ARROW_LEFT
-38-ARROW_UP
-39-ARROW_RIGHT
-40-ARROW_DOWN
-41-
-42-
-43-
-44-
-45-INSERT
-46-DELETE
-47-
-48-0
-49-1
-50-2
-51-3
-52-4
-53-5
-54-6
-55-7
-56-8
-57-9
-58-
-59-SEMICOLON
-60-
-61-EQUAL
-62-
-63-
-64-
-65-a
-66-b
-67-c
-68-d
-69-e
-70-f
-71-g
-72-h
-73-i
-74-j
-75-k
-76-l
-77-m
-78-n
-79-o
-80-p
-81-q
-82-r
-83-s
-84-t
-85-u
-86-v
-87-w
-88-x
-89-y
-90-z
-91-
-92-
-93-
-94-
-95-
-96-
-97-
-98-
-99-
-100-
-101-
-102-
-103-
-106-
-107-
-108-
-109-
-110-
-111-
-112-FUNCTION_1
-113-FUNCTION_2
-114-FUNCTION_3
-115-FUNCTION_4
-116-FUNCTION_5
-117-FUNCTION_6
-118-FUNCTION_7
-119-FUNCTION_8
-120-FUNCTION_9
-121-FUNCTION_10
-122-FUNCTION_11
-123-FUNCTION_12
-124-
-125-
-126-
-127-
-128-
-129-
-130-
-131-
-132-
-134-
-135-
-136-
-137-
-138-
-139-
-140-
-141-
-142-
-143-
-145-SCROLL_LOCK
-146-
-147-
-148-
-149-
-150-
-151-
-152-
-153-
-154-
-155-
-156-
-157-
-158-
-159-
-160-
-161-
-162-
-163-
-164-
-165-
-166-
-167-
-168-
-169-
-170-
-171-
-172-
-173-MINUS
-174-
-175-
-176-
-177-
-178-
-179-
-180-
-181-
-182-
-183-
-184-
-185-
-186-
-187-
-188-COMMA
-189-
-190-PERIOD
-191-FORWARD_SLASH
-192-GRAVE
-193-
-194-
-195-
-196-
-197-
-198-
-199-
-200-
-201-
-202-
-203-
-204-
-205-
-206-
-207-
-208-
-209-
-210-
-211-
-212-
-213-
-214-
-215-
-216-
-218-
-219-BRACKET_LEFT
-220-BACK_SLASH
-221-BRACKET_RIGHT
-222-QUOTE
-223-
-224-
-225-
-226-
-227-
-228-
-229-
-230-
-231-
-232-
-233-
-234-
-235-
-236-
-237-
-238-
-239-
-240-
-241-
-242-
-243-
-244-
-245-
-246-
-247-
-248-
-249-
-250-
-251-
-252-
-253-
-254-
-255-
diff --git a/ableos/src/allocator/aalloc.rs b/ableos/src/allocator/aalloc.rs
deleted file mode 100644
index fcf0f3f..0000000
--- a/ableos/src/allocator/aalloc.rs
+++ /dev/null
@@ -1,73 +0,0 @@
-//! The allocator to be implemented by ableOS
-//!
-//! NOTE: All memory regions are taken from https://wiki.osdev.org/Memory_Map_(x86)
-
-use alloc::alloc::{GlobalAlloc, Layout};
-use core::{fmt::Display, ptr::null_mut};
-
-const HEAP_START: usize = 600_000_000;
-const BLOCK_SIZE: usize = 1024;
-const BLOCK_COUNT: usize = 512;
-#[derive(Debug, Clone, Copy)]
-pub struct MemoryRegion {
-    _start: usize,
-    _end: usize,
-}
-#[derive(Debug, Clone, Copy)]
-pub struct AAlloc {
-    current_region: usize,
-    memory_regions: [Option<MemoryRegion>; 512],
-}
-
-impl AAlloc {
-    pub fn add_region(&mut self, mem: MemoryRegion) {
-        self.memory_regions[self.current_region] = Some(mem);
-        self.current_region += 1;
-    }
-
-    pub fn intialize() {
-        info!("Heap Start: {}", HEAP_START);
-        info!("Heap Size:  {}", BLOCK_SIZE * BLOCK_COUNT);
-        info!("Heap End:   {}", HEAP_START + BLOCK_SIZE * BLOCK_COUNT);
-
-        let mut aalloc = AAlloc {
-            current_region: 0,
-            memory_regions: [None; 512],
-        };
-
-        aalloc.add_region(MemoryRegion {
-            _start: 0x00100000,
-            _end: 0x00EFFFFF,
-        });
-        debug!("{}", aalloc);
-    }
-}
-
-impl Display for AAlloc {
-    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
-        write!(f, "AAlloc {{\n\tcurrent_region: {},\n", self.current_region)?;
-
-        for x in 0..self.current_region {
-            if let Some(region) = self.memory_regions[x] {
-                write!(f, "\tRegion {}: {:?}\n", x, region)?;
-            }
-        }
-        write!(f, "}}")?;
-        Ok(())
-    }
-}
-
-unsafe impl GlobalAlloc for AAlloc {
-    unsafe fn alloc(&self, _layout: Layout) -> *mut u8 {
-        println!("Allocating memory");
-
-        println!("{}", _layout.size());
-        println!("{}", _layout.align());
-
-        null_mut()
-    }
-
-    unsafe fn dealloc(&self, _ptr: *mut u8, _layout: Layout) {
-        panic!("dealloc should be never called")
-    }
-}
diff --git a/ableos/src/allocator/mod.rs b/ableos/src/allocator/mod.rs
deleted file mode 100644
index 9f809fa..0000000
--- a/ableos/src/allocator/mod.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-pub mod aalloc;
-pub use aalloc::*;
-
-pub const HEAP_START: usize = 0x_4444_4444_0000;
-pub const HEAP_MULTIPLIER: usize = 100000;
-pub const HEAP_BASE: usize = 100;
-pub const HEAP_SIZE: usize = HEAP_BASE * HEAP_MULTIPLIER;
-
-/*
-#[global_allocator]
-pub static ALLOCATOR: LockedHeap = LockedHeap::empty();
-
-#[alloc_error_handler]
-fn alloc_error_handler(layout: alloc::alloc::Layout) -> ! {
-    panic!("allocation error: {:?}", layout)
-}
-
-
-*/
diff --git a/ableos/src/arch/aarch64/aarch64-qemu.ld b/ableos/src/arch/aarch64/aarch64-qemu.ld
deleted file mode 100644
index 66ca0ce..0000000
--- a/ableos/src/arch/aarch64/aarch64-qemu.ld
+++ /dev/null
@@ -1,14 +0,0 @@
-ENTRY(_start)
-SECTIONS
-{
-    . = 0x40000000;
-    .text.boot : { *(.text.boot) }
-    .text : { *(.text) }
-    .data : { *(.data) }
-    .rodata : { *(.rodata) }
-    .bss : { *(.bss) }
-
-    . = ALIGN(8);
-    . = . + 0x4000;
-    LD_STACK_PTR = .;
-}
diff --git a/ableos/src/arch/aarch64/boot.s b/ableos/src/arch/aarch64/boot.s
deleted file mode 100644
index 40680ed..0000000
--- a/ableos/src/arch/aarch64/boot.s
+++ /dev/null
@@ -1,15 +0,0 @@
-.globl _start
-.extern LD_STACK_PTR
-
-.section ".text.boot"
-
-_start:
-    ldr     x30, =LD_STACK_PTR
-    mov     sp, x30
-    bl      not_main
-
-.equ PSCI_SYSTEM_OFF, 0x84000008
-.globl system_off
-system_off:
-    ldr     x0, =PSCI_SYSTEM_OFF
-    hvc     #0
diff --git a/ableos/src/arch/aarch64/drivers/allocator.rs b/ableos/src/arch/aarch64/drivers/allocator.rs
deleted file mode 100644
index cf68c09..0000000
--- a/ableos/src/arch/aarch64/drivers/allocator.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use alloc::alloc::{GlobalAlloc, Layout};
-use core::ptr::null_mut;
-
-pub struct Dummy;
-unsafe impl GlobalAlloc for Dummy {
-    unsafe fn alloc(&self, _layout: Layout) -> *mut u8 {
-        null_mut()
-    }
-
-    unsafe fn dealloc(&self, _ptr: *mut u8, _layout: Layout) {
-        panic!("dealloc should be never called")
-    }
-}
diff --git a/ableos/src/arch/aarch64/drivers/graphics.rs b/ableos/src/arch/aarch64/drivers/graphics.rs
deleted file mode 100644
index fddd6e2..0000000
--- a/ableos/src/arch/aarch64/drivers/graphics.rs
+++ /dev/null
@@ -1,37 +0,0 @@
-use crate::driver_traits::graphics::{Graphics, Point, Rgb};
-
-pub struct GraphicsBuffer;
-
-#[allow(unused)]
-impl Graphics for GraphicsBuffer {
-    fn put_line(coords_start: Point, coords_end: Point, thickness: u32, color: Rgb) {
-        todo!()
-    }
-
-    fn put_rect(coords_start: Point, coords_end: Point, color: Rgb) {
-        todo!()
-    }
-
-    fn put_circle(coords: Point, radius: u32) {
-        todo!()
-    }
-
-    fn put_triangle(coords_1: Point, coords_2: Point, coords_3: Point, thickness: u32, color: Rgb) {
-        todo!();
-    }
-
-    fn put_pixel(coords: Point, color: Rgb) {
-        todo!()
-    }
-
-    fn paint_cursor(coords: Point) {
-        todo!()
-    }
-
-    fn hide_cursor() {}
-    fn show_cursor() {}
-    fn draw() {}
-    fn clear() {
-        todo!()
-    }
-}
diff --git a/ableos/src/arch/aarch64/drivers/mod.rs b/ableos/src/arch/aarch64/drivers/mod.rs
deleted file mode 100644
index e2e6ab6..0000000
--- a/ableos/src/arch/aarch64/drivers/mod.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-pub mod allocator;
-pub mod graphics;
-pub mod nrf52;
-pub mod serial;
diff --git a/ableos/src/arch/aarch64/drivers/nrf52.rs b/ableos/src/arch/aarch64/drivers/nrf52.rs
deleted file mode 100644
index 9675faf..0000000
--- a/ableos/src/arch/aarch64/drivers/nrf52.rs
+++ /dev/null
@@ -1,70 +0,0 @@
-//! A not-very-useful abstraction of GPIOs in Rust
-#![allow(dead_code)]
-
-use core::sync::atomic::{AtomicBool, Ordering::SeqCst};
-
-const REG_P0_PIN_CNF_BASE: *mut u32 = 0x5000_0700 as *mut u32;
-const REG_P0_OUT_SET: *mut u32 = 0x5000_0508 as *mut u32;
-const REG_P0_OUT_CLR: *mut u32 = 0x5000_050C as *mut u32;
-
-const PIN_CNF_DIR_OUTPUT: u32 = 0x0000_0001;
-const PIN_CNF_INPUT_CONNECT: u32 = 0x0000_0000;
-const PIN_CNF_PULL_DISABLED: u32 = 0x0000_0000;
-const PIN_CNF_DRIVE_S0S1: u32 = 0x0000_0000;
-const PIN_CNF_SENSE_DISABLED: u32 = 0x0000_0000;
-/// A struct that represents an nRF52 Pin
-pub struct Pin(u8);
-impl Pin {
-    /// Set a pin to be a push pull output
-    pub fn set_push_pull_output(&mut self, level: Level) {
-        // set level
-        match level {
-            Level::High => self.set_high(),
-            Level::Low => self.set_low(),
-        }
-
-        let set_val = PIN_CNF_DIR_OUTPUT
-            | PIN_CNF_INPUT_CONNECT
-            | PIN_CNF_PULL_DISABLED
-            | PIN_CNF_DRIVE_S0S1
-            | PIN_CNF_SENSE_DISABLED;
-
-        unsafe {
-            core::ptr::write_volatile(REG_P0_PIN_CNF_BASE.offset(self.0 as isize), set_val);
-        }
-    }
-
-    /// Set a pin to output level low
-    pub fn set_low(&mut self) {
-        unsafe { core::ptr::write_volatile(REG_P0_OUT_SET, 1 << (self.0 as u32)) }
-    }
-
-    /// Set a pin to output level high
-    pub fn set_high(&mut self) {
-        unsafe { core::ptr::write_volatile(REG_P0_OUT_CLR, 1 << (self.0 as u32)) }
-    }
-}
-
-/// The level of a GPIO
-#[derive(Copy, Clone)]
-pub enum Level {
-    Low,
-    High,
-}
-
-/// A struct that represents P0 of the nRF52
-pub struct Pins {
-    pub p0_31: Pin,
-}
-
-impl Pins {
-    /// A function to obtain a Port 0 singleton structure
-    pub fn take() -> Self {
-        static TAKEN: AtomicBool = AtomicBool::new(false);
-
-        // Enforce this as a singleton
-        assert!(!TAKEN.swap(true, SeqCst));
-
-        Self { p0_31: Pin(31) }
-    }
-}
diff --git a/ableos/src/arch/aarch64/drivers/serial.rs b/ableos/src/arch/aarch64/drivers/serial.rs
deleted file mode 100644
index 0b3aa25..0000000
--- a/ableos/src/arch/aarch64/drivers/serial.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-/// Prints to the host through the serial interface.
-#[macro_export]
-macro_rules! serial_print {
-    ($($arg:tt)*) => {};
-}
-
-/// Prints to the host through the serial interface, appending a newline.
-#[macro_export]
-macro_rules! serial_println {
-    () => {};
-    ($fmt:expr) => {};
-    ($fmt:expr, $($arg:tt)*) => {};
-}
diff --git a/ableos/src/arch/aarch64/init.rs b/ableos/src/arch/aarch64/init.rs
deleted file mode 100644
index 12cd021..0000000
--- a/ableos/src/arch/aarch64/init.rs
+++ /dev/null
@@ -1 +0,0 @@
-pub fn init() {}
diff --git a/ableos/src/arch/aarch64/mod.rs b/ableos/src/arch/aarch64/mod.rs
deleted file mode 100644
index 04aeecb..0000000
--- a/ableos/src/arch/aarch64/mod.rs
+++ /dev/null
@@ -1,66 +0,0 @@
-pub mod drivers;
-pub mod init;
-
-use crate::arch::drivers::nrf52::{Level, Pins};
-use core::ptr;
-use core::ptr::write_volatile;
-
-global_asm!(include_str!("boot.s"));
-
-fn delay(ticks: usize) {
-    static mut DUMMY: usize = 0;
-
-    // Reduce the number of iterations when in debug mode
-    #[cfg(debug_assertions)]
-    let ticks = ticks / 128;
-
-    for t in 0..ticks {
-        // Prevent the optimizer from removing this loop
-        unsafe {
-            write_volatile(&mut DUMMY, t);
-        }
-    }
-}
-use crate::print;
-
-#[no_mangle]
-pub extern "C" fn not_main() {
-    const UART0: *mut u8 = 0x0900_0000 as *mut u8;
-    for byte in b"ableOS Arm 64" {
-        unsafe {
-            ptr::write_volatile(UART0, *byte);
-        }
-    }
-
-    // let gpios = Pins::take();
-    // let mut led = gpios.p0_31;
-    //
-    // loop {
-    //     led.set_high();
-    //     delay(2_000_000);
-    //
-    //     led.set_low();
-    //     delay(6_000_000);
-    // }
-    //
-    // led.set_push_pull_output(Level::Low);
-
-    crate::kmain::kernel_main();
-    sloop();
-}
-
-pub fn sloop() -> ! {
-    loop {}
-}
-
-pub fn print() {
-    for byte in b"ableOS Arm 64" {
-        const UART0: *mut u8 = 0x0900_0000 as *mut u8;
-
-        unsafe {
-            ptr::write_volatile(UART0, *byte);
-        }
-    }
-}
-
-pub fn shutdown() {}
diff --git a/ableos/src/arch/aarch64/run.sh b/ableos/src/arch/aarch64/run.sh
deleted file mode 100644
index 494f5b8..0000000
--- a/ableos/src/arch/aarch64/run.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-cargo build --target=json_targets/aarch64-ableos.json --release &&\
-qemu-system-aarch64 -machine virt -m 1024M -cpu cortex-a53 \
--kernel target/aarch64-ableos/release/ableos -serial stdio \
--device virtio-keyboard
diff --git a/ableos/src/arch/riscv/drivers/allocator.rs b/ableos/src/arch/riscv/drivers/allocator.rs
deleted file mode 100644
index cf68c09..0000000
--- a/ableos/src/arch/riscv/drivers/allocator.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-use alloc::alloc::{GlobalAlloc, Layout};
-use core::ptr::null_mut;
-
-pub struct Dummy;
-unsafe impl GlobalAlloc for Dummy {
-    unsafe fn alloc(&self, _layout: Layout) -> *mut u8 {
-        null_mut()
-    }
-
-    unsafe fn dealloc(&self, _ptr: *mut u8, _layout: Layout) {
-        panic!("dealloc should be never called")
-    }
-}
diff --git a/ableos/src/arch/riscv/drivers/graphics.rs b/ableos/src/arch/riscv/drivers/graphics.rs
deleted file mode 100644
index fddd6e2..0000000
--- a/ableos/src/arch/riscv/drivers/graphics.rs
+++ /dev/null
@@ -1,37 +0,0 @@
-use crate::driver_traits::graphics::{Graphics, Point, Rgb};
-
-pub struct GraphicsBuffer;
-
-#[allow(unused)]
-impl Graphics for GraphicsBuffer {
-    fn put_line(coords_start: Point, coords_end: Point, thickness: u32, color: Rgb) {
-        todo!()
-    }
-
-    fn put_rect(coords_start: Point, coords_end: Point, color: Rgb) {
-        todo!()
-    }
-
-    fn put_circle(coords: Point, radius: u32) {
-        todo!()
-    }
-
-    fn put_triangle(coords_1: Point, coords_2: Point, coords_3: Point, thickness: u32, color: Rgb) {
-        todo!();
-    }
-
-    fn put_pixel(coords: Point, color: Rgb) {
-        todo!()
-    }
-
-    fn paint_cursor(coords: Point) {
-        todo!()
-    }
-
-    fn hide_cursor() {}
-    fn show_cursor() {}
-    fn draw() {}
-    fn clear() {
-        todo!()
-    }
-}
diff --git a/ableos/src/arch/riscv/drivers/mmio.rs b/ableos/src/arch/riscv/drivers/mmio.rs
deleted file mode 100644
index a25e766..0000000
--- a/ableos/src/arch/riscv/drivers/mmio.rs
+++ /dev/null
@@ -1,35 +0,0 @@
-/// # Safety
-///
-/// We label the mmio function unsafe since
-/// we will be working with raw memory. Rust cannot
-/// make any guarantees when we do this.
-#[inline(always)]
-fn mmio_write(address: usize, offset: usize, value: u8) {
-    // Set the pointer based off of the address
-    let reg = address as *mut u8;
-
-    // write_volatile is a member of the *mut raw
-    // and we can use the .add() to give us another pointer
-    // at an offset based on the original pointer's memory
-    // address. NOTE: The add uses pointer arithmetic so it is
-    // new_pointer = old_pointer + sizeof(pointer_type) * offset
-    unsafe {
-        reg.add(offset).write_volatile(value);
-    }
-}
-
-/// # Safety
-///
-/// We label the mmio function unsafe since
-/// we will be working with raw memory. Rust cannot
-/// make any guarantees when we do this.
-fn mmio_read(address: usize, offset: usize, value: u8) -> u8 {
-    // Set the pointer based off of the address
-    let reg = address as *mut u8;
-
-    // read_volatile() is much like write_volatile() except it
-    // will grab 8-bits from the pointer and give that value to us.
-    // We don't add a semi-colon at the end here so that the value
-    // is "returned".
-    unsafe { reg.add(offset).read_volatile() }
-}
diff --git a/ableos/src/arch/riscv/drivers/mod.rs b/ableos/src/arch/riscv/drivers/mod.rs
deleted file mode 100644
index 082f960..0000000
--- a/ableos/src/arch/riscv/drivers/mod.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-pub mod allocator;
-pub mod graphics;
-pub mod mmio;
-pub mod sysinfo;
-pub mod uart;
diff --git a/ableos/src/arch/riscv/drivers/sysinfo.rs b/ableos/src/arch/riscv/drivers/sysinfo.rs
deleted file mode 100644
index 56ff155..0000000
--- a/ableos/src/arch/riscv/drivers/sysinfo.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-pub fn sysinfo() {}
-pub fn master() -> Option<Master> {
-    Some(Master {
-        brand_string: Some("riscv".to_string()),
-    })
-}
-
-pub struct Master {
-    // TODO: Rename struct
-    // version_information: Option<VersionInformation>,
-    // thermal_power_management_information: Option<ThermalPowerManagementInformation>,
-    // structured_extended_information: Option<StructuredExtendedInformation>,
-    // extended_processor_signature: Option<ExtendedProcessorSignature>,
-    pub brand_string: Option<String>,
-    // cache_line: Option<CacheLine>,
-    // time_stamp_counter: Option<TimeStampCounter>,
-    // physical_address_size: Option<PhysicalAddressSize>,
-}
-impl Master {
-    pub fn brand_string(&self) -> Option<&str> {
-        self.brand_string.as_deref()
-    }
-}
diff --git a/ableos/src/arch/riscv/drivers/uart.rs b/ableos/src/arch/riscv/drivers/uart.rs
deleted file mode 100644
index 6751aa8..0000000
--- a/ableos/src/arch/riscv/drivers/uart.rs
+++ /dev/null
@@ -1,129 +0,0 @@
-use core::fmt::{Error, Write};
-
-/// Initialize the UART driver by setting
-/// the word length, FIFOs, and interrupts
-pub fn uart_init(base_addr: usize) {
-    let ptr = base_addr as *mut u8;
-    unsafe {
-        // First, set the word length, which
-        // are bits 0, and 1 of the line control register (LCR)
-        // which is at base_address + 3
-        // We can easily write the value 3 here or 0b11, but I'm
-        // extending it so that it is clear we're setting two individual
-        // fields
-        //         Word 0     Word 1
-        //         ~~~~~~     ~~~~~~
-        let lcr = (1 << 0) | (1 << 1);
-        ptr.add(3).write_volatile(lcr);
-
-        // Now, enable the FIFO, which is bit index 0 of the FIFO
-        // control register (FCR at offset 2).
-        // Again, we can just write 1 here, but when we use left shift,
-        // it's easier to see that we're trying to write bit index #0.
-        ptr.add(2).write_volatile(1 << 0);
-
-        // Enable receiver buffer interrupts, which is at bit index
-        // 0 of the interrupt enable register (IER at offset 1).
-        ptr.add(1).write_volatile(1 << 0);
-
-        // If we cared about the divisor, the code below would set the divisor
-        // from a global clock rate of 22.729 MHz (22,729,000 cycles per second)
-        // to a signaling rate of 2400 (BAUD). We usually have much faster signalling
-        // rates nowadays, but this demonstrates what the divisor actually does.
-        // The formula given in the NS16500A specification for calculating the divisor
-        // is:
-        // divisor = ceil( (clock_hz) / (baud_sps x 16) )
-        // So, we substitute our values and get:
-        // divisor = ceil( 22_729_000 / (2400 x 16) )
-        // divisor = ceil( 22_729_000 / 38_400 )
-        // divisor = ceil( 591.901 ) = 592
-
-        // The divisor register is two bytes (16 bits), so we need to split the value
-        // 592 into two bytes. Typically, we would calculate this based on measuring
-        // the clock rate, but again, for our purposes [qemu], this doesn't really do
-        // anything.
-        let divisor: u16 = 592;
-        let divisor_least: u8 = (divisor & 0xff).try_into().unwrap();
-        let divisor_most: u8 = (divisor >> 8).try_into().unwrap();
-
-        // Notice that the divisor register DLL (divisor latch least) and DLM (divisor
-        // latch most) have the same base address as the receiver/transmitter and the
-        // interrupt enable register. To change what the base address points to, we
-        // open the "divisor latch" by writing 1 into the Divisor Latch Access Bit
-        // (DLAB), which is bit index 7 of the Line Control Register (LCR) which
-        // is at base_address + 3.
-        ptr.add(3).write_volatile(lcr | 1 << 7);
-
-        // Now, base addresses 0 and 1 point to DLL and DLM, respectively.
-        // Put the lower 8 bits of the divisor into DLL
-        ptr.add(0).write_volatile(divisor_least);
-        ptr.add(1).write_volatile(divisor_most);
-
-        // Now that we've written the divisor, we never have to touch this again. In
-        // hardware, this will divide the global clock (22.729 MHz) into one suitable
-        // for 2,400 signals per second. So, to once again get access to the
-        // RBR/THR/IER registers, we need to close the DLAB bit by clearing it to 0.
-        ptr.add(3).write_volatile(lcr);
-    }
-}
-
-fn uart_get(base_addr: usize) -> Option<u8> {
-    let ptr = base_addr as *mut u8;
-    unsafe {
-        // Bit index #5 is the Line Control Register.
-        if ptr.add(5).read_volatile() & 1 == 0 {
-            // The DR bit is 0, meaning no data
-            None
-        } else {
-            // The DR bit is 1, meaning data!
-            Some(ptr.add(0).read_volatile())
-        }
-    }
-}
-
-fn uart_put(base_addr: usize, c: u8) {
-    let ptr = base_addr as *mut u8;
-    unsafe {
-        // If we get here, the transmitter is empty, so transmit
-        // our stuff!
-        ptr.add(0).write_volatile(c);
-    }
-}
-
-pub struct Uart {
-    base_address: usize,
-}
-
-impl Uart {
-    pub fn new(base_address: usize) -> Self {
-        Uart { base_address }
-    }
-
-    pub fn get(&self) -> Option<u8> {
-        uart_get(self.base_address)
-    }
-
-    pub fn put(&self, c: u8) {
-        uart_put(self.base_address, c);
-    }
-
-    pub fn init(&self) {
-        uart_init(self.base_address);
-    }
-}
-
-// This is a slightly different syntax. Write is this "trait", meaning it is much like
-// an interface where we're just guaranteeing a certain function signature. In the Write
-// trait, one is absolutely required to be implemented, which is write_str. There are other
-// functions, but they all rely on write_str(), so their default implementation is OK for now.
-impl Write for Uart {
-    // The trait Write expects us to write the function write_str
-    // which looks like:
-    fn write_str(&mut self, s: &str) -> Result<(), Error> {
-        for c in s.bytes() {
-            self.put(c);
-        }
-        // Return that we succeeded.
-        Ok(())
-    }
-}
diff --git a/ableos/src/arch/riscv/firmwear/opensbi-riscv64-generic-fw_jump.bin b/ableos/src/arch/riscv/firmwear/opensbi-riscv64-generic-fw_jump.bin
deleted file mode 100755
index 099967f..0000000
Binary files a/ableos/src/arch/riscv/firmwear/opensbi-riscv64-generic-fw_jump.bin and /dev/null differ
diff --git a/ableos/src/arch/riscv/init.rs b/ableos/src/arch/riscv/init.rs
deleted file mode 100644
index 12cd021..0000000
--- a/ableos/src/arch/riscv/init.rs
+++ /dev/null
@@ -1 +0,0 @@
-pub fn init() {}
diff --git a/ableos/src/arch/riscv/mod.rs b/ableos/src/arch/riscv/mod.rs
deleted file mode 100644
index a201dd2..0000000
--- a/ableos/src/arch/riscv/mod.rs
+++ /dev/null
@@ -1,99 +0,0 @@
-pub mod drivers;
-pub mod init;
-
-use crate::print;
-use crate::println;
-use core::arch::asm;
-
-#[naked]
-#[no_mangle]
-unsafe extern "C" fn _boot() -> ! {
-    #[rustfmt::skip]
-    asm!("
-        csrw sie, zero
-        csrci sstatus, 2
-
-        .option push
-        .option norelax
-        lla gp, __global_pointer$
-        .option pop
-
-        lla sp, __tmp_stack_top
-
-        lla t0, __bss_start
-        lla t1, __bss_end
-
-        1:
-            beq t0, t1, 2f
-            sd zero, (t0)
-            addi t0, t0, 8
-            j 1b
-
-        2:
-            j {}
-    ",
-    sym _start, options(noreturn));
-}
-
-extern "C" fn _start() -> ! {
-    use crate::serial_println;
-
-    let uart = crate::arch::drivers::uart::Uart::new(0x1000_0000);
-    uart.init();
-    log!("Hello, world!\r");
-
-    loop {
-        if let Some(c) = uart.get() {
-            match c {
-                66 => break,
-                10 | 13 => {
-                    uart.put('\n' as u8);
-                    uart.put('\r' as u8);
-                }
-
-                /*
-                                91 => {
-                                    if let Some(ch) = uart.get() {
-                                        match ch as char {
-                                            'A' => {
-                                                serial_println!("That's the up arrow!");
-                                            }
-                                            'B' => {
-                                                serial_println!("That's the down arrow!");
-                                            }
-                                            'C' => {
-                                                serial_println!("That's the right arrow!");
-                                            }
-                                            'D' => {
-                                                serial_println!("That's the left arrow!");
-                                            }
-                                            _ => {
-                                                serial_println!("That's something else!");
-                                            }
-                                        }
-                                    }
-                                }
-                */
-                _ => {
-                    uart.put(c);
-                }
-            }
-        }
-    }
-
-    serial_println!("Serial connection closed.\r");
-    sloop()
-}
-
-pub fn sloop() -> ! {
-    loop {
-        unsafe {
-            asm!("wfi");
-        };
-    }
-}
-
-pub fn shutdown() {}
-pub fn generate_process_pass() -> u128 {
-    123
-}
diff --git a/ableos/src/arch/riscv/virt.lds b/ableos/src/arch/riscv/virt.lds
deleted file mode 100644
index c471c85..0000000
--- a/ableos/src/arch/riscv/virt.lds
+++ /dev/null
@@ -1,64 +0,0 @@
-OUTPUT_ARCH(riscv64gc)
-
-ENTRY(_boot);
-
-
-SECTIONS {
-    . = 0x80200000;
-    .text : {
-        PROVIDE(__text_start = .);
-        PROVIDE(KERNEL_START = .);
-        *(.init.boot)
-        *(.init.rust)
-        *(.text .text.*)
-        . = ALIGN(4K);
-        PROVIDE(__text_end = .);
-    }
-
-    .data : {
-        PROVIDE(__data_start = .);
-        *(.data .data.* .rodata .rodata.*)
-        . = ALIGN(8);
-        PROVIDE(__tmp_stack_bottom = .);
-        . += 1024 * 1024 * 4;
-        PROVIDE(__tmp_stack_top = .);
-        . += 4096;
-        PROVIDE(__scratch_stack = .);
-        . = ALIGN(8);
-    }
-
-    . = ALIGN(8);
-
-    .sdata : {
-        PROVIDE(__global_pointer$ = .);
-        *(.sdata .sdata.*)       
-        . = ALIGN(4K);
-        PROVIDE(__data_end = .); 
-    }
-
-    PROVIDE(__bss_start = .);
-    .sbss : {
-        *(.sbss .sbss.*);
-    }
-
-    .bss : {
-        *(.bss .bss.*)
-    }
-    . = ALIGN(4K);
-    PROVIDE(__bss_end = .);
-
-    .tdata : {
-        . = ALIGN(4K);
-        PROVIDE(__tdata_start = .);
-        
-        *(.tdata .tdata.*)
-
-        . = ALIGN(4K);
-        PROVIDE(__tdata_end = .);
-    }
-
-    . = ALIGN(2M);
-    PROVIDE(KERNEL_END = .);
-
-    /DISCARD/ : { *(.eh_frame_hdr .eh_frame) }
-}
diff --git a/ableos/src/arch/x86_64/drivers/allocator.rs b/ableos/src/arch/x86_64/drivers/allocator.rs
deleted file mode 100644
index 8db70e5..0000000
--- a/ableos/src/arch/x86_64/drivers/allocator.rs
+++ /dev/null
@@ -1,48 +0,0 @@
-use alloc::alloc::{GlobalAlloc, Layout};
-use core::ptr::null_mut;
-use kernel::allocator::{HEAP_SIZE, HEAP_START};
-use x86_64::{
-    structures::paging::{
-        mapper::MapToError, FrameAllocator, Mapper, Page, PageTableFlags, Size4KiB,
-    },
-    VirtAddr,
-};
-pub struct Dummy;
-unsafe impl GlobalAlloc for Dummy {
-    unsafe fn alloc(&self, _layout: Layout) -> *mut u8 {
-        null_mut()
-    }
-
-    unsafe fn dealloc(&self, _ptr: *mut u8, _layout: Layout) {
-        panic!("dealloc should be never called")
-    }
-}
-
-pub fn init_heap(
-    mapper: &mut impl Mapper<Size4KiB>,
-    frame_allocator: &mut impl FrameAllocator<Size4KiB>,
-) -> Result<(), MapToError<Size4KiB>> {
-    let page_range = {
-        let heap_start = VirtAddr::new(HEAP_START as u64);
-        let heap_end = heap_start + HEAP_SIZE - 1u64;
-        let heap_start_page = Page::containing_address(heap_start);
-        let heap_end_page = Page::containing_address(heap_end);
-        Page::range_inclusive(heap_start_page, heap_end_page)
-    };
-
-    for page in page_range {
-        let frame = frame_allocator
-            .allocate_frame()
-            .ok_or(MapToError::FrameAllocationFailed)?;
-        let flags = PageTableFlags::PRESENT | PageTableFlags::WRITABLE;
-        unsafe { mapper.map_to(page, frame, flags, frame_allocator)?.flush() };
-    }
-
-    unsafe {
-        kernel::allocator::ALLOCATOR
-            .lock()
-            .init(HEAP_START, HEAP_SIZE);
-    }
-
-    Ok(())
-}
diff --git a/ableos/src/arch/x86_64/drivers/graphics.rs b/ableos/src/arch/x86_64/drivers/graphics.rs
deleted file mode 100644
index 5933ed6..0000000
--- a/ableos/src/arch/x86_64/drivers/graphics.rs
+++ /dev/null
@@ -1,42 +0,0 @@
-use crate::driver_traits::graphics::{Graphics, Point, Rgb};
-use cpuio::outw;
-
-pub struct GraphicsBuffer;
-
-#[allow(unused)]
-impl Graphics for GraphicsBuffer {
-    fn put_line(coords_start: Point, coords_end: Point, thickness: u32, color: Rgb) {
-        todo!()
-    }
-
-    fn put_rect(coords_start: Point, coords_end: Point, color: Rgb) {}
-
-    fn put_circle(coords: Point, radius: u32) {
-        todo!()
-    }
-
-    fn put_triangle(coords_1: Point, coords_2: Point, coords_3: Point, thickness: u32, color: Rgb) {
-        todo!();
-    }
-
-    fn put_pixel(coords: Point, color: Rgb) {
-        todo!()
-    }
-
-    fn paint_cursor(coords: Point) {
-        todo!()
-    }
-
-    fn hide_cursor() {
-        unsafe {
-            outw(0x0A, 0x3D4);
-            outw(0x20, 0x3D5);
-        }
-    }
-
-    fn show_cursor() {}
-    fn draw() {}
-    fn clear() {
-        todo!()
-    }
-}
diff --git a/ableos/src/arch/x86_64/drivers/mod.rs b/ableos/src/arch/x86_64/drivers/mod.rs
deleted file mode 100644
index a16b28d..0000000
--- a/ableos/src/arch/x86_64/drivers/mod.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-pub mod allocator;
-// pub mod graphics;
-pub mod serial;
-pub mod sysinfo;
-pub mod timer;
-
-#[deprecated(note = "The use of hardware specific drivers for VGA is discouraged")]
-pub mod vga;
diff --git a/ableos/src/arch/x86_64/drivers/serial.rs b/ableos/src/arch/x86_64/drivers/serial.rs
deleted file mode 100644
index 64eee68..0000000
--- a/ableos/src/arch/x86_64/drivers/serial.rs
+++ /dev/null
@@ -1,36 +0,0 @@
-use spin::{Lazy, Mutex};
-use uart_16550::SerialPort;
-
-pub static SERIAL1: Lazy<Mutex<SerialPort>> = Lazy::new(|| {
-    let mut serial_port = unsafe { SerialPort::new(0x3F8) };
-    serial_port.init();
-    Mutex::new(serial_port)
-});
-
-#[doc(hidden)]
-pub fn _print(args: ::core::fmt::Arguments) {
-    use core::fmt::Write;
-    // /*
-    SERIAL1
-        .lock()
-        .write_fmt(args)
-        .expect("Printing to serial failed");
-    // */
-}
-
-/// Prints to the host through the serial interface.
-#[macro_export]
-macro_rules! sprint {
-    ($($arg:tt)*) => {
-        $crate::arch::drivers::serial::_print(format_args!($($arg)*));
-    };
-}
-
-/// Prints to the host through the serial interface, appending a newline.
-#[macro_export]
-macro_rules! sprintln {
-    () => ($crate::sprint!("\n"));
-    ($fmt:expr) => ($crate::sprint!(concat!($fmt, "\n")));
-    ($fmt:expr, $($arg:tt)*) => ($crate::sprint!(
-        concat!($fmt, "\n"), $($arg)*));
-}
diff --git a/ableos/src/arch/x86_64/drivers/sysinfo.rs b/ableos/src/arch/x86_64/drivers/sysinfo.rs
deleted file mode 100644
index f7fef88..0000000
--- a/ableos/src/arch/x86_64/drivers/sysinfo.rs
+++ /dev/null
@@ -1,954 +0,0 @@
-//! ```
-//! extern crate cupid;
-//!
-//! fn main() {
-//!     let information = cupid::master();
-//!     println!("{:#?}", information);
-//!     if let Some(information) = information {
-//!         if information.sse4_2() {
-//!              println!("SSE 4.2 Available");
-//!         }
-//!     }
-//! }
-//! ```
-
-#![cfg_attr(
-    not(any(target_arch = "x86_64", target_arch = "x86")),
-    allow(dead_code)
-)]
-
-use core::arch::asm;
-use core::ops::Deref;
-use core::{fmt, slice, str};
-
-// 3 calls of 4 registers of 4 bytes
-const BRAND_STRING_LENGTH: usize = 3 * 4 * 4;
-
-macro_rules! bit {
-    ($reg:ident, {$($idx:expr => $name:ident),+ $(,)?}) => {
-        $(pub fn $name(self) -> bool {
-            ((self.$reg >> $idx) & 1) != 0
-        })+
-    }
-}
-
-macro_rules! dump {
-    ($me:expr, $f: expr, $sname:expr, {$($name:ident),+ $(,)?}) => {
-        $f.debug_struct($sname)
-            $(.field(stringify!($name), &$me.$name()))+
-            .finish()
-    }
-}
-
-macro_rules! delegate_flag {
-    ($item:ident, {$($name:ident),+ $(,)?}) => {
-        $(pub fn $name(&self) -> bool {
-            self.$item.map(|i| i.$name()).unwrap_or(false)
-        })+
-    }
-}
-
-macro_rules! master_attr_reader {
-    ($name:ident, $kind:ty) => {
-        pub fn $name(&self) -> Option<&$kind> {
-            self.$name.as_ref()
-        }
-    };
-}
-
-#[repr(u32)]
-pub enum RequestType {
-    BasicInformation = 0x00000000,
-    VersionInformation = 0x00000001,
-    ThermalPowerManagementInformation = 0x00000006,
-    StructuredExtendedInformation = 0x00000007,
-    ExtendedFunctionInformation = 0x80000000,
-    ExtendedProcessorSignature = 0x80000001,
-    BrandString1 = 0x80000002,
-    BrandString2 = 0x80000003,
-    BrandString3 = 0x80000004,
-    // reserved = 0x80000005,
-    CacheLine = 0x80000006,
-    TimeStampCounter = 0x80000007,
-    PhysicalAddressSize = 0x80000008,
-}
-
-#[derive(Copy, Clone)]
-pub struct VersionInformation {
-    eax: u32,
-    ebx: u32,
-    ecx: u32,
-    edx: u32,
-}
-
-impl VersionInformation {
-    pub fn new() -> VersionInformation {
-        let (a, b, c, d) = cpuid(RequestType::VersionInformation);
-        VersionInformation {
-            eax: a,
-            ebx: b,
-            ecx: c,
-            edx: d,
-        }
-    }
-
-    pub fn family_id(self) -> u32 {
-        let family_id = bits_of(self.eax, 8, 11);
-        let extended_family_id = bits_of(self.eax, 20, 27);
-
-        if family_id != 0x0F {
-            family_id
-        } else {
-            extended_family_id + family_id
-        }
-    }
-
-    pub fn model_id(self) -> u32 {
-        let family_id = self.family_id();
-        let model_id = bits_of(self.eax, 4, 7);
-        let extended_model_id = bits_of(self.eax, 16, 19);
-
-        if family_id == 0x06 || family_id == 0x0F {
-            (extended_model_id << 4) + model_id
-        } else {
-            model_id
-        }
-    }
-
-    pub fn stepping(self) -> u32 {
-        bits_of(self.eax, 0, 3)
-    }
-
-    fn processor_signature(self) -> u32 {
-        self.eax
-    }
-
-    pub fn brand_string(self) -> Option<&'static str> {
-        let brand_index = bits_of(self.ebx, 0, 7);
-        let processor_signature = self.processor_signature();
-
-        match brand_index {
-            0x00 => None,
-            0x01 => Some("Intel(R) Celeron(R)"),
-            0x02 => Some("Intel(R) Pentium(R) III"),
-            0x03 => {
-                if processor_signature == 0x06B1 {
-                    Some("Intel(R) Celeron(R)")
-                } else {
-                    Some("Intel(R) Pentium(R) III Xeon(R)")
-                }
-            }
-            0x04 => Some("Intel(R) Pentium(R) III"),
-            0x06 => Some("Mobile Intel(R) Pentium(R) III-M"),
-            0x07 => Some("Mobile Intel(R) Celeron(R)"),
-            0x08 => Some("Intel(R) Pentium(R) 4"),
-            0x09 => Some("Intel(R) Pentium(R) 4"),
-            0x0A => Some("Intel(R) Celeron(R)"),
-            0x0B => {
-                if processor_signature == 0x0F13 {
-                    Some("Intel(R) Xeon(R) MP")
-                } else {
-                    Some("Intel(R) Xeon(R)")
-                }
-            }
-            0x0C => Some("Intel(R) Xeon(R) MP"),
-            0x0E => {
-                if processor_signature == 0x0F13 {
-                    Some("Intel(R) Xeon(R)")
-                } else {
-                    Some("Mobile Intel(R) Pentium(R) 4-M")
-                }
-            }
-            0x0F => Some("Mobile Intel(R) Celeron(R)"),
-            0x11 => Some("Mobile Genuine Intel(R)"),
-            0x12 => Some("Intel(R) Celeron(R) M"),
-            0x13 => Some("Mobile Intel(R) Celeron(R)"),
-            0x14 => Some("Intel(R) Celeron(R)"),
-            0x15 => Some("Mobile Genuine Intel(R)"),
-            0x16 => Some("Intel(R) Pentium(R) M"),
-            0x17 => Some("Mobile Intel(R) Celeron(R)"),
-            _ => None,
-        }
-    }
-
-    bit!(ecx, {
-         0 => sse3,
-         1 => pclmulqdq,
-         2 => dtes64,
-         3 => monitor,
-         4 => ds_cpl,
-         5 => vmx,
-         6 => smx,
-         7 => eist,
-         8 => tm2,
-         9 => ssse3,
-        10 => cnxt_id,
-        11 => sdbg,
-        12 => fma,
-        13 => cmpxchg16b,
-        14 => xtpr_update_control,
-        15 => pdcm,
-        // 16 - reserved
-        17 => pcid,
-        18 => dca,
-        19 => sse4_1,
-        20 => sse4_2,
-        21 => x2apic,
-        22 => movbe,
-        23 => popcnt,
-        24 => tsc_deadline,
-        25 => aesni,
-        26 => xsave,
-        27 => osxsave,
-        28 => avx,
-        29 => f16c,
-        30 => rdrand,
-        // 31 - unused,
-    });
-
-    bit!(edx, {
-        0 => fpu,
-        1 => vme,
-        2 => de,
-        3 => pse,
-        4 => tsc,
-        5 => msr,
-        6 => pae,
-        7 => mce,
-        8 => cx8,
-        9 => apic,
-        // 10 - reserved
-        11 => sep,
-        12 => mtrr,
-        13 => pge,
-        14 => mca,
-        15 => cmov,
-        16 => pat,
-        17 => pse_36,
-        18 => psn,
-        19 => clfsh,
-        // 20 - reserved
-        21 => ds,
-        22 => acpi,
-        23 => mmx,
-        24 => fxsr,
-        25 => sse,
-        26 => sse2,
-        27 => ss,
-        28 => htt,
-        29 => tm,
-        // 30 -reserved
-        31 => pbe,
-    });
-}
-
-impl Default for VersionInformation {
-    fn default() -> Self {
-        Self::new()
-    }
-}
-
-impl fmt::Debug for VersionInformation {
-    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        dump!(self, f, "VersionInformation", {
-            family_id,
-            model_id,
-            stepping,
-            brand_string,
-            sse3,
-            pclmulqdq,
-            dtes64,
-            monitor,
-            ds_cpl,
-            vmx,
-            smx,
-            eist,
-            tm2,
-            ssse3,
-            cnxt_id,
-            sdbg,
-            fma,
-            cmpxchg16b,
-            xtpr_update_control,
-            pdcm,
-            pcid,
-            dca,
-            sse4_1,
-            sse4_2,
-            x2apic,
-            movbe,
-            popcnt,
-            tsc_deadline,
-            aesni,
-            xsave,
-            osxsave,
-            avx,
-            f16c,
-            rdrand,
-            fpu,
-            vme,
-            de,
-            pse,
-            tsc,
-            msr,
-            pae,
-            mce,
-            cx8,
-            apic,
-            sep,
-            mtrr,
-            pge,
-            mca,
-            cmov,
-            pat,
-            pse_36,
-            psn,
-            clfsh,
-            ds,
-            acpi,
-            mmx,
-            fxsr,
-            sse,
-            sse2,
-            ss,
-            htt,
-            tm,
-            pbe,
-        })
-    }
-}
-
-#[derive(Copy, Clone)]
-pub struct ExtendedProcessorSignature {
-    ecx: u32,
-    edx: u32,
-}
-
-impl ExtendedProcessorSignature {
-    fn new() -> ExtendedProcessorSignature {
-        let (_, _, c, d) = cpuid(RequestType::ExtendedProcessorSignature);
-        ExtendedProcessorSignature { ecx: c, edx: d }
-    }
-
-    bit!(ecx, {
-        0 => lahf_sahf_in_64_bit,
-        // 1-4 reserved
-        5 => lzcnt,
-        // 6-7 reserved
-        8 => prefetchw,
-        // 9-31 reserved
-    });
-
-    bit!(edx, {
-        // 0-10 reserved
-        11 => syscall_sysret_in_64_bit,
-        // 12-19 reserved
-        20 => execute_disable,
-        // 21-25 reserved
-        26 => gigabyte_pages,
-        27 => rdtscp_and_ia32_tsc_aux,
-        // 28 reserved
-        29 => intel_64_bit_architecture,
-        // 30-31 reserved
-    });
-}
-
-impl fmt::Debug for ExtendedProcessorSignature {
-    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        dump!(self, f, "ThermalPowerManagementInformation", {
-            lahf_sahf_in_64_bit,
-            lzcnt,
-            prefetchw,
-            syscall_sysret_in_64_bit,
-            execute_disable,
-            gigabyte_pages,
-            rdtscp_and_ia32_tsc_aux,
-            intel_64_bit_architecture,
-        })
-    }
-}
-
-pub struct BrandString {
-    bytes: [u8; BRAND_STRING_LENGTH],
-}
-
-impl BrandString {
-    fn new() -> BrandString {
-        fn append_bytes(a: RequestType, bytes: &mut [u8]) {
-            let (a, b, c, d) = cpuid(a);
-
-            let result_bytes = as_bytes(&a)
-                .iter()
-                .chain(as_bytes(&b).iter())
-                .chain(as_bytes(&c).iter())
-                .chain(as_bytes(&d).iter());
-
-            for (output, input) in bytes.iter_mut().zip(result_bytes) {
-                *output = *input
-            }
-        }
-
-        let mut brand_string = BrandString {
-            bytes: [0; BRAND_STRING_LENGTH],
-        };
-        append_bytes(RequestType::BrandString1, &mut brand_string.bytes[0..]);
-        append_bytes(RequestType::BrandString2, &mut brand_string.bytes[16..]);
-        append_bytes(RequestType::BrandString3, &mut brand_string.bytes[32..]);
-        brand_string
-    }
-}
-
-impl Clone for BrandString {
-    fn clone(&self) -> Self {
-        let mut bytes = [0; BRAND_STRING_LENGTH];
-        for (d, s) in bytes.iter_mut().zip(self.bytes.iter()) {
-            *d = *s;
-        }
-        BrandString { bytes }
-    }
-}
-
-impl Deref for BrandString {
-    type Target = str;
-
-    fn deref(&self) -> &str {
-        let nul_terminator = self.bytes.iter().position(|&b| b == 0).unwrap_or(0);
-        let usable_bytes = &self.bytes[..nul_terminator];
-        unsafe { str::from_utf8_unchecked(usable_bytes) }.trim()
-    }
-}
-
-impl fmt::Display for BrandString {
-    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        (self as &str).fmt(f)
-    }
-}
-
-impl fmt::Debug for BrandString {
-    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        (self as &str).fmt(f)
-    }
-}
-
-#[derive(Copy, Clone)]
-pub struct ThermalPowerManagementInformation {
-    eax: u32,
-    ebx: u32,
-    ecx: u32,
-}
-
-impl ThermalPowerManagementInformation {
-    fn new() -> ThermalPowerManagementInformation {
-        let (a, b, c, _) = cpuid(RequestType::ThermalPowerManagementInformation);
-        ThermalPowerManagementInformation {
-            eax: a,
-            ebx: b,
-            ecx: c,
-        }
-    }
-
-    bit!(eax, {
-        0 => digital_temperature_sensor,
-        1 => intel_turbo_boost,
-        2 => arat,
-        // 3 - reserved
-        4 => pln,
-        5 => ecmd,
-        6 => ptm,
-        7 => hwp,
-        8 => hwp_notification,
-        9 => hwp_activity_window,
-        10 => hwp_energy_performance_preference,
-        // 12 - reserved
-        13 => hdc,
-    });
-
-    pub fn number_of_interrupt_thresholds(self) -> u32 {
-        bits_of(self.ebx, 0, 3)
-    }
-
-    bit!(ecx, {
-        0 => hardware_coordination_feedback,
-        // 1-2 - reserved
-        3 => performance_energy_bias
-    });
-}
-
-impl fmt::Debug for ThermalPowerManagementInformation {
-    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        dump!(self, f, "ThermalPowerManagementInformation", {
-            digital_temperature_sensor,
-            intel_turbo_boost,
-            arat,
-            pln,
-            ecmd,
-            ptm,
-            hwp,
-            hwp_notification,
-            hwp_activity_window,
-            hwp_energy_performance_preference,
-            hdc,
-            number_of_interrupt_thresholds,
-            hardware_coordination_feedback,
-            performance_energy_bias
-        })
-    }
-}
-
-#[derive(Copy, Clone)]
-pub struct StructuredExtendedInformation {
-    ebx: u32,
-    ecx: u32,
-}
-
-impl StructuredExtendedInformation {
-    fn new() -> StructuredExtendedInformation {
-        let (_, b, c, _) = cpuid(RequestType::StructuredExtendedInformation);
-        StructuredExtendedInformation { ebx: b, ecx: c }
-    }
-
-    bit!(ebx, {
-        0 => fsgsbase,
-        1 => ia32_tsc_adjust_msr,
-        // 2 - reserved
-        3 => bmi1,
-        4 => hle,
-        5 => avx2,
-        // 6 - reserved
-        7 => smep,
-        8 => bmi2,
-        9 => enhanced_rep_movsb_stosb,
-        10 => invpcid,
-        11 => rtm,
-        12 => pqm,
-        13 => deprecates_fpu_cs_ds,
-        // 14 - reserved
-        15 => pqe,
-        // 16-17 - reserved
-        18 => rdseed,
-        19 => adx,
-        20 => smap,
-        // 21-24 - reserved
-        25 => intel_processor_trace,
-        // 26-31 - reserved
-    });
-
-    bit!(ecx, {
-        0 => prefetchwt1
-    });
-}
-
-impl fmt::Debug for StructuredExtendedInformation {
-    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        dump!(self, f, "StructuredExtendedInformation", {
-            fsgsbase,
-            ia32_tsc_adjust_msr,
-            bmi1,
-            hle,
-            avx2,
-            smep,
-            bmi2,
-            enhanced_rep_movsb_stosb,
-            invpcid,
-            rtm,
-            pqm,
-            deprecates_fpu_cs_ds,
-            pqe,
-            rdseed,
-            adx,
-            smap,
-            intel_processor_trace,
-            prefetchwt1,
-        })
-    }
-}
-
-#[derive(Debug, Copy, Clone)]
-pub enum CacheLineAssociativity {
-    Disabled,
-    DirectMapped,
-    TwoWay,
-    FourWay,
-    EightWay,
-    SixteenWay,
-    Full,
-}
-
-#[derive(Copy, Clone)]
-pub struct CacheLine(u32);
-impl CacheLine {
-    fn new() -> CacheLine {
-        let (_, _, c, _) = cpuid(RequestType::CacheLine);
-        CacheLine(c)
-    }
-
-    pub fn cache_line_size(self) -> u32 {
-        bits_of(self.0, 0, 7)
-    }
-
-    pub fn l2_associativity(self) -> Option<CacheLineAssociativity> {
-        match bits_of(self.0, 12, 15) {
-            0x00 => Some(CacheLineAssociativity::Disabled),
-            0x01 => Some(CacheLineAssociativity::DirectMapped),
-            0x02 => Some(CacheLineAssociativity::TwoWay),
-            0x04 => Some(CacheLineAssociativity::FourWay),
-            0x06 => Some(CacheLineAssociativity::EightWay),
-            0x08 => Some(CacheLineAssociativity::SixteenWay),
-            0x0F => Some(CacheLineAssociativity::Full),
-            _ => None,
-        }
-    }
-
-    pub fn cache_size(self) -> u32 {
-        bits_of(self.0, 16, 31)
-    }
-}
-
-impl fmt::Debug for CacheLine {
-    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        dump!(self, f, "CacheLine", {
-            cache_line_size,
-            l2_associativity,
-            cache_size
-        })
-    }
-}
-
-#[derive(Copy, Clone)]
-pub struct TimeStampCounter {
-    edx: u32,
-}
-
-impl TimeStampCounter {
-    fn new() -> TimeStampCounter {
-        let (_, _, _, d) = cpuid(RequestType::TimeStampCounter);
-        TimeStampCounter { edx: d }
-    }
-
-    bit!(edx, {
-        // 0-7 - reserved
-        8 => invariant_tsc
-        // 9-31 - reserved
-    });
-}
-
-impl fmt::Debug for TimeStampCounter {
-    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        dump!(self, f, "TimeStampCounter", { invariant_tsc })
-    }
-}
-
-#[derive(Copy, Clone)]
-pub struct PhysicalAddressSize(u32);
-impl PhysicalAddressSize {
-    fn new() -> PhysicalAddressSize {
-        let (a, _, _, _) = cpuid(RequestType::PhysicalAddressSize);
-        PhysicalAddressSize(a)
-    }
-
-    pub fn physical_address_bits(self) -> u32 {
-        bits_of(self.0, 0, 7)
-    }
-
-    pub fn linear_address_bits(self) -> u32 {
-        bits_of(self.0, 8, 15)
-    }
-}
-
-impl fmt::Debug for PhysicalAddressSize {
-    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        dump!(self, f, "PhysicalAddressSize", {
-            physical_address_bits,
-            linear_address_bits
-        })
-    }
-}
-
-/// Information about the currently running processor
-///
-/// Feature flags match the feature mnemonic listed in the Intel
-/// Instruction Set Reference. This struct provides a facade for flags
-/// so the consumer doesn't need to worry about which particular CPUID
-/// leaf provides the information.
-///
-/// For data beyond simple feature flags, you will need to retrieve
-/// the nested struct and call the appropriate methods on it.
-#[derive(Debug, Clone)]
-pub struct Master {
-    // TODO: Rename struct
-    version_information: Option<VersionInformation>,
-    thermal_power_management_information: Option<ThermalPowerManagementInformation>,
-    structured_extended_information: Option<StructuredExtendedInformation>,
-    extended_processor_signature: Option<ExtendedProcessorSignature>,
-    brand_string: Option<BrandString>,
-    cache_line: Option<CacheLine>,
-    time_stamp_counter: Option<TimeStampCounter>,
-    physical_address_size: Option<PhysicalAddressSize>,
-}
-
-impl Master {
-    pub fn new() -> Master {
-        fn when_supported<F, T>(max: u32, kind: RequestType, then: F) -> Option<T>
-        where
-            F: FnOnce() -> T,
-        {
-            if max >= kind as u32 {
-                Some(then())
-            } else {
-                None
-            }
-        }
-
-        let (max_value, _, _, _) = cpuid(RequestType::BasicInformation);
-
-        let vi = when_supported(max_value, RequestType::VersionInformation, || {
-            VersionInformation::new()
-        });
-        let tpm = when_supported(
-            max_value,
-            RequestType::ThermalPowerManagementInformation,
-            ThermalPowerManagementInformation::new,
-        );
-        let sei = when_supported(
-            max_value,
-            RequestType::StructuredExtendedInformation,
-            StructuredExtendedInformation::new,
-        );
-
-        // Extended information
-
-        let (max_value, _, _, _) = cpuid(RequestType::ExtendedFunctionInformation);
-
-        let eps = when_supported(max_value, RequestType::ExtendedProcessorSignature, || {
-            ExtendedProcessorSignature::new()
-        });
-        let brand_string = when_supported(max_value, RequestType::BrandString3, BrandString::new);
-        let cache_line = when_supported(max_value, RequestType::CacheLine, CacheLine::new);
-        let tsc = when_supported(max_value, RequestType::TimeStampCounter, || {
-            TimeStampCounter::new()
-        });
-        let pas = when_supported(max_value, RequestType::PhysicalAddressSize, || {
-            PhysicalAddressSize::new()
-        });
-
-        Master {
-            version_information: vi,
-            thermal_power_management_information: tpm,
-            structured_extended_information: sei,
-            extended_processor_signature: eps,
-            brand_string,
-            cache_line,
-            time_stamp_counter: tsc,
-            physical_address_size: pas,
-        }
-    }
-
-    master_attr_reader!(version_information, VersionInformation);
-    master_attr_reader!(
-        thermal_power_management_information,
-        ThermalPowerManagementInformation
-    );
-    master_attr_reader!(
-        structured_extended_information,
-        StructuredExtendedInformation
-    );
-    master_attr_reader!(extended_processor_signature, ExtendedProcessorSignature);
-    master_attr_reader!(cache_line, CacheLine);
-    master_attr_reader!(time_stamp_counter, TimeStampCounter);
-    master_attr_reader!(physical_address_size, PhysicalAddressSize);
-
-    pub fn brand_string(&self) -> Option<&str> {
-        self.brand_string
-            .as_ref()
-            .map(|bs| bs as &str)
-            .or_else(|| self.version_information.and_then(|vi| vi.brand_string()))
-    }
-
-    delegate_flag!(version_information, {
-        sse3,
-        pclmulqdq,
-        dtes64,
-        monitor,
-        ds_cpl,
-        vmx,
-        smx,
-        eist,
-        tm2,
-        ssse3,
-        cnxt_id,
-        sdbg,
-        fma,
-        cmpxchg16b,
-        xtpr_update_control,
-        pdcm,
-        pcid,
-        dca,
-        sse4_1,
-        sse4_2,
-        x2apic,
-        movbe,
-        popcnt,
-        tsc_deadline,
-        aesni,
-        xsave,
-        osxsave,
-        avx,
-        f16c,
-        rdrand,
-        fpu,
-        vme,
-        de,
-        pse,
-        tsc,
-        msr,
-        pae,
-        mce,
-        cx8,
-        apic,
-        sep,
-        mtrr,
-        pge,
-        mca,
-        cmov,
-        pat,
-        pse_36,
-        psn,
-        clfsh,
-        ds,
-        acpi,
-        mmx,
-        fxsr,
-        sse,
-        sse2,
-        ss,
-        htt,
-        tm,
-        pbe,
-    });
-
-    delegate_flag!(thermal_power_management_information, {
-        digital_temperature_sensor,
-        intel_turbo_boost,
-        arat,
-        pln,
-        ecmd,
-        ptm,
-        hwp,
-        hwp_notification,
-        hwp_activity_window,
-        hwp_energy_performance_preference,
-        hdc,
-        hardware_coordination_feedback,
-        performance_energy_bias,
-    });
-
-    delegate_flag!(structured_extended_information, {
-        fsgsbase,
-        ia32_tsc_adjust_msr,
-        bmi1,
-        hle,
-        avx2,
-        smep,
-        bmi2,
-        enhanced_rep_movsb_stosb,
-        invpcid,
-        rtm,
-        pqm,
-        deprecates_fpu_cs_ds,
-        pqe,
-        rdseed,
-        adx,
-        smap,
-        intel_processor_trace,
-        prefetchwt1
-    });
-
-    delegate_flag!(extended_processor_signature, {
-        lahf_sahf_in_64_bit,
-        lzcnt,
-        prefetchw,
-        syscall_sysret_in_64_bit,
-        execute_disable,
-        gigabyte_pages,
-        rdtscp_and_ia32_tsc_aux,
-        intel_64_bit_architecture,
-    });
-
-    delegate_flag!(time_stamp_counter, { invariant_tsc });
-}
-
-impl Default for Master {
-    fn default() -> Self {
-        Self::new()
-    }
-}
-
-/// The main entrypoint to the CPU information
-#[cfg(any(target_arch = "x86_64", target_arch = "x86"))]
-pub fn master() -> Option<Master> {
-    Some(Master::new())
-}
-
-pub fn sysinfo() {}
-
-pub fn as_bytes(v: &u32) -> &[u8] {
-    let start = v as *const u32 as *const u8;
-    // TODO: use u32::BYTES
-    unsafe { slice::from_raw_parts(start, 4) }
-}
-
-pub fn cpuid(code: RequestType) -> (u32, u32, u32, u32) {
-    let eax;
-    let ebx;
-    let ecx;
-    let edx;
-
-    unsafe {
-        asm!(
-            "movq %rbx, {0:r}",
-            "cpuid",
-            "xchgq %rbx, {0:r}",
-            lateout(reg) ebx,
-            inlateout("eax") code as u32 => eax,
-            inlateout("ecx") 0 => ecx,
-            lateout("edx") edx,
-            options(nostack, preserves_flags, att_syntax),
-        );
-    }
-
-    (eax, ebx, ecx, edx)
-}
-
-// This matches the Intel Architecture guide, with bits 31 -> 0.
-// The bit positions are inclusive.
-fn bits_of(val: u32, start_bit: u8, end_bit: u8) -> u32 {
-    let mut silly = 0;
-    for _ in start_bit..end_bit + 1 {
-        silly <<= 1;
-        silly |= 1;
-    }
-
-    (val >> start_bit) & silly
-}
-
-/*
-cfg_if! {
-    if #[cfg(any(target_arch = "x86_64", target_arch = "x86"))] {
-
-        #[test]
-        fn basic_genuine_intel() {
-            let (_, b, c, d) = cpuid(RequestType::BasicInformation);
-
-            assert_eq!(b"Genu", as_bytes(&b));
-            assert_eq!(b"ntel", as_bytes(&c));
-            assert_eq!(b"ineI", as_bytes(&d));
-        }
-
-        #[test]
-        fn brand_string_contains_intel() {
-            assert!(master().unwrap().brand_string().unwrap().contains("Intel(R)"))
-        }
-
-    } else {}
-}
-*/
diff --git a/ableos/src/arch/x86_64/drivers/timer.rs b/ableos/src/arch/x86_64/drivers/timer.rs
deleted file mode 100644
index 83d32a7..0000000
--- a/ableos/src/arch/x86_64/drivers/timer.rs
+++ /dev/null
@@ -1,2 +0,0 @@
-/// This magic value is the herts of the timer interupts normalized
-pub const TIMER_INTERRUPT_HERTZ: f64 = 1193182.0;
diff --git a/ableos/src/arch/x86_64/drivers/vga.rs b/ableos/src/arch/x86_64/drivers/vga.rs
deleted file mode 100644
index 8b13789..0000000
--- a/ableos/src/arch/x86_64/drivers/vga.rs
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/ableos/src/arch/x86_64/drivers/virtio/mod.rs b/ableos/src/arch/x86_64/drivers/virtio/mod.rs
deleted file mode 100644
index e69de29..0000000
diff --git a/ableos/src/arch/x86_64/gdt.rs b/ableos/src/arch/x86_64/gdt.rs
deleted file mode 100644
index b693293..0000000
--- a/ableos/src/arch/x86_64/gdt.rs
+++ /dev/null
@@ -1,48 +0,0 @@
-use spin::Lazy;
-use x86_64::structures::gdt::{Descriptor, GlobalDescriptorTable, SegmentSelector};
-use x86_64::structures::tss::TaskStateSegment;
-use x86_64::VirtAddr;
-
-pub const DOUBLE_FAULT_IST_INDEX: u16 = 0;
-
-struct Selectors {
-    code_selector: SegmentSelector,
-    tss_selector: SegmentSelector,
-}
-
-static TSS: Lazy<TaskStateSegment> = Lazy::new(|| {
-    let mut tss = TaskStateSegment::new();
-    tss.interrupt_stack_table[DOUBLE_FAULT_IST_INDEX as usize] = {
-        const STACK_SIZE: usize = 4096 * 5;
-        static mut STACK: [u8; STACK_SIZE] = [0; STACK_SIZE];
-
-        let stack_start = VirtAddr::from_ptr(unsafe { &STACK });
-        stack_start + STACK_SIZE
-    };
-    tss
-});
-
-static GDT: Lazy<(GlobalDescriptorTable, Selectors)> = Lazy::new(|| {
-    let mut gdt = GlobalDescriptorTable::new();
-    let code_selector = gdt.add_entry(Descriptor::kernel_code_segment());
-    let tss_selector = gdt.add_entry(Descriptor::tss_segment(&TSS));
-    (
-        gdt,
-        Selectors {
-            code_selector,
-            tss_selector,
-        },
-    )
-});
-
-pub fn init() {
-    use x86_64::instructions::segmentation::{Segment, CS};
-    use x86_64::instructions::tables::load_tss;
-
-    log::debug!("Initialising GDT");
-    GDT.0.load();
-    unsafe {
-        CS::set_reg(GDT.1.code_selector);
-        load_tss(GDT.1.tss_selector);
-    }
-}
diff --git a/ableos/src/arch/x86_64/init.rs b/ableos/src/arch/x86_64/init.rs
deleted file mode 100644
index 1cf801a..0000000
--- a/ableos/src/arch/x86_64/init.rs
+++ /dev/null
@@ -1,38 +0,0 @@
-// #![allow(clippy::print_literal)]
-use super::{gdt, interrupts};
-// use crate::{logger, serial_println, TERM};
-use crate::{logger, serial_println};
-
-/// x86_64 initialization
-pub fn init() {
-    // use crate::{network::socket::SimpleSock, relib::network::socket::Socket};
-
-    // let mut log_socket_id = SimpleSock::new();
-    // log_socket_id.register_protocol("Logger".to_string());
-
-    let result = logger::init();
-    match result {
-        Ok(_) => {
-            info!("Logger initialized");
-        }
-        Err(err) => serial_println!("{}", err),
-    }
-
-    trace!("gdt");
-    gdt::init();
-
-    trace!("idt");
-    interrupts::init_idt();
-    unsafe { interrupts::PICS.lock().initialize() };
-
-    // trace!("term");
-    // let term = &*TERM;
-    // trace!("term.lock()");
-    // let mut term = term.lock();
-    // term.initialize();
-    // term.set_dirty(true);
-    // term.draw_term();
-    // drop(term);
-
-    x86_64::instructions::interrupts::enable();
-}
diff --git a/ableos/src/arch/x86_64/interrupts.rs b/ableos/src/arch/x86_64/interrupts.rs
deleted file mode 100644
index 3ee396c..0000000
--- a/ableos/src/arch/x86_64/interrupts.rs
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- * Copyright (c) 2022, able <abl3theabove@gmail.com>
- *
- * SPDX-License-Identifier: MPL-2.0
- */
-
-use core::panic::PanicInfo;
-
-use crate::{arch::gdt, println, rhai_shell::KEYBUFF};
-use cpuio::outb;
-use pic8259::ChainedPics;
-use qrcode::QrCode;
-use seq_macro::seq;
-use spin::Lazy;
-use x86_64::{
-    registers::control::Cr2,
-    structures::idt::{InterruptDescriptorTable, InterruptStackFrame, PageFaultErrorCode},
-};
-
-use super::sloop;
-
-pub const PIC_1_OFFSET: u8 = 32;
-pub const PIC_2_OFFSET: u8 = PIC_1_OFFSET + 8;
-
-pub static PICS: spin::Mutex<ChainedPics> =
-    spin::Mutex::new(unsafe { ChainedPics::new(PIC_1_OFFSET, PIC_2_OFFSET) });
-
-/// Interrupt offsets.
-#[derive(Debug, Clone, Copy)]
-#[repr(u8)]
-pub enum InterruptIndex {
-    Timer = PIC_1_OFFSET,
-    Keyboard,
-    /// Mouse offset
-    Mouse = 44,
-
-    /// Disk offset
-    Disk = 46,
-
-    // SecondInterrupt = PIC_2_OFFSET,
-    Cmos = 0x70,
-}
-
-impl InterruptIndex {
-    fn as_u8(self) -> u8 {
-        self as u8
-    }
-    fn as_usize(self) -> usize {
-        usize::from(self.as_u8())
-    }
-}
-
-static IDT: Lazy<InterruptDescriptorTable> = Lazy::new(|| {
-    reset_pit_for_cpu();
-    let mut idt = InterruptDescriptorTable::new();
-
-    seq!(N in 32..=255 {
-        idt[N].set_handler_fn(undefined_handler_~N);
-    });
-
-    idt.breakpoint.set_handler_fn(breakpoint_handler);
-    idt.page_fault.set_handler_fn(page_fault_handler);
-    unsafe {
-        idt.double_fault
-            .set_handler_fn(double_fault_handler)
-            .set_stack_index(gdt::DOUBLE_FAULT_IST_INDEX);
-    }
-
-    idt[InterruptIndex::Timer.as_usize()].set_handler_fn(timer_interrupt_handler);
-    idt[InterruptIndex::Keyboard.as_usize()].set_handler_fn(keyboard_interrupt_handler);
-    idt[InterruptIndex::Mouse.as_usize()].set_handler_fn(crate::hardware::mouse_interrupt_handler);
-
-    // run `a + b + l + e + o + s print;` in ablescript and its 54 thats why this seemingly arbitrary number was chosen
-    idt[54].set_handler_fn(software_int_handler);
-
-    idt
-});
-
-seq!(N in 32..=255 {
-    extern "x86-interrupt" fn undefined_handler_~N(stack_frame: InterruptStackFrame) {
-        error!("INT {}: {:?}", N, stack_frame);
-        unsafe {
-            PICS.lock()
-                .notify_end_of_interrupt(N);
-        }
-    }
-});
-
-extern "x86-interrupt" fn software_int_handler(stack_frame: InterruptStackFrame) {
-    trace!("EXCEPTION: SOFTWARE INT\n{:#?}", stack_frame);
-    unsafe {
-        PICS.lock().notify_end_of_interrupt(54);
-    }
-}
-
-extern "x86-interrupt" fn breakpoint_handler(stack_frame: InterruptStackFrame) {
-    trace!("EXCEPTION: BREAKPOINT\n{:#?}", stack_frame);
-}
-
-extern "x86-interrupt" fn page_fault_handler(
-    stack_frame: InterruptStackFrame,
-    error_code: PageFaultErrorCode,
-) {
-    error!("EXCEPTION: PAGE FAULT {error_code:?}\n{:#?}", stack_frame);
-    trace!("CR2: {:x}", Cr2::read_raw());
-    trace!("SCREE");
-    loop {}
-}
-
-extern "x86-interrupt" fn double_fault_handler(
-    stack_frame: InterruptStackFrame,
-    // NOTE(able): ignore this always is 0
-    _error_code: u64,
-) -> ! {
-    // bsod(BSODSource::DoubleFault(&stack_frame));
-    panic!("EXCEPTION: DOUBLE FAULT\n{:#?}", stack_frame);
-}
-
-/* SAFETY
-* DO NOT TOUCH
-* The `#[naked]` macro removes various error/bounds checks that
-* the Rust compiler would normally add.
-* *Early return* and *enabling interrupts* in this function are
-* undefined behavior.
-* As long as nothing in this function does something that would
-* normally trigger an error, this function is relatively safe.
-*/
-extern "x86-interrupt" fn timer_interrupt_handler(_stack_frame: InterruptStackFrame) {
-    crate::kmain::tick();
-    unsafe {
-        PICS.lock()
-            .notify_end_of_interrupt(InterruptIndex::Timer.as_u8());
-    }
-}
-
-extern "x86-interrupt" fn keyboard_interrupt_handler(_stack_frame: InterruptStackFrame) {
-    use pc_keyboard::{
-        layouts::Us104Key, DecodedKey, HandleControl, KeyCode, Keyboard, ScancodeSet1,
-    };
-    use spin::Mutex;
-    use x86_64::instructions::port::Port;
-
-    static KEYBOARD: Lazy<Mutex<Keyboard<Us104Key, ScancodeSet1>>> =
-        Lazy::new(|| Mutex::new(Keyboard::new(Us104Key, ScancodeSet1, HandleControl::Ignore)));
-
-    let mut keyboard = KEYBOARD.lock();
-    if let Ok(Some(key)) = keyboard
-        .add_byte(unsafe { Port::new(0x60).read() })
-        .map(|x| x.and_then(|ev| keyboard.process_keyevent(ev)))
-    {
-        // trace!("{key:?}");
-        match key {
-            DecodedKey::Unicode(chr) => match chr {
-                '\n' => {
-                    KEYBUFF.lock().push('\n');
-                }
-                // Backspace
-                '\u{8}' => {
-                    // TODO: Fix this and apply to new term
-
-                    KEYBUFF.lock().push(8.into());
-                    // trace!("8");
-                    // print!("\u{8}");
-                }
-                // '^' => KERNEL_STATE.lock().shutdown(),
-                chr => {
-                    KEYBUFF.lock().push(chr);
-                    // trace!("{chr}");
-                    // print!("{chr}");
-                }
-            },
-            DecodedKey::RawKey(key) => {
-                use KeyCode::*;
-                match KeyCode::from(key) {
-                    AltLeft | AltRight => (),
-                    ArrowDown | ArrowRight | ArrowLeft | ArrowUp => {
-                        // warn!("ArrowKeys are unsupported currently");
-                    }
-
-                    _kc => {
-                        // trace!("Unprintable key: {kc:?}"),
-                    }
-                };
-            }
-        }
-    }
-
-    unsafe {
-        PICS.lock()
-            .notify_end_of_interrupt(InterruptIndex::Keyboard.as_u8());
-    }
-}
-
-pub fn init_idt() {
-    IDT.load();
-}
-
-/// https://wiki.osdev.org/Pit
-///
-const PIT_MAX_FREQ: u32 = 1193182;
-
-pub fn set_pit_frequency(pit: u16, freq: u32) {
-    // Dividing the maximum frequency by the desired frequency
-    // gives roughly what the maximum value for the timer
-    // counter should be to run at the desired frequency.
-    let ret = (PIT_MAX_FREQ / freq).try_into();
-
-    // Type-bounded counter maximum.
-    let divisor: u16 = match ret {
-        Ok(div) => div,
-        Err(err) => {
-            error!("{}", err);
-
-            warn!("Defaulting to 1000 on PIT{}", pit);
-            1000
-        }
-    };
-
-    unsafe {
-        outb(0x36, 0x43);
-
-        outb((divisor & 0xFF) as u8, 0x39 + pit);
-        outb((divisor >> 8) as u8, 0x40 + pit);
-    }
-}
-pub fn set_pit_1(freq: u32) {
-    set_pit_frequency(1, freq);
-}
-pub fn set_pit_2(freq: u32) {
-    set_pit_frequency(2, freq);
-}
-
-pub fn set_pit_3(freq: u32) {
-    set_pit_frequency(3, freq);
-}
-
-pub fn reset_pit_for_cpu() {
-    set_pit_1(1000);
-    set_pit_2(1000);
-    set_pit_3(1000);
-}
-pub fn bsod(src: BSODSource) -> ! {
-    let src1 = match src {
-        BSODSource::DoubleFault(_) => "DoubleFault".to_string(),
-        BSODSource::Panic(panic_info) => {
-            let strr = format!("PANIC: {}", panic_info);
-            strr
-        }
-    };
-
-    let st = format!(
-        "We fucked up ඞ : \n{}\nThe following qr code will link you to the wiki which hopefully solves your problems",
-        src1
-    );
-
-    println!("\n{}", st);
-
-    // let sf = format!("https://git.ablecorp.us/able/ableos/wiki/Double-Faults");
-
-    let sd = match src {
-        BSODSource::DoubleFault(_) => "https://git.ablecorp.us/able/ableos/wiki/Double-Faults",
-        BSODSource::Panic(_) => {
-            trace!("panic");
-            "https://git.ablecorp.us/able/ableos/wiki/Panic"
-        }
-    };
-
-    let code = QrCode::new(sd).unwrap();
-
-    let image = code
-        .render::<char>()
-        .quiet_zone(false)
-        .module_dimensions(2, 1)
-        .build();
-
-    println!("{}", image);
-
-    sloop();
-}
-
-#[derive(Debug)]
-pub enum BSODSource<'a> {
-    DoubleFault(&'a InterruptStackFrame),
-    Panic(&'a PanicInfo<'a>),
-}
diff --git a/ableos/src/arch/x86_64/memory.rs b/ableos/src/arch/x86_64/memory.rs
deleted file mode 100644
index c349404..0000000
--- a/ableos/src/arch/x86_64/memory.rs
+++ /dev/null
@@ -1,62 +0,0 @@
-use limine::{LimineMemmapResponse, LimineMemoryMapEntryType};
-use x86_64::{
-    structures::paging::{
-        FrameAllocator, FrameDeallocator, OffsetPageTable, PageTable, PhysFrame,
-        Size4KiB,
-    },
-    PhysAddr, VirtAddr,
-};
-
-pub unsafe fn init(physical_memory_offset: VirtAddr) -> OffsetPageTable<'static> {
-    let level_4_table = active_level_4_table(physical_memory_offset);
-    OffsetPageTable::new(level_4_table, physical_memory_offset)
-}
-
-unsafe fn active_level_4_table(physical_memory_offset: VirtAddr) -> &'static mut PageTable {
-    use x86_64::registers::control::Cr3;
-
-    let (level_4_table_frame, _) = Cr3::read();
-
-    let phys = level_4_table_frame.start_address();
-    let virt = physical_memory_offset + phys.as_u64();
-    let page_table_ptr: *mut PageTable = virt.as_mut_ptr();
-
-    // THIS IS UNSAFE
-    &mut *page_table_ptr
-}
-
-pub struct BootInfoFrameAllocator {
-    memory_map: &'static LimineMemmapResponse,
-    next: usize,
-}
-
-impl BootInfoFrameAllocator {
-    pub unsafe fn init(memory_map: &'static LimineMemmapResponse) -> Self {
-        Self {
-            memory_map,
-            next: 0,
-        }
-    }
-
-    fn usable_frames(&self) -> impl Iterator<Item = PhysFrame> {
-        self.memory_map.mmap().unwrap().iter()
-            .filter(|r| r.typ == LimineMemoryMapEntryType::Usable)
-            .map(|r| r.base..r.base + r.len)
-            .flat_map(|r| r.step_by(4096))
-            .map(|addr| PhysFrame::containing_address(PhysAddr::new(addr)))
-    }
-}
-
-unsafe impl FrameAllocator<Size4KiB> for BootInfoFrameAllocator {
-    fn allocate_frame(&mut self) -> Option<PhysFrame<Size4KiB>> {
-        let frame = self.usable_frames().nth(self.next);
-        self.next += 1;
-        frame
-    }
-}
-
-impl FrameDeallocator<Size4KiB> for BootInfoFrameAllocator {
-    unsafe fn deallocate_frame(&mut self, _frame: PhysFrame<Size4KiB>) {
-        // TODO
-    }
-}
diff --git a/ableos/src/arch/x86_64/mod.rs b/ableos/src/arch/x86_64/mod.rs
deleted file mode 100644
index b88e0e3..0000000
--- a/ableos/src/arch/x86_64/mod.rs
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2022, able <abl3theabove@gmail.com>
- *
- * SPDX-License-Identifier: MPL-2.0
- */
-
-pub mod drivers;
-pub mod gdt;
-pub mod init;
-pub mod interrupts;
-pub mod memory;
-
-use limine::*;
-use x86_64::{instructions::hlt, VirtAddr};
-
-use crate::serial_println;
-
-use self::drivers::allocator;
-
-static HHDM: LimineHhdmRequest = LimineHhdmRequest::new(0);
-static MMAP: LimineMmapRequest = LimineMmapRequest::new(0);
-
-#[no_mangle]
-pub fn x86_64_start() -> ! {
-    let hhdm = HHDM.get_response().get().unwrap();
-    let mmap = MMAP.get_response().get().unwrap();
-    let phys_mem_offset = VirtAddr::new(hhdm.offset);
-
-    let mut mapper = unsafe { memory::init(phys_mem_offset) };
-    let mut frame_allocator = unsafe { memory::BootInfoFrameAllocator::init(mmap) };
-
-    allocator::init_heap(&mut mapper, &mut frame_allocator).expect("heap initialization failed");
-
-    crate::kmain::kernel_main(mapper, frame_allocator);
-}
-
-#[allow(unused)]
-pub fn shutdown() -> ! {
-    info!("Shutting down");
-    unsafe {
-        cpuio::outw(0x2000, 0x604);
-    }
-
-    sloop();
-}
-
-pub fn sloop() -> ! {
-    loop {
-        hlt();
-    }
-}
-
-// TODO: Split up into the randomness and the password generation
-pub fn generate_process_pass() -> u128 {
-    // TODO: Move this into entropy_pool module
-    use rdrand::RdRand;
-    let gen = RdRand::new().unwrap();
-
-    (gen.try_next_u64().unwrap() as u128) << 64 | (gen.try_next_u64().unwrap() as u128)
-}
diff --git a/ableos/src/boot_conf.rs b/ableos/src/boot_conf.rs
deleted file mode 100644
index 19a5217..0000000
--- a/ableos/src/boot_conf.rs
+++ /dev/null
@@ -1,72 +0,0 @@
-use log::LevelFilter;
-use serde::{Deserialize, Serialize};
-
-#[derive(Serialize, Debug, Deserialize)]
-pub enum LogLevel {
-    /// A level lower than all log levels.
-    Off,
-    /// Corresponds to the `Error` log level.
-    Error,
-    /// Corresponds to the `Warn` log level.
-    Warn,
-    /// Corresponds to the `Info` log level.
-    Info,
-    /// Corresponds to the `Debug` log level.
-    Debug,
-    /// Corresponds to the `Trace` log level.
-    Trace,
-}
-
-#[derive(Serialize, Debug, Deserialize)]
-pub struct KernelConfig {
-    pub logging: LoggingConfig,
-}
-
-impl KernelConfig {
-    pub fn new() -> Self {
-        KernelConfig::default()
-    }
-    pub fn load_from_string(toml_string: &str) -> Self {
-        match toml::from_str(toml_string) {
-            Ok(kernel_conf) => kernel_conf,
-            Err(err) => {
-                error!("Error {}", err);
-                KernelConfig::new()
-            }
-        }
-    }
-    pub fn log_level(&self) -> LevelFilter {
-        use LevelFilter::*;
-        match self.logging.level {
-            LogLevel::Off => Off,
-            LogLevel::Error => Error,
-            LogLevel::Warn => Warn,
-            LogLevel::Info => Info,
-            LogLevel::Debug => Debug,
-            LogLevel::Trace => Trace,
-        }
-    }
-}
-
-impl Default for KernelConfig {
-    fn default() -> Self {
-        Self {
-            logging: LoggingConfig {
-                enabled: true,
-                log_to_serial: true,
-                log_to_vterm: false,
-                level: LogLevel::Trace,
-                filter: Vec::new(),
-            },
-        }
-    }
-}
-
-#[derive(Serialize, Debug, Deserialize)]
-pub struct LoggingConfig {
-    pub enabled: bool,
-    pub log_to_serial: bool,
-    pub log_to_vterm: bool,
-    pub level: LogLevel,
-    pub filter: Vec<String>,
-}
diff --git a/ableos/src/device_interface/block.rs b/ableos/src/device_interface/block.rs
deleted file mode 100644
index 9a24cc3..0000000
--- a/ableos/src/device_interface/block.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-//! Block device interface
-
-/// Block device interface
-pub trait BlockDevice {
-    // TODO
-}
diff --git a/ableos/src/device_interface/character/mod.rs b/ableos/src/device_interface/character/mod.rs
deleted file mode 100644
index 97d4050..0000000
--- a/ableos/src/device_interface/character/mod.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-//!
-
-/// Character device interface.
-pub trait CharacterDevice {
-    /// Returns true if the device can be read from.
-    fn can_read(&self) -> bool;
-
-    /// Returns true if the device can be written to
-    fn can_write(&self) -> bool;
-
-    /// Reads a single character from the device
-    fn read_char(&mut self) -> Option<char>;
-
-    /// Writes a single character to the device and returns true if the write was successful
-    fn write_char(&mut self, c: char) -> bool;
-
-    /// Reset the device to its initial state
-    fn reset(&mut self);
-
-    /// initializes the device, returns true if successful
-    fn initialize(&mut self) -> bool;
-}
diff --git a/ableos/src/device_interface/mod.rs b/ableos/src/device_interface/mod.rs
deleted file mode 100644
index 5306d1b..0000000
--- a/ableos/src/device_interface/mod.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-//! Platform Agnostic Device
-
-mod block;
-mod character;
-
-pub use block::BlockDevice;
-pub use character::CharacterDevice;
diff --git a/ableos/src/devices/character_devs/dev_null.rs b/ableos/src/devices/character_devs/dev_null.rs
deleted file mode 100644
index 1643b49..0000000
--- a/ableos/src/devices/character_devs/dev_null.rs
+++ /dev/null
@@ -1,29 +0,0 @@
-use crate::device_interface::CharacterDevice;
-
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
-pub struct DevNull;
-impl CharacterDevice for DevNull {
-    fn can_read(&self) -> bool {
-        true
-    }
-
-    fn can_write(&self) -> bool {
-        true
-    }
-
-    fn read_char(&mut self) -> Option<char> {
-        Some(0x00 as char)
-    }
-
-    fn write_char(&mut self, _: char) -> bool {
-        true
-    }
-
-    fn reset(&mut self) {
-        todo!()
-    }
-
-    fn initialize(&mut self) -> bool {
-        todo!()
-    }
-}
diff --git a/ableos/src/devices/character_devs/dev_unicode.rs b/ableos/src/devices/character_devs/dev_unicode.rs
deleted file mode 100644
index c3aafef..0000000
--- a/ableos/src/devices/character_devs/dev_unicode.rs
+++ /dev/null
@@ -1,49 +0,0 @@
-use crate::device_interface::CharacterDevice;
-
-#[derive(Debug)]
-pub struct DevUnicode {
-    pub next_write_char: char,
-    pub next_read_char: char,
-}
-
-impl CharacterDevice for DevUnicode {
-    fn can_read(&self) -> bool {
-        true
-    }
-
-    fn can_write(&self) -> bool {
-        true
-    }
-
-    fn read_char(&mut self) -> Option<char> {
-        let c = self.next_read_char;
-        self.next_read_char = add1_char(c);
-
-        Some(c)
-    }
-
-    fn write_char(&mut self, c: char) -> bool {
-        if self.next_write_char != c {
-            return false;
-        }
-
-        true
-    }
-
-    fn reset(&mut self) {
-        self.next_write_char = 0x00 as char;
-        self.next_read_char = 0x00 as char;
-    }
-
-    fn initialize(&mut self) -> bool {
-        true
-    }
-}
-
-fn add1_char(c: char) -> char {
-    if c == char::MAX {
-        return 0x00 as char;
-    }
-
-    char::from_u32(c as u32 + 1).unwrap()
-}
diff --git a/ableos/src/devices/character_devs/dev_zero.rs b/ableos/src/devices/character_devs/dev_zero.rs
deleted file mode 100644
index b6a6844..0000000
--- a/ableos/src/devices/character_devs/dev_zero.rs
+++ /dev/null
@@ -1,27 +0,0 @@
-use crate::device_interface::CharacterDevice;
-
-#[derive(Debug)]
-pub struct DevZero;
-impl CharacterDevice for DevZero {
-    fn can_read(&self) -> bool {
-        true
-    }
-
-    fn can_write(&self) -> bool {
-        true
-    }
-
-    fn read_char(&mut self) -> Option<char> {
-        Some(0 as char)
-    }
-
-    fn write_char(&mut self, _: char) -> bool {
-        true
-    }
-
-    fn reset(&mut self) {}
-
-    fn initialize(&mut self) -> bool {
-        true
-    }
-}
diff --git a/ableos/src/devices/character_devs/mod.rs b/ableos/src/devices/character_devs/mod.rs
deleted file mode 100644
index 806d284..0000000
--- a/ableos/src/devices/character_devs/mod.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-pub mod dev_null;
-pub mod dev_unicode;
-pub mod dev_zero;
-
-pub use crate::device_interface::CharacterDevice;
diff --git a/ableos/src/devices/dev_vterm.rs b/ableos/src/devices/dev_vterm.rs
deleted file mode 100644
index ec4082c..0000000
--- a/ableos/src/devices/dev_vterm.rs
+++ /dev/null
@@ -1,265 +0,0 @@
-// ! A virtual terminal device.
-
-use crate::device_interface::CharacterDevice;
-use core::ops::Not;
-use core::sync::atomic::AtomicU32;
-use core::sync::atomic::Ordering;
-
-use crate::pixel_format::Rgba64;
-
-pub const VTERM_HEIGHT: u32 = 40;
-pub const VTERM_WIDTH: u32 = 100;
-
-pub static VIRTUAL_TERMINAL_COUNT: AtomicU32 = AtomicU32::new(0);
-
-/// Fg and bg colors for vterm
-pub type ColorCharacter = (Rgba64, Rgba64);
-
-/// A vterm representation of a character
-#[derive(Debug, Clone, Copy)]
-pub struct VtermCharacter {
-    pub character: char,
-    //
-    pub style: Style,
-    //
-    pub char_color: ColorCharacter,
-}
-
-#[derive(Default, Debug, Clone, Copy)]
-
-pub struct Style(pub u8);
-impl Style {
-    pub fn bold(&self) -> bool {
-        (self.0 & 0x01) > 0
-    }
-
-    pub fn underlined(&self) -> bool {
-        (self.0 & 0x02) > 0
-    }
-
-    pub fn italic(&self) -> bool {
-        (self.0 & 0x04) > 0
-    }
-
-    pub fn blinking(&self) -> bool {
-        (self.0 & 0x08) > 0
-    }
-
-    pub fn reversed(&self) -> bool {
-        (self.0 & 0x10) > 0
-    }
-
-    pub fn struck(&self) -> bool {
-        (self.0 & 0x20) > 0
-    }
-
-    #[must_use]
-    pub fn set_bold(mut self, v: bool) -> Self {
-        if v {
-            self.0 |= 0x01;
-        } else {
-            self.0 &= 0x01u8.not();
-        }
-        self
-    }
-
-    #[must_use]
-    pub fn set_underlined(mut self, v: bool) -> Self {
-        if v {
-            self.0 |= 0x02;
-        } else {
-            self.0 &= 0x02u8.not();
-        }
-        self
-    }
-
-    #[must_use]
-    pub fn set_italic(mut self, v: bool) -> Self {
-        if v {
-            self.0 |= 0x04;
-        } else {
-            self.0 &= 0x04u8.not();
-        }
-        self
-    }
-
-    #[must_use]
-    pub fn set_blinking(mut self, v: bool) -> Self {
-        if v {
-            self.0 |= 0x08;
-        } else {
-            self.0 &= 0x08u8.not();
-        }
-        self
-    }
-
-    #[must_use]
-    pub fn set_reversed(mut self, v: bool) -> Self {
-        if v {
-            self.0 |= 0x10;
-        } else {
-            self.0 &= 0x10u8.not();
-        }
-        self
-    }
-
-    #[must_use]
-    pub fn set_struck(mut self, v: bool) -> Self {
-        if v {
-            self.0 |= 0x20;
-        } else {
-            self.0 &= 0x20u8.not();
-        }
-        self
-    }
-}
-
-#[derive(Debug)]
-pub struct VTerm {
-    pub characters: [[VtermCharacter; VTERM_WIDTH as usize]; VTERM_HEIGHT as usize],
-    pub cursor_visible: bool,
-
-    /// Internal ID of the vterm
-    iid: u32,
-
-    /// The internal representation of the vterm
-    style: Style,
-
-    /// The cursor position in layout x,y
-    cursor_position: (u32, u32),
-    key_buff: Vec<char>,
-}
-
-impl Default for VTerm {
-    fn default() -> Self {
-        VTerm {
-            iid: 0,
-            characters: [[VtermCharacter {
-                character: 0x00 as char,
-                char_color: (0xff_ff_ff_ff, 0x00_00_00_00),
-                style: Style::default(),
-            }; VTERM_WIDTH as usize]; VTERM_HEIGHT as usize],
-            cursor_position: (0, 0),
-            cursor_visible: true,
-            style: Style::default(),
-            key_buff: vec![],
-        }
-    }
-}
-
-/// The primitive interface for a vterm
-impl VTerm {
-    pub fn new() -> Self {
-        let mut vterm = VTerm::default();
-        let mut vtc = VIRTUAL_TERMINAL_COUNT.load(Ordering::Relaxed);
-        vterm.iid = vtc;
-        vtc += 1;
-        VIRTUAL_TERMINAL_COUNT.store(vtc, Ordering::Relaxed);
-
-        vterm
-    }
-    /// Set the vterm cursor to the given position
-    pub fn set_cursor_position(&mut self, x: u32, y: u32) {
-        if x > VTERM_WIDTH {
-            self.cursor_position.0 = VTERM_WIDTH;
-            error!("Cursor x position out of bounds");
-        } else {
-            self.cursor_position.0 = x;
-        }
-        if y > VTERM_HEIGHT {
-            error!("Cursor y position out of bounds");
-            self.cursor_position.1 = VTERM_HEIGHT;
-        } else {
-            self.cursor_position.1 = y;
-        }
-    }
-
-    /// Set the vterm style
-    pub fn set_vterm_style(&mut self, style: Style) {
-        self.style = style;
-    }
-}
-
-impl CharacterDevice for VTerm {
-    fn can_read(&self) -> bool {
-        true
-    }
-
-    fn can_write(&self) -> bool {
-        true
-    }
-
-    fn read_char(&mut self) -> Option<char> {
-        if let Some(c) = self.key_buff.pop() {
-            return Some(c);
-        }
-        None
-    }
-
-    fn write_char(&mut self, c: char) -> bool {
-        match c {
-            '\n' => {
-                self.cursor_position.1 += 1;
-                self.cursor_position.0 = 0;
-                true
-            }
-            '\r' => {
-                self.cursor_position.0 = 0;
-                true
-            }
-            '\t' => {
-                self.cursor_position.0 += 4;
-                true
-            }
-            '\x08' => {
-                self.cursor_position.0 -= 1;
-                self.characters[self.cursor_position.1 as usize][self.cursor_position.0 as usize]
-                    .character = ' ';
-                true
-            }
-            // This is a form feed, which is used to clear the screen
-            '\x0c' => {
-                self.characters = [[VtermCharacter {
-                    character: ' ',
-                    char_color: (0xff_ff_ff_ff, 0x00_00_00_00),
-                    style: Style::default(),
-                }; VTERM_WIDTH as usize]; VTERM_HEIGHT as usize];
-                true
-            }
-
-            _ => {
-                self.characters[self.cursor_position.1 as usize][self.cursor_position.0 as usize]
-                    .character = c;
-                self.characters[self.cursor_position.1 as usize][self.cursor_position.0 as usize]
-                    .char_color = (0xff_ff_ff_ff, 0x00_00_00_00);
-                self.characters[self.cursor_position.1 as usize][self.cursor_position.0 as usize]
-                    .style = self.style;
-
-                if self.cursor_position.0 < VTERM_WIDTH {
-                    self.cursor_position.0 += 1;
-                    true
-                } else {
-                    self.cursor_position.0 = 0;
-                    self.cursor_position.1 += 1;
-                    true
-                }
-            }
-        }
-    }
-
-    fn reset(&mut self) {
-        self.characters = [[VtermCharacter {
-            character: ' ',
-            char_color: (0xff_ff_ff_ff, 0x00_00_00_00),
-            style: Style::default(),
-        }; VTERM_WIDTH as usize]; VTERM_HEIGHT as usize];
-
-        self.cursor_position = (0, 0);
-        self.cursor_visible = true;
-        self.style = Style::default();
-    }
-
-    fn initialize(&mut self) -> bool {
-        true
-    }
-}
diff --git a/ableos/src/devices/id.rs b/ableos/src/devices/id.rs
deleted file mode 100644
index cfff8a2..0000000
--- a/ableos/src/devices/id.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-#[derive(Debug)]
-pub enum Vendor {
-    Unknown = 0,
-    Ati = 1002,
-}
-
-pub fn match_vendor(id: u16) -> Vendor {
-    use Vendor::*;
-
-    match id {
-        1002 => Ati,
-        _ => Unknown,
-    }
-}
diff --git a/ableos/src/devices/mod.rs b/ableos/src/devices/mod.rs
deleted file mode 100644
index d69885c..0000000
--- a/ableos/src/devices/mod.rs
+++ /dev/null
@@ -1,59 +0,0 @@
-pub mod character_devs;
-mod dev_vterm;
-
-pub mod id;
-pub mod pci;
-
-pub use self::Device::*;
-
-use crate::device_interface::{BlockDevice, CharacterDevice};
-use crate::devices::dev_vterm::VTerm;
-use character_devs::{dev_null::DevNull, dev_unicode::DevUnicode, dev_zero::DevZero};
-use hashbrown::HashMap;
-use spin::Lazy;
-
-pub static DEVICE_TABLE: Lazy<spin::Mutex<DeviceTable>> =
-    Lazy::new(|| spin::Mutex::new(DeviceTable::new()));
-
-// FIXME: This is a hack to hold a device.
-// #[derive(Debug)]
-pub enum Device {
-    Block(Box<dyn BlockDevice>),
-    Character(Box<dyn CharacterDevice>),
-    Vterm(Box<VTerm>),
-}
-
-unsafe impl Sync for Device {}
-unsafe impl Send for Device {}
-
-pub struct DeviceTable {
-    pub devices: HashMap<String, Device>,
-}
-
-impl DeviceTable {
-    pub fn new() -> Self {
-        DeviceTable {
-            devices: [
-                ("null", Character(Box::new(DevNull))),
-                ("zero", Character(Box::new(DevZero))),
-                (
-                    "unicode",
-                    Character(Box::new(DevUnicode {
-                        next_write_char: 0x00 as char,
-                        next_read_char: 0x00 as char,
-                    })),
-                ),
-                ("kvterm", Vterm(Box::new(VTerm::new()))),
-            ]
-            .into_iter()
-            .map(|(k, v)| (k.to_string(), v))
-            .collect(),
-        }
-    }
-}
-
-impl Default for DeviceTable {
-    fn default() -> Self {
-        Self::new()
-    }
-}
diff --git a/ableos/src/devices/pci/class.rs b/ableos/src/devices/pci/class.rs
deleted file mode 100644
index 5cbddbf..0000000
--- a/ableos/src/devices/pci/class.rs
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * Copyright (c) 2022, able <abl3theabove@gmail.com>
- * Copyright (c) 2022, Umut Ä°nan ErdoÄŸan <umutinanerdogan@pm.me>
- *
- * SPDX-License-Identifier: MPL-2.0
- */
-
-use core::fmt::Display;
-
-#[allow(non_camel_case_types, dead_code)]
-#[derive(Debug, Clone, Copy, PartialEq)]
-#[repr(C)]
-/// Class specification for a PCI device
-pub enum PciClass {
-    Unclassified = 0x00,
-    MassStorage = 0x01,
-    Network = 0x02,
-    Display = 0x03,
-    Multimedia = 0x04,
-    Memory = 0x05,
-    Bridge = 0x06,
-    Unknown = 0xFF,
-}
-
-impl From<u8> for PciClass {
-    /// Convert a u8 into the corresponding PciClass
-    fn from(n: u8) -> Self {
-        use PciClass::*;
-        match n {
-            0x00 => Unclassified,
-            0x01 => MassStorage,
-            0x02 => Network,
-            0x03 => Display,
-            0x04 => Multimedia,
-            0x05 => Memory,
-            0x06 => Bridge,
-            _ => Unknown,
-        }
-    }
-}
-
-#[allow(non_camel_case_types, dead_code)]
-#[derive(Debug, Clone, Copy, PartialEq)]
-#[repr(C)]
-/// Full class specification (type and subtype) for a PCI device.
-///
-/// Uses non-camel-case types for readability.
-pub enum PciFullClass {
-    Unclassified_NonVgaCompatible = 0x0000,
-    Unclassified_VgaCompatible = 0x0001,
-
-    MassStorage_ScsiBus = 0x0100,
-    MassStorage_IDE = 0x0101,
-    MassStorage_Floppy = 0x0102,
-    MassStorage_IpiBus = 0x0103,
-    MassStorage_RAID = 0x0104,
-    MassStorage_ATA = 0x0105,
-    MassStorage_SATA = 0x0106,
-    MassStorage_SerialSCSI = 0x0107,
-    MassStorage_NVM = 0x0108,
-    MassStorage_Other = 0x0180,
-
-    Network_Ethernet = 0x0200,
-    Network_TokenRing = 0x0201,
-    Network_FDDI = 0x0202,
-    Network_ATM = 0x0203,
-    Network_ISDN = 0x0204,
-    Network_WorldFlip = 0x0205,
-    Network_PICMG = 0x0206,
-    Network_Infiniband = 0x0207,
-    Network_Fabric = 0x0208,
-    Network_Other = 0x0280,
-
-    Display_VGA = 0x0300,
-    Display_XGA = 0x0301,
-    Display_3D = 0x0302,
-    Display_Other = 0x0380,
-
-    Multimedia_Video = 0x0400,
-    Multimedia_AudioController = 0x0401,
-    Multimedia_Telephony = 0x0402,
-    Multimedia_AudioDevice = 0x0403,
-    Multimedia_Other = 0x0480,
-
-    Memory_RAM = 0x0500,
-    Memory_Flash = 0x0501,
-    Memory_Other = 0x0580,
-
-    Bridge_Host = 0x0600,
-    Bridge_ISA = 0x0601,
-    Bridge_EISA = 0x0602,
-    Bridge_MCA = 0x0603,
-    Bridge_PciToPci = 0x0604,
-    Bridge_PCMCIA = 0x0605,
-    Bridge_NuBus = 0x0606,
-    Bridge_CardBus = 0x0607,
-    Bridge_RACEway = 0x0608,
-    Bridge_PciToPciSemiTransparent = 0x0609,
-    Bridge_InfinibandToPci = 0x060A,
-    Bridge_Other = 0x0680,
-
-    Unknown = 0xFFFF,
-}
-
-impl PciFullClass {
-    // listen, i know this sucks, but i didn't want to include
-    // `num`, `num-traits` and `num-derive` as dependencies for
-    // this crate just for a convenience function
-    /// Convert a u16 into the corresponding PciFullClass
-    pub fn from_u16(n: u16) -> PciFullClass {
-        match n {
-            0x0000 => PciFullClass::Unclassified_NonVgaCompatible,
-            0x0001 => PciFullClass::Unclassified_VgaCompatible,
-
-            0x0100 => PciFullClass::MassStorage_ScsiBus,
-            0x0101 => PciFullClass::MassStorage_IDE,
-            0x0102 => PciFullClass::MassStorage_Floppy,
-            0x0103 => PciFullClass::MassStorage_IpiBus,
-            0x0104 => PciFullClass::MassStorage_RAID,
-            0x0105 => PciFullClass::MassStorage_ATA,
-            0x0106 => PciFullClass::MassStorage_SATA,
-            0x0107 => PciFullClass::MassStorage_SerialSCSI,
-            0x0108 => PciFullClass::MassStorage_NVM,
-            0x0180 => PciFullClass::MassStorage_Other,
-
-            0x0200 => PciFullClass::Network_Ethernet,
-            0x0201 => PciFullClass::Network_TokenRing,
-            0x0202 => PciFullClass::Network_FDDI,
-            0x0203 => PciFullClass::Network_ATM,
-            0x0204 => PciFullClass::Network_ISDN,
-            0x0205 => PciFullClass::Network_WorldFlip,
-            0x0206 => PciFullClass::Network_PICMG,
-            0x0207 => PciFullClass::Network_Infiniband,
-            0x0208 => PciFullClass::Network_Fabric,
-            0x0280 => PciFullClass::Network_Other,
-
-            0x0300 => PciFullClass::Display_VGA,
-            0x0301 => PciFullClass::Display_XGA,
-            0x0302 => PciFullClass::Display_3D,
-            0x0380 => PciFullClass::Display_Other,
-
-            0x0400 => PciFullClass::Multimedia_Video,
-            0x0401 => PciFullClass::Multimedia_AudioController,
-            0x0402 => PciFullClass::Multimedia_Telephony,
-            0x0403 => PciFullClass::Multimedia_AudioDevice,
-            0x0480 => PciFullClass::Multimedia_Other,
-
-            0x0500 => PciFullClass::Memory_RAM,
-            0x0501 => PciFullClass::Memory_Flash,
-            0x0580 => PciFullClass::Memory_Other,
-
-            0x0600 => PciFullClass::Bridge_Host,
-            0x0601 => PciFullClass::Bridge_ISA,
-            0x0602 => PciFullClass::Bridge_EISA,
-            0x0603 => PciFullClass::Bridge_MCA,
-            0x0604 => PciFullClass::Bridge_PciToPci,
-            0x0605 => PciFullClass::Bridge_PCMCIA,
-            0x0606 => PciFullClass::Bridge_NuBus,
-            0x0607 => PciFullClass::Bridge_CardBus,
-            0x0608 => PciFullClass::Bridge_RACEway,
-            0x0609 => PciFullClass::Bridge_PciToPciSemiTransparent,
-            0x060A => PciFullClass::Bridge_InfinibandToPci,
-            0x0680 => PciFullClass::Bridge_Other,
-
-            _ => PciFullClass::Unknown,
-        }
-    }
-
-    /// Convert a PciFullClass to its u16 representation
-    pub fn as_u16(&self) -> u16 {
-        *self as u16
-    }
-}
-
-impl From<u16> for PciFullClass {
-    /// Convert a u16 into the corresponding PciFullClass
-    fn from(n: u16) -> Self {
-        Self::from_u16(n)
-    }
-}
-
-impl Display for PciFullClass {
-    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
-        write!(f, "    Class: ")?;
-
-        match self {
-            PciFullClass::Unclassified_NonVgaCompatible => write!(f, "\0LIGHTBLUE\0")?,
-            PciFullClass::Unclassified_VgaCompatible => write!(f, "\0LIGHTBLUE\0")?,
-            PciFullClass::MassStorage_ScsiBus => write!(f, "\0CYAN\0")?,
-            PciFullClass::MassStorage_IDE => write!(f, "\0CYAN\0")?,
-            PciFullClass::MassStorage_Floppy => write!(f, "\0CYAN\0")?,
-            PciFullClass::MassStorage_IpiBus => write!(f, "\0CYAN\0")?,
-            PciFullClass::MassStorage_RAID => write!(f, "\0CYAN\0")?,
-            PciFullClass::MassStorage_ATA => write!(f, "\0CYAN\0")?,
-            PciFullClass::MassStorage_SATA => write!(f, "\0CYAN\0")?,
-            PciFullClass::MassStorage_SerialSCSI => write!(f, "\0CYAN\0")?,
-            PciFullClass::MassStorage_NVM => write!(f, "\0CYAN\0")?,
-            PciFullClass::MassStorage_Other => write!(f, "\0CYAN\0")?,
-            PciFullClass::Network_Ethernet => write!(f, "\0MAGENTA\0")?,
-            PciFullClass::Network_TokenRing => write!(f, "\0MAGENTA\0")?,
-            PciFullClass::Network_FDDI => write!(f, "\0MAGENTA\0")?,
-            PciFullClass::Network_ATM => write!(f, "\0MAGENTA\0")?,
-            PciFullClass::Network_ISDN => write!(f, "\0MAGENTA\0")?,
-            PciFullClass::Network_WorldFlip => write!(f, "\0MAGENTA\0")?,
-            PciFullClass::Network_PICMG => write!(f, "\0MAGENTA\0")?,
-            PciFullClass::Network_Infiniband => write!(f, "\0MAGENTA\0")?,
-            PciFullClass::Network_Fabric => write!(f, "\0MAGENTA\0")?,
-            PciFullClass::Network_Other => write!(f, "\0MAGENTA\0")?,
-            PciFullClass::Display_VGA => write!(f, "\0YELLOW\0")?,
-            PciFullClass::Display_XGA => write!(f, "\0YELLOW\0")?,
-            PciFullClass::Display_3D => write!(f, "\0YELLOW\0")?,
-            PciFullClass::Display_Other => write!(f, "\0YELLOW\0")?,
-            PciFullClass::Multimedia_Video => write!(f, "\0LIGHTBLUE\0")?,
-            PciFullClass::Multimedia_AudioController => write!(f, "\0LIGHTBLUE\0")?,
-            PciFullClass::Multimedia_Telephony => write!(f, "\0LIGHTBLUE\0")?,
-            PciFullClass::Multimedia_AudioDevice => write!(f, "\0LIGHTBLUE\0")?,
-            PciFullClass::Multimedia_Other => write!(f, "\0LIGHTBLUE\0")?,
-            PciFullClass::Memory_RAM => write!(f, "\0BLUE\0")?,
-            PciFullClass::Memory_Flash => write!(f, "\0WHITE\0")?,
-            PciFullClass::Memory_Other => write!(f, "\0LIGHTGREY\0")?,
-            PciFullClass::Bridge_Host => write!(f, "\0GREEN\0")?,
-            PciFullClass::Bridge_ISA => write!(f, "\0GREEN\0")?,
-            PciFullClass::Bridge_EISA => write!(f, "\0GREEN\0")?,
-            PciFullClass::Bridge_MCA => write!(f, "\0GREEN\0")?,
-            PciFullClass::Bridge_PciToPci => write!(f, "\0GREEN\0")?,
-            PciFullClass::Bridge_PCMCIA => write!(f, "\0GREEN\0")?,
-            PciFullClass::Bridge_NuBus => write!(f, "\0GREEN\0")?,
-            PciFullClass::Bridge_CardBus => write!(f, "\0GREEN\0")?,
-            PciFullClass::Bridge_RACEway => write!(f, "\0GREEN\0")?,
-            PciFullClass::Bridge_PciToPciSemiTransparent => write!(f, "\0GREEN\0")?,
-            PciFullClass::Bridge_InfinibandToPci => write!(f, "\0GREEN\0")?,
-            PciFullClass::Bridge_Other => write!(f, "\0GREEN\0")?,
-            PciFullClass::Unknown => write!(f, "\0RED\0")?,
-        }
-
-        write!(f, "{:?} ({:#06X})\0RESET\0", self, self.as_u16())?;
-
-        Ok(())
-    }
-}
diff --git a/ableos/src/devices/pci/device.rs b/ableos/src/devices/pci/device.rs
deleted file mode 100644
index e9469ef..0000000
--- a/ableos/src/devices/pci/device.rs
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * Copyright (c) 2022, able <abl3theabove@gmail.com>
- * Copyright (c) 2022, Umut Ä°nan ErdoÄŸan <umutinanerdogan@pm.me>
- *
- * SPDX-License-Identifier: MPL-2.0
- */
-
-use core::fmt;
-
-use x86_64::instructions::port::Port;
-
-use super::{
-    vendors::Vendor::{self, *},
-    PciClass, PciFullClass,
-};
-
-// FIXME: Unknown class
-pub const S3_TRIO64V2: DeviceID = DeviceID::new(S3Inc, 0x8900);
-
-// MassStorage_IDE (0x0101)
-pub const INTEL_PIIX3_IDE: DeviceID = DeviceID::new(IntelCorp, 0x7010);
-pub const INTEL_PIIX4_IDE: DeviceID = DeviceID::new(IntelCorp, 0x7111);
-
-// Display_VGA (0x0300)
-pub const VMWARE_SVGA2: DeviceID = DeviceID::new(VMWareInc, 0x0405);
-
-#[derive(Copy, Clone, Debug)]
-/// A struct containing info about a PCI device.
-pub struct PciDeviceInfo {
-    pub header_type: u8,
-    pub device: u8,
-    pub bus: u8,
-    pub device_id: DeviceID,
-    pub full_class: PciFullClass,
-    pub rev_id: u8,
-}
-
-impl PciDeviceInfo {
-    /// Get the class of the PCI device as a PciClass
-    pub fn class(&self) -> PciClass {
-        (((self.full_class.as_u16() >> 8) & 0xFF) as u8).into()
-    }
-
-    /// Get the bar, 0-indexed
-    pub fn bar(&self, bar: u8) -> u32 {
-        assert!(bar < 6);
-        unsafe { self.read(0, 0x10 + bar * 4) }
-    }
-
-    /// Get the interrupt pin
-    pub fn interrupt_pin(&self) -> u8 {
-        let last_row = unsafe { self.read(0, 0x3C) };
-        ((last_row >> 8) & 0xFF) as u8
-    }
-
-    /// Enable bus mastering. This allows the PCI device to do DMA
-    pub fn enable_bus_mastering(&self) {
-        let command = unsafe { self.read(0, 4) } | 1 << 2;
-        unsafe { self.write(0, 4, command) }
-    }
-
-    /// Read from configuration space
-    pub unsafe fn read(&self, func: u8, offset: u8) -> u32 {
-        pci_config_read(self.bus, self.device, func, offset)
-    }
-
-    /// Write to IO space
-    pub unsafe fn write(&self, func: u8, offset: u8, value: u32) {
-        pci_config_write(self.bus, self.device, func, offset, value)
-    }
-}
-
-impl fmt::Display for PciDeviceInfo {
-    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
-        let vendor_name = &self.device_id.vendor;
-        let device_id = &self.device_id.id;
-        writeln!(
-            f,
-            "Device: {} | Bus: 0x{:X} | Vendor: {} | Device ID: 0x{:X}",
-            self.device, self.bus, vendor_name, device_id,
-        )?;
-        writeln!(f, "{}", self.full_class)?;
-        writeln!(f, "    Header type: 0x{:X}", self.header_type)?;
-        writeln!(f, "    Revision ID: {}", self.rev_id)?;
-        // write!(f, "    Supported functions: 0")?;
-        // for (i, b) in self.supported_fns.iter().enumerate().skip(1) {
-        //     if *b {
-        //         write!(f, ", {}", i)?;
-        //     }
-        // }
-        // writeln!(f)?;
-        // write!(f, "    BARs: [ ")?;
-        // for i in self.bars.iter() {
-        //     if *i == 0 {
-        //         write!(f, "0x0 ")?;
-        //     } else {
-        //         write!(f, "{:#010X} ", i)?;
-        //     }
-        // }
-        // writeln!(f, "]")?;
-        // writeln!(
-        //     f,
-        //     "    Interrupt line / pin: {} / {}",
-        //     self.interrupt_line, self.interrupt_pin
-        // )?;
-        Ok(())
-    }
-}
-
-#[derive(Copy, Clone, Debug, PartialEq, Eq)]
-pub struct DeviceID {
-    pub vendor: Vendor,
-    pub id: u16,
-}
-
-impl DeviceID {
-    pub const fn new(vendor: Vendor, id: u16) -> Self {
-        Self { vendor, id }
-    }
-}
-
-pub fn check_device(bus: u8, device: u8) -> Option<PciDeviceInfo> {
-    assert!(device < 32);
-    let (device_id, vendor_id) = get_ids(bus, device, 0);
-    if vendor_id == 0xFFFF {
-        // Device doesn't exist
-        return None;
-    }
-
-    let reg2 = unsafe { pci_config_read(bus, device, 0, 0x8) };
-    let class = ((reg2 >> 16) & 0x0000FFFF) as u16;
-    let pci_class = PciFullClass::from_u16(class);
-    let header_type = get_header_type(bus, device, 0);
-
-    Some(PciDeviceInfo {
-        header_type,
-        device,
-        bus,
-        device_id: DeviceID {
-            vendor: vendor_id.into(),
-            id: device_id,
-        },
-        full_class: pci_class,
-        rev_id: (reg2 & 0x000000FF) as u8,
-    })
-}
-
-unsafe fn pci_config_read(bus: u8, device: u8, func: u8, offset: u8) -> u32 {
-    let bus = bus as u32;
-    let device = device as u32;
-    let func = func as u32;
-    let offset = offset as u32;
-    // construct address param
-    let address =
-        ((bus << 16) | (device << 11) | (func << 8) | (offset & 0xfc) | 0x80000000) as u32;
-
-    // write address
-    Port::new(0xCF8).write(address);
-
-    // read data
-    Port::new(0xCFC).read()
-}
-
-unsafe fn pci_config_write(bus: u8, device: u8, func: u8, offset: u8, value: u32) {
-    let bus = bus as u32;
-    let device = device as u32;
-    let func = func as u32;
-    let offset = offset as u32;
-    // construct address param
-    let address =
-        ((bus << 16) | (device << 11) | (func << 8) | (offset & 0xfc) | 0x80000000) as u32;
-
-    // write address
-    Port::new(0xCF8).write(address);
-
-    // write data
-    Port::new(0xCFC).write(value);
-}
-
-fn get_header_type(bus: u8, device: u8, function: u8) -> u8 {
-    assert!(device < 32);
-    assert!(function < 8);
-    let res = unsafe { pci_config_read(bus, device, function, 0x0C) };
-    ((res >> 16) & 0xFF) as u8
-}
-
-fn get_ids(bus: u8, device: u8, function: u8) -> (u16, u16) {
-    assert!(device < 32);
-    assert!(function < 8);
-    let res = unsafe { pci_config_read(bus, device, function, 0) };
-    let dev_id = ((res >> 16) & 0xFFFF) as u16;
-    let vnd_id = (res & 0xFFFF) as u16;
-    (dev_id, vnd_id)
-}
diff --git a/ableos/src/devices/pci/ide.rs b/ableos/src/devices/pci/ide.rs
deleted file mode 100644
index 60a617e..0000000
--- a/ableos/src/devices/pci/ide.rs
+++ /dev/null
@@ -1,674 +0,0 @@
-/*
- * Copyright (c) 2022, Umut Ä°nan ErdoÄŸan <umutinanerdogan@pm.me>
- *
- * SPDX-License-Identifier: MPL-2.0
- */
-
-use core::num::TryFromIntError;
-
-// FIXME: platform agnostic-ify these
-use x86_64::instructions::{interrupts, port::Port};
-use x86_64::structures::paging::{mapper::MapToError, Mapper, Page, PhysFrame, Size4KiB};
-use x86_64::structures::paging::{FrameAllocator, FrameDeallocator};
-use x86_64::VirtAddr;
-
-use crate::arch::memory::BootInfoFrameAllocator;
-use crate::devices::pci::check_device;
-
-use super::PciDeviceInfo;
-
-// FIXME: un-hardcode these
-const PRDT_START: u64 = 0xffff_ffff_0000_0000;
-const BUFFER_START: u64 = 0xffff_ffff_0000_1000;
-
-/// ATA logical sector size, in bytes
-const SECTOR_SIZE: u16 = 512;
-
-/// Bus Master IDE Command
-const BMIC_OFFSET: u16 = 0;
-/// Bus Master IDE Status
-const BMIS_OFFSET: u16 = 2;
-/// Bus Master IDE Descriptor Table Pointer
-const BMIDTP_OFFSET: u16 = 4;
-
-/// Bus Master IDE Secondary Offset
-const BMI_SECONDARY: u16 = 8;
-
-/// Primary command block offset
-const PRIMARY_COMMAND: u16 = 0x01F0;
-
-/// Secondary command block offset
-const SECONDARY_COMMAND: u16 = 0x0170;
-
-/// Data register offset
-const DATA_OFFSET: u16 = 0;
-
-/// Sector count register offset
-const SECCOUNT_OFFSET: u16 = 2;
-
-/// LBA0 register offset
-const LBA0_OFFSET: u16 = 3;
-
-/// LBA1 register offset
-const LBA1_OFFSET: u16 = 4;
-
-/// LBA2 register offset
-const LBA2_OFFSET: u16 = 5;
-
-/// Drive/Head register offset
-const DRIVE_HEAD_OFFSET: u16 = 6;
-
-/// Command/status register offset
-const COMMAND_STATUS_OFFSET: u16 = 7;
-
-/// Secondary control block offset
-const SECONDARY_CONTROL: u16 = 0x0374;
-
-/// Primary control block offset
-const PRIMARY_CONTROL: u16 = 0x03F4;
-
-/// Alternative status offset
-const ALT_STATUS_OFFSET: u16 = 2;
-
-/// ATA identification command
-const CMD_IDENTIFY: u8 = 0xEC;
-
-/// ATA read using LBA28 DMA command
-const CMD_READ_DMA: u8 = 0xC8;
-
-/// ATA write using LBA28 DMA command
-const CMD_WRITE_DMA: u8 = 0xCA;
-
-/// ATA read using LBA48 DMA command
-const CMD_READ_DMA_EXT: u8 = 0x25;
-
-/// ATA write using LBA48 DMA command
-const CMD_WRITE_DMA_EXT: u8 = 0x35;
-
-pub struct PciIde {
-    device_info: PciDeviceInfo,
-    ide_devices: Vec<IdeDevice>,
-    prdt_frame: Option<PhysFrame>,
-    buffer_frames: Option<Vec<PhysFrame>>,
-    bmiba: u16,
-}
-
-impl PciIde {
-    // FIXME: make this return a Result
-    pub fn new(bus: u8, device: u8) -> Option<Self> {
-        let device_info = check_device(bus, device)?;
-        device_info.enable_bus_mastering();
-        let idetim = unsafe { device_info.read(0, 0x40) };
-        trace!("idetim: {idetim:b}");
-        // FIXME: enable the right bits in idetim (and sidetim) to use fast timings
-
-        let mut ide_devices = Vec::with_capacity(4);
-        for ch in 0..2 {
-            let channel = if ch == 0 {
-                Channel::Primary
-            } else {
-                Channel::Secondary
-            };
-            'drive: for dr in 0..2 {
-                let drive = if dr == 0 { Drive::Master } else { Drive::Slave };
-
-                unsafe {
-                    select_drive(drive, channel);
-                    // FIXME: clear sector count and lba0, lba1, lba2 registers
-                    let status = ata_send_command(CMD_IDENTIFY, channel);
-                    if status == 0 {
-                        continue; // If status = 0, no device
-                    }
-
-                    loop {
-                        let status = {
-                            let addr = if channel.secondary() {
-                                SECONDARY_COMMAND
-                            } else {
-                                PRIMARY_COMMAND
-                            } + COMMAND_STATUS_OFFSET;
-                            Port::<u8>::new(addr).read()
-                        };
-
-                        if status & 1 == 1 {
-                            // if error (bit 0), device is not ATA
-                            // FIXME: ATAPI devices
-                            continue 'drive;
-                        }
-                        if !((status >> 7) & 1 == 1) && (status >> 3) & 1 == 1 {
-                            // BSY cleared, DRQ set, everything is right
-                            break;
-                        }
-                    }
-
-                    // Read identification space of device
-                    let addr = if channel.secondary() {
-                        SECONDARY_COMMAND
-                    } else {
-                        PRIMARY_COMMAND
-                    } + DATA_OFFSET;
-                    let mut buffer = [0_u8; 512];
-                    read_dword_buffer(addr, buffer.as_mut_ptr() as *mut _, 128);
-                    // for (i, byte) in buffer.iter().enumerate() {
-                    //     if byte.is_ascii() {
-                    //         trace!("byte {i}: {byte:b}, ascii: {}", *byte as char);
-                    //     } else {
-                    //         trace!("byte {i}: {byte:b}");
-                    //     }
-                    // }
-
-                    if buffer[99] & 1 != 1 {
-                        // FIXME: PIO mode support
-                        error!("IDE drive {channel:?}/{drive:?} does not support DMA");
-                        continue;
-                    }
-
-                    // FIXME: CHS support
-                    let lba48 = (buffer[167] >> 2) & 1 == 1;
-
-                    let size = buffer[200] as u64
-                        | (buffer[201] as u64) << 8
-                        | (buffer[202] as u64) << 16
-                        | (buffer[203] as u64) << 24
-                        | (buffer[204] as u64) << 32
-                        | (buffer[205] as u64) << 40
-                        | (buffer[206] as u64) << 48
-                        | (buffer[207] as u64) << 54;
-                    trace!("IDE drive {channel:?}/{drive:?} has {size} sectors");
-
-                    ide_devices.push(IdeDevice {
-                        channel,
-                        drive,
-                        size,
-                        lba48_support: lba48,
-                    });
-                }
-            }
-        }
-
-        let bmiba = device_info.bar(4) & 0xFFFFFFFC;
-
-        Some(Self {
-            device_info,
-            ide_devices,
-            prdt_frame: None,
-            buffer_frames: None,
-            bmiba: bmiba.try_into().ok()?,
-        })
-    }
-
-    pub fn allocate_dma_frame(
-        &mut self,
-        mapper: &mut impl Mapper<Size4KiB>,
-        frame_allocator: &mut BootInfoFrameAllocator,
-    ) -> Result<(), MapToError<Size4KiB>> {
-        use x86_64::structures::paging::PageTableFlags as Flags;
-
-        let prdt_frame = frame_allocator
-            .allocate_frame()
-            .ok_or(MapToError::FrameAllocationFailed)?;
-
-        let buffer_frames = {
-            let mut frame = frame_allocator
-                .allocate_frame()
-                .ok_or(MapToError::FrameAllocationFailed)?;
-            while !frame.start_address().is_aligned(0x10000u64) {
-                unsafe {
-                    frame_allocator.deallocate_frame(frame);
-                }
-
-                frame = frame_allocator
-                    .allocate_frame()
-                    .ok_or(MapToError::FrameAllocationFailed)?;
-            }
-
-            let mut frames = Vec::with_capacity(16);
-            frames.push(frame);
-            for _ in 0..15 {
-                let frame = frame_allocator
-                    .allocate_frame()
-                    .ok_or(MapToError::FrameAllocationFailed)?;
-                frames.push(frame);
-            }
-
-            frames
-        };
-        let flags = Flags::NO_CACHE | Flags::PRESENT | Flags::WRITABLE;
-
-        unsafe {
-            mapper
-                .map_to(
-                    Page::containing_address(VirtAddr::new(PRDT_START)),
-                    prdt_frame,
-                    flags,
-                    frame_allocator,
-                )?
-                .flush();
-
-            for (i, frame) in buffer_frames.iter().enumerate() {
-                mapper
-                    .map_to(
-                        Page::containing_address(VirtAddr::new(BUFFER_START + i as u64 * 0x1000)),
-                        *frame,
-                        flags,
-                        frame_allocator,
-                    )?
-                    .flush()
-            }
-        }
-
-        self.prdt_frame = Some(prdt_frame);
-        self.buffer_frames = Some(buffer_frames);
-        Ok(())
-    }
-
-    pub fn read(
-        &mut self,
-        channel: Channel,
-        drive: Drive,
-        lba: u64,
-        sector_count: u16,
-        buffer: &mut Vec<u8>,
-    ) -> Result<(), TryFromIntError> {
-        let lba48_support = self
-            .ide_devices
-            .iter()
-            .find(|d| d.channel == channel && d.drive == drive)
-            .map(|d| d.lba48_support)
-            .unwrap(); // FIXME: make this an error
-        let lba48 = lba > 0xFFFFFFF && lba48_support;
-
-        // FIXME: make this an error
-        assert!((lba48 && lba > 0xFFFFFFF) || (!lba48 && lba <= 0xFFFFFFF));
-
-        let byte_count = sector_count * SECTOR_SIZE;
-
-        // prepare PRD table
-        let prd = PRDT_START as *mut PhysRegionDescriptor;
-        unsafe {
-            (*prd).data_buffer = self.buffer_frames.as_ref().unwrap()[0]
-                .start_address()
-                .as_u64()
-                .try_into()?;
-            (*prd).byte_count = byte_count;
-            // this is the end of table
-            (*prd).eot = 1 << 7;
-            // this byte is reserved, we should probably set it to 0
-            (*prd)._0 = 0;
-        }
-
-        unsafe {
-            self.load_prdt(channel);
-            self.stop(channel);
-            self.set_read(channel);
-            self.clear_bmi_status(channel);
-            select_drive(drive, channel);
-            set_lba(channel, lba, sector_count, lba48);
-
-            if lba48 {
-                ata_send_command(CMD_READ_DMA_EXT, channel);
-            } else {
-                ata_send_command(CMD_READ_DMA, channel);
-            }
-
-            self.start(channel);
-        }
-
-        loop {
-            let status = unsafe { self.bmi_status(channel) };
-
-            // FIXME: error handling
-
-            // Bit 2 (INT) set?
-            if (status >> 2) & 1 == 1 {
-                break;
-            }
-        }
-
-        unsafe {
-            // Stop DMA
-            self.stop(channel);
-
-            // Clear the interrupt bit
-            self.clear_bmi_status(channel);
-        }
-
-        for i in 0..byte_count as u64 {
-            let addr = (BUFFER_START + i) as *mut u8;
-            buffer.push(unsafe { *addr });
-        }
-
-        Ok(())
-    }
-
-    pub fn write(
-        &mut self,
-        channel: Channel,
-        drive: Drive,
-        lba: u64,
-        data: &[u8],
-    ) -> Result<(), TryFromIntError> {
-        // FIXME: make this an error
-        assert!(data.len() % SECTOR_SIZE as usize == 0);
-
-        let lba48_support = self
-            .ide_devices
-            .iter()
-            .find(|d| d.channel == channel && d.drive == drive)
-            .map(|d| d.lba48_support)
-            .unwrap(); // FIXME: make this an error
-        let lba48 = lba > 0xFFFFFFF && lba48_support;
-
-        // FIXME: make this an error
-        assert!((lba48 && lba > 0xFFFFFFF) || (!lba48 && lba <= 0xFFFFFFF));
-
-        let byte_count = data.len() as u16;
-        let sector_count = byte_count / SECTOR_SIZE;
-
-        // prepare PRD table
-        let prd = PRDT_START as *mut PhysRegionDescriptor;
-        unsafe {
-            (*prd).data_buffer = self.buffer_frames.as_ref().unwrap()[0]
-                .start_address()
-                .as_u64()
-                .try_into()?;
-            (*prd).byte_count = byte_count;
-            // this is the end of table
-            (*prd).eot = 1 << 7;
-            // this byte is reserved, we should probably set it to 0
-            (*prd)._0 = 0;
-        }
-
-        // copy the data over to the DMA buffer
-        for i in 0..byte_count {
-            let addr = (BUFFER_START + i as u64) as *mut u8;
-            unsafe {
-                *addr = *data.get(i as usize).unwrap_or(&0);
-            }
-        }
-
-        unsafe {
-            self.load_prdt(channel);
-            self.stop(channel);
-            self.set_write(channel);
-            self.clear_bmi_status(channel);
-            select_drive(drive, channel);
-            set_lba(channel, lba, sector_count, lba48);
-
-            if lba48 {
-                ata_send_command(CMD_WRITE_DMA_EXT, channel);
-            } else {
-                ata_send_command(CMD_WRITE_DMA, channel);
-            }
-
-            self.start(channel);
-        }
-
-        loop {
-            let status = unsafe { self.bmi_status(channel) };
-
-            // FIXME: error handling
-
-            // Bit 2 (INT) set?
-            if (status >> 2) & 1 == 1 {
-                break;
-            }
-        }
-
-        unsafe {
-            // Stop DMA
-            self.stop(channel);
-
-            // Clear the interrupt bit
-            self.clear_bmi_status(channel);
-        }
-
-        Ok(())
-    }
-
-    pub fn device_info(&self) -> PciDeviceInfo {
-        self.device_info
-    }
-
-    unsafe fn load_prdt(&self, channel: Channel) {
-        let addr = if channel.secondary() {
-            BMI_SECONDARY
-        } else {
-            0
-        } + self.bmiba
-            + BMIDTP_OFFSET;
-        Port::<u32>::new(addr).write(
-            self.prdt_frame
-                .unwrap()
-                .start_address()
-                .as_u64()
-                .try_into()
-                .unwrap(),
-        );
-    }
-
-    unsafe fn start(&self, channel: Channel) {
-        let addr = if channel.secondary() {
-            BMI_SECONDARY
-        } else {
-            0
-        } + self.bmiba
-            + BMIC_OFFSET;
-        let mut port: Port<u8> = Port::new(addr);
-        let mut bmic = port.read();
-        // start transfer
-        bmic |= 1;
-        // write the new bmic
-        port.write(bmic);
-    }
-
-    unsafe fn stop(&self, channel: Channel) {
-        let addr = if channel.secondary() {
-            BMI_SECONDARY
-        } else {
-            0
-        } + self.bmiba
-            + BMIC_OFFSET;
-        let mut port: Port<u8> = Port::new(addr);
-        let mut bmic = port.read();
-        // stop ongoing transfer
-        bmic &= !1;
-        // write the new bmic
-        port.write(bmic);
-    }
-
-    unsafe fn set_read(&self, channel: Channel) {
-        let addr = if channel.secondary() {
-            BMI_SECONDARY
-        } else {
-            0
-        } + self.bmiba
-            + BMIC_OFFSET;
-        let mut port: Port<u8> = Port::new(addr);
-        let mut bmic = port.read();
-        // mark bit 3 as 0 (read)
-        bmic &= !(1 << 3);
-        // write the new bmic
-        port.write(bmic);
-    }
-
-    unsafe fn set_write(&self, channel: Channel) {
-        let addr = if channel.secondary() {
-            BMI_SECONDARY
-        } else {
-            0
-        } + self.bmiba
-            + BMIC_OFFSET;
-        let mut port: Port<u8> = Port::new(addr);
-        let mut bmic = port.read();
-        // mark bit 3 as 1 (write)
-        bmic |= 1 << 3;
-        // write the new bmic
-        port.write(bmic);
-    }
-
-    unsafe fn bmi_status(&self, channel: Channel) -> u8 {
-        let addr = if channel.secondary() {
-            BMI_SECONDARY
-        } else {
-            0
-        } + self.bmiba
-            + BMIS_OFFSET;
-        let mut port = Port::new(addr);
-        port.read()
-    }
-
-    unsafe fn clear_bmi_status(&self, channel: Channel) {
-        let addr = if channel.secondary() {
-            BMI_SECONDARY
-        } else {
-            0
-        } + self.bmiba
-            + BMIS_OFFSET;
-        let mut port: Port<u8> = Port::new(addr);
-        let mut bmis = port.read();
-        // write 1 to bits 1 (DMA error) and 2 (int status) which clears them
-        bmis |= 1 << 1 | 1 << 2;
-        // write the new bmis
-        port.write(bmis);
-    }
-}
-
-unsafe fn select_drive(drive: Drive, channel: Channel) {
-    let addr = if channel.secondary() {
-        SECONDARY_COMMAND
-    } else {
-        PRIMARY_COMMAND
-    } + DRIVE_HEAD_OFFSET;
-    let mut port: Port<u8> = Port::new(addr);
-    // FIXME: CHS support
-    let drive_command = if drive.slave() {
-        // slave & LBA
-        0b11110000
-    } else {
-        // master & LBA
-        0b11100000
-    };
-
-    // write the new drive/head register
-    port.write(drive_command);
-    ata_delay(channel);
-}
-
-/// Send ATA command and read status afterwards
-unsafe fn ata_send_command(command: u8, channel: Channel) -> u8 {
-    let addr = if channel.secondary() {
-        SECONDARY_COMMAND
-    } else {
-        PRIMARY_COMMAND
-    } + COMMAND_STATUS_OFFSET;
-    let mut port = Port::new(addr);
-    port.write(command);
-    ata_delay(channel);
-    port.read()
-}
-
-/// Read the alternate status register 14 times to create a ~420ns delay
-unsafe fn ata_delay(channel: Channel) {
-    let addr = if channel.secondary() {
-        SECONDARY_CONTROL
-    } else {
-        PRIMARY_CONTROL
-    } + ALT_STATUS_OFFSET;
-    let mut port: Port<u8> = Port::new(addr);
-    for _ in 0..14 {
-        port.read();
-    }
-}
-
-/// Set LBA and sector count registers. sector_count of 0 means 65536 sectors
-unsafe fn set_lba(channel: Channel, lba: u64, sector_count: u16, lba48: bool) {
-    let command_block = if channel.secondary() {
-        SECONDARY_COMMAND
-    } else {
-        PRIMARY_COMMAND
-    };
-
-    let mut seccount = Port::new(command_block + SECCOUNT_OFFSET);
-    let mut lba0 = Port::new(command_block + LBA0_OFFSET);
-    let mut lba1 = Port::new(command_block + LBA1_OFFSET);
-    let mut lba2 = Port::new(command_block + LBA2_OFFSET);
-    let mut head = Port::new(command_block + DRIVE_HEAD_OFFSET);
-    let head_value: u8 = head.read();
-
-    let lba_bytes = lba.to_le_bytes();
-    let sector_count_bytes = sector_count.to_le_bytes();
-
-    // write the new LBA & sector count registers
-    // FIXME: CHS support
-    if lba48 {
-        seccount.write(sector_count_bytes[1]);
-        lba0.write(lba_bytes[3]);
-        lba1.write(lba_bytes[4]);
-        lba2.write(lba_bytes[5]);
-    } else {
-        head.write(head_value | (lba_bytes[3] & 0x0F));
-    }
-    seccount.write(sector_count_bytes[0]);
-    lba0.write(lba_bytes[0]);
-    lba1.write(lba_bytes[1]);
-    lba2.write(lba_bytes[2]);
-}
-
-unsafe fn read_dword_buffer(port: u16, buffer: *mut u32, mut count: u32) {
-    // FIXME: this assumes x86-64
-    interrupts::without_interrupts(|| {
-        asm!("
-        cld
-        repne
-        insd",
-            in("di") buffer,
-            in("dx") port,
-            inout("cx") count,
-        )
-    });
-}
-
-struct IdeDevice {
-    pub channel: Channel,
-    pub drive: Drive,
-    pub size: u64, // in sectors
-    pub lba48_support: bool,
-    // FIXME: model
-}
-
-#[derive(Copy, Clone, Debug, PartialEq, Eq)]
-pub enum Channel {
-    Primary,
-    Secondary,
-}
-
-impl Channel {
-    fn secondary(&self) -> bool {
-        matches!(self, Self::Secondary)
-    }
-}
-
-#[derive(Copy, Clone, Debug, PartialEq, Eq)]
-pub enum Drive {
-    Master,
-    Slave,
-}
-
-impl Drive {
-    fn slave(&self) -> bool {
-        matches!(self, Self::Slave)
-    }
-}
-
-#[repr(C, packed)]
-struct PhysRegionDescriptor {
-    /// Pointer to the data buffer
-    pub data_buffer: u32,
-    /// Byte count, 64K maximum per PRD transfer. 0 means 64K
-    pub byte_count: u16,
-    /// Reserved byte
-    pub _0: u8,
-    /// MSB marks end of transfer
-    pub eot: u8,
-}
diff --git a/ableos/src/devices/pci/mod.rs b/ableos/src/devices/pci/mod.rs
deleted file mode 100644
index 12d18d0..0000000
--- a/ableos/src/devices/pci/mod.rs
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 2022, Umut Ä°nan ErdoÄŸan <umutinanerdogan@pm.me>
- *
- * SPDX-License-Identifier: MPL-2.0
- */
-
-pub mod class;
-pub mod device;
-pub mod vendors;
-
-// MassStorage_IDE (0x0101)
-pub mod ide;
-
-use alloc::sync::Arc;
-pub use class::*;
-pub use device::*;
-use lazy_static::lazy_static;
-use spin::Mutex;
-use x86_64::structures::paging::{Mapper, Size4KiB};
-
-use crate::arch::memory::BootInfoFrameAllocator;
-
-// MassStorage_IDE (0x0101)
-use self::ide::PciIde;
-
-lazy_static! {
-    pub static ref PCI_DEVICES: Mutex<Vec<Arc<Mutex<PciDevice>>>> = Default::default();
-}
-
-#[non_exhaustive]
-pub enum PciDevice {
-    Ide(PciIde),
-    // Variant so that we aren't about irrefutable if-let patterns
-    // FIXME: remove as soon as we have other variants
-    _0,
-}
-
-/// Enumerate PCI devices and run initialisation routines on ones we support
-pub fn init(mapper: &mut impl Mapper<Size4KiB>, frame_allocator: &mut BootInfoFrameAllocator) {
-    for bus in 0..=255 {
-        for device in 0..32 {
-            if let Some(device_info) = device::check_device(bus, device) {
-                trace!("{device_info}");
-                match device_info.device_id {
-                    // FIXME: Unknown class
-                    S3_TRIO64V2 => {}
-
-                    // MassStorage_IDE (0x0101)
-                    ide_controller if device_info.full_class == PciFullClass::MassStorage_IDE => {
-                        if !matches!(ide_controller, INTEL_PIIX3_IDE | INTEL_PIIX4_IDE) {
-                            // not one of our tested IDE controllers, but
-                            // we shouldn't have any problems
-                            warn!("Unsupported PCI IDE controller device {device} on bus {bus}")
-                        }
-
-                        let mut ide = PciIde::new(bus, device).unwrap();
-                        ide.allocate_dma_frame(mapper, frame_allocator).unwrap();
-                        let mut devices = PCI_DEVICES.lock();
-                        devices.push(Arc::new(Mutex::new(PciDevice::Ide(ide))));
-                    }
-
-                    // Display_VGA (0x0300)
-                    VMWARE_SVGA2 => {}
-                    _ => {
-                        trace!("Unknown PCI device {device} on bus {bus}")
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/ableos/src/devices/pci/vendors.rs b/ableos/src/devices/pci/vendors.rs
deleted file mode 100644
index 486b32a..0000000
--- a/ableos/src/devices/pci/vendors.rs
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (c) 2022, able <abl3theabove@gmail.com>
- *
- * SPDX-License-Identifier: MPL-2.0
- */
-
-use core::fmt::Display;
-
-#[derive(PartialEq, Debug, Copy, Clone, Eq)]
-#[repr(u16)]
-pub enum Vendor {
-    ThreeDfxInteractiveInc = 0x121a,
-    ThreeDLabs = 0x3d3d,
-    AllianceSemiconductorCorp = 0x1142,
-    ARKLogicInc = 0xedd8,
-    ATITechnologiesInc = 0x1002,
-    AvanceLogicIncALI = 0x1005,
-    ChipsandTechnologies = 0x102c,
-    CirrusLogic = 0x1013,
-    Compaq = 0x0e11,
-    CyrixCorp = 0x1078,
-    DiamondMultimediaSystems = 0x1092,
-    DigitalEquipmentCorp = 0x1011,
-    Iit = 0x1061,
-    IntegratedMicroSolutionsInc = 0x10e0,
-    IntelCorp = 0x8086,
-    IntergraphicsSystems = 0x10ea,
-    MacronixInc = 0x10d9,
-    MatroxGraphicsInc = 0x102b,
-    MiroComputersProductsAG = 0x1031,
-    NationalSemiconductorCorp = 0x100b,
-    NeoMagicCorp = 0x10c8,
-    Number9ComputerCompany = 0x105d,
-    NVidiaCorporation = 0x10de,
-    NVidiaSgsthomson = 0x12d2,
-    OakTechnologyInc = 0x104e,
-    Qemu = 0x1234,
-    QuantumDesignsHKLtd = 0x1098,
-    Real3D = 0x003d,
-    Rendition = 0x1163,
-    S3Inc = 0x5333,
-    SierraSemiconductor = 0x10a8,
-    SiliconIntegratedSystemsSiS = 0x1039,
-    SiliconMotionInc = 0x126f,
-    STBSystemsInc = 0x10b4,
-    TexasInstruments = 0x104c,
-    ToshibaAmericaInfoSystems = 0x1179,
-    TridentMicrosystems = 0x1023,
-    TsengLabsInc = 0x100c,
-    TundraSemiconductorCorp = 0x10e3,
-    VIATechnologiesInc = 0x1106,
-    VirtIO = 0x1AF4,
-    VMWareInc = 0x15ad,
-    Weitek = 0x100e,
-    Unknown(u16),
-}
-
-impl From<u16> for Vendor {
-    fn from(vendor_id: u16) -> Self {
-        use Vendor::*;
-        match vendor_id {
-            0x121a => ThreeDfxInteractiveInc,
-            0x3d3d => ThreeDLabs,
-            0x1142 => AllianceSemiconductorCorp,
-            0xedd8 => ARKLogicInc,
-            0x1002 => ATITechnologiesInc,
-            0x1005 => AvanceLogicIncALI,
-            0x102c => ChipsandTechnologies,
-            0x1013 => CirrusLogic,
-            0x0e11 => Compaq,
-            0x1078 => CyrixCorp,
-            0x1092 => DiamondMultimediaSystems,
-            0x1011 => DigitalEquipmentCorp,
-            0x1061 => Iit,
-            0x10e0 => IntegratedMicroSolutionsInc,
-            0x8086 => IntelCorp,
-            0x10ea => IntergraphicsSystems,
-            0x10d9 => MacronixInc,
-            0x102b => MatroxGraphicsInc,
-            0x1031 => MiroComputersProductsAG,
-            0x100b => NationalSemiconductorCorp,
-            0x10c8 => NeoMagicCorp,
-            0x105d => Number9ComputerCompany,
-            0x10de => NVidiaCorporation,
-            0x12d2 => NVidiaSgsthomson,
-            0x104e => OakTechnologyInc,
-            0x1234 => Qemu,
-            0x1098 => QuantumDesignsHKLtd,
-            0x003d => Real3D,
-            0x1163 => Rendition,
-            0x5333 => S3Inc,
-            0x10a8 => SierraSemiconductor,
-            0x1039 => SiliconIntegratedSystemsSiS,
-            0x126f => SiliconMotionInc,
-            0x10b4 => STBSystemsInc,
-            0x104c => TexasInstruments,
-            0x1179 => ToshibaAmericaInfoSystems,
-            0x1023 => TridentMicrosystems,
-            0x100c => TsengLabsInc,
-            0x10e3 => TundraSemiconductorCorp,
-            0x1106 => VIATechnologiesInc,
-            0x1AF4 => VirtIO,
-            0x15ad => VMWareInc,
-            0x100e => Weitek,
-            id => Unknown(id),
-        }
-    }
-}
-
-impl Into<u16> for Vendor {
-    fn into(self) -> u16 {
-        use Vendor::*;
-        match self {
-            ThreeDfxInteractiveInc => 0x121a,
-            ThreeDLabs => 0x3d3d,
-            AllianceSemiconductorCorp => 0x1142,
-            ARKLogicInc => 0xedd8,
-            ATITechnologiesInc => 0x1002,
-            AvanceLogicIncALI => 0x1005,
-            ChipsandTechnologies => 0x102c,
-            CirrusLogic => 0x1013,
-            Compaq => 0x0e11,
-            CyrixCorp => 0x1078,
-            DiamondMultimediaSystems => 0x1092,
-            DigitalEquipmentCorp => 0x1011,
-            Iit => 0x1061,
-            IntegratedMicroSolutionsInc => 0x10e0,
-            IntelCorp => 0x8086,
-            IntergraphicsSystems => 0x10ea,
-            MacronixInc => 0x10d9,
-            MatroxGraphicsInc => 0x102b,
-            MiroComputersProductsAG => 0x1031,
-            NationalSemiconductorCorp => 0x100b,
-            NeoMagicCorp => 0x10c8,
-            Number9ComputerCompany => 0x105d,
-            NVidiaCorporation => 0x10de,
-            NVidiaSgsthomson => 0x12d2,
-            OakTechnologyInc => 0x104e,
-            Qemu => 0x1234,
-            QuantumDesignsHKLtd => 0x1098,
-            Real3D => 0x003d,
-            Rendition => 0x1163,
-            S3Inc => 0x5333,
-            SierraSemiconductor => 0x10a8,
-            SiliconIntegratedSystemsSiS => 0x1039,
-            SiliconMotionInc => 0x126f,
-            STBSystemsInc => 0x10b4,
-            TexasInstruments => 0x104c,
-            ToshibaAmericaInfoSystems => 0x1179,
-            TridentMicrosystems => 0x1023,
-            TsengLabsInc => 0x100c,
-            TundraSemiconductorCorp => 0x10e3,
-            VIATechnologiesInc => 0x1106,
-            VirtIO => 0x1AF4,
-            VMWareInc => 0x15ad,
-            Weitek => 0x100e,
-            Unknown(id) => id,
-        }
-    }
-}
-
-impl Display for Vendor {
-    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
-        use Vendor::*;
-
-        match self {
-            Qemu => write!(f, "{}", "\0PINK\0QEMU (0x1234)"),
-            VirtIO => write!(f, "{}", "\0PINK\0VirtIO (0x1AF4)"),
-            VMWareInc => write!(f, "{}", "\0PINK\0VMWARE (0x15AD)"),
-            S3Inc => write!(f, "{}", "\0YELLOW\0S3 Incorporated (0x5333)"),
-            IntelCorp => write!(f, "{}", "\0BLUE\0Intel Corp. (0x8086)"),
-            ATITechnologiesInc => write!(f, "{}", "\0RED\0ATI (0x1002)"),
-            Unknown(id) => write!(f, "\0RED\0Unknown ({:#6})", id),
-            other => write!(f, "{other:?}"),
-        }?;
-
-        write!(f, "\0RESET\0")?;
-        Ok(())
-    }
-}
diff --git a/ableos/src/driver_traits/graphics.rs b/ableos/src/driver_traits/graphics.rs
deleted file mode 100644
index 8d171e2..0000000
--- a/ableos/src/driver_traits/graphics.rs
+++ /dev/null
@@ -1,44 +0,0 @@
-#![allow(unused)]
-
-pub const REFRESH_RATE: u8 = 60;
-
-pub type RefreshRate = u8;
-pub type Resolution = (usize, usize);
-pub type Point = (GCoord, GCoord);
-pub type GCoord = usize;
-
-pub enum GModes {
-    Vga800x600,
-    Custom(u16, u16),
-}
-
-// TODO remap to a bitmasked u32
-// REASON: More effecient memory wise so less overhead on the wasm memory
-// Current: u32+u32+u32
-// Proposed: u32 with bitmaps
-pub struct Rgb {
-    pub r: u32,
-    pub g: u32,
-    pub b: u32,
-}
-
-impl Rgb {
-    fn to_vga_color() {
-        todo!();
-    }
-}
-
-pub struct FrameBuffer;
-pub trait Graphics {
-    fn put_line(coords_start: Point, coords_end: Point, thickness: u32, color: Rgb);
-    fn put_rect(coords_start: Point, coords_end: Point, color: Rgb);
-    fn put_circle(coords: Point, radius: u32);
-    fn put_pixel(coords: Point, color: Rgb);
-    fn put_triangle(coords_1: Point, coords_2: Point, coords_3: Point, thickness: u32, color: Rgb);
-    fn paint_cursor(coords: Point);
-    fn hide_cursor();
-    fn show_cursor();
-    /// Actually move the double buffer to the single buffer and "update" the screen
-    fn draw();
-    fn clear();
-}
diff --git a/ableos/src/driver_traits/mod.rs b/ableos/src/driver_traits/mod.rs
deleted file mode 100644
index b832ebf..0000000
--- a/ableos/src/driver_traits/mod.rs
+++ /dev/null
@@ -1,2 +0,0 @@
-pub mod graphics;
-pub mod serial;
diff --git a/ableos/src/driver_traits/mouse.rs b/ableos/src/driver_traits/mouse.rs
deleted file mode 100644
index 89e0f07..0000000
--- a/ableos/src/driver_traits/mouse.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-// TODO: Bitmasking
-pub enum Mouse {
-    Button1,
-    Button2,
-    Button3,
-    Button4,
-    Button5,
-    X(i8),
-    Y(i8),
-    Wheel(i8),
-}
-
-pub trait PS2Mouse {
-    fn movement();
-    fn button();
-}
diff --git a/ableos/src/driver_traits/serial.rs b/ableos/src/driver_traits/serial.rs
deleted file mode 100644
index 336442e..0000000
--- a/ableos/src/driver_traits/serial.rs
+++ /dev/null
@@ -1,37 +0,0 @@
-use crate::device_interface::CharacterDevice;
-
-pub struct Serial {
-    pub base: usize,
-}
-
-impl CharacterDevice for Serial {
-    fn can_read(&self) -> bool {
-        true
-    }
-
-    fn can_write(&self) -> bool {
-        true
-    }
-
-    fn read_char(&mut self) -> Option<char> {
-        todo!()
-    }
-
-    fn write_char(&mut self, _c: char) -> bool {
-        todo!()
-    }
-
-    fn reset(&mut self) {
-        todo!()
-    }
-
-    fn initialize(&mut self) -> bool {
-        false
-    }
-}
-
-pub fn new_serial_test() {
-    let mut serial = Serial { base: 0x3F8 };
-    serial.initialize();
-    serial.write_char('a');
-}
diff --git a/ableos/src/experiments/EXPLAIN.md b/ableos/src/experiments/EXPLAIN.md
deleted file mode 100644
index 8dd9fe8..0000000
--- a/ableos/src/experiments/EXPLAIN.md
+++ /dev/null
@@ -1 +0,0 @@
-Anything in experiments is heavily unstable and likely to change
diff --git a/ableos/src/experiments/absi.rs b/ableos/src/experiments/absi.rs
deleted file mode 100644
index 6c63f81..0000000
--- a/ableos/src/experiments/absi.rs
+++ /dev/null
@@ -1,107 +0,0 @@
-use logos::{Lexer, Logos};
-
-// TODO improve tokenizer/parser
-pub fn colorify(eval: &str) {
-    let y = eval.split('$');
-    for z in y {
-        match z {
-            "BLACK" => {
-                // set_vga_color(Color::Black, Color::Black);
-            }
-            "RED" => {
-                // set_vga_color(Color::Red, Color::Black);
-            }
-            "GREEN" => {
-                // set_vga_color(Color::Green, Color::Black);
-            }
-            "BLUE" => {
-                // set_vga_color(Color::Blue, Color::Black);
-            }
-            "CYAN" => {
-                // set_vga_color(Color::Cyan, Color::Black);
-            }
-            "MAGENTA" => {
-                // set_vga_color(Color::Magenta, Color::Black);
-            }
-            "BROWN" => {
-                // set_vga_color(Color::Brown, Color::Black);
-            }
-            "LIGHTGRAY" => {
-                // set_vga_color(Color::LightGray, Color::Black);
-            }
-            "DARKGRAY" => {
-                // set_vga_color(Color::DarkGray, Color::Black);
-            }
-            "LIGHTBLUE" => {
-                // set_vga_color(Color::LightBlue, Color::Black);
-            }
-            "LIGHTGREEN" => {
-                // set_vga_color(Color::LightGreen, Color::Black);
-            }
-            "LIGHTCYAN" => {
-                // set_vga_color(Color::LightCyan, Color::Black);
-            }
-            "LIGHTRED" => {
-                // set_vga_color(Color::LightRed, Color::Black);
-            }
-            "PINK" => {
-                // set_vga_color(Color::Pink, Color::Black);
-            }
-            "YELLOW" => {
-                // set_vga_color(Color::Yellow, Color::Black);
-            }
-            "WHITE" => {
-                // set_vga_color(Color::White, Color::Black);
-            }
-            "RESET" => {
-                // set_vga_color(Color::White, Color::Black);
-            }
-            _elk => {
-                // kprint!("{}", elk);
-            }
-        }
-    }
-}
-
-#[derive(Logos, Debug, PartialEq)]
-pub enum Token {
-    // Hex(u32),
-    #[regex(r"\$RED\$")]
-    Red,
-
-    #[regex(r"\$RESET\$")]
-    Reset,
-
-    #[regex("[a-zA-Z!@#$%^&*\">()\n ]+", parse_text, priority = 2)]
-    Text(String),
-
-    #[error]
-    #[regex(r"[ \t\n\f]+", logos::skip)]
-    Error,
-}
-
-pub fn colorify_2(eval: &str) {
-    let lexer = Token::lexer(eval);
-    for token in lexer {
-        use Token::*;
-        match token {
-            Red => {
-                // set_vga_color(Color::Red, Color::Black);
-            }
-            Reset => {
-                // set_vga_color(Color::White, Color::Black);
-            }
-            Text(_text) => {
-                // kprint!("{}", text);
-            }
-            err => {
-                error!("Error parsing {:?}", err);
-            }
-        }
-    }
-}
-
-fn parse_text(lex: &mut Lexer<Token>) -> Option<String> {
-    let slice = lex.slice();
-    Some(String::from(slice))
-}
diff --git a/ableos/src/experiments/banner.txt b/ableos/src/experiments/banner.txt
deleted file mode 100644
index fdea73b..0000000
--- a/ableos/src/experiments/banner.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-                             #####   #####
-  ##   #####  #      ###### ##   ## #     #
- #  #  #    # #      #      #     # #
-#    # #####  #      #####  #     #  #####
-###### #    # #      #      #     #       #
-#    # #    # #      #      ##   ## #     #
-#    # #####  ###### ######  #####   #####
diff --git a/ableos/src/experiments/clip.rs b/ableos/src/experiments/clip.rs
deleted file mode 100644
index 9dd3eb7..0000000
--- a/ableos/src/experiments/clip.rs
+++ /dev/null
@@ -1,53 +0,0 @@
-use alloc::{string::String, vec, vec::Vec};
-
-pub static CLIPBOARD: spin::Mutex<Clipboard> = spin::Mutex::new(Clipboard::new());
-
-#[derive(Debug)]
-pub enum Mime {
-    None,
-    Text(String),
-}
-
-// ctrl+v paste but not pop and pastes
-// ctrl+shift+v pops from the stack and pastes
-// ctrl+c pushes to the stack
-// ctrl+shift+< move stack pointer left
-// ctrl+shift+> move stack pointer right
-
-pub struct Clipboard {
-    pub index: usize,
-    pub pages: Vec<Mime>,
-}
-
-impl Clipboard {
-    pub const fn new() -> Clipboard {
-        Clipboard {
-            index: 0,
-            pages: vec![],
-        }
-    }
-
-    pub fn clear(&mut self) {
-        self.pages = vec![];
-    }
-
-    pub fn set_index(&mut self, index_new: usize) {
-        self.index = index_new;
-    }
-
-    pub fn clip_end(&mut self) {
-        self.index = 0;
-    }
-
-    pub fn clip_home(&mut self) {
-        self.index = self.pages.len();
-    }
-
-    pub fn copy(&mut self, copy_mime: Mime) {
-        self.pages.push(copy_mime);
-    }
-
-    pub fn paste(&mut self) -> &Mime {
-        &self.pages[self.index] as _
-    }
-}
diff --git a/ableos/src/experiments/file.rs b/ableos/src/experiments/file.rs
deleted file mode 100644
index bb0a5d3..0000000
--- a/ableos/src/experiments/file.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-struct Permissions {
-    write_files: bool,
-    read_files: bool,
-    execute_files: bool,
-    // Every other user is part of global
-    global_write_files: bool,
-    global_read_files: bool,
-    global_execute_files: bool,
-}
-
-pub struct File {
-    owner: u8,
-    permissions: Permissions,
-    data: Vec<u8>,
-}
-
-pub struct Folder {
-    owner: u8,
-    permissions: Permissions,
-    folders: Vec<Folder>,
-    files: Vec<File>,
-}
diff --git a/ableos/src/experiments/filesystem.txt b/ableos/src/experiments/filesystem.txt
deleted file mode 100644
index f1fe2cd..0000000
--- a/ableos/src/experiments/filesystem.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-<user>/home/app1
-<user>/conf/app1
-<user>/apps/app1
-
-file:app1
-conf:app1
-apps:app1
-// Discouraged
-raw:
-
-/<user>/<protocol>/app1
-protocol.toml
-
-
-hi = ""
diff --git a/ableos/src/experiments/futex.rs b/ableos/src/experiments/futex.rs
deleted file mode 100644
index 3252d6f..0000000
--- a/ableos/src/experiments/futex.rs
+++ /dev/null
@@ -1,57 +0,0 @@
-use core::time::Duration;
-
-pub struct AtomicU32(u32);
-impl AtomicU32 {
-    //if v != current value
-    pub fn wait(&self, _v: u32) {
-        todo!();
-    }
-
-    pub fn wait_timeout(&self, _v: u32, _timeout: Duration) -> bool {
-        todo!();
-    }
-    pub fn wake_single(&self) {
-        todo!();
-    }
-    pub fn wake_all(&self) {
-        todo!();
-    }
-}
-/*
-// SUPER HANDWAVEY
-// YOU WILL NEED LOCKING THAT I DIDNT WRITE OUT (you == zuurr#9735)
-
-// all the red is by design
-pub fn futex_wait(atom: &AtomicU32, value: usize, current_thread: ThreadID) {
-    let address = atomic as *const _ as usize;
-    let waiters = waiters_for(address); // Hold lock
-    waiters.add(current_thread);
-    if self.load() == value {
-        current_thread.sleep();
-    } else {
-        waiters.remove(current_thread);
-    }
-}
-
-pub fn futex_wake(atom: &AtomicU32, threads_to_wake: usize) {
-    let address = atomic as *const _ as usize;
-    let waiters = waiters_for(address);
-    for waiting_thread in waiters.into_iter().take(threads_to_wake) {
-        waiting_thread.wake()
-    }
-}
-*/
-
-struct FutexWaitlist {
-    address: u8,
-    // data: Vec<ThreadID>,
-}
-
-impl FutexWaitlist {
-    pub fn remove(&mut self) {
-        todo!();
-    }
-    pub fn add(&mut self) {
-        todo!();
-    }
-}
diff --git a/ableos/src/experiments/kinfo.rs b/ableos/src/experiments/kinfo.rs
deleted file mode 100644
index fdacbb2..0000000
--- a/ableos/src/experiments/kinfo.rs
+++ /dev/null
@@ -1,75 +0,0 @@
-use super::systeminfo::SystemMemory;
-use crate::arch::drivers::sysinfo::master;
-use core::fmt::Display;
-use kernel::allocator::ALLOCATOR;
-use versioning::Version;
-use x86_64::instructions::interrupts::{disable, enable};
-
-pub enum CpuType {
-    RiscV(String),
-    X86_64(String),
-}
-impl Display for CpuType {
-    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
-        write!(
-            f,
-            "{}",
-            match self {
-                CpuType::RiscV(s) => s,
-                CpuType::X86_64(s) => s,
-            }
-        )
-    }
-}
-
-/// simple info you would want to know in a neofetch like program
-pub struct KernelInfo {
-    // os: String,
-    // host: String,
-    pub kernel_version: Version,
-    pub cpu: CpuType,
-    // gpu: String,
-    pub memory: SystemMemory,
-}
-
-impl KernelInfo {
-    pub fn get() -> KernelInfo {
-        disable();
-        let allocator = ALLOCATOR.lock();
-        let total = allocator.size();
-        let used = allocator.used();
-        enable();
-
-        let cpu = CpuType::X86_64(master().unwrap().brand_string().unwrap().to_string());
-        KernelInfo {
-            kernel_version: Version {
-                major: 0,
-                minor: 0,
-                patch: 0,
-            },
-            cpu,
-            memory: SystemMemory { total, used },
-        }
-    }
-}
-
-impl Display for KernelInfo {
-    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
-        write!(
-            f,
-            "
-            OS: AbleOS
-            Host: {{}}
-            Kernel: {}.{}.{}
-            CPU: {}
-            Memory: {}/{}
-        ",
-            self.kernel_version.major,
-            self.kernel_version.minor,
-            self.kernel_version.patch,
-            self.cpu,
-            self.memory.used,
-            self.memory.total
-        )
-    }
-}
diff --git a/ableos/src/experiments/mail.rs b/ableos/src/experiments/mail.rs
deleted file mode 100644
index 06bdfda..0000000
--- a/ableos/src/experiments/mail.rs
+++ /dev/null
@@ -1,113 +0,0 @@
-#![allow(dead_code)]
-// TODO: Evaluate  variable sized mailboxes
-
-pub struct MailBoxes {
-    flags: u8,
-    mailboxes: [u64; 4],
-}
-
-impl MailBoxes {
-    pub fn new() -> Self {
-        Self {
-            flags: 0b0000_0000,
-            mailboxes: [0; 4],
-        }
-    }
-
-    pub fn reset(&mut self) {
-        self.flags = 0b0000_0000;
-        self.mailboxes = [0; 4];
-    }
-
-    pub fn set_mailbox(&mut self, mailbox_num: u8, mailbox_data: u64) {
-        if let 0..=3 = mailbox_num {
-            self.mailboxes[mailbox_num as usize] = mailbox_data
-        }
-    }
-
-    pub fn set_flag(&mut self, flag_num: u8) {
-        match flag_num {
-            0 => {
-                self.flags |= 0b0000_0001;
-            }
-            1 => {
-                self.flags |= 0b0000_0010;
-            }
-            2 => {
-                self.flags |= 0b0000_0100;
-            }
-            3 => {
-                self.flags |= 0b0000_1000;
-            }
-            4 => {
-                self.flags |= 0b0001_0000;
-            }
-            5 => {
-                self.flags |= 0b0010_0000;
-            }
-            6 => {
-                self.flags |= 0b0100_0000;
-            }
-            7 => {
-                self.flags |= 0b1000_0000;
-            }
-
-            _ => {}
-        }
-    }
-    pub fn dump_flags(&self) {
-        trace!(
-            "Flag 0: {:08b} | {}",
-            self.flags & 0b0000_0001,
-            self.flags & 0b0000_0001
-        );
-
-        trace!(
-            "Flag 1: {:08b} | {}",
-            self.flags & 0b0000_0010,
-            self.flags >> 1 & 0b0000_0001
-        );
-
-        trace!(
-            "Flag 2: {:08b} | {}",
-            self.flags & 0b0000_0100,
-            self.flags >> 2 & 0b0000_0001
-        );
-
-        trace!(
-            "Flag 3: {:08b} | {}",
-            self.flags & 0b0000_1000,
-            self.flags >> 3 & 0b0000_0001
-        );
-
-        trace!(
-            "Flag 4: {:08b} | {}",
-            self.flags & 0b0001_0000,
-            self.flags >> 4 & 0b0000_0001
-        );
-
-        trace!(
-            "Flag 5: {:08b} | {}",
-            self.flags & 0b0010_0000,
-            self.flags >> 5 & 0b0000_0001
-        );
-
-        trace!(
-            "Flag 6: {:08b} | {}",
-            self.flags & 0b0100_0000,
-            self.flags >> 6 & 0b0000_0001
-        );
-
-        trace!(
-            "Flag 7: {:08b} | {}",
-            self.flags & 0b1000_0000,
-            self.flags >> 7 & 0b0000_0001
-        );
-    }
-}
-
-impl Default for MailBoxes {
-    fn default() -> Self {
-        Self::new()
-    }
-}
diff --git a/ableos/src/experiments/mod.rs b/ableos/src/experiments/mod.rs
deleted file mode 100644
index 134b35d..0000000
--- a/ableos/src/experiments/mod.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-#![allow(dead_code)]
-
-pub mod absi;
-pub mod clip;
-pub mod futex;
-pub mod kinfo;
-pub mod mail;
-pub mod server;
-pub mod systeminfo;
-pub mod virtual_memory;
-pub mod y_compositor;
-
-pub const BANNER: &str = include_str!("banner.txt");
diff --git a/ableos/src/experiments/notification.rs b/ableos/src/experiments/notification.rs
deleted file mode 100644
index fc49825..0000000
--- a/ableos/src/experiments/notification.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-pub type thumbnail = u8;
-
-pub struct Notification {
-    thumbnail: thumbnail,
-    text_body: String,
-    time: u64,
-}
diff --git a/ableos/src/experiments/pkg.rs b/ableos/src/experiments/pkg.rs
deleted file mode 100644
index a0f9512..0000000
--- a/ableos/src/experiments/pkg.rs
+++ /dev/null
@@ -1,45 +0,0 @@
-use crate::experiments::kinfo::SemanticVersion;
-
-// Scuffed
-pub type Hash = u8;
-pub type PackageName = String;
-
-pub struct MetaPackage {
-    pub name: u8,
-    pub version: SemanticVersion,
-    pub authors: [u8; 8],
-    pub support_email: u8,
-    pub hash: Hash,
-}
-
-impl MetaPackage {
-    pub fn new() -> Self {
-        Self {
-            name: 0,
-            version: SemanticVersion {
-                major: 0,
-                minor: 0,
-                patch: 0,
-            },
-            authors: [0; 8],
-            support_email: 8,
-            hash: 0,
-        }
-    }
-
-    fn validate_hash(&self) {}
-}
-
-impl core::fmt::Display {
-    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
-        write!(
-            f,
-            "Packname: {}
-Version: {}
-Authors: {:?}
-Support Email: {}
-Hash: {}",
-            self.name, self.version, self.authors, self.support_email, self.hash
-        )
-    }
-}
diff --git a/ableos/src/experiments/server.rs b/ableos/src/experiments/server.rs
deleted file mode 100644
index 4e8f217..0000000
--- a/ableos/src/experiments/server.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-pub trait Server {
-    /// Initialize the server and return a number
-    fn initialize() -> u32;
-
-    /// kill the server
-    fn kill() -> bool;
-
-    // put data in the servers outbox
-    fn send();
-
-    // put data in the servers inbox and notify it
-    fn recieve();
-}
diff --git a/ableos/src/experiments/syscalls.md b/ableos/src/experiments/syscalls.md
deleted file mode 100644
index b5e654a..0000000
--- a/ableos/src/experiments/syscalls.md
+++ /dev/null
@@ -1,39 +0,0 @@
-
-| low \\ high | 0                   | 1                        | 2                                                                                          | 3                   | 4                   | 5                   | 6                   | 7                   | 8                   | 9                   | A                   | B                   | C                   | D                   | E                   | F                   |
-| ----------- | ------------------- | ------------------------ | ------------------------------------------------------------------------------------------ | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- |
-| 0           | **kill**            | <sub>reserved</sub>      | **sleep**                                                                                  | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| 1           | **stdout_reset**    | <sub>reserved</sub>      | **sleep_until**                                                                            | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| 2           | **stdin**           | <sub>reserved</sub>      | [**nanosleep**](https://www.reddit.com/r/anime/comments/e7sg7g/nichijou_trouble_sleeping/) | **aes_encrypt**     | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| 3           | **stdout**          | <sub>reserved</sub>      | **nanosleep_until**                                                                        | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| 4           | **stdin_get_title** | <sub>reserved</sub>      | **get_time**                                                                               | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| 5           | **stdin_set_title** | <sub>reserved</sub>      | **set_time**                                                                               | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| 6           | **get_pid**         | **make_directory**       | <sub>reserved</sub>                                                                        | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| 7           | **pinfo**           | **delete_directory**     | **socket_bind**                                                                            | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| 8           | <sub>reserved</sub> | **rename_directory**     | **socket_connect**                                                                         | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| 9           | <sub>reserved</sub> | **set_directory_access** | **socket_disconnect**                                                                      | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| A           | **set_priority**    | **make_file**            | **socket_send**                                                                            | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| B           | **get_priority**    | **delete_file**          | **socket_receive**                                                                         | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| C           | **get_hostname**    | **rename_file**          | <sub>reserved</sub>                                                                        | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| D           | **set_hostname**    | **set_file_access**      | <sub>reserved</sub>                                                                        | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| E           | <sub>reserved</sub> | **file_read**            | <sub>reserved</sub>                                                                        | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| F           | <sub>reserved</sub> | **file_write**           | <sub>reserved</sub>                                                                        | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-
-| low \\ high | 10                  | 11                  | 12                  | 13                  | 14                  | 15                  | 16                  | 17                  | 18                  | 19                  | 1A                  | 1B                  | 1C                  | 1D                  | 1E                  | 1F                  |
-| ----------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- |
-| 0           | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| 1           | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| 2           | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| 3           | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| 4           | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| 5           | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| 6           | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| 7           | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| 8           | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| 9           | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| A           | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| B           | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| C           | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| D           | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| E           | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-| F           | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> | <sub>reserved</sub> |
-
diff --git a/ableos/src/experiments/systeminfo.rs b/ableos/src/experiments/systeminfo.rs
deleted file mode 100644
index 06fda4e..0000000
--- a/ableos/src/experiments/systeminfo.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-// Can be standardized
-// NOTE: move the file to the src/ dir
-
-pub const KERNEL_VERSION: &str = env!("CARGO_PKG_VERSION");
-#[cfg(debug_assertions)]
-/// A constant to check if the kernel is in debug mode
-pub const RELEASE_TYPE: &str = "debug";
-#[cfg(not(debug_assertions))]
-/// A constant to check if the kernel is in release mode
-pub const RELEASE_TYPE: &str = "release";
-
-pub struct SystemMemory {
-    pub used: usize,
-    pub total: usize,
-}
-
-impl core::fmt::Display for SystemMemory {
-    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
-        write!(f, "{} Bytes / {} Bytes", self.used, self.total)
-    }
-}
diff --git a/ableos/src/experiments/user.rs b/ableos/src/experiments/user.rs
deleted file mode 100644
index 645a57a..0000000
--- a/ableos/src/experiments/user.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-pub struct User {
-    id: u8,
-    clipboard: Clipboard,
-}
diff --git a/ableos/src/experiments/virtual_memory.rs b/ableos/src/experiments/virtual_memory.rs
deleted file mode 100644
index 7cbf37a..0000000
--- a/ableos/src/experiments/virtual_memory.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-#![allow(dead_code)]
-
-pub struct Scheduler {
-    executables: usize,
-}
-
-pub struct RunQueue;
diff --git a/ableos/src/experiments/y_compositor/compositor.rs b/ableos/src/experiments/y_compositor/compositor.rs
deleted file mode 100644
index ee5e63b..0000000
--- a/ableos/src/experiments/y_compositor/compositor.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-pub struct Compositor;
-impl Compositor {
-    pub fn new() -> Self {
-        Self
-    }
-}
-
-impl Default for Compositor {
-    fn default() -> Self {
-        Self::new()
-    }
-}
diff --git a/ableos/src/experiments/y_compositor/mod.rs b/ableos/src/experiments/y_compositor/mod.rs
deleted file mode 100644
index 32bd838..0000000
--- a/ableos/src/experiments/y_compositor/mod.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-//!
-pub mod compositor;
-pub mod window;
diff --git a/ableos/src/experiments/y_compositor/window.rs b/ableos/src/experiments/y_compositor/window.rs
deleted file mode 100644
index 1c8d56f..0000000
--- a/ableos/src/experiments/y_compositor/window.rs
+++ /dev/null
@@ -1,37 +0,0 @@
-// use crate::driver_traits::graphics::Point;
-
-pub type MenuBar = Vec<MenuOption>;
-
-pub struct MenuOption {
-    symbol: char,
-}
-
-pub struct Window {
-    title: String,
-    // position: Point,
-    fullscreen: bool,
-}
-
-// all of these should return a result
-impl Window {
-    pub fn new(title: String, /*position: Point,*/ fullscreen: bool) -> Self {
-        Self {
-            title,
-            // position,
-            fullscreen,
-        }
-    }
-
-    pub fn fullscreen(&mut self) {
-        self.fullscreen = true;
-    }
-    pub fn revert_fullscreen(&mut self) {
-        self.fullscreen = false;
-    }
-    pub fn set_title(&mut self) {
-        todo!();
-    }
-    pub fn set_position(&mut self /*pos: Point*/) {
-        // self.position = pos;
-    }
-}
diff --git a/ableos/src/experiments/y_compositor/wm.rs b/ableos/src/experiments/y_compositor/wm.rs
deleted file mode 100644
index e69de29..0000000
diff --git a/ableos/src/filesystem/errors.rs b/ableos/src/filesystem/errors.rs
deleted file mode 100644
index 3f2fb40..0000000
--- a/ableos/src/filesystem/errors.rs
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2022, Umut Ä°nan ErdoÄŸan <umutinanerdogan@pm.me>
- *
- * SPDX-License-Identifier: MPL-2.0
- */
-
-#[derive(Copy, Clone, Debug)]
-pub enum FsError {
-    EndOfFile,
-    InodeNotFound,
-    InvalidDevice,
-    InvalidPath,
-    IsDirectory,
-    NotAbsolute,
-    NotADirectory,
-    NotFound,
-    Recursion,
-    UnsupportedOperation,
-}
-
-impl Into<FsError> for ext2::error::Error {
-    fn into(self) -> FsError {
-        match self {
-            ext2::error::Error::Other(_) => todo!(),
-            ext2::error::Error::BadMagic { magic: _ } => todo!(),
-            ext2::error::Error::OutOfBounds { index: _ } => todo!(),
-            ext2::error::Error::AddressOutOfBounds {
-                sector: _,
-                offset: _,
-                size: _,
-            } => todo!(),
-            ext2::error::Error::BadBlockGroupCount {
-                by_blocks: _,
-                by_inodes: _,
-            } => todo!(),
-            ext2::error::Error::InodeNotFound { inode: _ } => FsError::InodeNotFound,
-            ext2::error::Error::NotADirectory { inode: _, name: _ } => FsError::NotADirectory,
-            ext2::error::Error::NotAbsolute { name: _ } => todo!(),
-            ext2::error::Error::NotFound { name: _ } => FsError::NotFound,
-        }
-    }
-}
diff --git a/ableos/src/filesystem/ext2.rs b/ableos/src/filesystem/ext2.rs
deleted file mode 100644
index 76dc14f..0000000
--- a/ableos/src/filesystem/ext2.rs
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Copyright (c) 2022, Umut Ä°nan ErdoÄŸan <umutinanerdogan@pm.me>
- *
- * SPDX-License-Identifier: MPL-2.0
- */
-
-use alloc::sync::{Arc, Weak};
-use ext2::fs::{sync::Synced, Ext2};
-use ext2::sector::SectorSize;
-use ext2::sys::inode::TypePerm;
-use ext2::volume::Volume;
-
-use crate::handle::{Handle, HandleResource};
-
-use super::errors::FsError;
-use super::vfs::{DirectoryEntry, FsFlags, VirtualFileSystem, VFS};
-use super::{FsNode, FsResult as Result, StorageDevice};
-
-pub struct Ext2StorageDevice<S, V>
-where
-    S: SectorSize,
-    V: Volume<u8, S>,
-{
-    fs: Synced<Ext2<S, V>>,
-    device_handle: Handle,
-    root_handle: Handle,
-}
-
-impl<S, V> Ext2StorageDevice<S, V>
-where
-    S: SectorSize,
-    V: Volume<u8, S>,
-{
-    pub fn new(volume: V) -> Result<Self> {
-        let fs = Synced::new(volume).map_err(|e| e.into())?;
-        let root_inode = fs.root_inode();
-        let device_handle = Handle::new(HandleResource::StorageDevice);
-        let root = Arc::new(FsNode::new(
-            FsFlags::DIRECTORY,
-            root_inode.size(),
-            2,
-            device_handle,
-            Weak::new(),
-        ));
-
-        let mut vfs = VFS.lock();
-        let root_handle = vfs.add_fs_node(root.clone());
-
-        Ok(Self {
-            fs,
-            device_handle,
-            root_handle,
-        })
-    }
-}
-
-impl<S, V> StorageDevice for Ext2StorageDevice<S, V>
-where
-    S: SectorSize + Send,
-    V: Volume<u8, S> + Send,
-{
-    fn read(&self, node: &FsNode, offset: usize, size: usize, buffer: &mut Vec<u8>) -> Result<()> {
-        let inode = self
-            .fs
-            .inode_nth(node.inode() as usize)
-            .ok_or_else(|| FsError::InodeNotFound)?;
-
-        // FIXME: I don't really know how Ext2 works, so for now we don't
-        //        support non-zero offsets and buffer sizes that don't match
-        //        the file length. We always read the whole file.
-        if offset > 0 || size != inode.size() {
-            Err(FsError::UnsupportedOperation)?;
-        }
-
-        inode.read_to_end(buffer).map_err(|e| e.into())?;
-        Ok(())
-    }
-
-    fn write(&self, _node: &FsNode, _offset: usize, _buffer: &[u8]) -> Result<()> {
-        todo!()
-    }
-
-    fn read_dir(&self, node: &FsNode, index: usize) -> Result<DirectoryEntry> {
-        let inode = self
-            .fs
-            .inode_nth(node.inode() as usize)
-            .ok_or_else(|| FsError::InodeNotFound)?;
-        let mut dir = inode.directory().ok_or_else(|| FsError::NotADirectory)?;
-        let entry = dir
-            .nth(index)
-            .ok_or_else(|| FsError::InodeNotFound)?
-            .map_err(|e| e.into())?;
-        let entry_inode = self
-            .fs
-            .inode_nth(entry.inode)
-            .ok_or_else(|| FsError::InodeNotFound)?;
-        let mut vfs = VFS.lock();
-        let entry_node_handle = vfs
-            .find_fs_node(entry.inode, self.device_handle)
-            .unwrap_or_else(|| {
-                vfs.add_fs_node(Arc::new(FsNode::new(
-                    ext2_type_to_fs_flags(entry_inode.type_perm()),
-                    entry_inode.size(),
-                    entry.inode,
-                    self.device_handle,
-                    Weak::new(),
-                )))
-            });
-
-        Ok(DirectoryEntry::new(
-            entry.file_name_string(),
-            entry_node_handle,
-        ))
-    }
-
-    fn find_dir(&self, vfs: &mut VirtualFileSystem, node: &FsNode, name: &str) -> Result<Handle> {
-        let inode = self
-            .fs
-            .inode_nth(node.inode() as usize)
-            .ok_or_else(|| FsError::InodeNotFound)?;
-        let dir = inode.directory().ok_or_else(|| FsError::NotADirectory)?;
-        let mut found_node = Err(FsError::NotFound);
-        for entry in dir {
-            if entry.is_err() {
-                continue;
-            }
-
-            let entry = entry.unwrap();
-            let entry_inode = self
-                .fs
-                .inode_nth(entry.inode as usize)
-                .ok_or_else(|| FsError::InodeNotFound)?;
-            if entry.file_name_string() == name {
-                found_node = Ok(vfs
-                    .find_fs_node(entry.inode, self.device_handle)
-                    .unwrap_or_else(|| {
-                        vfs.add_fs_node(Arc::new(FsNode::new(
-                            ext2_type_to_fs_flags(entry_inode.type_perm()),
-                            entry_inode.size(),
-                            entry.inode,
-                            self.device_handle,
-                            Weak::new(),
-                        )))
-                    }));
-                break;
-            }
-        }
-
-        found_node
-    }
-
-    fn root(&self) -> Handle {
-        self.root_handle
-    }
-
-    fn device_handle(&self) -> Handle {
-        self.device_handle
-    }
-}
-
-fn ext2_type_to_fs_flags(type_perm: TypePerm) -> FsFlags {
-    trace!("{type_perm:?}");
-    let is_directory = type_perm & TypePerm::DIRECTORY == TypePerm::DIRECTORY;
-    let is_symlink = type_perm & TypePerm::SYMLINK == TypePerm::SYMLINK;
-    let t = if is_directory {
-        FsFlags::DIRECTORY
-    } else {
-        FsFlags::FILE
-    };
-    let s = if is_symlink {
-        FsFlags::SYMBOLIC_LINK
-    } else {
-        FsFlags::empty()
-    };
-
-    t | s
-}
diff --git a/ableos/src/filesystem/mod.rs b/ableos/src/filesystem/mod.rs
deleted file mode 100644
index c735064..0000000
--- a/ableos/src/filesystem/mod.rs
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 2022, Umut Ä°nan ErdoÄŸan <umutinanerdogan@pm.me>
- *
- * SPDX-License-Identifier: MPL-2.0
- */
-
-pub mod errors;
-pub mod ext2;
-pub mod vfs;
-
-use ::ext2::sector::Size1024;
-use alloc::sync::Arc;
-
-use crate::{filesystem::vfs::VFS, handle::Handle, KERNEL_STATE};
-
-use self::{
-    errors::FsError,
-    ext2::Ext2StorageDevice,
-    vfs::{DirectoryEntry, FsNode, VirtualFileSystem},
-};
-use FsResult as Result;
-
-pub type FsResult<T> = core::result::Result<T, FsError>;
-
-/// The methods on this trait are to be used internally.
-pub trait StorageDevice
-where
-    Self: Send,
-{
-    fn read(&self, node: &FsNode, offset: usize, size: usize, buffer: &mut Vec<u8>) -> Result<()>;
-    fn write(&self, node: &FsNode, offset: usize, buffer: &[u8]) -> Result<()>;
-    fn read_dir(&self, node: &FsNode, index: usize) -> Result<DirectoryEntry>;
-    fn find_dir(&self, vfs: &mut VirtualFileSystem, node: &FsNode, name: &str) -> Result<Handle>;
-    // TODO: flush to disk
-
-    fn root(&self) -> Handle;
-    fn device_handle(&self) -> Handle;
-}
-
-pub fn init() -> Result<()> {
-    let mut state = KERNEL_STATE.lock();
-    let fs = load_fs()?;
-    let mut vfs = VFS.lock();
-    vfs.set_root(fs.root())?;
-    state.add_storage_device(fs);
-    Ok(())
-}
-
-fn load_fs() -> Result<Ext2StorageDevice<Size1024, Vec<u8>>> {
-    let mut volume = Vec::new();
-    volume.extend_from_slice(include_bytes!("../../../userland/root_fs/ext2.img"));
-
-    Ext2StorageDevice::new(volume)
-}
-
-pub fn tree(path: &str) -> Result<()> {
-    let dir = {
-        let mut vfs = VFS.lock();
-        let handle = vfs.resolve(path)?;
-        vfs.fs_node(handle).ok_or_else(|| FsError::NotFound)?
-    };
-
-    tree_inner(
-        dir,
-        if path.starts_with('/') {
-            &path[1..]
-        } else {
-            path
-        },
-    );
-    Ok(())
-}
-
-fn tree_inner<S: Into<String>>(dir: Arc<FsNode>, path: S) {
-    let path = path.into();
-    if let Some(dir) = dir.directory() {
-        for entry in dir {
-            let fs_node = {
-                let vfs = VFS.lock();
-                vfs.fs_node(entry.node()).unwrap()
-            };
-
-            println!("{}/{} => {}", path, entry.name(), fs_node.inode());
-            trace!("{entry:#?}");
-            if entry.name() != "." && entry.name() != ".." {
-                tree_inner(fs_node, format!("{}/{}", path, entry.name()));
-            }
-        }
-    }
-}
diff --git a/ableos/src/filesystem/vfs.rs b/ableos/src/filesystem/vfs.rs
deleted file mode 100644
index 5a8fdeb..0000000
--- a/ableos/src/filesystem/vfs.rs
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
- * Copyright (c) 2022, Umut Ä°nan ErdoÄŸan <umutinanerdogan@pm.me>
- *
- * SPDX-License-Identifier: MPL-2.0
- */
-
-use core::cmp;
-
-use alloc::sync::{Arc, Weak};
-use hashbrown::HashMap;
-use lazy_static::lazy_static;
-use spin::Mutex;
-
-use super::{errors::FsError, FsResult as Result};
-use crate::{
-    handle::{Handle, HandleResource},
-    KERNEL_STATE,
-};
-
-/// The limit for symlink recursion. In POSIX, this is at least 8. In Linux, this is 40.
-const SYMLINK_RECURSION_LIMIT: u8 = 8;
-
-lazy_static! {
-    pub static ref VFS: Mutex<VirtualFileSystem> = Default::default();
-}
-
-pub struct VirtualFileSystem {
-    fs_nodes: HashMap<Handle, Arc<FsNode>>,
-    root_node: Weak<FsNode>,
-    root_handle: Option<Handle>,
-}
-
-impl VirtualFileSystem {
-    /// Sets the VFS root to the given VFS node handle.
-    pub fn set_root(&mut self, handle: Handle) -> Result<()> {
-        let root_node = self.fs_node(handle).ok_or_else(|| FsError::NotFound)?;
-        self.root_node = Arc::downgrade(&root_node);
-        self.root_handle = Some(handle);
-        Ok(())
-    }
-
-    /// Resolves the path to a handle. If the resulting node is a symlink,
-    /// the symlink itself is returned. All symlinks but the resulting node
-    /// are traversed.
-    ///
-    /// Requires a mutable reference because internally it might open new VFS
-    /// nodes while resolving the path.
-    pub fn resolve<S: AsRef<str>>(&mut self, path: S) -> Result<Handle> {
-        // TODO: caching
-        let path = path.as_ref();
-
-        if !path.starts_with('/') {
-            // FIXME: use current process working directory for relative paths?
-            Err(FsError::NotAbsolute)?;
-        }
-
-        let mut components = path.split_terminator('/');
-        components.next(); // throw the empty string caused by the root /
-                           // will be initialised beforehand so okay to unwrap
-        let mut resolved_node = self.root_handle.unwrap();
-        // let mut symlink_recursion_level = 0;
-        for component in components {
-            // if symlink_recursion_level >= SYMLINK_RECURSION_LIMIT {
-            //     Err(FsError::Recursion)?;
-            // }
-
-            if component == "" {
-                Err(FsError::InvalidPath)?;
-            }
-
-            // checked by previous iteration so okay to unwrap
-            let parent = self.fs_node(resolved_node).unwrap();
-
-            // TODO: permission checks
-
-            // FIXME: find_dir checks that this is a directory already but
-            //        that's just more boilerplate in StorageDevice impls
-            //        we should probably check that here instead to reduce
-            //        required boilerplate
-            // if !parent.is_dir() {
-            //     Err(FsError::NotADirectory)?;
-            // }
-
-            // FIXME: handle mount points
-            // FIXME: handle symlinks
-
-            resolved_node = parent.find_dir(self, component)?;
-        }
-
-        Ok(resolved_node)
-    }
-
-    pub fn add_fs_node(&mut self, fs_node: Arc<FsNode>) -> Handle {
-        let handle = Handle::new(HandleResource::FsNode);
-        self.fs_nodes.insert(handle, fs_node);
-        handle
-    }
-
-    pub fn find_fs_node(&mut self, inode: usize, device_handle: Handle) -> Option<Handle> {
-        self.fs_nodes.iter().find_map(|(handle, fs_node)| {
-            if fs_node.inode == inode && fs_node.device_handle == device_handle {
-                Some(*handle)
-            } else {
-                None
-            }
-        })
-    }
-
-    pub fn fs_node(&self, handle: Handle) -> Option<Arc<FsNode>> {
-        self.fs_nodes.get(&handle).cloned()
-    }
-
-    pub fn root_node(&self) -> Arc<FsNode> {
-        // okay to unwrap since this should never be called before init
-        self.root_node.upgrade().unwrap()
-    }
-}
-
-impl Default for VirtualFileSystem {
-    fn default() -> Self {
-        Self {
-            fs_nodes: HashMap::new(),
-            root_node: Weak::new(),
-            root_handle: None,
-        }
-    }
-}
-
-/// A VFS node, that can either be a file or a directory.
-///
-/// VFS nodes are created whenever a file that doesn't have an open VFS node is
-/// opened. When there are no open file descriptors to a file, the associated
-/// VFS node is dropped.
-#[derive(Debug)]
-pub struct FsNode {
-    flags: FsFlags,
-    size: usize,           // in bytes
-    inode: usize,          // implementation specific identifier for the node
-    device_handle: Handle, // uniquely assigned device handle
-    ptr: Weak<FsNode>,     // used by mountpoints and symlinks
-                           // TODO: permissions mask
-                           // TODO: owning user/group
-}
-
-impl FsNode {
-    pub fn new(
-        flags: FsFlags,
-        size: usize,
-        inode: usize,
-        device_handle: Handle,
-        ptr: Weak<FsNode>,
-    ) -> Self {
-        Self {
-            flags,
-            size,
-            inode,
-            device_handle,
-            ptr,
-        }
-    }
-
-    /// This method opens a new file descriptor for this VFS node.
-    // TODO: make this take flags
-    pub fn open(self: Arc<Self>) -> Result<Handle> {
-        let mut state = KERNEL_STATE.lock();
-        let handle = state.open_file_descriptor(self);
-
-        Ok(handle)
-    }
-
-    /// This method reads from the VFS node without opening a new file
-    /// descriptor. This is intended to be used internally, if you're trying to
-    /// read a file then you probably want to read from a file descriptor.
-    pub fn read(&self, offset: usize, size: usize, buffer: &mut Vec<u8>) -> Result<usize> {
-        let state = KERNEL_STATE.lock();
-        let device = state
-            .storage_device(self.device_handle)
-            .ok_or_else(|| FsError::InvalidDevice)?;
-
-        if self.is_dir() {
-            Err(FsError::IsDirectory)?;
-        }
-
-        if offset > self.size {
-            Err(FsError::EndOfFile)?;
-        }
-
-        let readable_size = cmp::min(size, self.size - offset);
-        device.read(self, offset, readable_size, buffer)?;
-        Ok(readable_size)
-    }
-
-    /// This method writes to the VFS node without opening a new file
-    /// descriptor. This is intended to be used internally, if you're trying to
-    /// write to a file then you probably want to write to a file descriptor.
-    pub fn write(&self, offset: usize, buffer: &[u8]) -> Result<()> {
-        let state = KERNEL_STATE.lock();
-        let device = state
-            .storage_device(self.device_handle)
-            .ok_or_else(|| FsError::InvalidDevice)?;
-
-        device.write(self, offset, buffer)
-    }
-
-    pub fn read_dir(&self, index: usize) -> Result<DirectoryEntry> {
-        let state = KERNEL_STATE.lock();
-        let device = state
-            .storage_device(self.device_handle)
-            .ok_or_else(|| FsError::InvalidDevice)?;
-
-        device.read_dir(self, index)
-    }
-
-    pub fn find_dir(&self, vfs: &mut VirtualFileSystem, name: &str) -> Result<Handle> {
-        let state = KERNEL_STATE.lock();
-        let device = state
-            .storage_device(self.device_handle)
-            .ok_or_else(|| FsError::InvalidDevice)?;
-
-        device.find_dir(vfs, self, name)
-    }
-
-    pub fn directory(self: Arc<Self>) -> Option<Directory> {
-        if self.is_dir() {
-            Some(Directory::new(self))
-        } else {
-            None
-        }
-    }
-
-    pub fn is_dir(&self) -> bool {
-        (self.flags & FsFlags::DIRECTORY) == FsFlags::DIRECTORY
-    }
-
-    pub fn inode(&self) -> usize {
-        self.inode
-    }
-
-    pub fn size(&self) -> usize {
-        self.size
-    }
-}
-
-impl Drop for FsNode {
-    fn drop(&mut self) {
-        trace!("dropping VFS node: {self:#?}");
-        // TODO: flush to disk here
-    }
-}
-
-bitflags! {
-    /// Flags associated with VFS nodes and file descriptors
-    ///
-    /// 0x00000MST \
-    /// T is set to 0 for files, 1 for directories \
-    /// S is set when the file is a symbolic link \
-    /// M is set if the file is an active mount point
-    pub struct FsFlags: u8 {
-        const FILE = 0b00000000;
-        const DIRECTORY = 0b00000001;
-        const SYMBOLIC_LINK = 0b00000010;
-        const MOUNT_POINT = 0b00000100;
-    }
-}
-
-pub struct Directory {
-    node: Arc<FsNode>,
-    index: usize,
-}
-
-impl Directory {
-    fn new(node: Arc<FsNode>) -> Self {
-        Self { node, index: 0 }
-    }
-}
-
-impl Iterator for Directory {
-    type Item = DirectoryEntry;
-
-    fn next(&mut self) -> Option<Self::Item> {
-        let value = self.node.read_dir(self.index).ok();
-        self.index += 1;
-        value
-    }
-}
-
-#[derive(Clone, Debug)]
-pub struct DirectoryEntry {
-    name: String,
-    node: Handle,
-}
-
-impl DirectoryEntry {
-    pub(super) fn new(name: String, node: Handle) -> Self {
-        Self { name, node }
-    }
-
-    pub fn name(&self) -> String {
-        self.name.clone()
-    }
-
-    pub fn node(&self) -> Handle {
-        self.node
-    }
-}
diff --git a/ableos/src/graphics/mod.rs b/ableos/src/graphics/mod.rs
deleted file mode 100644
index e408029..0000000
--- a/ableos/src/graphics/mod.rs
+++ /dev/null
@@ -1,342 +0,0 @@
-pub mod pixel_format;
-
-use spin::Lazy;
-use vga::{colors::Color16, writers::GraphicsWriter};
-
-use crate::vga_e::VGAE;
-
-use pixel_format::*;
-
-pub static SCREEN_BUFFER: Lazy<spin::Mutex<ScreenBuffer>> =
-    Lazy::new(|| spin::Mutex::new(ScreenBuffer::new(640, 480)));
-
-const FONT_SCALE: f32 = 1.6;
-
-const GLYPH_HEIGHT: f32 = 18.0;
-const GLYPH_WIDTH: f32 = 10.0;
-
-#[derive(Debug)]
-pub struct ScreenSize {
-    pub x: usize,
-    pub y: usize,
-}
-
-impl ScreenSize {
-    pub fn new(x: usize, y: usize) -> Self {
-        Self { x, y }
-    }
-}
-
-pub enum GraphicsReturn {
-    Ok,
-    ImproperScreenSize,
-}
-
-pub struct ScreenBuffer {
-    pub size: ScreenSize,
-    pub clear_color: Rgba64,
-    pub buff: Box<[Rgba64]>,
-}
-
-impl ScreenBuffer {
-    // Add optional size later
-    pub fn new(x: usize, y: usize) -> Self {
-        Self {
-            size: ScreenSize::new(x, y),
-            clear_color: 0,
-            buff: vec![0u64; x * y].into_boxed_slice(),
-        }
-    }
-
-    pub fn draw_filled_circle(&mut self, cx: i32, cy: i32, radius: usize, color: Rgba64) {
-        let r = radius as i32 * 2;
-        for y in 0..640 {
-            for x in 0..480 {
-                let dx = cx - x as i32 * 2 - 1;
-                let dy = cy - y as i32 * 2 - 1;
-
-                if dx * dx + dy * dy <= r * r {
-                    self.set_pixel(x, y, color);
-                };
-            }
-        }
-    }
-
-    #[inline]
-    pub fn set_pixel(&mut self, x: usize, y: usize, color: Rgba64) {
-        self.buff[y * self.size.x + x] = color;
-    }
-
-    pub fn clear(&mut self) {
-        self.buff = vec![0u64; self.buff.len()].into_boxed_slice();
-    }
-
-    pub fn blit(&mut self, _width: usize, _height: usize) {}
-
-    pub fn draw_filled_rect(&mut self, x1: usize, y1: usize, x2: usize, y2: usize, color: Rgba64) {
-        for y in y1..y2 {
-            for x in x1..x2 {
-                self.set_pixel(x, y, color);
-            }
-        }
-    }
-    pub fn draw_unfilled_rect(
-        &mut self,
-        x1: usize,
-        y1: usize,
-        x2: usize,
-        y2: usize,
-        color: Rgba64,
-    ) {
-        // x1 y1 => x2 y1 => x2 y2 => x1 y2 => x1 y1
-        self.draw_line(x1, y1, x2, y1, color);
-        self.draw_line(x2, y1, x2, y2, color);
-        self.draw_line(x2, y2, x1, y2, color);
-        self.draw_line(x1, y2, x1, y1, color);
-    }
-
-    #[inline]
-    pub fn draw_line(&mut self, x1: usize, y1: usize, x2: usize, y2: usize, color: Rgba64) {
-        let x = crate::graphics::get_coordinates(
-            x1.try_into().unwrap(),
-            y1.try_into().unwrap(),
-            x2.try_into().unwrap(),
-            y2.try_into().unwrap(),
-        );
-
-        for coord in x {
-            self.set_pixel(coord.0, coord.1, color);
-        }
-    }
-
-    // pub fn shade(&mut self) {
-    //     for y in 0..100 {
-    //         for x in 0..100 {
-    //             let rgba_ret = evaluate_shader(x, y, self.buff[y * self.size.x + x]);
-    //             match rgba_ret {
-    //                 Ok(pixel) => {
-    //                     // info!("{:?}", pixel);
-    //                     self.set_pixel(x, y, pixel);
-    //                 }
-
-    //                 Err(err) => error!("{}", err),
-    //             }
-    //         }
-    //     }
-
-    //     info!("Shaders done");
-    // }
-
-    // TODO force clear
-    pub fn force_redraw(&mut self) {
-        let vga = VGAE.lock();
-        vga.set_mode();
-        vga.clear_screen(vga::colors::Color16::Black);
-    }
-}
-
-pub fn get_coordinates(x1: i32, y1: i32, x2: i32, y2: i32) -> Vec<(usize, usize)> {
-    let mut coordinates: Vec<(usize, usize)> = vec![];
-    let dx: i32 = i32::abs(x2 - x1);
-    let dy: i32 = i32::abs(y2 - y1);
-    let sx: i32 = {
-        if x1 < x2 {
-            1
-        } else {
-            -1
-        }
-    };
-    let sy: i32 = {
-        if y1 < y2 {
-            1
-        } else {
-            -1
-        }
-    };
-    let mut error: i32 = (if dx > dy { dx } else { -dy }) / 2;
-    let mut current_x: i32 = x1;
-    let mut current_y: i32 = y1;
-    loop {
-        coordinates.push((current_x as usize, current_y as usize));
-        // info!("0  {:?}", (current_x, current_y));
-
-        if current_x == x2 && current_y == y2 {
-            break;
-        }
-
-        let error2: i32 = error;
-
-        if error2 > -dx {
-            error -= dy;
-            current_x += sx;
-        }
-        if error2 < dy {
-            error += dx;
-            current_y += sy;
-        }
-    }
-
-    coordinates
-}
-
-pub trait VgaBuffer {
-    fn copy_to_buffer(&self) -> GraphicsReturn;
-}
-impl VgaBuffer for ScreenBuffer {
-    fn copy_to_buffer(&self) -> GraphicsReturn {
-        let mode = VGAE.lock();
-        for y in 0..self.size.y {
-            for x in 0..self.size.x {
-                let vga_color = into_vga_16(self.buff[y * self.size.x + x]);
-                if into_vga_16(self.clear_color) != vga_color {
-                    mode.set_pixel(x, y, vga_color);
-                }
-            }
-        }
-        GraphicsReturn::Ok
-    }
-}
-
-pub fn into_vga_16(rgba_64: Rgba64) -> Color16 {
-    use pixel_format::ChannelValue::*;
-    use vga::colors::Color16::*;
-    match (
-        get_r(rgba_64).into(),
-        get_g(rgba_64).into(),
-        get_b(rgba_64).into(),
-    ) {
-        (Dark, Dark, Dark) => Black,
-        (Dark, Dark, Low) => Black,
-        (Dark, Dark, Mid) => Blue,
-        (Dark, Dark, High) => Blue,
-        (Dark, Low, Dark) => Black,
-        (Dark, Low, Low) => Black,
-        (Dark, Low, Mid) => Blue,
-        (Dark, Low, High) => Blue,
-        (Dark, Mid, Dark) => Green,
-        (Dark, Mid, Low) => Green,
-        (Dark, Mid, Mid) => Cyan,
-        (Dark, Mid, High) => Cyan,
-        (Dark, High, Dark) => Green,
-        (Dark, High, Low) => Green,
-        (Dark, High, Mid) => Green,
-        (Dark, High, High) => Cyan,
-        (Low, Dark, Dark) => Black,
-        (Low, Dark, Low) => Black,
-        (Low, Dark, Mid) => Blue,
-        (Low, Dark, High) => Blue,
-        (Low, Low, Dark) => Black,
-        (Low, Low, Low) => DarkGrey,
-        (Low, Low, Mid) => LightGrey,
-        (Low, Low, High) => Blue,
-        (Low, Mid, Dark) => DarkGrey,
-        (Low, Mid, Low) => LightGrey,
-        (Low, Mid, Mid) => Cyan,
-        (Low, Mid, High) => Cyan,
-        (Low, High, Dark) => Green,
-        (Low, High, Low) => Green,
-        (Low, High, Mid) => Cyan,
-        (Low, High, High) => Cyan,
-        (Mid, Dark, Dark) => Red,
-        (Mid, Dark, Low) => Red,
-        (Mid, Dark, Mid) => Magenta,
-        (Mid, Dark, High) => Magenta,
-        (Mid, Low, Dark) => Brown,
-        (Mid, Low, Low) => Red,
-        (Mid, Low, Mid) => DarkGrey,
-        (Mid, Low, High) => LightBlue,
-        (Mid, Mid, Dark) => Brown,
-        (Mid, Mid, Low) => Brown,
-        (Mid, Mid, Mid) => LightGrey,
-        (Mid, Mid, High) => LightBlue,
-        (Mid, High, Dark) => Green,
-        (Mid, High, Low) => Green,
-        (Mid, High, Mid) => LightGreen,
-        (Mid, High, High) => LightCyan,
-        (High, Dark, Dark) => Red,
-        (High, Dark, _) => Magenta,
-        (High, Low, Dark) => Red,
-        (High, Low, Low) => LightRed,
-        (High, Low, Mid) => Pink,
-        (High, Low, High) => Magenta,
-        (High, Mid, Dark) => Yellow,
-        (High, Mid, Low) => Yellow,
-        (High, Mid, Mid) => LightRed,
-        (High, Mid, High) => Pink,
-        (High, High, Dark) => Yellow,
-        (High, High, Low) => White,
-        (High, High, Mid) => White,
-        (High, High, High) => White,
-    }
-}
-
-// TODO: Incorporate this into the ableos vga crate
-// /// Draw a glyph on the screen at the given position
-// ///
-// /// # Arguments
-// /// * `x` - the x position of the glyph
-// /// * `y` - the y position of the glyph
-// /// * `glyph` - the glyph to draw
-// /// * `color` - the color of the glyph
-// pub fn draw_char(&mut self, mut x: u32, mut y: u32, character: char, color: Rgba64) {
-//     // trace!["Judy Hopps is thicc af"];
-//     // let mode = *VGAE.lock();
-//     // trace!["She got them bouncy bunny buns"];
-
-//     let basic_multingual_plane = FontRef::try_from_slice(include_bytes!(
-//         "../../../ableos/assets/fonts/unifont-14.0.01.ttf"
-//     ))
-//     .unwrap();
-
-//     let supplementary_multilingual_plane = FontRef::try_from_slice(include_bytes!(
-//         "../../../ableos/assets/fonts/unifont_upper-14.0.01.ttf"
-//     ))
-//     .unwrap();
-
-//     // let mut has_char = false;
-//     // for x in font.codepoint_ids() {
-//     //    if x.1 == character {
-//     //       has_char = true;
-//     //       break;
-//     //    }
-//     // }
-
-//     let in_supp_plane = character as u32 > 0xffff;
-
-//     let plane = match in_supp_plane {
-//         false => basic_multingual_plane,
-//         true => supplementary_multilingual_plane,
-//     };
-
-//     match character {
-//         '\n' => {
-//             // x = 0;
-//             // y += (GLYPH_HEIGHT * FONT_SCALE) as u32;
-//         }
-//         _ => {
-//             let q_glyph: Glyph = plane.glyph_id(character).with_scale_and_position(
-//                 20.0 * FONT_SCALE,
-//                 ab_glyph::point(GLYPH_WIDTH * FONT_SCALE, GLYPH_HEIGHT * FONT_SCALE),
-//             );
-
-//             // elf: I don't know if GLYPH_HEIGHT is in the right units here. I'm just guessing.
-//             if x as usize > self.size.x {
-//                 x = 0;
-//                 y += (GLYPH_HEIGHT * FONT_SCALE) as u32;
-//             }
-
-//             if let Some(q) = plane.outline_glyph(q_glyph) {
-//                 q.draw(|gx, gy, c| {
-//                     if c > 0.0015 {
-//                         let corner = q.px_bounds().min;
-//                         self.set_pixel(
-//                             gx as usize + corner.x as usize + x as usize,
-//                             gy as usize + corner.y as usize + y as usize,
-//                             color,
-//                         );
-//                     }
-//                 });
-//             }
-//         }
-//     }
-// }
diff --git a/ableos/src/graphics/pixel_format.rs b/ableos/src/graphics/pixel_format.rs
deleted file mode 100644
index 7553e59..0000000
--- a/ableos/src/graphics/pixel_format.rs
+++ /dev/null
@@ -1,55 +0,0 @@
-use core::ops::{BitAnd, BitOr, Shr};
-pub type Rgba64 = u64;
-pub enum ChannelValue {
-    Dark,
-    Low,
-    Mid,
-    High,
-}
-impl From<u8> for ChannelValue {
-    fn from(b: u8) -> Self {
-        use ChannelValue::*;
-        match b {
-            0x00..=0x3f => Dark,
-            0x40..=0x7f => Low,
-            0x80..=0xbf => Mid,
-            0xc0..=0xff => High,
-        }
-    }
-}
-pub fn get_r(rgba: Rgba64) -> u8 {
-    rgba.bitand(0xff_00_00_00).shr(0o30) as u8
-}
-pub fn get_g(rgba: Rgba64) -> u8 {
-    rgba.bitand(0xff_00_00).shr(0o20) as u8
-}
-pub fn get_b(rgba: Rgba64) -> u8 {
-    rgba.bitand(0xff_00).shr(0o10) as u8
-}
-pub fn get_a(rgba: Rgba64) -> u8 {
-    (rgba & 0xff) as u8
-}
-pub fn set_r(rgba: Rgba64, r: u8) -> Rgba64 {
-    rgba.bitand(0xffffffff_00_ff_ff_ff)
-        .bitor((r as Rgba64).shr(0o30))
-}
-pub fn set_g(rgba: Rgba64, g: u8) -> Rgba64 {
-    rgba.bitand(0xffffffff_ff_00_ff_ff)
-        .bitor((g as Rgba64).shr(0o20))
-}
-pub fn set_b(rgba: Rgba64, b: u8) -> Rgba64 {
-    rgba.bitand(0xffffffff_ff_ff_00_ff)
-        .bitor((b as Rgba64).shr(0o10))
-}
-pub fn set_a(rgba: Rgba64, a: u8) -> Rgba64 {
-    rgba.bitand(0xffffffff_ff_ff_ff_00).bitor(a as Rgba64)
-}
-pub fn rgba_div(a: Rgba64, b: Rgba64) -> Rgba64 {
-    set_r(0, get_r(a) / get_r(b))
-        | set_g(0, get_g(a) / get_g(b))
-        | set_g(0, get_b(a) / get_b(b))
-        | set_g(0, get_a(a) / get_a(b))
-}
-pub fn new_rgba64(r: u8, g: u8, b: u8, a: u8) -> Rgba64 {
-    set_r(0, r) | set_g(0, g) | set_b(0, b) | set_a(0, a)
-}
diff --git a/ableos/src/graphics_limine.rs b/ableos/src/graphics_limine.rs
deleted file mode 100644
index c375276..0000000
--- a/ableos/src/graphics_limine.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-// TODO: Reorganize and make part of this into a limine agnostic API for general purpose graphics
-use crate::kmain::FRAMEBUFFER;
-pub fn clear_screen() {
-    {
-        // TODO: setup a proper framebuffer handler
-        let fb_response = FRAMEBUFFER.get_response().get().unwrap();
-        for fb in fb_response.framebuffers().unwrap() {
-            trace!("Framebuffer {}x{}", fb.width, fb.height);
-            trace!("{}", fb.memory_model);
-            trace!("{}", fb.bpp);
-            let mut count = 0;
-            let total = fb.width * fb.height * 3;
-            while count != total {
-                unsafe {
-                    let fb_ptr = fb.address.as_mut_ptr().unwrap();
-                    *fb_ptr.offset((count).try_into().unwrap()) = 0x00;
-                    *fb_ptr.offset((count + 1).try_into().unwrap()) = 0x00;
-                    *fb_ptr.offset((count + 2).try_into().unwrap()) = 0x00;
-                }
-                count += 3;
-            }
-        }
-    }
-}
diff --git a/ableos/src/handle.rs b/ableos/src/handle.rs
deleted file mode 100644
index 4c30c73..0000000
--- a/ableos/src/handle.rs
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2022, Umut Ä°nan ErdoÄŸan <umutinanerdogan@pm.me>
- *
- * SPDX-License-Identifier: MPL-2.0
- */
-
-//! A handle is a u128 with a set of permissions
-//! and a resource connected to it
-
-use crate::arch::generate_process_pass;
-use core::fmt::Display;
-
-#[derive(Debug)]
-pub struct BinaryData {
-    _name: String,
-    _data: Vec<u8>,
-}
-
-#[derive(Debug, Eq, Hash, PartialEq, Clone, Copy)]
-pub enum HandleResource {
-    Channel,
-    Socket,
-    BinaryData,
-    StorageDevice,
-    FileDescriptor,
-    FsNode,
-}
-
-#[derive(Debug, Eq, Hash, PartialEq, Clone, Copy)]
-pub struct Handle {
-    pub inner: u128,
-    pub res: HandleResource,
-}
-
-impl Display for Handle {
-    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
-        write!(f, "Handle-{:032x}", self.inner)?;
-        match &self.res {
-            HandleResource::Channel => write!(f, "-Channel")?,
-            HandleResource::BinaryData => write!(f, "-Binary")?,
-            HandleResource::Socket => write!(f, "-Socket")?,
-            HandleResource::StorageDevice => write!(f, "-StorageDevice")?,
-            HandleResource::FileDescriptor => write!(f, "-FileDescriptor")?,
-            HandleResource::FsNode => write!(f, "-FsNode")?,
-        }
-
-        Ok(())
-    }
-}
-
-impl Handle {
-    pub fn new(htype: HandleResource) -> Self {
-        // FIXME: check if inner collides
-        Self {
-            inner: generate_process_pass(),
-            res: htype,
-        }
-    }
-}
diff --git a/ableos/src/hardware/mod.rs b/ableos/src/hardware/mod.rs
deleted file mode 100644
index f35b76b..0000000
--- a/ableos/src/hardware/mod.rs
+++ /dev/null
@@ -1,126 +0,0 @@
-use crate::arch::interrupts::InterruptIndex;
-use crate::arch::interrupts::PICS;
-use crate::ps2_mouse::{Mouse, MouseState};
-use lazy_static::lazy_static;
-use spin::Mutex;
-use x86_64::instructions::port::PortReadOnly;
-use x86_64::structures::idt::InterruptStackFrame;
-
-const MOUSE_MAX_X: u16 = 638;
-const MOUSE_MAX_Y: u16 = 478;
-
-lazy_static! {
-    pub static ref _MOUSE: Mutex<Mouse> = Mutex::new(Mouse::new());
-    pub static ref MOUSE: Mutex<OnScreenMouse> = Mutex::new(OnScreenMouse::default());
-}
-
-#[derive(Default)]
-pub struct OnScreenMouse {
-    // absolute position on screen
-    x: u16,
-    // absolute position on screen
-    y: u16,
-}
-
-impl OnScreenMouse {
-    pub fn get_x(&self) -> u16 {
-        return self.x;
-    }
-
-    pub fn get_y(&self) -> u16 {
-        return self.y;
-    }
-
-    pub fn change_x(&mut self, delta_x: i16) {
-        if delta_x.is_negative() {
-            self.x = self.x.saturating_sub((-delta_x) as u16)
-        } else {
-            self.x = self.x.saturating_add(delta_x as u16)
-        }
-    }
-
-    pub fn change_y(&mut self, delta_y: i16) {
-        if delta_y.is_negative() {
-            self.y = self.y.saturating_add((-delta_y) as u16)
-        } else {
-            self.y = self.y.saturating_sub(delta_y as u16)
-        }
-    }
-    pub fn set_x(&mut self, x: u16) {
-        if x >= MOUSE_MAX_X {
-            self.x = MOUSE_MAX_X - 1;
-        } else {
-            self.x = x;
-        }
-    }
-    pub fn set_y(&mut self, y: u16) {
-        if y >= MOUSE_MAX_Y {
-            self.y = MOUSE_MAX_Y - 1;
-        } else {
-            self.y = y;
-        }
-    }
-}
-
-// Initialize the mouse and set the on complete event.
-pub fn init_mouse() {
-    let mut mouse = _MOUSE.lock();
-    // debug!("Trying to initialize mouse");
-    mouse.init().unwrap();
-    mouse.set_on_complete(on_complete);
-    // info!("Mouse initialized");
-}
-
-// This will be fired when a packet is finished being processed.
-fn on_complete(mouse_state: MouseState) {
-    // how much the cursor has moved
-    let delta_x = mouse_state.get_x();
-    let delta_y = mouse_state.get_y();
-    /*
-    trace!("MOUSE CHANGE: X{{{}}} Y{{{}}}", delta_x, delta_y);
-    trace!(
-        "MOUSE BUTTONS: LEFT{{{}}} RIGHT{{{}}}",
-        mouse_state._left_button_down(),
-        mouse_state._right_button_down()
-    );
-    */
-
-    let mut mouse = MOUSE.lock();
-    if mouse.get_x() >= MOUSE_MAX_X {
-        mouse.set_x(MOUSE_MAX_X - 1);
-    } else {
-        mouse.change_x(delta_x);
-    }
-
-    if mouse.get_y() >= MOUSE_MAX_Y {
-        mouse.set_y(MOUSE_MAX_Y - 1);
-    } else {
-        mouse.change_y(delta_y);
-    }
-    // only move the cursor when delta_x is in some range
-    // i.e. if the cursor moves too fast, ignore it.
-    // if the mouse moves too fast the delta will overflow
-    mouse.change_y(delta_y);
-
-    x86_64::instructions::interrupts::without_interrupts(|| {
-        // use crate::TERM;
-        // let mut term = TERM.lock();
-        // term.set_dirty(true);
-    });
-
-    // draw_mouse((mouse.get_x() as usize, mouse.get_y() as usize));
-}
-
-// An example interrupt based on https://os.phil-opp.com/hardware-interrupts/.
-// The ps2 mouse is configured to fire
-// interrupts at PIC offset 12.
-pub extern "x86-interrupt" fn mouse_interrupt_handler(_stack_frame: InterruptStackFrame) {
-    let mut port = PortReadOnly::new(0x60);
-    let packet = unsafe { port.read() };
-    _MOUSE.lock().process_packet(packet);
-
-    unsafe {
-        PICS.lock()
-            .notify_end_of_interrupt(InterruptIndex::Mouse as u8);
-    }
-}
diff --git a/ableos/src/ipc/channel.rs b/ableos/src/ipc/channel.rs
deleted file mode 100644
index d711d8e..0000000
--- a/ableos/src/ipc/channel.rs
+++ /dev/null
@@ -1,75 +0,0 @@
-use alloc::collections::VecDeque;
-
-use super::IPCError;
-
-#[derive(Debug)]
-
-pub struct ChannelPermission {
-    pub owner: bool,
-    pub producer: bool,
-
-    pub consumer: bool,
-    /// Whether or not the process can be destructive about reading
-    pub distructive_consumer: bool,
-}
-
-#[derive(Debug)]
-pub struct Channel {
-    pub public: bool,
-    _name: String,
-    inner: VecDeque<ChannelMessage>,
-}
-
-impl Channel {
-    pub fn new<S: Into<String>>(name: S, public: bool) -> Self {
-        let deq = VecDeque::from([]);
-
-        Self {
-            public,
-            _name: name.into(),
-            inner: deq,
-        }
-    }
-
-    pub fn read(&mut self) -> Result<ChannelMessage, IPCError> {
-        if let Some(msg) = self.inner.pop_front() {
-            return Ok(msg);
-        }
-        return Err(IPCError::EmptyChannel);
-    }
-
-    pub fn write(&mut self, data: ChannelMessage) -> Result<(), IPCError> {
-        self.inner.push_back(data);
-
-        Ok(())
-    }
-}
-
-pub enum ChannelError {
-    EmptyBuffer,
-    InvalidPermissions,
-}
-
-#[derive(Debug)]
-pub struct ChannelMessage {
-    inner: [u8; 4096],
-}
-
-impl ChannelMessage {
-    pub fn new<S: Into<String>>(data: S) -> Result<Self, IPCError> {
-        let data = data.into();
-        let mut message = Self { inner: [0; 4096] };
-
-        if data.len() > 4096 {
-            return Err(IPCError::InvalidMessage);
-        } else {
-            let mut idx = 0;
-            for b in data.bytes() {
-                message.inner[idx] = b;
-                idx += 1;
-            }
-        }
-
-        Ok(message)
-    }
-}
diff --git a/ableos/src/ipc/mod.rs b/ableos/src/ipc/mod.rs
deleted file mode 100644
index 9973217..0000000
--- a/ableos/src/ipc/mod.rs
+++ /dev/null
@@ -1,161 +0,0 @@
-use hashbrown::HashMap;
-
-use crate::handle::{Handle, HandleResource};
-
-use self::{
-    channel::{Channel, ChannelMessage},
-    socket::Socket,
-};
-
-pub mod channel;
-pub mod socket;
-
-lazy_static::lazy_static! {
-    pub static ref IPC: spin::Mutex<IPCService> = spin::Mutex::new(IPCService {
-        sockets: HashMap::new(),
-        channels: HashMap::new(),
-        public_board: vec![],
-    });
-}
-pub struct IPCService {
-    pub sockets: HashMap<Handle, Socket>,
-    pub channels: HashMap<Handle, Channel>,
-    // TODO: Add a public board of each down below which use some method of pointing to the above
-    pub public_board: Vec<Handle>,
-}
-
-impl IPCService {
-    pub fn examine_board(&self) -> Vec<Handle> {
-        self.public_board.clone()
-    }
-}
-
-// Socket Related Impl
-impl IPCService {
-    pub fn create_socket<S: Into<String>>(&mut self, name: S, public: bool) -> Handle {
-        let handle = Handle::new(crate::handle::HandleResource::Socket);
-
-        let mut sock = Socket::new(name.into());
-        if public {
-            sock.public = true;
-
-            self.public_board.push(handle);
-        }
-
-        self.sockets.insert(handle.clone(), sock);
-
-        handle
-    }
-    pub fn send_socket<S: Into<Vec<u8>>>(
-        &mut self,
-        handle: Handle,
-        data: S,
-    ) -> Result<(), IPCError> {
-        trace!("Sending data to {}", handle);
-        match handle {
-            Handle {
-                inner: _inner,
-                res: HandleResource::Socket,
-            } => {
-                let sock = self.sockets.get_mut(&handle);
-
-                match sock {
-                    Some(socket) => {
-                        return socket.write(data.into());
-                    }
-                    None => return Err(IPCError::NonexistantSocket),
-                }
-            }
-            _ => return Err(IPCError::InvalidHandle),
-        }
-    }
-
-    pub fn read_socket(&mut self, handle: Handle) -> Result<Vec<u8>, IPCError> {
-        trace!("Reading data from {}", handle);
-
-        match handle {
-            Handle {
-                inner: _inner,
-                res: HandleResource::Socket,
-            } => {
-                let sock = self.sockets.get_mut(&handle);
-
-                match sock {
-                    Some(socket) => {
-                        return socket.read();
-                    }
-                    None => return Err(IPCError::NonexistantSocket),
-                }
-            }
-            _ => return Err(IPCError::InvalidHandle),
-        }
-    }
-}
-
-impl IPCService {
-    pub fn create_channel<S: Into<String>>(&mut self, name: S, public: bool) -> Handle {
-        let handle = Handle::new(crate::handle::HandleResource::Channel);
-
-        let mut chan = Channel::new(name.into(), public);
-        if public {
-            chan.public = true;
-
-            self.public_board.push(handle);
-        }
-
-        self.channels.insert(handle.clone(), chan);
-
-        handle
-    }
-
-    pub fn read_channel(&mut self, handle: Handle) -> Result<ChannelMessage, IPCError> {
-        trace!("Reading data from {}", handle);
-
-        match handle {
-            Handle {
-                inner: _inner,
-                res: HandleResource::Channel,
-            } => {
-                let sock = self.channels.get_mut(&handle);
-
-                match sock {
-                    Some(socket) => {
-                        return socket.read();
-                    }
-                    None => return Err(IPCError::NonexistantSocket),
-                }
-            }
-            _ => return Err(IPCError::InvalidHandle),
-        }
-    }
-
-    pub fn send_channel(&mut self, handle: Handle, data: ChannelMessage) -> Result<(), IPCError> {
-        trace!("Sending data to {}", handle);
-        match handle {
-            Handle {
-                inner: _inner,
-                res: HandleResource::Channel,
-            } => {
-                let sock = self.channels.get_mut(&handle);
-
-                match sock {
-                    Some(socket) => {
-                        return socket.write(data);
-                    }
-                    None => return Err(IPCError::NonexistantSocket),
-                }
-            }
-            _ => return Err(IPCError::InvalidHandle),
-        }
-    }
-}
-
-#[derive(Debug)]
-#[non_exhaustive]
-pub enum IPCError {
-    InvalidHandle,
-    NonexistantSocket,
-    EmptySocket,
-    EmptyChannel,
-    InvalidMessage,
-}
diff --git a/ableos/src/ipc/socket.rs b/ableos/src/ipc/socket.rs
deleted file mode 100644
index 5956d67..0000000
--- a/ableos/src/ipc/socket.rs
+++ /dev/null
@@ -1,43 +0,0 @@
-// SEEALSO: https://git.ablecorp.us/able/ableos/src/branch/master/ableos/src/relib/network/socket.rs
-
-use super::IPCError;
-
-#[derive(Debug)]
-pub struct Socket {
-    pub public: bool,
-    name: String,
-    stream: Vec<u8>,
-}
-
-impl Socket {
-    pub fn new<S: Into<String>>(name: S) -> Self {
-        Self {
-            public: false,
-            name: name.into(),
-            stream: vec![],
-        }
-    }
-
-    // <S: Into<String>>(name: S)
-
-    pub fn write<S: Into<Vec<u8>>>(&mut self, data: S) -> Result<(), IPCError> {
-        for c in data.into() {
-            self.stream.push(c as u8);
-        }
-
-        Ok(())
-    }
-    pub fn read(&mut self) -> Result<Vec<u8>, IPCError> {
-        if self.stream.len() != 0 {
-            let skt = self.stream.clone();
-            self.stream = vec![];
-
-            return Ok(skt);
-        }
-        return Err(IPCError::EmptySocket);
-    }
-
-    pub fn rename(&mut self, name: String) {
-        self.name = name;
-    }
-}
diff --git a/ableos/src/kernel_state.rs b/ableos/src/kernel_state.rs
deleted file mode 100644
index 9b40ece..0000000
--- a/ableos/src/kernel_state.rs
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (c) 2022, Umut Ä°nan ErdoÄŸan <umutinanerdogan@pm.me>
- *
- * SPDX-License-Identifier: MPL-2.0
- */
-
-use alloc::sync::Arc;
-use hashbrown::HashMap;
-use spin::Lazy;
-
-use crate::{
-    filesystem::{vfs::FsNode, StorageDevice},
-    handle::{Handle, HandleResource},
-};
-
-pub static KERNEL_STATE: Lazy<spin::Mutex<KernelInternalState>> =
-    Lazy::new(|| spin::Mutex::new(KernelInternalState::new()));
-
-pub struct KernelInternalState {
-    pub hostname: String,
-    pub storage_devices: HashMap<Handle, Box<dyn StorageDevice>>,
-    // FIXME: should this be per-process?
-    file_table: HashMap<Handle, FileTableEntry>,
-    should_shutdown: bool,
-}
-
-impl KernelInternalState {
-    pub fn new() -> Self {
-        Self {
-            should_shutdown: false,
-            storage_devices: HashMap::new(),
-            file_table: HashMap::new(),
-            hostname: "".to_string(),
-        }
-    }
-
-    pub fn set_hostname(&mut self, hostname: String) {
-        self.hostname = hostname;
-    }
-
-    pub fn add_storage_device(&mut self, device: impl StorageDevice + Send + 'static) {
-        let device = Box::new(device);
-        self.storage_devices.insert(device.device_handle(), device);
-    }
-
-    pub fn storage_device(&self, handle: Handle) -> Option<&dyn StorageDevice> {
-        self.storage_devices.get(&handle).map(|d| &**d)
-    }
-
-    // TODO: implement flags here
-    pub fn open_file_descriptor(&mut self, fs_node: Arc<FsNode>) -> Handle {
-        let handle = Handle::new(HandleResource::FileDescriptor);
-        self.file_table.insert(handle, FileTableEntry::new(fs_node));
-        handle
-    }
-
-    pub fn file_descriptor(&self, handle: Handle) -> Option<&FileTableEntry> {
-        self.file_table.get(&handle)
-    }
-
-    pub fn close_file_descriptor(&mut self, handle: Handle) {
-        self.file_table.remove(&handle);
-    }
-
-    pub fn shutdown(&mut self) {
-        self.should_shutdown = true;
-    }
-
-    pub fn update_state(&mut self) {
-        if self.should_shutdown {
-            crate::arch::shutdown();
-        }
-    }
-}
-
-impl Default for KernelInternalState {
-    fn default() -> Self {
-        Self::new()
-    }
-}
-
-pub struct FileTableEntry {
-    fs_node: Arc<FsNode>,
-    // TODO: permissions, flags, owner, maybe cache stuff here?
-}
-
-impl FileTableEntry {
-    fn new(fs_node: Arc<FsNode>) -> Self {
-        Self { fs_node }
-    }
-
-    pub fn fs_node(&self) -> Arc<FsNode> {
-        self.fs_node.clone()
-    }
-}
diff --git a/ableos/src/keyboard/abstractions/custom_layout.rs b/ableos/src/keyboard/abstractions/custom_layout.rs
deleted file mode 100644
index 956be88..0000000
--- a/ableos/src/keyboard/abstractions/custom_layout.rs
+++ /dev/null
@@ -1,444 +0,0 @@
-use crate::{
-    DecodedKey, HandleControl, KeyCode, KeyboardLayout, LayoutEntry, LayoutEntryKind, Modifiers,
-};
-
-pub struct CustomLayout {
-    mapping: [LayoutEntry; 256],
-}
-
-impl Default for CustomLayout {
-    fn default() -> Self {
-        Self::new_us104key()
-    }
-}
-
-impl CustomLayout {
-    pub fn new_us104key() -> Self {
-        let mut mapping = Self {
-            mapping: [LayoutEntry::default(); 256],
-        };
-
-        mapping.set(
-            KeyCode::BackTick,
-            LayoutEntry::regular().unshifted('`').shifted('`'),
-        );
-        mapping.set(KeyCode::Escape, LayoutEntry::regular().unshifted('\x1B'));
-        mapping.set(
-            KeyCode::Key0,
-            LayoutEntry::regular().unshifted('0').shifted(')'),
-        );
-        mapping.set(
-            KeyCode::Key1,
-            LayoutEntry::regular().unshifted('1').shifted('!'),
-        );
-        mapping.set(
-            KeyCode::Key2,
-            LayoutEntry::regular().unshifted('2').shifted('@'),
-        );
-        mapping.set(
-            KeyCode::Key3,
-            LayoutEntry::regular().unshifted('3').shifted('#'),
-        );
-        mapping.set(
-            KeyCode::Key4,
-            LayoutEntry::regular().unshifted('4').shifted('$'),
-        );
-        mapping.set(
-            KeyCode::Key5,
-            LayoutEntry::regular().unshifted('5').shifted('%'),
-        );
-        mapping.set(
-            KeyCode::Key6,
-            LayoutEntry::regular().unshifted('6').shifted('^'),
-        );
-        mapping.set(
-            KeyCode::Key7,
-            LayoutEntry::regular().unshifted('7').shifted('&'),
-        );
-        mapping.set(
-            KeyCode::Key8,
-            LayoutEntry::regular().unshifted('8').shifted('*'),
-        );
-        mapping.set(
-            KeyCode::Key9,
-            LayoutEntry::regular().unshifted('9').shifted('('),
-        );
-        mapping.set(
-            KeyCode::Minus,
-            LayoutEntry::regular().unshifted('-').shifted('_'),
-        );
-        mapping.set(
-            KeyCode::Equals,
-            LayoutEntry::regular().unshifted('=').shifted('+'),
-        );
-        mapping.set(KeyCode::Backspace, LayoutEntry::regular().all('\x08'));
-        mapping.set(KeyCode::Tab, LayoutEntry::regular().all('\x09'));
-        mapping.set(
-            KeyCode::Q,
-            LayoutEntry::alphabet()
-                .low('q')
-                .high('Q')
-                .raw_unicode('\u{0011}'),
-        );
-        mapping.set(
-            KeyCode::W,
-            LayoutEntry::alphabet()
-                .low('w')
-                .high('W')
-                .raw_unicode('\u{0017}'),
-        );
-        mapping.set(
-            KeyCode::E,
-            LayoutEntry::alphabet()
-                .low('e')
-                .high('E')
-                .raw_unicode('\u{0005}'),
-        );
-        mapping.set(
-            KeyCode::R,
-            LayoutEntry::alphabet()
-                .low('r')
-                .high('R')
-                .raw_unicode('\u{0012}'),
-        );
-        mapping.set(
-            KeyCode::T,
-            LayoutEntry::alphabet()
-                .low('t')
-                .high('T')
-                .raw_unicode('\u{0014}'),
-        );
-        mapping.set(
-            KeyCode::Y,
-            LayoutEntry::alphabet()
-                .low('y')
-                .high('Y')
-                .raw_unicode('\u{0019}'),
-        );
-        mapping.set(
-            KeyCode::U,
-            LayoutEntry::alphabet()
-                .low('u')
-                .high('U')
-                .raw_unicode('\u{0015}'),
-        );
-        mapping.set(
-            KeyCode::I,
-            LayoutEntry::alphabet()
-                .low('i')
-                .high('I')
-                .raw_unicode('\u{0009}'),
-        );
-        mapping.set(
-            KeyCode::O,
-            LayoutEntry::alphabet()
-                .low('o')
-                .high('O')
-                .raw_unicode('\u{000F}'),
-        );
-        mapping.set(
-            KeyCode::P,
-            LayoutEntry::alphabet()
-                .low('p')
-                .high('P')
-                .raw_unicode('\u{0010}'),
-        );
-        mapping.set(
-            KeyCode::A,
-            LayoutEntry::alphabet()
-                .low('a')
-                .high('A')
-                .raw_unicode('\u{0001}'),
-        );
-        mapping.set(
-            KeyCode::S,
-            LayoutEntry::alphabet()
-                .low('s')
-                .high('S')
-                .raw_unicode('\u{0013}'),
-        );
-        mapping.set(
-            KeyCode::D,
-            LayoutEntry::alphabet()
-                .low('d')
-                .high('D')
-                .raw_unicode('\u{0004}'),
-        );
-        mapping.set(
-            KeyCode::F,
-            LayoutEntry::alphabet()
-                .low('f')
-                .high('F')
-                .raw_unicode('\u{0006}'),
-        );
-        mapping.set(
-            KeyCode::G,
-            LayoutEntry::alphabet()
-                .low('g')
-                .high('G')
-                .raw_unicode('\u{0007}'),
-        );
-        mapping.set(
-            KeyCode::H,
-            LayoutEntry::alphabet()
-                .low('h')
-                .high('H')
-                .raw_unicode('\u{0008}'),
-        );
-        mapping.set(
-            KeyCode::J,
-            LayoutEntry::alphabet()
-                .low('j')
-                .high('J')
-                .raw_unicode('\u{000A}'),
-        );
-        mapping.set(
-            KeyCode::K,
-            LayoutEntry::alphabet()
-                .low('k')
-                .high('K')
-                .raw_unicode('\u{000B}'),
-        );
-        mapping.set(
-            KeyCode::L,
-            LayoutEntry::alphabet()
-                .low('l')
-                .high('L')
-                .raw_unicode('\u{000C}'),
-        );
-        mapping.set(
-            KeyCode::Z,
-            LayoutEntry::alphabet()
-                .low('z')
-                .high('Z')
-                .raw_unicode('\u{001A}'),
-        );
-        mapping.set(
-            KeyCode::X,
-            LayoutEntry::alphabet()
-                .low('x')
-                .high('X')
-                .raw_unicode('\u{0018}'),
-        );
-        mapping.set(
-            KeyCode::C,
-            LayoutEntry::alphabet()
-                .low('c')
-                .high('C')
-                .raw_unicode('\u{0003}'),
-        );
-        mapping.set(
-            KeyCode::V,
-            LayoutEntry::alphabet()
-                .low('v')
-                .high('V')
-                .raw_unicode('\u{0016}'),
-        );
-        mapping.set(
-            KeyCode::B,
-            LayoutEntry::alphabet()
-                .low('b')
-                .high('B')
-                .raw_unicode('\u{0002}'),
-        );
-        mapping.set(
-            KeyCode::N,
-            LayoutEntry::alphabet()
-                .low('n')
-                .high('N')
-                .raw_unicode('\u{000E}'),
-        );
-        mapping.set(
-            KeyCode::M,
-            LayoutEntry::alphabet()
-                .low('m')
-                .high('M')
-                .raw_unicode('\u{000D}'),
-        );
-        mapping.set(
-            KeyCode::BracketSquareLeft,
-            LayoutEntry::regular().unshifted('{').shifted('['),
-        );
-        mapping.set(
-            KeyCode::BracketSquareRight,
-            LayoutEntry::regular().unshifted('}').shifted(']'),
-        );
-        mapping.set(
-            KeyCode::BackSlash,
-            LayoutEntry::regular().unshifted('|').shifted('\\'),
-        );
-        mapping.set(
-            KeyCode::SemiColon,
-            LayoutEntry::regular().unshifted(';').shifted(':'),
-        );
-        mapping.set(
-            KeyCode::Quote,
-            LayoutEntry::regular().unshifted('\'').shifted('"'),
-        );
-        mapping.set(KeyCode::Enter, LayoutEntry::regular().all('\x0A'));
-        mapping.set(
-            KeyCode::Comma,
-            LayoutEntry::regular().unshifted(',').shifted('<'),
-        );
-        mapping.set(
-            KeyCode::Fullstop,
-            LayoutEntry::regular().unshifted('.').shifted('>'),
-        );
-        mapping.set(
-            KeyCode::Slash,
-            LayoutEntry::regular().unshifted('/').shifted('?'),
-        );
-        mapping.set(KeyCode::Spacebar, LayoutEntry::regular().all(' '));
-        mapping.set(KeyCode::Delete, LayoutEntry::regular().all('\x7F'));
-        mapping.set(KeyCode::NumpadSlash, LayoutEntry::numpad().all('/'));
-        mapping.set(KeyCode::NumpadStar, LayoutEntry::numpad().all('*'));
-        mapping.set(KeyCode::NumpadMinus, LayoutEntry::numpad().all('-'));
-        mapping.set(
-            KeyCode::Numpad7,
-            LayoutEntry::numpad().low('7').high(KeyCode::Home),
-        );
-        mapping.set(
-            KeyCode::Numpad8,
-            LayoutEntry::numpad().low('8').high(KeyCode::ArrowUp),
-        );
-        mapping.set(
-            KeyCode::Numpad9,
-            LayoutEntry::numpad().low('9').high(KeyCode::PageUp),
-        );
-        mapping.set(KeyCode::NumpadPlus, LayoutEntry::numpad().all('+'));
-        mapping.set(
-            KeyCode::Numpad4,
-            LayoutEntry::numpad().low('4').high(KeyCode::ArrowLeft),
-        );
-        mapping.set(KeyCode::Numpad5, LayoutEntry::numpad().all('5'));
-        mapping.set(
-            KeyCode::Numpad6,
-            LayoutEntry::numpad().low('6').high(KeyCode::ArrowRight),
-        );
-        mapping.set(
-            KeyCode::Numpad1,
-            LayoutEntry::numpad().low('1').high(KeyCode::End),
-        );
-        mapping.set(
-            KeyCode::Numpad2,
-            LayoutEntry::numpad().low('2').high(KeyCode::ArrowDown),
-        );
-        mapping.set(
-            KeyCode::Numpad3,
-            LayoutEntry::numpad().low('3').high(KeyCode::PageDown),
-        );
-        mapping.set(
-            KeyCode::Numpad0,
-            LayoutEntry::numpad().low('0').high(KeyCode::Insert),
-        );
-        mapping.set(
-            KeyCode::NumpadPeriod,
-            LayoutEntry::numpad().low('.').high('\x7F'),
-        );
-        mapping.set(KeyCode::NumpadEnter, LayoutEntry::numpad().all('\x0A'));
-        mapping
-    }
-    pub fn new_us105key() -> Self {
-        let mut mapping = Self::new_us104key();
-        mapping.set(
-            KeyCode::BackTick,
-            LayoutEntry::regular()
-                .unshifted('`')
-                .shifted('¬')
-                .altgr('|'),
-        );
-        mapping.set(
-            KeyCode::Key2,
-            LayoutEntry::regular().unshifted('2').shifted('"'),
-        );
-        mapping.set(
-            KeyCode::Quote,
-            LayoutEntry::regular().unshifted('\'').shifted('@'),
-        );
-        mapping.set(
-            KeyCode::Key3,
-            LayoutEntry::regular().unshifted('3').shifted('£'),
-        );
-        mapping.set(
-            KeyCode::BackTick,
-            LayoutEntry::regular()
-                .unshifted('4')
-                .shifted('$')
-                .altgr('€'),
-        );
-        mapping.set(
-            KeyCode::HashTilde,
-            LayoutEntry::regular().unshifted('#').shifted('~'),
-        );
-        mapping
-    }
-
-    pub fn set(&mut self, pos: KeyCode, entry: LayoutEntry) {
-        self.mapping[pos as usize] = entry;
-    }
-}
-
-impl KeyboardLayout for CustomLayout {
-    fn map_keycode(
-        &self,
-        keycode: KeyCode,
-        modifiers: &Modifiers,
-        handle_ctrl: HandleControl,
-    ) -> DecodedKey {
-        let map_to_unicode = handle_ctrl == HandleControl::MapLettersToUnicode;
-        let spot = &self.mapping[keycode as usize];
-        if let Some(k) = if map_to_unicode && modifiers.is_ctrl() {
-            match spot.kind {
-                LayoutEntryKind::Regular => spot.raw_unicode,
-                LayoutEntryKind::Numlockable => None,
-                LayoutEntryKind::Capslockable => spot.raw_unicode,
-            }
-        } else if modifiers.alt_gr {
-            match spot.kind {
-                LayoutEntryKind::Regular => spot.altgr,
-                LayoutEntryKind::Numlockable => None,
-                LayoutEntryKind::Capslockable => spot.altgr,
-            }
-        } else if modifiers.is_shifted() {
-            match spot.kind {
-                LayoutEntryKind::Regular => spot.shifted,
-                LayoutEntryKind::Numlockable => {
-                    if modifiers.numlock {
-                        spot.locked_shifted
-                    } else {
-                        spot.shifted
-                    }
-                }
-                LayoutEntryKind::Capslockable => {
-                    if modifiers.is_caps() {
-                        spot.locked_shifted
-                    } else {
-                        spot.shifted
-                    }
-                }
-            }
-        } else {
-            match spot.kind {
-                LayoutEntryKind::Regular => spot.unshifted,
-                LayoutEntryKind::Numlockable => {
-                    if modifiers.numlock {
-                        spot.locked
-                    } else {
-                        spot.unshifted
-                    }
-                }
-                LayoutEntryKind::Capslockable => {
-                    if modifiers.is_caps() {
-                        spot.locked
-                    } else {
-                        spot.unshifted
-                    }
-                }
-            }
-        } {
-            k
-        } else {
-            DecodedKey::RawKey(keycode as u8)
-        }
-    }
-}
diff --git a/ableos/src/keyboard/abstractions/custom_scancode_set.rs b/ableos/src/keyboard/abstractions/custom_scancode_set.rs
deleted file mode 100644
index 25b08e2..0000000
--- a/ableos/src/keyboard/abstractions/custom_scancode_set.rs
+++ /dev/null
@@ -1,262 +0,0 @@
-use crate::{
-    keyboard::EXTENDED_KEY_CODE, DecodeState, Error, KeyCode, KeyEvent, KeyState, ScancodeSet,
-};
-
-pub struct CustomScancodeSet {
-    single_byte: [Option<KeyCode>; 256],
-    extended: [Option<KeyCode>; 256],
-}
-
-impl Default for CustomScancodeSet {
-    fn default() -> Self {
-        Self::scancode_set1()
-    }
-}
-
-impl CustomScancodeSet {
-    pub fn scancode_set1() -> Self {
-        let mut scancode_set = Self {
-            single_byte: [None; 256],
-            extended: [None; 256],
-        };
-
-        scancode_set.single_byte[0x01] = Some(KeyCode::Escape); // 01
-        scancode_set.single_byte[0x02] = Some(KeyCode::Key1); // 02
-        scancode_set.single_byte[0x03] = Some(KeyCode::Key2); // 03
-        scancode_set.single_byte[0x04] = Some(KeyCode::Key3); // 04
-        scancode_set.single_byte[0x05] = Some(KeyCode::Key4); // 05
-        scancode_set.single_byte[0x06] = Some(KeyCode::Key5); // 06
-        scancode_set.single_byte[0x07] = Some(KeyCode::Key6); // 07
-        scancode_set.single_byte[0x08] = Some(KeyCode::Key7); // 08
-        scancode_set.single_byte[0x09] = Some(KeyCode::Key8); // 09
-        scancode_set.single_byte[0x0A] = Some(KeyCode::Key9); // 0A
-        scancode_set.single_byte[0x0B] = Some(KeyCode::Key0); // 0B
-        scancode_set.single_byte[0x0C] = Some(KeyCode::Minus); // 0C
-        scancode_set.single_byte[0x0D] = Some(KeyCode::Equals); // 0D
-        scancode_set.single_byte[0x0E] = Some(KeyCode::Backspace); // 0E
-        scancode_set.single_byte[0x0F] = Some(KeyCode::Tab); // 0F
-        scancode_set.single_byte[0x10] = Some(KeyCode::Q); // 10
-        scancode_set.single_byte[0x11] = Some(KeyCode::W); // 11
-        scancode_set.single_byte[0x12] = Some(KeyCode::E); // 12
-        scancode_set.single_byte[0x13] = Some(KeyCode::R); // 13
-        scancode_set.single_byte[0x14] = Some(KeyCode::T); // 14
-        scancode_set.single_byte[0x15] = Some(KeyCode::Y); // 15
-        scancode_set.single_byte[0x16] = Some(KeyCode::U); // 16
-        scancode_set.single_byte[0x17] = Some(KeyCode::I); // 17
-        scancode_set.single_byte[0x18] = Some(KeyCode::O); // 18
-        scancode_set.single_byte[0x19] = Some(KeyCode::P); // 19
-        scancode_set.single_byte[0x1A] = Some(KeyCode::BracketSquareLeft); // 1A
-        scancode_set.single_byte[0x1B] = Some(KeyCode::BracketSquareRight); // 1B
-        scancode_set.single_byte[0x1C] = Some(KeyCode::Enter); // 1C
-        scancode_set.single_byte[0x1D] = Some(KeyCode::ControlLeft); // 1D
-        scancode_set.single_byte[0x1E] = Some(KeyCode::A); // 1E
-        scancode_set.single_byte[0x1F] = Some(KeyCode::S); // 1F
-        scancode_set.single_byte[0x20] = Some(KeyCode::D); // 20
-        scancode_set.single_byte[0x21] = Some(KeyCode::F); // 21
-        scancode_set.single_byte[0x22] = Some(KeyCode::G); // 22
-        scancode_set.single_byte[0x23] = Some(KeyCode::H); // 23
-        scancode_set.single_byte[0x24] = Some(KeyCode::J); // 24
-        scancode_set.single_byte[0x25] = Some(KeyCode::K); // 25
-        scancode_set.single_byte[0x26] = Some(KeyCode::L); // 26
-        scancode_set.single_byte[0x27] = Some(KeyCode::SemiColon); // 27
-        scancode_set.single_byte[0x28] = Some(KeyCode::Quote); // 28
-        scancode_set.single_byte[0x29] = Some(KeyCode::BackTick); // 29
-        scancode_set.single_byte[0x2A] = Some(KeyCode::ShiftLeft); // 2A
-        scancode_set.single_byte[0x2B] = Some(KeyCode::BackSlash); // 2B
-        scancode_set.single_byte[0x2C] = Some(KeyCode::Z); // 2C
-        scancode_set.single_byte[0x2D] = Some(KeyCode::X); // 2D
-        scancode_set.single_byte[0x2E] = Some(KeyCode::C); // 2E
-        scancode_set.single_byte[0x2F] = Some(KeyCode::V); // 2F
-        scancode_set.single_byte[0x30] = Some(KeyCode::B); // 30
-        scancode_set.single_byte[0x31] = Some(KeyCode::N); // 31
-        scancode_set.single_byte[0x32] = Some(KeyCode::M); // 32
-        scancode_set.single_byte[0x33] = Some(KeyCode::Comma); // 33
-        scancode_set.single_byte[0x34] = Some(KeyCode::Fullstop); // 34
-        scancode_set.single_byte[0x35] = Some(KeyCode::Slash); // 35
-        scancode_set.single_byte[0x36] = Some(KeyCode::ShiftRight); // 36
-        scancode_set.single_byte[0x37] = Some(KeyCode::NumpadStar); // 37
-        scancode_set.single_byte[0x38] = Some(KeyCode::AltLeft); // 38
-        scancode_set.single_byte[0x39] = Some(KeyCode::Spacebar); // 39
-        scancode_set.single_byte[0x3A] = Some(KeyCode::CapsLock); // 3A
-        scancode_set.single_byte[0x3B] = Some(KeyCode::F1); // 3B
-        scancode_set.single_byte[0x3C] = Some(KeyCode::F2); // 3C
-        scancode_set.single_byte[0x3D] = Some(KeyCode::F3); // 3D
-        scancode_set.single_byte[0x3E] = Some(KeyCode::F4); // 3E
-        scancode_set.single_byte[0x3F] = Some(KeyCode::F5); // 3F
-        scancode_set.single_byte[0x40] = Some(KeyCode::F6); // 40
-        scancode_set.single_byte[0x41] = Some(KeyCode::F7); // 41
-        scancode_set.single_byte[0x42] = Some(KeyCode::F8); // 42
-        scancode_set.single_byte[0x43] = Some(KeyCode::F9); // 43
-        scancode_set.single_byte[0x44] = Some(KeyCode::F10); // 44
-        scancode_set.single_byte[0x45] = Some(KeyCode::NumpadLock); // 45
-        scancode_set.single_byte[0x46] = Some(KeyCode::ScrollLock); // 46
-        scancode_set.single_byte[0x47] = Some(KeyCode::Numpad7); // 47
-        scancode_set.single_byte[0x48] = Some(KeyCode::Numpad8); // 48
-        scancode_set.single_byte[0x49] = Some(KeyCode::Numpad9); // 49
-        scancode_set.single_byte[0x4A] = Some(KeyCode::NumpadMinus); // 4A
-        scancode_set.single_byte[0x4B] = Some(KeyCode::Numpad4); // 4B
-        scancode_set.single_byte[0x4C] = Some(KeyCode::Numpad5); // 4C
-        scancode_set.single_byte[0x4D] = Some(KeyCode::Numpad6); // 4D
-        scancode_set.single_byte[0x4E] = Some(KeyCode::NumpadPlus); // 4E
-        scancode_set.single_byte[0x4F] = Some(KeyCode::Numpad1); // 4F
-        scancode_set.single_byte[0x50] = Some(KeyCode::Numpad2); // 50
-        scancode_set.single_byte[0x51] = Some(KeyCode::Numpad3); // 51
-        scancode_set.single_byte[0x52] = Some(KeyCode::Numpad0); // 52
-        scancode_set.single_byte[0x53] = Some(KeyCode::NumpadPeriod); // 53
-                                                                      // 0x54
-                                                                      // 0x55
-                                                                      // 0x56
-        scancode_set.single_byte[0x57] = Some(KeyCode::F11); // 57
-        scancode_set.single_byte[0x58] = Some(KeyCode::F12); // 58
-        for i in 0x81..=0xD8 {
-            scancode_set.single_byte[i] = scancode_set.single_byte[i - 0x80];
-        }
-        scancode_set.extended[0x10] = Some(KeyCode::PrevTrack); // E010
-                                                                //0x11
-                                                                //0x12
-                                                                //0x13
-                                                                //0x14
-                                                                //0x15
-                                                                //0x16
-                                                                //0x17
-                                                                //0x18
-        scancode_set.extended[0x19] = Some(KeyCode::NextTrack); // E019
-                                                                //0x1A
-                                                                //0x1B
-        scancode_set.extended[0x1C] = Some(KeyCode::NumpadEnter); // E01C
-        scancode_set.extended[0x1D] = Some(KeyCode::ControlRight); // E01D
-                                                                   //0x1E
-                                                                   //0x1F
-        scancode_set.extended[0x20] = Some(KeyCode::Mute); // E020
-        scancode_set.extended[0x21] = Some(KeyCode::Calculator); // E021
-        scancode_set.extended[0x22] = Some(KeyCode::Play); // E022
-                                                           //0x23
-        scancode_set.extended[0x24] = Some(KeyCode::Stop); // E024
-                                                           //0x25
-                                                           //0x26
-                                                           //0x27
-                                                           //0x28
-                                                           //0x29
-                                                           //0x2A
-                                                           //0x2B
-                                                           //0x2C
-                                                           //0x2D
-        scancode_set.extended[0x2E] = Some(KeyCode::VolumeDown); // E02E
-                                                                 //0x2F
-        scancode_set.extended[0x30] = Some(KeyCode::VolumeUp); // E030
-                                                               //0x31
-        scancode_set.extended[0x32] = Some(KeyCode::WWWHome); // E032
-                                                              //0x33
-                                                              //0x34
-        scancode_set.extended[0x35] = Some(KeyCode::NumpadSlash); // E035
-                                                                  //0x36
-                                                                  //0x37
-        scancode_set.extended[0x38] = Some(KeyCode::AltRight); // E038
-                                                               //0x39
-                                                               //0x3A
-                                                               //0x3B
-                                                               //0x3C
-                                                               //0x3D
-                                                               //0x3E
-                                                               //0x3F
-                                                               //0x40
-                                                               //0x41
-                                                               //0x42
-                                                               //0x43
-                                                               //0x44
-                                                               //0x45
-                                                               //0x46
-        scancode_set.extended[0x47] = Some(KeyCode::Home); // E047
-        scancode_set.extended[0x48] = Some(KeyCode::ArrowUp); // E048
-        scancode_set.extended[0x49] = Some(KeyCode::PageUp); // E049
-                                                             //0x4A
-        scancode_set.extended[0x4B] = Some(KeyCode::ArrowLeft); // E04B
-                                                                //0x4C
-        scancode_set.extended[0x4D] = Some(KeyCode::ArrowRight); // E04D
-                                                                 //0x4E
-        scancode_set.extended[0x4F] = Some(KeyCode::End); // E04F
-        scancode_set.extended[0x50] = Some(KeyCode::ArrowDown); // E050
-        scancode_set.extended[0x51] = Some(KeyCode::PageDown); // E051
-        scancode_set.extended[0x52] = Some(KeyCode::Insert); // E052
-        scancode_set.extended[0x53] = Some(KeyCode::Delete); // E053
-        for i in 0x90..=0xED {
-            scancode_set.extended[i] = scancode_set.extended[i - 0x80];
-        }
-        scancode_set
-    }
-
-    pub fn scancode_set2() -> Self {
-        Self {
-            single_byte: [None; 256],
-            extended: [None; 256],
-        }
-    }
-}
-
-impl ScancodeSet for CustomScancodeSet {
-    fn advance_state(&self, state: &mut DecodeState, code: u8) -> Result<Option<KeyEvent>, Error> {
-        match *state {
-            DecodeState::Start => {
-                match code {
-                    EXTENDED_KEY_CODE => {
-                        *state = DecodeState::Extended;
-                        Ok(None)
-                    }
-                    0x80..=0xFF => {
-                        // Release codes
-                        Ok(Some(KeyEvent::new(
-                            self.map_scancode(code - 0x80)?,
-                            KeyState::Up,
-                        )))
-                    }
-                    _ => {
-                        // Normal codes
-                        Ok(Some(KeyEvent::new(
-                            self.map_scancode(code)?,
-                            KeyState::Down,
-                        )))
-                    }
-                }
-            }
-            DecodeState::Extended => {
-                *state = DecodeState::Start;
-                match code {
-                    0x80..=0xFF => {
-                        // Extended Release codes
-                        Ok(Some(KeyEvent::new(
-                            self.map_extended_scancode(code - 0x80)?,
-                            KeyState::Up,
-                        )))
-                    }
-                    _ => {
-                        // Normal release codes
-                        Ok(Some(KeyEvent::new(
-                            self.map_extended_scancode(code)?,
-                            KeyState::Down,
-                        )))
-                    }
-                }
-            }
-            _ => {
-                // Can't get in to this state
-                unimplemented!();
-            }
-        }
-    }
-
-    fn map_scancode(&self, code: u8) -> Result<KeyCode, Error> {
-        if let Some(kc) = self.single_byte[code as usize] {
-            Ok(kc)
-        } else {
-            Err(Error::UnknownKeyCode)
-        }
-    }
-
-    fn map_extended_scancode(&self, code: u8) -> Result<KeyCode, Error> {
-        if let Some(kc) = self.extended[code as usize] {
-            Ok(kc)
-        } else {
-            Err(Error::UnknownKeyCode)
-        }
-    }
-}
diff --git a/ableos/src/keyboard/abstractions/layout_entry.rs b/ableos/src/keyboard/abstractions/layout_entry.rs
deleted file mode 100644
index e338def..0000000
--- a/ableos/src/keyboard/abstractions/layout_entry.rs
+++ /dev/null
@@ -1,115 +0,0 @@
-use crate::DecodedKey;
-
-#[derive(Debug, Clone, Copy)]
-pub enum LayoutEntryKind {
-    Regular,
-    Numlockable,
-    Capslockable,
-}
-
-impl Default for LayoutEntryKind {
-    fn default() -> Self {
-        Self::Regular
-    }
-}
-
-#[derive(Debug, Clone, Copy, Default)]
-pub struct LayoutEntry {
-    pub kind: LayoutEntryKind,
-    pub unshifted: Option<DecodedKey>,
-    pub shifted: Option<DecodedKey>,
-    pub locked: Option<DecodedKey>,
-    pub locked_shifted: Option<DecodedKey>,
-    pub altgr: Option<DecodedKey>,
-    pub raw_unicode: Option<DecodedKey>,
-}
-
-impl LayoutEntry {
-    #[must_use]
-    pub fn regular() -> Self {
-        Self {
-            kind: LayoutEntryKind::Regular,
-            ..Default::default()
-        }
-    }
-
-    #[must_use]
-    pub fn numpad() -> Self {
-        Self {
-            kind: LayoutEntryKind::Numlockable,
-            ..Default::default()
-        }
-    }
-
-    #[must_use]
-    pub fn alphabet() -> Self {
-        Self {
-            kind: LayoutEntryKind::Capslockable,
-            ..Default::default()
-        }
-    }
-
-    #[must_use]
-    pub fn unshifted(mut self, c: impl Into<DecodedKey>) -> Self {
-        self.unshifted = Some(c.into());
-        self
-    }
-
-    #[must_use]
-    pub fn shifted(mut self, c: impl Into<DecodedKey>) -> Self {
-        self.shifted = Some(c.into());
-        self
-    }
-
-    #[must_use]
-    pub fn altgr(mut self, c: impl Into<DecodedKey>) -> Self {
-        self.altgr = Some(c.into());
-        self
-    }
-
-    #[must_use]
-    pub fn raw_unicode(mut self, c: impl Into<DecodedKey>) -> Self {
-        self.raw_unicode = Some(c.into());
-        self
-    }
-
-    #[must_use]
-    pub fn locked(mut self, c: impl Into<DecodedKey>) -> Self {
-        self.locked = Some(c.into());
-        self
-    }
-
-    #[must_use]
-    pub fn locked_shifted(mut self, c: impl Into<DecodedKey>) -> Self {
-        self.locked_shifted = Some(c.into());
-        self
-    }
-
-    #[must_use]
-    pub fn common(self, c: impl Into<DecodedKey> + Clone) -> Self {
-        self.unshifted(c.clone())
-            .shifted(c.clone())
-            .locked(c.clone())
-            .locked_shifted(c)
-    }
-
-    #[must_use]
-    pub fn low(self, c: impl Into<DecodedKey> + Clone) -> Self {
-        self.unshifted(c.clone()).locked_shifted(c)
-    }
-
-    #[must_use]
-    pub fn high(self, c: impl Into<DecodedKey> + Clone) -> Self {
-        self.shifted(c.clone()).locked(c)
-    }
-
-    #[must_use]
-    pub fn all(self, c: impl Into<DecodedKey> + Clone) -> Self {
-        self.unshifted(c.clone())
-            .shifted(c.clone())
-            .locked(c.clone())
-            .locked_shifted(c.clone())
-            .altgr(c.clone())
-            .raw_unicode(c)
-    }
-}
diff --git a/ableos/src/keyboard/abstractions/mod.rs b/ableos/src/keyboard/abstractions/mod.rs
deleted file mode 100644
index d80e687..0000000
--- a/ableos/src/keyboard/abstractions/mod.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-mod custom_layout;
-mod custom_scancode_set;
-mod layout_entry;
-
-pub use custom_layout::CustomLayout;
-pub use custom_scancode_set::CustomScancodeSet;
-pub use layout_entry::{LayoutEntry, LayoutEntryKind};
diff --git a/ableos/src/keyboard/mod.rs b/ableos/src/keyboard/mod.rs
deleted file mode 100644
index 5ca5bca..0000000
--- a/ableos/src/keyboard/mod.rs
+++ /dev/null
@@ -1,290 +0,0 @@
-#![allow(dead_code)]
-
-mod abstractions;
-mod small_types;
-mod traits;
-
-pub use abstractions::*;
-pub use small_types::*;
-pub use traits::*;
-
-const EXTENDED_KEY_CODE: u8 = 0xE0;
-const KEYCODE_BITS: u8 = 11;
-const KEY_RELEASE_CODE: u8 = 0xF0;
-
-#[derive(Debug)]
-pub struct Keyboard<T, S>
-where
-    T: KeyboardLayout,
-    S: ScancodeSet,
-{
-    register: u16,
-    num_bits: u8,
-    decode_state: DecodeState,
-    handle_ctrl: HandleControl,
-    modifiers: Modifiers,
-    layout: T,
-    set: S,
-}
-
-impl<T, S> Keyboard<T, S>
-where
-    T: KeyboardLayout + Default,
-    S: ScancodeSet + Default,
-{
-    /// Make a new Keyboard object with the given layout.
-    pub fn new(_layout: T, _set: S, handle_ctrl: HandleControl) -> Keyboard<T, S> {
-        Keyboard {
-            register: 0,
-            num_bits: 0,
-            decode_state: DecodeState::Start,
-            handle_ctrl,
-            modifiers: Modifiers {
-                lshift: false,
-                rshift: false,
-                lctrl: false,
-                rctrl: false,
-                numlock: true,
-                capslock: false,
-                alt_gr: false,
-            },
-            layout: T::default(),
-            set: S::default(),
-        }
-    }
-
-    /// Change the Ctrl key mapping.
-    pub fn set_ctrl_handling(&mut self, new_value: HandleControl) {
-        self.handle_ctrl = new_value;
-    }
-
-    /// Get the current Ctrl key mapping.
-    pub fn get_ctrl_handling(&self) -> HandleControl {
-        self.handle_ctrl
-    }
-
-    /// Clears the bit register.
-    ///
-    /// Call this when there is a timeout reading data from the keyboard.
-    pub fn clear(&mut self) {
-        self.register = 0;
-        self.num_bits = 0;
-        self.decode_state = DecodeState::Start;
-    }
-
-    /// Processes a 16-bit word from the keyboard.
-    ///
-    /// * The start bit (0) must be in bit 0.
-    /// * The data octet must be in bits 1..8, with the LSB in bit 1 and the
-    ///   MSB in bit 8.
-    /// * The parity bit must be in bit 9.
-    /// * The stop bit (1) must be in bit 10.
-    pub fn add_word(&mut self, word: u16) -> Result<Option<KeyEvent>, Error> {
-        let byte = self.check_word(word)?;
-        self.add_byte(byte)
-    }
-
-    /// Processes an 8-bit byte from the keyboard.
-    ///
-    /// We assume the start, stop and parity bits have been processed and
-    /// verified.
-    pub fn add_byte(&mut self, byte: u8) -> Result<Option<KeyEvent>, Error> {
-        self.set.advance_state(&mut self.decode_state, byte)
-    }
-
-    /// Shift a bit into the register.
-    ///
-    /// Call this /or/ call `add_word` - don't call both.
-    /// Until the last bit is added you get Ok(None) returned.
-    pub fn add_bit(&mut self, bit: bool) -> Result<Option<KeyEvent>, Error> {
-        self.register |= (bit as u16) << self.num_bits;
-        self.num_bits += 1;
-        if self.num_bits == KEYCODE_BITS {
-            let word = self.register;
-            self.register = 0;
-            self.num_bits = 0;
-            self.add_word(word)
-        } else {
-            Ok(None)
-        }
-    }
-
-    /// Processes a `KeyEvent` returned from `add_bit`, `add_byte` or `add_word`
-    /// and produces a decoded key.
-    ///
-    /// For example, the KeyEvent for pressing the '5' key on your keyboard
-    /// gives a DecodedKey of unicode character '5', unless the shift key is
-    /// held in which case you get the unicode character '%'.
-    pub fn process_keyevent(&mut self, ev: KeyEvent) -> Option<DecodedKey> {
-        match ev {
-            KeyEvent {
-                code: KeyCode::ShiftLeft,
-                state: KeyState::Down,
-            } => {
-                self.modifiers.lshift = true;
-                None
-            }
-            KeyEvent {
-                code: KeyCode::ShiftRight,
-                state: KeyState::Down,
-            } => {
-                self.modifiers.rshift = true;
-                None
-            }
-            KeyEvent {
-                code: KeyCode::ShiftLeft,
-                state: KeyState::Up,
-            } => {
-                self.modifiers.lshift = false;
-                None
-            }
-            KeyEvent {
-                code: KeyCode::ShiftRight,
-                state: KeyState::Up,
-            } => {
-                self.modifiers.rshift = false;
-                None
-            }
-            KeyEvent {
-                code: KeyCode::CapsLock,
-                state: KeyState::Down,
-            } => {
-                self.modifiers.capslock = !self.modifiers.capslock;
-                None
-            }
-            KeyEvent {
-                code: KeyCode::NumpadLock,
-                state: KeyState::Down,
-            } => {
-                self.modifiers.numlock = !self.modifiers.numlock;
-                None
-            }
-            KeyEvent {
-                code: KeyCode::ControlLeft,
-                state: KeyState::Down,
-            } => {
-                self.modifiers.lctrl = true;
-                None
-            }
-            KeyEvent {
-                code: KeyCode::ControlLeft,
-                state: KeyState::Up,
-            } => {
-                self.modifiers.lctrl = false;
-                None
-            }
-            KeyEvent {
-                code: KeyCode::ControlRight,
-                state: KeyState::Down,
-            } => {
-                self.modifiers.rctrl = true;
-                None
-            }
-            KeyEvent {
-                code: KeyCode::ControlRight,
-                state: KeyState::Up,
-            } => {
-                self.modifiers.rctrl = false;
-                None
-            }
-            KeyEvent {
-                code: KeyCode::AltRight,
-                state: KeyState::Down,
-            } => {
-                self.modifiers.alt_gr = true;
-                None
-            }
-            KeyEvent {
-                code: KeyCode::AltRight,
-                state: KeyState::Up,
-            } => {
-                self.modifiers.alt_gr = false;
-                None
-            }
-            KeyEvent {
-                code: c,
-                state: KeyState::Down,
-            } => Some(
-                self.layout
-                    .map_keycode(c, &self.modifiers, self.handle_ctrl),
-            ),
-            _ => None,
-        }
-    }
-
-    fn get_bit(&self, word: u16, offset: usize) -> bool {
-        ((word >> offset) & 0x0001) != 0
-    }
-
-    fn has_even_number_bits(&self, data: u8) -> bool {
-        (data.count_ones() % 2) == 0
-    }
-
-    /// Check 11-bit word has 1 start bit, 1 stop bit and an odd parity bit.
-    fn check_word(&self, word: u16) -> Result<u8, Error> {
-        let start_bit = self.get_bit(word, 0);
-        let parity_bit = self.get_bit(word, 9);
-        let stop_bit = self.get_bit(word, 10);
-        let data = ((word >> 1) & 0xFF) as u8;
-        if start_bit {
-            return Err(Error::BadStartBit);
-        }
-        if !stop_bit {
-            return Err(Error::BadStopBit);
-        }
-        let need_parity = self.has_even_number_bits(data);
-        // Odd parity, so these must not match
-        if need_parity != parity_bit {
-            return Err(Error::ParityError);
-        }
-
-        Ok(data)
-    }
-}
-
-pub fn parse_format() {
-    let test = include_str!("../../keymaps/qwerty.keymap").lines();
-    // r#"0-NONE\n1-HI#Says HI"#
-    for x in test {
-        for y in x.split('-') {
-            if y.parse::<u64>().is_ok() {
-                todo![];
-            // NOTE: this unwrap is ok bcause of the above check
-            // println!("NUM: {:?}", y.parse::<u64>().unwrap());
-            // serial_println!("NUM: {:?}", y.parse::<u64>().unwrap());
-            } else if y.starts_with('#') {
-                // ignore all # delimeted lines
-            } else {
-                // println!("STR: {:?}", y);
-                // serial_println!("STR: {:?}", y);
-                match y.trim() {
-                    "NONE" => {}
-                    "TAB" => {}
-                    "SHIFT" => {}
-                    "SCROLL_LOCK" => {}
-                    "FUNCTION_1" => {}
-                    "FUNCTION_2" => {}
-                    "FUNCTION_3" => {}
-                    "FUNCTION_4" => {}
-                    "FUNCTION_5" => {}
-                    "FUNCTION_6" => {}
-                    "FUNCTION_7" => {}
-                    "FUNCTION_8" => {}
-                    "FUNCTION_9" => {}
-                    "FUNCTION_10" => {}
-                    "FUNCTION_11" => {}
-                    "FUNCTION_12" => {}
-                    "COMMA" => {}
-                    "PERIOD" => {}
-                    "FORWARDSLASH" => {}
-                    "GRAVE" => {}
-                    "BRACKET_LEFT" => {}
-                    "BACK_SLASH" => {}
-                    "BRACKET_RIGHT" => {}
-                    "QUOTE" => {}
-                    _ => {}
-                }
-            }
-        }
-    }
-}
diff --git a/ableos/src/keyboard/small_types.rs b/ableos/src/keyboard/small_types.rs
deleted file mode 100644
index 31661a6..0000000
--- a/ableos/src/keyboard/small_types.rs
+++ /dev/null
@@ -1,296 +0,0 @@
-#![allow(non_snake_case)]
-
-#[derive(Debug)]
-pub struct Modifiers {
-    pub lshift: bool,
-    pub rshift: bool,
-    pub lctrl: bool,
-    pub rctrl: bool,
-    pub numlock: bool,
-    pub capslock: bool,
-    pub alt_gr: bool,
-}
-
-impl Modifiers {
-    pub fn is_shifted(&self) -> bool {
-        self.lshift | self.rshift
-    }
-
-    pub fn is_ctrl(&self) -> bool {
-        self.lctrl | self.rctrl
-    }
-
-    pub fn is_caps(&self) -> bool {
-        self.capslock
-    }
-}
-
-#[derive(Debug, PartialEq, Eq, Copy, Clone)]
-pub enum KeyState {
-    Up,
-    Down,
-}
-#[derive(Debug, PartialEq, Eq, Clone)]
-pub struct KeyEvent {
-    pub code: KeyCode,
-    pub state: KeyState,
-}
-
-impl KeyEvent {
-    pub fn new(code: KeyCode, state: KeyState) -> KeyEvent {
-        KeyEvent { code, state }
-    }
-}
-
-#[derive(Debug, PartialEq, Eq, Copy, Clone)]
-pub enum HandleControl {
-    /// If either Ctrl key is held down, convert the letters A through Z into
-    /// Unicode chars U+0001 through U+001A. If the Ctrl keys are not held
-    /// down, letters go through normally.
-    MapLettersToUnicode,
-    /// Don't do anything special - send through the Ctrl key up/down events,
-    /// and leave the letters as letters.
-    Ignore,
-}
-
-#[derive(Debug, Copy, Clone, Eq, PartialEq)]
-pub enum DecodeState {
-    Start,
-    Extended,
-    Release,
-    ExtendedRelease,
-}
-
-/// Indicates different error conditions.
-#[derive(Debug, PartialEq, Eq, Copy, Clone)]
-pub enum Error {
-    BadStartBit,
-    BadStopBit,
-    ParityError,
-    UnknownKeyCode,
-    InvalidState,
-}
-
-#[derive(Debug, PartialEq, Eq, Copy, Clone)]
-#[repr(u8)]
-pub enum DecodedKeyKind {
-    RawKey = 0,
-    Unicode = 1,
-}
-#[derive(Debug, PartialEq, Eq, Copy, Clone)]
-#[repr(C)]
-pub struct DecodedKey {
-    pub kind: DecodedKeyKind,
-    pub value: u32,
-}
-
-impl From<char> for DecodedKey {
-    fn from(ch: char) -> Self {
-        Self {
-            kind: DecodedKeyKind::Unicode,
-            value: ch as u32,
-        }
-    }
-}
-
-impl From<KeyCode> for DecodedKey {
-    fn from(kc: KeyCode) -> Self {
-        Self {
-            kind: DecodedKeyKind::RawKey,
-            value: kc as u32,
-        }
-    }
-}
-
-impl DecodedKey {
-    pub const ZERO: Self = Self {
-        kind: DecodedKeyKind::Unicode,
-        value: 0,
-    };
-    pub fn Unicode(ch: char) -> Self {
-        Self {
-            kind: DecodedKeyKind::Unicode,
-            value: ch.into(),
-        }
-    }
-    pub fn RawKey(byte: u8) -> Self {
-        Self {
-            kind: DecodedKeyKind::RawKey,
-            value: byte.into(),
-        }
-    }
-}
-
-macro_rules! keycode_enum {
-   (@get_last $Variant:ident) => {
-      Self::$Variant
-   };
-   (@get_last $Variant:ident, $($VariantTail:ident),*) => {
-      keycode_enum![@get_last $($VariantTail),*]
-   };
-   ($($Variant:ident=$Value:expr,)*) => {
-      #[derive(Debug, PartialEq, Eq, Clone, Copy)]
-      #[repr(u8)]
-      pub enum KeyCode {
-         $($Variant = $Value),*
-      }
-
-      impl core::convert::From<u32> for KeyCode {
-         fn from(n: u32) -> Self {
-            match n {
-               $($Value => Self::$Variant),*,
-               _ => keycode_enum![@get_last $($Variant),*]
-            }
-         }
-      }
-   };
-   ($($Variant:ident=$Value:expr),* ) => {
-      keycode_enum!($($Variant=$Value,)* );
-   };
-}
-
-// This will be a way to map keys to other keys / keyyngs / macros
-keycode_enum! {
-    AltLeft = 0x00,
-    AltRight = 0x01,
-
-    ArrowDown = 0x02,
-    ArrowLeft = 0x03,
-    ArrowRight = 0x04,
-    ArrowUp = 0x05,
-
-    BackSlash = 0x06,
-    Backspace = 0x07,
-    BackTick = 0x08,
-
-    BracketSquareLeft = 0x09,
-    BracketSquareRight = 0x0A,
-
-    CapsLock = 0x0B,
-
-    Comma = 0x0C,
-
-    ControlLeft = 0x0D,
-    ControlRight = 0x0E,
-
-    Delete = 0x0F,
-    End = 0x10,
-    Enter = 0x11,
-    Escape = 0x12,
-    Equals = 0x13,
-
-    F1 = 0x14,
-    F2 = 0x15,
-    F3 = 0x16,
-    F4 = 0x17,
-    F5 = 0x18,
-    F6 = 0x19,
-    F7 = 0x1A,
-    F8 = 0x1B,
-    F9 = 0x1C,
-    F10 = 0x1D,
-    F11 = 0x1E,
-    F12 = 0x1F,
-
-    Fullstop = 0x20,
-
-    Home = 0x21,
-
-    Insert = 0x22,
-
-    Key1 = 0x23,
-    Key2 = 0x24,
-    Key3 = 0x25,
-    Key4 = 0x26,
-    Key5 = 0x27,
-    Key6 = 0x28,
-    Key7 = 0x29,
-    Key8 = 0x2A,
-    Key9 = 0x2B,
-    Key0 = 0x2C,
-
-    Menus = 0x2D,
-
-    Minus = 0x2E,
-
-    Numpad0 = 0x2F,
-    Numpad1 = 0x30,
-    Numpad2 = 0x31,
-    Numpad3 = 0x32,
-    Numpad4 = 0x33,
-    Numpad5 = 0x34,
-    Numpad6 = 0x35,
-    Numpad7 = 0x36,
-    Numpad8 = 0x37,
-    Numpad9 = 0x38,
-
-    NumpadEnter = 0x39,
-    NumpadLock = 0x3A,
-    NumpadSlash = 0x3B,
-    NumpadStar = 0x3C,
-    NumpadMinus = 0x3D,
-    NumpadPeriod = 0x3E,
-    NumpadPlus = 0x3F,
-
-    PageDown = 0x40,
-    PageUp = 0x41,
-
-    PauseBreak = 0x42,
-    PrintScreen = 0x43,
-    ScrollLock = 0x44,
-    SemiColon = 0x45,
-
-    ShiftLeft = 0x46,
-    ShiftRight = 0x47,
-
-    Slash = 0x48,
-    Spacebar = 0x49,
-    Tab = 0x4A,
-    Quote = 0x4B,
-    WindowsLeft = 0x4C,
-    WindowsRight = 0x4D,
-
-    A = 0x4E,
-    B = 0x4F,
-    C = 0x50,
-    D = 0x51,
-    E = 0x52,
-    F = 0x53,
-    G = 0x54,
-    H = 0x55,
-    I = 0x56,
-    J = 0x57,
-    K = 0x58,
-    L = 0x59,
-    M = 0x5A,
-    N = 0x5B,
-    O = 0x5C,
-    P = 0x5D,
-    Q = 0x5E,
-    R = 0x5F,
-    S = 0x60,
-    T = 0x61,
-    U = 0x62,
-    V = 0x63,
-    W = 0x64,
-    X = 0x65,
-    Y = 0x66,
-    Z = 0x67,
-
-    HashTilde = 0x68,
-
-    PrevTrack = 0x69,
-    NextTrack = 0x6A,
-
-    Mute = 0x6B,
-
-    Calculator = 0x6C,
-
-    Play = 0x6D,
-    Stop = 0x6E,
-    VolumeDown = 0x6F,
-    VolumeUp = 0x70,
-
-    WWWHome = 0x71,
-    PowerOnTestOk = 0x72,
-}
diff --git a/ableos/src/keyboard/traits.rs b/ableos/src/keyboard/traits.rs
deleted file mode 100644
index 9be9296..0000000
--- a/ableos/src/keyboard/traits.rs
+++ /dev/null
@@ -1,26 +0,0 @@
-use super::Error;
-use crate::{DecodeState, DecodedKey, HandleControl, KeyCode, KeyEvent, Modifiers};
-
-pub trait ScancodeSet {
-    /// Handles the state logic for the decoding of scan codes into key events.
-    fn advance_state(&self, state: &mut DecodeState, code: u8) -> Result<Option<KeyEvent>, Error>;
-
-    /// Convert a Scan Code set X byte to our 'KeyType' enum
-    fn map_scancode(&self, code: u8) -> Result<KeyCode, Error>;
-
-    /// Convert a Scan Code Set X extended byte (prefixed E0) to our `KeyType`
-    /// enum.
-    fn map_extended_scancode(&self, code: u8) -> Result<KeyCode, Error>;
-}
-
-pub trait KeyboardLayout {
-    /// Convert a `KeyType` enum to a Unicode character, if possible.
-    /// `KeyType::A` maps to `Some('a')` (or `Some('A')` if shifted), while
-    /// `KeyType::AltLeft` returns `None`
-    fn map_keycode(
-        &self,
-        keycode: KeyCode,
-        modifiers: &Modifiers,
-        handle_ctrl: HandleControl,
-    ) -> DecodedKey;
-}
diff --git a/ableos/src/kmain.rs b/ableos/src/kmain.rs
deleted file mode 100644
index c4bf576..0000000
--- a/ableos/src/kmain.rs
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright (c) 2022, Umut Ä°nan ErdoÄŸan <umutinanerdogan@pm.me>
- *
- * SPDX-License-Identifier: MPL-2.0
- */
-
-#![allow(clippy::empty_loop)]
-
-use core::sync::atomic::AtomicU64;
-
-use crate::arch::memory::BootInfoFrameAllocator;
-use crate::arch::{drivers::sysinfo::master, init, sloop};
-use crate::devices::pci;
-use crate::relib::network::socket::{SimpleSock, Socket};
-use crate::{boot_conf::KernelConfig, scratchpad, systeminfo::RELEASE_TYPE};
-// use crate::{boot_conf::KernelConfig, scratchpad, systeminfo::RELEASE_TYPE, TERM};
-use crate::{filesystem, graphics_limine, hardware};
-use kernel::VERSION;
-use limine::LimineSmpInfo;
-use limine::{LimineFramebufferRequest, LimineSmpRequest};
-
-use spin::Lazy;
-
-// FIXME: platform agnostic paging stuff
-use x86_64::structures::paging::{Mapper, Size4KiB};
-
-// TODO: Change this structure to allow for multiple cores loaded
-pub static KERNEL_CONF: Lazy<KernelConfig> = Lazy::new(KernelConfig::new);
-pub static FRAMEBUFFER: LimineFramebufferRequest = LimineFramebufferRequest::new(0);
-pub static SMP: LimineSmpRequest = LimineSmpRequest::new(0);
-
-/// The main entry point of the kernel
-pub fn kernel_main(
-    mut mapper: impl Mapper<Size4KiB>,
-    mut frame_allocator: BootInfoFrameAllocator,
-) -> ! {
-    init::init();
-
-    {
-        // TODO: Setup config loaded from disk
-        let mut kptr = KERNEL_CONF.as_mut_ptr();
-        unsafe {
-            *kptr = KernelConfig::new();
-        }
-    }
-    if KERNEL_CONF.logging.enabled {
-        log::set_max_level(KERNEL_CONF.log_level());
-        // println!("{:#?}", *KERNEL_CONF);
-    } else {
-        log::set_max_level(log::LevelFilter::Off);
-    }
-
-    // let mut term = TERM.lock();
-    // term.initialize();
-    // term.set_dirty(true);
-    // term.draw_term();
-    // drop(term);
-
-    pci::init(&mut mapper, &mut frame_allocator);
-
-    x86_64::instructions::interrupts::without_interrupts(|| {
-        hardware::init_mouse();
-    });
-
-    filesystem::init().unwrap();
-
-    /*
-
-    // println!("abc");
-    let mut ipc_service = IPC.lock();
-    // create some channels or whatever here then drop it
-    let log_handle = ipc_service.create_channel("LOG", true);
-    let log_sock_handle = ipc_service.create_socket("LOG", true);
-
-    for handle in ipc_service.examine_board() {
-        // println!("Discovered: {}", handle);
-    }
-
-    drop(ipc_service);
-
-
-    */
-
-    // use x86_ata::{init, ATA_BLOCK_SIZE};
-    // 1. Initialise ATA Subsystem. (Perform Once, on boot)
-    // init().expect("Failed To Start ATA...");
-    // let mut buffer: [u8; ATA_BLOCK_SIZE] = [0; ATA_BLOCK_SIZE];
-    // FIXME: Calls to read panic the kernel
-    // read(0, 0, 0, &mut buffer);
-
-    // for abc in list() {
-    //     trace!("{:?}", abc);
-    // }
-    /*
-    log_version_data();
-    // */
-
-    {
-        // TODO: setup a proper framebuffer handler
-        let fb_response = FRAMEBUFFER.get_response().get().unwrap();
-        for fb in fb_response.framebuffers().unwrap() {
-            trace!("Framebuffer {}x{}", fb.width, fb.height);
-            trace!("{}", fb.memory_model);
-            trace!("{}", fb.bpp);
-            let mut count = 0;
-            let total = fb.width * fb.height * 3;
-            while count != total {
-                unsafe {
-                    let fb_ptr = fb.address.as_mut_ptr().unwrap();
-                    *fb_ptr.offset((count).try_into().unwrap()) = 0xff;
-                    *fb_ptr.offset((count + 1).try_into().unwrap()) = 0xff;
-                    *fb_ptr.offset((count + 2).try_into().unwrap()) = 0xff;
-                    *fb_ptr.offset((count + 3).try_into().unwrap()) = 0x00;
-
-                    *fb_ptr.offset((count + 4).try_into().unwrap()) = 0x00;
-                    *fb_ptr.offset((count + 5).try_into().unwrap()) = 0x00;
-                    // *fb_ptr.offset((count + 6).try_into().unwrap()) = 0x00;
-                }
-                count += 6;
-            }
-        }
-    }
-
-    // // SMP
-    // {
-    //     let smp = SMP.get_response().get().unwrap();
-    //     for cpu in smp.cpus().unwrap() {
-    //         // unsafe {
-    //         //     cpu.goto_address = *(trace_hcf as *const u64);
-    //         // }
-    //     }
-    // }
-
-    graphics_limine::clear_screen();
-
-    scratchpad();
-    sloop()
-}
-
-extern "C" fn trace_hcf(info: *const LimineSmpInfo) -> ! {
-    trace!("CPU BOOT");
-    loop {}
-}
-
-pub fn cpu_socket_startup() {
-    let mut cpu_info_socket = SimpleSock::new();
-    cpu_info_socket.register_protocol("CPU_INFO".to_string());
-
-    // let x = master().unwrap();
-    // let _xyz = x.brand_string().unwrap();
-}
-
-pub fn log_version_data() {
-    info!("{} v{}", RELEASE_TYPE, VERSION);
-    info!(
-        "Brand String: {}",
-        master().unwrap().brand_string().unwrap()
-    );
-}
-
-pub static TICK: AtomicU64 = AtomicU64::new(0);
-
-pub fn tick() {
-    x86_64::instructions::interrupts::without_interrupts(|| {
-        // let mut term = TERM.lock();
-
-        // term.draw_term();
-        use core::sync::atomic::Ordering::Relaxed;
-
-        let mut data = TICK.load(Relaxed);
-        data = data.wrapping_add(1);
-
-        TICK.store(data, Relaxed);
-    });
-}
diff --git a/ableos/src/lib.rs b/ableos/src/lib.rs
deleted file mode 100644
index b3df4dc..0000000
--- a/ableos/src/lib.rs
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (c) 2022, Able <able@ablecorp.us>
- * Copyright (c) 2022, Umut Ä°nan ErdoÄŸan <umutinanerdogan@pm.me>
- *
- * SPDX-License-Identifier: MPL-2.0
- */
-
-//! main library for the AbleOS kernel.
-//! exposing all the kernel functionality to the rest of the kernel.
-//!
-//!
-
-#![no_std]
-#![feature(
-    abi_x86_interrupt,
-    alloc_error_handler,
-    asm_sym, // Needed for RISC-V
-    naked_functions,
-    prelude_import,
-)]
-#![feature(arbitrary_enum_discriminant)]
-#![feature(custom_test_frameworks)]
-#![reexport_test_harness_main = "test_main"]
-#![test_runner(crate::test_runner)]
-
-#[macro_use]
-pub extern crate log;
-
-#[macro_use]
-pub extern crate bitflags;
-
-pub extern crate alloc;
-pub extern crate externc_libm as libm;
-
-/// Contains architecture specific code for aarch64.
-#[cfg(target_arch = "aarch64")]
-#[path = "arch/aarch64/mod.rs"]
-pub mod arch;
-
-/// Contains architecture specific code for riscv64.
-#[cfg(target_arch = "riscv64")]
-#[path = "arch/riscv/mod.rs"]
-pub mod arch;
-
-/// Contains architecture specific code for x86_64.
-#[cfg(target_arch = "x86_64")]
-#[path = "arch/x86_64/mod.rs"]
-pub mod arch;
-
-#[cfg(target_arch = "x86_64")]
-pub mod port_io;
-
-#[macro_use]
-pub mod print;
-
-#[macro_use]
-pub mod serial_print;
-
-pub mod boot_conf;
-pub mod device_interface;
-pub mod devices;
-pub mod driver_traits;
-pub mod experiments;
-pub mod filesystem;
-pub mod graphics;
-pub mod kernel_state;
-pub mod keyboard;
-pub mod kmain;
-pub mod logger;
-pub mod prelude;
-pub mod ps2_mouse;
-pub mod relib;
-pub mod rhai_shell;
-pub mod scratchpad;
-pub mod stdio;
-pub mod time;
-pub mod utils;
-pub mod virtio;
-pub mod wasm;
-pub mod wasm_jumploader;
-
-pub mod allocator;
-
-// pub use allocator as aalloc;
-pub mod graphics_limine;
-pub mod handle;
-pub mod hardware;
-pub mod ipc;
-pub mod panic;
-mod unicode_utils;
-pub mod vga_e;
-pub mod vterm;
-// pub mod vgai;
-
-#[prelude_import]
-pub use prelude::rust_2021::*;
-
-pub use driver_traits::*;
-pub use experiments::*;
-pub use graphics::*;
-pub use kernel;
-// pub use kernel::panic;
-pub use kernel_state::*;
-pub use keyboard::*;
-pub use logger::*;
-pub use relib::*;
-pub use scratchpad::*;
-pub use utils::*;
-pub use virtio::*;
-pub use wasm::*;
-
-#[cfg(test)]
-pub mod tests;
-
-#[cfg(test)]
-pub use tests::test_kernel_main;
-
-#[cfg(test)]
-use crate::tests::test_runner;
diff --git a/ableos/src/logger.rs b/ableos/src/logger.rs
deleted file mode 100644
index 1dd878e..0000000
--- a/ableos/src/logger.rs
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (c) 2022, Able <able@ablecorp.us>
- *
- * SPDX-License-Identifier: MPL-2.0
- */
-
-use crate::{kmain::KERNEL_CONF, time::fetch_time};
-use lliw::Fg;
-use log::{Level, LevelFilter, Metadata, Record, SetLoggerError};
-
-static LOGGER: SimpleLogger = SimpleLogger;
-// TODO: Rebuild this to take advantage of sockets
-// DETAIL: Log to a socket instead of the screen
-// So that we can log in the kernel and display it in userland
-struct SimpleLogger;
-impl log::Log for SimpleLogger {
-    fn enabled(&self, metadata: &Metadata) -> bool {
-        metadata.level() <= Level::Trace
-    }
-    fn log(&self, record: &Record) {
-        x86_64::instructions::interrupts::without_interrupts(|| {
-            if self.enabled(record.metadata()) {
-                let time_float = fetch_time();
-                use Fg::*;
-
-                let color = match record.level() {
-                    log::Level::Error => (Fg::Red, "\0RED\0"),
-                    log::Level::Warn => (Fg::LightYellow, "\0LIGHTYELLOW\0"),
-                    log::Level::Info => (Fg::LightWhite, "\0LIGHTGREY\0"),
-                    log::Level::Debug => (Fg::Blue, "\0BLUE\0"),
-                    log::Level::Trace => (Fg::Yellow, "\0YELLOW\0"),
-                };
-
-                let mod_path = match record.module_path() {
-                    Some(p) => {
-                        if KERNEL_CONF.logging.filter.contains(&p.to_string()) {
-                            return;
-                        }
-
-                        p
-                    }
-                    None => "unknown",
-                };
-
-                let line = match record.line() {
-                    Some(line_number) => line_number,
-                    None => 0,
-                };
-
-                if KERNEL_CONF.logging.log_to_vterm {
-                    let msg = format!(
-                        // "[{}{}$RESET$][$GREEN${}$RESET$]{}\n",
-                        "[{}{:05}\0RESET\0][\0GREEN\0{}\0RESET\0][\0BLUE\0{}@{}\0RESET\0] {}",
-                        color.1,
-                        record.level(),
-                        time_float,
-                        mod_path,
-                        line,
-                        record.args(),
-                    );
-
-                    println!("{msg}");
-                }
-
-                if KERNEL_CONF.logging.log_to_serial {
-                    serial_println!(
-                        "[{}{:05}{}][{}{}{}][{}{}@{}{}] {}",
-                        color.0,
-                        record.level(),
-                        Reset,
-                        Green,
-                        time_float,
-                        Reset,
-                        Blue,
-                        mod_path,
-                        line,
-                        Reset,
-                        record.args()
-                    );
-                }
-            }
-        });
-    }
-    /// Clear the log buffer
-    fn flush(&self) {}
-}
-
-pub fn init() -> Result<(), SetLoggerError> {
-    log::set_logger(&LOGGER).map(|()| log::set_max_level(LevelFilter::Trace))
-    // ?;
-
-    // trace!("Logger started");
-
-    // Ok(())
-}
diff --git a/ableos/src/main.rs b/ableos/src/main.rs
deleted file mode 100644
index f4e9d7e..0000000
--- a/ableos/src/main.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-#![no_std]
-#![no_main]
-
-pub use ableos::*;
diff --git a/ableos/src/panic.rs b/ableos/src/panic.rs
deleted file mode 100644
index 609b2a6..0000000
--- a/ableos/src/panic.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright (c) 2022, able <abl3theabove@gmail.com>
- *
- * SPDX-License-Identifier: MPL-2.0
- */
-
-use core::panic::PanicInfo;
-use log::error;
-
-use crate::arch::interrupts::{bsod, BSODSource};
-#[cfg(not(test))]
-#[panic_handler]
-fn panic_handler(info: &PanicInfo) -> ! {
-    error!("{:?}", info);
-
-    bsod(BSODSource::Panic(info));
-}
diff --git a/ableos/src/port_io.rs b/ableos/src/port_io.rs
deleted file mode 100644
index 95bb1a2..0000000
--- a/ableos/src/port_io.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-use cpuio::{inb, inl, inw, outb, outl, outw};
-
-pub fn read32(reg: u16) -> u32 {
-    unsafe { inl(reg) }
-}
-pub fn read16(reg: u16) -> u16 {
-    unsafe { inw(reg) as u16 }
-}
-
-pub fn read8(reg: u16) -> u8 {
-    unsafe { inb(reg) }
-}
-
-pub fn write32(reg: u16, val: u32) {
-    unsafe { outl(val, reg) }
-}
-
-pub fn write16(reg: u16, val: u16) {
-    unsafe { outw(val, reg) }
-}
-
-pub fn write8(reg: u16, val: u8) {
-    unsafe { outb(val, reg) }
-}
diff --git a/ableos/src/prelude/mod.rs b/ableos/src/prelude/mod.rs
deleted file mode 100644
index 9d3a594..0000000
--- a/ableos/src/prelude/mod.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-pub mod rust_2021;
-
-pub use core::assert;
-pub use core::option::Option::Some;
-pub use core::option::*;
diff --git a/ableos/src/prelude/rust_2021.rs b/ableos/src/prelude/rust_2021.rs
deleted file mode 100644
index 2e95f7d..0000000
--- a/ableos/src/prelude/rust_2021.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-pub use crate::print::*;
-pub use crate::serial_print::*;
-pub use alloc::{boxed::Box, format, string::*, vec, vec::*};
-pub use core::arch::asm;
-
-pub use core::prelude::rust_2021::*;
-pub use core::prelude::v1::*;
-pub use core::result::Result::*;
-pub use log::{debug, info, trace, warn};
diff --git a/ableos/src/print.rs b/ableos/src/print.rs
deleted file mode 100644
index 2365042..0000000
--- a/ableos/src/print.rs
+++ /dev/null
@@ -1,80 +0,0 @@
-// TODO: refactor this file
-// TODO: make STDOUT redirect to a socket owned
-//       by the process named "stdout"
-
-use core::fmt::{Arguments, Error};
-
-pub struct Stdout;
-impl Stdout {
-    pub fn write_fmt(&mut self, arg: Arguments<'_>) /*-> Result<(), Error> */
-    {
-        let _ = core::fmt::Write::write_fmt(self, arg);
-        //   Ok(())
-    }
-}
-
-impl core::fmt::Write for Stdout {
-    #[cfg(target_arch = "aarch64")]
-    fn write_str(&mut self, s: &str) -> Result<(), Error> {
-        // Don't actually print anything yet lmao
-        Ok(())
-    }
-    #[cfg(target_arch = "x86_64")]
-    fn write_str(&mut self, s: &str) -> Result<(), Error> {
-        // use mini_backtrace::Backtrace;
-
-        // use crate::TERM;
-
-        // Capture up to 16 frames. This is returned using an ArrayVec that doesn't
-        // perform any dynamic memory allocation.
-        /*
-        let bt = Backtrace::<16>::capture();
-        trace!("Backtrace:");
-        for frame in bt.frames {
-            trace!("  {:#x}", frame);
-        }
-        if bt.frames_omitted {
-            trace!(" ... <frames omitted>");
-        }
-        */
-
-        trace!("printing");
-        trace!("PRINT: {}", s);
-        // x86_64::instructions::interrupts::without_interrupts(|| {
-        // let mut term = TERM.lock();
-
-        // term.set_dirty(true);
-        // term.print(s);
-
-        // drop(term);
-        // });
-        // trace!("Finished printing");
-        Ok(())
-    }
-    #[cfg(target_arch = "riscv64")]
-    fn write_str(&mut self, s: &str) -> Result<(), Error> {
-        Ok(())
-    }
-    fn write_char(&mut self, c: char) -> core::fmt::Result {
-        self.write_str(c.encode_utf8(&mut [0; 4]))
-    }
-    fn write_fmt(mut self: &mut Self, args: Arguments<'_>) -> core::fmt::Result {
-        core::fmt::write(&mut self, args)
-    }
-}
-
-#[macro_export]
-macro_rules! print {
-    () => {
-        ::core::writeln!($crate::print::Stdout, "")
-    };
-    ($($tt:tt)*) => {
-        ::core::write!($crate::print::Stdout, $($tt)*)
-    };
-}
-#[macro_export]
-macro_rules! println {
-    ($($tt:tt)*) => {
-        ::core::writeln!($crate::print::Stdout, $($tt)*)
-    };
-}
diff --git a/ableos/src/ps2_mouse.rs b/ableos/src/ps2_mouse.rs
deleted file mode 100644
index aa61930..0000000
--- a/ableos/src/ps2_mouse.rs
+++ /dev/null
@@ -1,300 +0,0 @@
-use bitflags::bitflags;
-use x86_64::instructions::port::Port;
-
-const ADDRESS_PORT_ADDRESS: u16 = 0x64;
-const DATA_PORT_ADDRESS: u16 = 0x60;
-const GET_STATUS_BYTE: u8 = 0x20;
-const SET_STATUS_BYTE: u8 = 0x60;
-
-const DISABLE_FIRST: u8 = 0xAD;
-const DISABLE_SECOND: u8 = 0xA7;
-const ENABLE_FIRST: u8 = 0xAE;
-const ENABLE_SECOND: u8 = 0xA8;
-
-bitflags! {
-    /// Represents the flags currently set for the mouse.
-    #[derive(Default)]
-    pub struct MouseFlags: u8 {
-        /// Whether or not the left mouse button is pressed.
-        const LEFT_BUTTON = 0b0000_0001;
-
-        /// Whether or not the right mouse button is pressed.
-        const RIGHT_BUTTON = 0b0000_0010;
-
-        /// Whether or not the middle mouse button is pressed.
-        const MIDDLE_BUTTON = 0b0000_0100;
-
-        /// Whether or not the packet is valid or not.
-        const ALWAYS_ONE = 0b0000_1000;
-
-        /// Whether or not the x delta is negative.
-        const X_SIGN = 0b0001_0000;
-
-        /// Whether or not the y delta is negative.
-        const Y_SIGN = 0b0010_0000;
-
-        /// Whether or not the x delta overflowed.
-        const X_OVERFLOW = 0b0100_0000;
-
-        /// Whether or not the y delta overflowed.
-        const Y_OVERFLOW = 0b1000_0000;
-    }
-}
-
-#[repr(u8)]
-enum Command {
-    EnablePacketStreaming = 0xF4,
-    SetDefaults = 0xF6,
-}
-
-/// A basic interface to interact with a PS2 mouse.
-#[derive(Debug)]
-pub struct Mouse {
-    command_port: Port<u8>,
-    data_port: Port<u8>,
-    current_packet: u8,
-    current_state: MouseState,
-    completed_state: MouseState,
-    on_complete: Option<fn(MouseState)>,
-}
-
-impl Default for Mouse {
-    fn default() -> Mouse {
-        Mouse::new()
-    }
-}
-
-/// A snapshot of the mouse flags, x delta and y delta.
-#[derive(Debug, Copy, Clone, Default)]
-pub struct MouseState {
-    flags: MouseFlags,
-    x: i16,
-    y: i16,
-}
-
-impl MouseState {
-    /// Returns a new `MouseState`.
-    pub const fn new() -> MouseState {
-        MouseState {
-            flags: MouseFlags::empty(),
-            x: 0,
-            y: 0,
-        }
-    }
-
-    /// Returns true if the left mouse button is currently down.
-    pub fn _left_button_down(&self) -> bool {
-        self.flags.contains(MouseFlags::LEFT_BUTTON)
-    }
-
-    /// Returns true if the left mouse button is currently up.
-    pub fn _left_button_up(&self) -> bool {
-        !self.flags.contains(MouseFlags::LEFT_BUTTON)
-    }
-
-    /// Returns true if the right mouse button is currently down.
-    pub fn _right_button_down(&self) -> bool {
-        self.flags.contains(MouseFlags::RIGHT_BUTTON)
-    }
-
-    /// Returns true if the right mouse button is currently up.
-    pub fn _right_button_up(&self) -> bool {
-        !self.flags.contains(MouseFlags::RIGHT_BUTTON)
-    }
-
-    /// Returns true if the x axis has moved.
-    pub fn _x_moved(&self) -> bool {
-        self.x != 0
-    }
-
-    /// Returns true if the y axis has moved.
-    pub fn _y_moved(&self) -> bool {
-        self.y != 0
-    }
-
-    /// Returns true if the x or y axis has moved.
-    pub fn _moved(&self) -> bool {
-        self._x_moved() || self._y_moved()
-    }
-
-    /// Returns the x delta of the mouse state.
-    pub fn get_x(&self) -> i16 {
-        self.x
-    }
-
-    /// Returns the y delta of the mouse state.
-    pub fn get_y(&self) -> i16 {
-        self.y
-    }
-}
-
-impl Mouse {
-    /// Creates a new `Mouse`.
-    pub const fn new() -> Mouse {
-        Mouse {
-            command_port: Port::new(ADDRESS_PORT_ADDRESS),
-            data_port: Port::new(DATA_PORT_ADDRESS),
-            current_packet: 0,
-            current_state: MouseState::new(),
-            completed_state: MouseState::new(),
-            on_complete: None,
-        }
-    }
-
-    /// Returns the last completed state of the mouse.
-    pub fn _get_state(&self) -> MouseState {
-        self.completed_state
-    }
-
-    // super helpful resource, albeit in C
-    // https://github.com/29jm/SnowflakeOS/blob/master/kernel/src/devices/ps2.c#L18
-    /// Attempts to initialize a `Mouse`. If successful, interrupts will be generated
-    /// as `PIC offset + 12`.
-    pub fn init(&mut self) -> Result<(), &'static str> {
-        // Disable both PS/2 device ports
-        // Even if only one is present, disabling the second is harmless
-        self.write_command_port(DISABLE_FIRST)?;
-        self.write_command_port(DISABLE_SECOND)?;
-
-        // Flush output buffer: if the controller had anything to say, ignore it
-        unsafe {
-            self.data_port.read();
-        }
-
-        debug!("mouse driver: writing GET_STATUS to port...");
-        self.write_command_port(GET_STATUS_BYTE)?;
-        debug!("mouse driver: reading status from port...");
-        let status = self.read_data_port()? | 0x02;
-
-        debug!("Got status {}", status);
-
-        // self.write_command_port(0xa8)?;
-
-        self.write_command_port(SET_STATUS_BYTE)?;
-
-        self.write_data_port(status & 0xDF)?;
-
-        self.send_command(Command::SetDefaults)?;
-        self.send_command(Command::EnablePacketStreaming)?;
-
-        self.write_command_port(ENABLE_FIRST)?;
-        self.write_command_port(ENABLE_SECOND)?;
-
-        // Some keyboards actually send a reply, flush it
-        unsafe {
-            self.data_port.read();
-        }
-
-        Ok(())
-    }
-
-    /// Attempts to process a packet.
-    pub fn process_packet(&mut self, packet: u8) {
-        match self.current_packet {
-            0 => {
-                let flags = MouseFlags::from_bits_truncate(packet);
-                if !flags.contains(MouseFlags::ALWAYS_ONE) {
-                    return;
-                }
-                self.current_state.flags = flags;
-            }
-            1 => self.process_x_movement(packet),
-            2 => {
-                self.process_y_movement(packet);
-                self.completed_state = self.current_state;
-                if let Some(on_complete) = self.on_complete {
-                    on_complete(self.completed_state);
-                }
-            }
-            _ => unreachable!(),
-        }
-        self.current_packet = (self.current_packet + 1) % 3;
-    }
-
-    /// Sets the `on_complete` function to be called when a packet is completed.
-    pub fn set_on_complete(&mut self, handler: fn(MouseState)) {
-        self.on_complete = Some(handler);
-    }
-
-    fn process_x_movement(&mut self, packet: u8) {
-        if !self.current_state.flags.contains(MouseFlags::X_OVERFLOW) {
-            self.current_state.x = if self.current_state.flags.contains(MouseFlags::X_SIGN) {
-                self.sign_extend(packet)
-            } else {
-                packet as i16
-            };
-        }
-    }
-
-    fn process_y_movement(&mut self, packet: u8) {
-        if !self.current_state.flags.contains(MouseFlags::Y_OVERFLOW) {
-            self.current_state.y = if self.current_state.flags.contains(MouseFlags::Y_SIGN) {
-                self.sign_extend(packet)
-            } else {
-                packet as i16
-            };
-        }
-    }
-
-    fn read_data_port(&mut self) -> Result<u8, &'static str> {
-        // INFO: What the fuck
-        debug!("owo");
-        self.wait_for_read()?;
-        // HERESY: Stop
-        debug!("what's this");
-        Ok(unsafe { self.data_port.read() })
-    }
-
-    fn send_command(&mut self, command: Command) -> Result<(), &'static str> {
-        self.write_command_port(0xD4)?;
-        self.write_data_port(command as u8)?;
-        if self.read_data_port()? != 0xFA {
-            return Err("mouse did not respond to the command");
-        }
-        Ok(())
-    }
-
-    fn sign_extend(&self, packet: u8) -> i16 {
-        ((packet as u16) | 0xFF00) as i16
-    }
-
-    fn write_command_port(&mut self, value: u8) -> Result<(), &'static str> {
-        debug!("mouse driver: waiting for write");
-        self.wait_for_write()?;
-        unsafe {
-            self.command_port.write(value);
-        }
-        debug!("mouse driver: command written");
-        Ok(())
-    }
-
-    fn write_data_port(&mut self, value: u8) -> Result<(), &'static str> {
-        self.wait_for_write()?;
-        unsafe {
-            self.data_port.write(value);
-        }
-        Ok(())
-    }
-
-    fn wait_for_read(&mut self) -> Result<(), &'static str> {
-        let timeout = 100_000;
-        for _x in 0..timeout {
-            let value = unsafe { self.command_port.read() };
-            if (value & 0x1) == 0x1 {
-                return Ok(());
-            }
-        }
-        Err("wait for mouse read timeout")
-    }
-
-    fn wait_for_write(&mut self) -> Result<(), &'static str> {
-        let timeout = 100_000;
-        for _ in 0..timeout {
-            let value = unsafe { self.command_port.read() };
-            if (value & 0x2) == 0x0 {
-                return Ok(());
-            }
-        }
-        Err("wait for mouse write timeout")
-    }
-}
diff --git a/ableos/src/relib/clparse/mod.rs b/ableos/src/relib/clparse/mod.rs
deleted file mode 100644
index d280f2f..0000000
--- a/ableos/src/relib/clparse/mod.rs
+++ /dev/null
@@ -1,63 +0,0 @@
-/// # clparse
-/// simple command line parser for ableOS
-
-#[derive(Debug, Clone)]
-pub struct Argument {
-    key: String,
-    value: String,
-}
-
-#[derive(Debug, Clone)]
-pub struct Command {
-    pub root_command: String,
-    // arguments: HashMap<String, String>,
-    pub arguments: Vec<Argument>,
-}
-
-impl Command {
-    pub fn parse(command: String) -> Command {
-        let split_command = command.split('?');
-        let mut root = "".to_string();
-        let mut args: Vec<Argument> = vec![];
-        for (root_count, subcommand) in split_command.enumerate() {
-            match root_count {
-                0 => root = subcommand.to_string(),
-                1 => {
-                    for subarg in subcommand.split('&') {
-                        let mut arg1 = "";
-                        let mut arg2 = "";
-                        for (n, arg) in subarg.split('=').enumerate() {
-                            if n == 0 {
-                                arg1 = arg;
-                            } else {
-                                arg2 = arg;
-                            }
-                        }
-                        let arg_struct = Argument {
-                            key: arg1.to_string(),
-                            value: arg2.to_string(),
-                        };
-                        args.push(arg_struct);
-                    }
-                }
-                _ => {}
-            }
-        }
-
-        Command {
-            root_command: root,
-            arguments: args,
-        }
-    }
-}
-
-pub fn test() {
-    let x = Command::parse("hi?there=uwu&hi=abc".to_string());
-
-    let y = &x.arguments[0];
-
-    trace!("{}", x.root_command);
-    trace!("{:?}", y);
-    trace!("{}", y.key);
-    trace!("{}", y.value);
-}
diff --git a/ableos/src/relib/encoding/bin.rs b/ableos/src/relib/encoding/bin.rs
deleted file mode 100644
index ad3cb14..0000000
--- a/ableos/src/relib/encoding/bin.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-pub struct BinCodeWriter {
-    pub stream: Box<u8>,
-}
diff --git a/ableos/src/relib/encoding/mod.rs b/ableos/src/relib/encoding/mod.rs
deleted file mode 100644
index e8f2524..0000000
--- a/ableos/src/relib/encoding/mod.rs
+++ /dev/null
@@ -1,2 +0,0 @@
-pub mod bin;
-pub mod rle;
diff --git a/ableos/src/relib/encoding/rle.rs b/ableos/src/relib/encoding/rle.rs
deleted file mode 100644
index f1d4953..0000000
--- a/ableos/src/relib/encoding/rle.rs
+++ /dev/null
@@ -1,42 +0,0 @@
-pub fn encode(bytes: &[u8]) -> Vec<u8> {
-    let mut encoding = if bytes.first().is_none() {
-        return vec![];
-    } else {
-        vec![*bytes.first().unwrap()]
-    };
-
-    let mut occurrences = 1;
-
-    for byte in bytes.iter().skip(1) {
-        if byte == encoding.last().unwrap() && occurrences < 255 {
-            occurrences += 1;
-        } else {
-            encoding.extend(&[occurrences, *byte]);
-            occurrences = 1;
-        }
-    }
-
-    encoding.push(occurrences);
-    encoding
-}
-
-/// Read a run-length encoding and return its decoded contents.
-///
-/// - `bytes` - The bytes to be decoded.
-pub fn decode(bytes: &[u8]) -> Vec<u8> {
-    let mut decoding = Vec::<u8>::new();
-
-    for (i, byte) in bytes.iter().enumerate() {
-        if i % 2 != 0 {
-            continue;
-        }
-
-        // Repeat bytes[i], bytes[i+1] times in a row.
-        // e.g.: "!!" equals to 33 times "!" ("!" value in ASCII).
-        for _j in 0..bytes[i + 1] {
-            decoding.push(*byte)
-        }
-    }
-
-    decoding
-}
diff --git a/ableos/src/relib/image/mod.rs b/ableos/src/relib/image/mod.rs
deleted file mode 100644
index 51c18fa..0000000
--- a/ableos/src/relib/image/mod.rs
+++ /dev/null
@@ -1 +0,0 @@
-pub mod mono_bitmap;
diff --git a/ableos/src/relib/image/mono_bitmap.rs b/ableos/src/relib/image/mono_bitmap.rs
deleted file mode 100644
index 6995620..0000000
--- a/ableos/src/relib/image/mono_bitmap.rs
+++ /dev/null
@@ -1,40 +0,0 @@
-use crate::relib::encoding::rle::{decode, encode};
-use crate::vga_e::VGAE;
-
-use vga::writers::GraphicsWriter;
-
-pub fn bruh() {
-    #[rustfmt::skip]
-    let xyz_new = encode(&[255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,255,255,254,254,254,255,254,254,254,254,255,255,255,254,254,254,255,255,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,254,253,254,254,253,254,254,254,254,254,254,254,254,254,254,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,253,253,253,253,254,254,253,253,254,253,253,254,255,254,254,254,254,253,253,253,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,254,254,252,251,251,251,251,252,250,251,252,252,252,252,251,253,254,254,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,252,247,241,226,209,201,201,197,190,200,211,198,187,187,179,162,157,164,191,220,234,242,250,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,254,254,254,254,253,247,241,233,209,174,149,130,105,112,123,100,70,69,80,80,74,60,43,30,29,34,54,79,96,131,180,211,234,250,254,254,254,254,254,254,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,254,253,254,254,254,249,234,199,140,106,106,97,53,36,37,27,25,40,41,16,7,5,8,12,10,4,1,1,2,5,7,7,12,37,82,103,141,203,241,253,254,253,253,253,253,253,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,251,244,230,201,117,66,56,36,21,28,30,25,9,3,3,4,4,1,1,1,2,2,5,6,5,7,10,3,1,3,6,5,9,12,11,30,92,172,224,247,253,253,253,253,253,252,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,249,244,235,211,174,118,51,56,109,61,10,6,29,71,40,8,1,0,0,0,1,3,4,2,3,5,9,14,16,7,2,4,9,6,1,2,5,33,61,55,69,133,204,244,253,253,254,252,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,255,254,254,254,254,254,254,254,254,255,254,253,252,239,190,163,175,178,138,71,43,49,85,53,9,2,12,48,51,12,1,1,0,0,0,2,7,6,3,3,6,9,6,5,5,2,3,10,5,8,30,78,86,37,12,25,71,149,229,252,253,253,253,255,255,255,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,254,254,254,254,254,253,254,253,254,254,250,223,175,126,66,37,38,46,55,74,75,25,10,11,15,25,22,11,9,2,5,16,19,12,12,9,12,27,46,43,20,12,9,11,14,8,6,15,29,44,56,42,25,24,41,55,40,32,100,193,239,253,254,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,249,247,251,254,253,250,227,166,83,35,15,15,12,6,1,4,25,46,16,0,2,24,73,54,21,4,6,39,74,75,115,115,51,35,76,152,168,99,72,90,96,69,38,17,18,33,25,15,25,38,58,93,61,25,28,45,70,119,196,244,252,253,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,253,253,247,221,216,227,240,242,190,107,50,36,17,4,9,30,39,19,1,2,3,12,8,9,23,36,18,12,15,41,88,120,150,212,210,153,145,177,213,221,201,200,216,198,172,142,100,50,23,19,41,88,100,98,93,49,36,77,58,30,40,87,159,218,246,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,253,246,216,184,181,184,179,150,81,30,27,64,61,25,25,63,119,80,8,2,10,35,25,27,38,30,37,75,119,163,196,216,234,247,250,247,247,250,251,252,252,252,253,250,247,244,235,207,139,78,54,44,35,34,42,41,61,136,122,90,79,55,46,85,169,237,252,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,245,198,149,136,143,121,61,36,33,20,11,33,80,103,68,50,95,110,39,30,80,105,63,79,109,116,158,212,241,251,253,253,254,252,253,254,253,253,254,254,254,253,253,254,253,253,254,254,249,224,161,81,40,30,35,38,40,41,36,42,51,41,27,30,56,129,206,242,253,255,254,254,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,252,215,130,90,95,75,32,11,9,18,20,9,9,27,54,30,10,22,53,61,77,118,158,155,184,221,236,249,253,254,254,254,254,254,254,254,254,254,254,254,255,254,254,254,255,254,254,254,255,254,252,247,216,156,80,25,16,12,4,1,5,17,30,28,25,34,53,87,139,207,242,252,254,253,253,253,252,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,247,196,118,83,66,25,7,3,3,15,29,38,37,23,12,5,1,6,28,69,103,153,212,238,247,253,253,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,241,186,79,25,6,1,2,9,20,32,37,65,76,29,19,34,78,146,211,247,253,253,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,225,160,113,65,22,10,4,3,3,11,39,110,142,63,16,28,30,32,70,146,200,238,252,254,254,254,253,254,254,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,254,254,253,251,224,149,54,12,30,60,75,80,90,174,116,12,1,3,7,18,66,148,215,247,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,207,100,39,12,3,2,3,5,7,7,19,88,130,58,30,105,152,167,212,246,253,254,254,254,253,253,254,254,254,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,254,254,254,254,250,214,146,118,125,125,117,88,80,29,5,4,4,3,0,4,22,60,139,207,245,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,254,254,253,249,167,38,7,4,2,0,2,5,7,6,8,33,53,45,78,156,221,246,253,254,254,254,254,254,254,254,254,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,255,254,254,253,246,212,156,84,29,8,4,6,36,30,8,5,16,38,49,46,32,56,145,233,251,254,254,254,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,252,254,250,198,66,14,14,7,2,1,2,4,3,4,5,9,25,86,181,238,252,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,252,241,191,85,17,4,2,29,40,12,12,73,112,102,100,46,30,67,136,193,241,253,253,253,254,253,253,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,253,253,253,207,72,12,27,21,6,0,1,2,3,4,2,3,12,81,197,249,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,252,254,252,235,179,110,37,12,30,51,56,51,34,23,30,35,69,110,77,66,146,223,245,252,254,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,251,234,144,35,11,12,5,1,2,6,2,0,2,3,9,44,137,227,253,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,253,253,252,242,192,107,56,56,56,29,21,20,17,15,19,28,24,18,42,87,135,204,245,252,252,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,252,250,210,113,61,22,10,3,0,0,1,3,1,1,0,11,38,80,151,231,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,253,251,233,179,105,41,23,24,23,14,9,5,5,7,7,14,21,37,102,189,236,251,253,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,253,253,254,252,212,80,8,10,11,11,6,2,2,0,0,0,1,1,15,70,151,191,235,252,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,255,254,254,254,254,254,252,226,147,64,25,11,6,5,6,7,8,6,11,14,11,34,85,141,210,247,253,254,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,253,252,253,253,226,108,18,6,14,36,46,25,11,5,0,1,0,3,6,24,103,215,232,244,253,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,249,217,141,65,22,8,2,1,3,6,9,11,8,8,12,46,132,212,247,253,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,253,252,227,125,81,54,25,37,89,110,55,18,7,5,7,12,19,49,67,86,133,171,221,250,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,252,242,201,115,43,12,2,3,6,5,5,6,5,5,23,89,160,196,242,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,234,125,37,39,42,33,27,29,42,59,33,9,8,23,28,22,59,61,33,35,70,150,233,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,252,253,252,229,167,90,38,12,7,5,2,2,2,5,12,33,59,102,190,245,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,253,242,154,83,63,28,18,15,6,2,10,42,36,20,27,49,55,20,19,27,15,8,24,86,201,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,253,254,253,253,242,196,106,38,14,6,4,2,6,15,21,22,41,89,140,203,246,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,254,246,170,85,93,61,22,9,6,4,3,4,9,22,60,71,99,98,34,45,83,53,21,30,72,172,247,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,244,186,90,43,20,9,5,11,27,23,12,27,74,113,136,199,249,253,254,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,251,186,54,40,56,32,12,7,11,18,7,2,2,46,125,110,84,48,30,83,123,70,33,42,77,145,236,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,252,241,171,82,41,25,32,32,22,14,19,30,30,55,95,147,225,253,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,253,252,218,80,12,9,18,12,7,7,23,42,16,5,38,164,205,147,80,34,12,28,34,30,56,119,147,151,221,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,252,253,253,232,137,61,50,85,72,28,21,42,40,11,17,73,132,193,247,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,254,233,107,17,12,6,3,5,5,7,16,29,18,45,179,247,223,129,54,22,11,12,9,14,59,156,181,154,205,252,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,253,253,251,215,125,69,72,58,30,30,37,25,25,36,73,155,203,227,252,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,235,136,27,3,7,10,5,3,4,3,3,6,30,160,249,253,236,142,51,23,24,25,16,12,30,81,113,131,194,249,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,250,210,110,56,27,9,7,17,32,80,102,96,128,172,196,241,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,246,140,27,1,0,3,9,8,4,4,5,8,30,126,237,253,253,250,200,113,68,58,34,30,25,14,30,70,126,205,250,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,246,176,83,36,12,6,10,12,21,33,36,46,75,133,210,251,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,181,30,1,0,2,7,12,30,28,17,19,60,161,235,252,253,253,253,244,198,144,103,54,61,56,25,32,76,118,186,244,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,252,212,110,69,61,32,7,2,1,2,10,27,51,90,165,238,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,252,209,61,4,2,10,25,25,27,76,112,96,88,162,247,253,253,254,253,253,245,196,160,127,93,84,85,90,82,76,66,122,225,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,240,154,109,115,56,7,3,0,0,7,25,48,73,128,213,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,224,92,14,10,10,30,65,55,33,30,54,87,133,221,253,253,253,254,253,254,249,201,155,129,108,90,103,121,65,25,38,119,221,252,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,251,209,142,98,38,5,3,1,0,2,12,25,53,105,193,247,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,253,247,154,33,23,27,19,24,46,41,17,3,10,70,187,249,254,254,254,254,254,254,253,233,178,136,110,107,103,56,17,25,89,159,221,250,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,234,151,70,24,8,6,6,2,5,10,11,30,88,157,229,253,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,217,90,37,30,30,17,7,10,12,6,8,28,134,240,253,254,255,255,255,254,254,254,251,235,187,137,87,38,10,30,109,162,184,224,251,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,245,168,71,41,30,18,16,25,33,23,12,33,77,90,179,249,253,253,254,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,244,168,72,25,12,21,29,25,20,24,37,82,113,215,252,253,254,255,255,255,254,254,254,253,252,239,203,98,25,17,73,153,159,169,219,251,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,253,216,119,67,50,22,8,46,38,12,32,61,51,59,162,245,253,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,249,191,90,76,71,51,64,84,71,42,49,93,174,215,250,252,253,254,255,255,255,254,254,254,254,254,247,196,100,64,77,95,112,122,151,217,251,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,242,178,85,46,27,11,18,9,2,14,30,24,59,164,236,251,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,255,254,254,254,253,224,109,38,41,61,73,58,45,30,15,12,40,178,251,253,254,254,254,255,255,255,255,254,253,254,254,242,171,120,137,165,136,115,116,155,224,247,245,246,246,242,242,244,245,247,253,254,254,255,254,254,254,254,254,254,255,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,252,224,132,76,64,39,10,1,0,1,7,24,71,100,165,237,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,236,134,36,14,8,11,19,14,11,14,30,51,105,227,255,255,255,255,255,255,255,255,255,255,255,255,255,246,203,184,180,177,189,170,153,167,184,178,163,175,212,204,181,165,160,161,167,175,186,201,229,247,253,253,252,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,246,181,107,72,46,17,6,3,1,2,10,28,37,85,189,250,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,254,249,176,56,20,19,15,11,12,12,15,17,40,99,199,251,255,255,255,255,255,255,255,255,255,255,255,255,255,253,242,230,214,197,180,140,121,93,102,137,128,93,110,108,87,79,76,61,37,32,42,64,99,138,181,232,251,254,254,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,220,144,84,58,44,30,15,3,0,3,8,19,48,141,241,253,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,254,223,96,32,38,64,83,72,30,15,10,8,20,116,233,253,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,251,246,221,140,73,56,37,79,165,137,44,23,18,19,19,15,9,4,4,12,46,61,41,49,123,229,244,250,253,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,242,171,106,80,60,37,17,6,4,12,18,23,54,141,236,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,247,160,53,40,51,88,125,107,36,7,4,6,44,184,250,253,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,252,224,153,109,51,25,9,36,87,70,23,5,3,4,2,0,0,3,33,74,141,115,39,16,46,133,155,191,235,250,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,251,214,168,141,78,27,12,9,10,34,54,68,122,167,209,249,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,253,227,129,100,73,40,45,37,27,23,25,37,61,151,242,254,254,255,255,255,255,255,255,255,255,254,254,253,254,254,254,253,221,113,38,17,8,10,4,2,2,3,14,22,9,1,0,0,2,17,70,87,100,66,21,5,7,18,38,88,159,206,229,249,253,254,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,250,231,200,121,49,20,15,16,25,51,132,186,133,115,216,252,254,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,246,183,151,168,93,49,53,28,15,30,66,112,161,227,252,254,254,255,255,255,255,255,255,255,255,254,254,254,253,254,254,244,152,59,21,2,2,14,8,0,0,3,19,33,12,2,2,3,8,16,12,6,5,5,2,1,1,0,8,29,65,149,195,218,250,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,252,216,135,93,63,33,29,39,17,14,56,97,88,90,177,245,253,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,252,209,99,95,100,51,38,34,12,4,11,20,68,181,247,253,254,254,255,255,255,255,255,255,255,255,254,254,254,253,253,250,210,145,122,78,18,6,12,7,0,1,3,4,12,12,15,27,29,17,8,1,0,0,1,3,3,1,0,1,5,24,93,144,168,226,252,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,253,217,100,53,42,28,30,34,7,0,10,36,76,115,164,231,253,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,242,157,49,39,46,36,19,6,5,10,8,12,85,220,253,252,254,254,255,255,255,255,255,255,255,255,254,254,254,253,249,205,118,82,63,38,20,14,14,10,5,6,5,8,23,50,90,118,105,76,59,46,30,14,6,16,42,56,30,3,1,9,30,68,117,181,242,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,245,174,106,100,103,93,58,30,25,23,33,61,112,165,221,251,253,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,252,216,127,33,10,17,25,18,6,7,24,53,80,164,246,253,254,254,254,255,255,255,255,255,255,255,255,254,254,254,253,218,96,25,17,14,19,37,40,25,18,14,30,54,88,142,186,215,221,220,218,212,204,187,113,30,11,17,35,27,9,2,1,4,24,85,164,235,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,253,234,164,119,133,132,56,74,110,65,37,43,73,131,197,244,253,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,242,147,66,17,5,9,18,20,12,12,30,71,141,223,253,254,254,254,255,255,255,255,255,255,255,255,255,254,254,254,249,169,43,9,10,20,38,66,76,58,34,15,43,144,224,245,251,253,253,254,254,253,252,247,179,60,17,5,1,2,6,4,1,2,12,50,136,230,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,250,197,117,93,79,37,61,96,53,38,49,68,105,168,231,253,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,254,253,204,67,17,12,14,11,15,17,15,18,15,33,160,246,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,244,161,64,30,33,42,46,50,65,64,39,18,55,184,252,253,253,255,255,255,255,254,253,252,200,78,30,17,8,4,3,6,11,8,12,35,115,221,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,234,168,105,56,28,24,25,21,33,51,68,100,160,224,251,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,247,162,46,14,16,19,14,14,18,16,19,11,56,209,252,254,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,249,221,166,106,76,51,25,20,29,23,18,40,106,213,253,253,253,255,255,255,255,254,254,253,217,119,82,61,37,21,15,15,33,23,25,68,154,225,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,251,220,151,82,33,7,3,6,12,15,24,56,134,214,247,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,254,246,176,70,15,6,14,23,34,37,24,29,55,157,247,253,254,255,255,255,255,255,255,255,255,255,255,255,255,254,254,255,246,233,197,123,68,35,18,19,25,22,19,79,179,241,253,253,254,255,255,255,255,254,253,253,231,175,159,103,34,28,38,30,25,40,61,98,183,240,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,252,218,139,82,46,16,2,1,1,1,4,24,84,164,221,251,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,250,219,165,99,28,7,15,44,71,58,30,44,107,221,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,241,207,137,59,21,11,12,25,42,61,72,116,179,238,253,253,254,254,254,254,249,246,253,253,234,158,128,85,25,12,34,37,23,42,64,83,170,244,253,254,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,230,140,68,54,48,14,0,0,1,15,48,83,117,172,241,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,219,109,35,25,20,6,8,36,64,49,24,37,134,245,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,221,129,53,19,9,7,10,18,39,100,144,123,152,231,254,253,253,253,252,240,195,184,225,244,219,83,22,22,29,11,14,16,15,15,29,77,177,245,253,253,254,253,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,246,183,85,55,58,22,3,1,4,19,51,77,100,156,227,252,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,245,156,50,22,17,11,8,6,11,14,11,14,78,200,252,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,223,126,49,25,15,8,7,21,36,77,121,123,155,230,254,253,253,253,244,184,110,103,137,163,156,55,8,4,9,5,3,2,2,3,14,58,163,238,253,252,253,252,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,251,232,148,78,53,33,20,12,5,4,16,37,67,126,196,244,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,218,97,49,64,41,22,36,25,11,7,10,51,159,241,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,238,166,80,30,12,7,12,32,41,54,95,135,171,229,253,253,251,242,177,95,58,63,82,93,88,71,59,25,5,2,3,3,0,1,3,8,38,115,191,238,251,253,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,253,250,196,84,35,33,23,8,2,1,4,14,33,69,134,217,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,251,176,61,35,45,44,63,90,42,15,15,32,110,212,252,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,242,184,99,30,9,10,23,30,27,41,86,100,120,178,217,227,207,138,49,24,33,60,89,109,95,90,93,42,11,5,3,4,2,0,4,12,11,12,37,106,207,246,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,253,253,217,95,38,30,20,7,1,1,4,10,17,32,71,170,247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,255,254,254,254,247,158,65,27,9,28,90,96,39,25,33,59,139,231,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,254,254,252,242,176,98,45,22,15,17,12,5,18,38,17,14,33,76,128,96,21,1,7,38,87,105,129,131,67,22,10,9,6,3,3,1,1,16,61,55,20,7,23,99,154,193,240,253,254,254,253,254,254,254,254,254,253,254,254,254,254,253,254,253,254,254,254,254,254,254,254,254,254,254,254,254,255,255,255,255,255,255,255,255,255,254,254,254,254,236,166,115,58,28,12,4,3,10,18,17,20,44,136,238,254,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,254,254,253,240,160,112,83,36,28,49,68,80,73,56,71,175,247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,245,181,82,46,30,15,4,2,1,5,6,1,1,2,12,21,9,1,6,17,45,61,28,16,23,30,20,10,3,2,1,2,6,9,23,72,73,29,12,19,28,34,60,138,219,249,253,253,253,253,252,252,252,253,254,254,254,253,253,253,253,253,253,253,253,253,253,254,253,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,254,249,216,166,75,24,12,7,8,16,25,24,22,54,134,227,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,254,249,196,100,82,105,82,35,17,30,83,72,37,75,210,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,250,190,76,34,33,24,8,3,3,1,0,0,4,16,5,1,1,5,30,34,24,18,3,0,0,4,23,37,14,3,3,6,9,16,16,14,15,12,17,34,27,21,29,61,129,209,249,253,253,253,253,253,253,251,242,227,214,206,203,205,215,231,239,242,250,252,252,253,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,251,200,116,55,28,19,7,1,4,23,42,65,90,136,212,252,253,254,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,253,229,141,69,44,51,58,25,4,4,19,23,27,105,236,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,253,235,152,71,38,17,6,2,1,0,0,0,3,11,0,0,1,5,11,11,9,6,1,0,1,1,6,19,28,21,8,5,18,48,30,15,5,5,16,23,18,17,24,49,99,165,238,253,253,253,253,249,226,194,168,123,95,81,71,63,71,92,108,150,199,209,227,244,253,254,253,253,253,255,255,255,255,255,255,255,255,255,255,255,255,255,254,221,142,93,61,38,19,8,9,24,49,93,106,121,183,247,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,251,205,110,58,25,15,18,24,29,25,22,50,115,203,251,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,253,240,187,112,46,12,4,0,0,6,25,24,4,0,2,10,4,1,3,9,7,10,24,21,7,3,8,40,65,36,35,134,207,162,93,39,18,14,17,21,41,79,115,155,209,247,253,253,253,239,179,110,87,129,128,88,56,45,50,39,15,16,53,100,90,90,110,157,214,242,252,254,254,254,254,254,255,255,255,255,255,255,255,255,255,254,242,183,106,58,48,45,25,9,11,22,48,53,61,127,232,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,254,242,165,65,34,24,12,6,7,18,22,25,64,159,242,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,249,226,171,102,48,19,11,29,59,39,10,12,25,22,12,18,20,23,35,68,123,113,39,12,12,23,38,45,123,234,252,250,233,180,116,56,36,65,120,172,194,213,242,252,253,253,241,162,97,77,51,58,65,51,48,93,131,80,16,5,7,16,22,18,15,30,60,108,180,235,251,253,254,253,254,255,255,255,255,255,255,255,254,254,251,207,108,51,35,22,8,2,2,7,17,27,46,103,212,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,226,110,20,11,23,25,9,1,0,1,10,44,144,244,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,250,233,186,122,72,51,44,25,20,44,61,28,37,67,49,46,99,113,118,99,38,19,25,44,48,103,215,252,253,254,253,251,236,195,139,122,134,168,213,239,252,253,253,242,179,123,92,53,28,20,20,20,34,79,77,35,18,15,3,3,12,11,6,14,18,18,41,116,200,242,253,253,254,255,255,255,255,255,255,255,254,254,253,227,151,93,36,7,2,1,1,1,7,30,60,105,201,252,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,251,194,78,7,0,9,22,14,4,2,2,12,58,173,251,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,254,254,254,253,242,219,169,123,103,100,97,67,35,44,42,29,46,88,50,20,9,4,8,38,109,161,221,250,252,252,254,253,253,253,254,249,229,201,201,233,250,253,253,247,183,74,69,53,20,10,8,6,8,8,9,4,2,18,33,12,7,22,19,10,20,42,34,16,37,93,184,249,254,254,255,255,255,255,255,255,255,254,254,254,241,177,106,46,17,5,3,0,0,6,41,72,110,195,247,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,238,148,61,9,2,2,2,4,9,12,16,39,112,219,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,253,253,252,247,242,239,194,116,96,64,23,17,28,30,15,7,5,5,12,42,129,223,252,253,253,253,254,254,254,253,254,254,253,254,254,253,253,254,252,207,105,29,21,21,12,11,12,4,6,20,18,11,9,17,18,9,9,14,19,27,46,68,49,24,41,84,161,237,250,254,255,255,255,255,255,255,255,254,254,254,242,157,53,38,34,12,5,3,0,3,32,78,115,174,241,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,219,103,30,6,6,5,3,3,10,25,45,74,161,242,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,254,254,254,253,246,221,210,152,75,54,56,54,58,56,37,41,73,132,217,251,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,236,138,54,15,22,49,35,23,38,16,8,23,61,74,51,34,23,21,19,9,12,27,35,25,20,19,39,73,107,144,204,247,254,254,254,254,254,254,254,254,254,254,247,198,82,25,18,17,12,12,9,2,12,50,100,163,236,253,254,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,252,199,83,23,22,39,25,14,20,42,75,84,103,198,250,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,252,241,203,181,173,137,103,93,90,109,167,227,252,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,219,100,37,17,23,61,61,49,65,48,20,12,63,107,98,75,80,105,107,63,38,25,9,1,1,4,15,41,53,56,135,231,254,254,254,253,254,254,254,253,254,254,252,220,116,46,27,20,12,23,35,11,6,23,73,150,225,252,254,254,254,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,241,140,42,23,80,127,60,23,53,132,133,89,135,231,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,250,240,205,159,150,183,221,245,252,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,253,251,211,125,92,66,20,16,45,63,41,55,41,50,141,199,214,213,217,227,229,206,138,43,3,0,0,0,3,18,35,55,128,218,252,254,254,254,253,253,253,253,254,252,251,210,118,84,41,10,5,15,27,18,7,16,54,119,189,239,251,253,254,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,219,90,30,21,46,66,42,35,55,80,55,58,166,247,254,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,253,253,251,246,245,249,252,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,253,239,191,180,181,144,38,7,12,18,11,21,51,119,221,251,252,253,253,253,238,181,93,25,7,7,5,6,6,6,17,60,137,212,250,253,253,253,253,253,251,249,242,224,187,127,61,38,20,9,5,2,3,5,11,30,69,85,110,150,186,221,245,252,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,217,106,48,22,10,9,19,34,34,20,18,65,198,252,254,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,253,254,254,253,253,253,254,254,254,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,253,233,197,210,196,134,25,2,1,3,5,20,61,143,237,253,254,253,253,254,242,152,58,23,38,54,22,16,12,11,20,53,119,203,249,253,253,252,247,229,198,186,179,131,75,38,17,8,9,18,10,1,1,1,7,23,41,43,53,56,59,105,170,216,246,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,250,219,155,96,51,23,27,22,12,9,9,33,110,226,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,255,255,254,254,255,255,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,253,231,165,120,79,49,15,6,10,15,16,28,48,121,235,253,254,253,254,254,247,158,61,34,56,82,42,30,34,34,37,60,103,177,242,242,224,197,160,102,55,63,77,50,25,12,6,3,5,11,4,0,0,0,1,4,3,5,9,16,37,78,112,152,218,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,237,171,118,99,95,123,160,61,5,0,11,63,152,239,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,252,214,107,46,34,30,27,24,19,15,16,25,40,112,231,253,254,254,254,254,250,177,97,71,58,41,24,23,34,53,65,75,90,131,173,120,73,61,58,30,8,4,3,5,8,8,2,2,1,0,0,0,0,0,0,3,2,7,18,38,87,150,176,207,242,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,227,138,51,22,46,140,150,46,7,6,21,69,171,247,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,252,210,95,30,18,25,36,25,9,3,12,42,65,125,227,253,254,254,254,254,251,198,123,81,51,22,10,7,9,30,58,61,59,71,84,34,10,7,10,7,1,0,0,1,3,7,11,10,2,0,0,0,0,0,0,1,1,9,43,85,140,193,210,242,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,218,112,21,3,18,69,38,8,11,28,49,99,203,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,227,139,56,20,22,34,28,19,16,24,48,66,125,223,253,254,255,254,254,253,216,123,48,23,20,17,9,3,8,17,17,22,36,44,15,4,3,0,0,1,2,6,3,0,2,7,9,4,0,0,0,0,0,0,0,0,5,34,77,119,184,231,252,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,247,187,83,14,3,4,6,2,5,14,25,51,123,223,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,247,210,122,61,25,25,60,109,132,75,29,42,123,224,253,253,254,254,254,252,223,133,46,20,30,39,27,19,12,6,3,1,4,4,3,6,7,5,12,28,11,3,2,1,0,3,6,6,2,0,0,2,1,1,4,11,24,65,146,210,240,252,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,254,223,122,51,28,14,9,4,6,32,54,27,34,123,230,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,251,219,137,73,25,15,38,83,115,80,35,56,138,211,246,253,253,254,254,247,193,166,170,79,18,15,20,22,12,11,10,1,0,0,2,8,12,19,45,54,18,2,3,12,19,20,12,8,5,1,1,8,21,10,9,24,61,128,217,253,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,253,193,82,46,51,37,32,23,24,54,69,46,72,160,241,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,226,122,60,46,30,10,7,8,12,24,43,74,134,213,250,253,254,253,221,98,84,134,49,5,3,5,5,3,8,11,3,0,0,1,5,10,21,32,27,24,32,27,49,84,85,59,39,17,4,2,12,27,14,11,32,93,163,229,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,249,168,67,34,30,27,30,36,46,58,46,61,156,221,251,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,240,163,138,149,75,12,1,0,0,2,7,30,75,150,232,253,252,234,135,51,36,24,9,0,0,0,0,0,3,3,1,0,0,1,5,12,12,12,18,28,51,86,139,184,195,162,109,46,15,6,6,6,9,21,44,89,160,229,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,246,157,61,12,2,5,8,24,58,59,40,59,160,237,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,249,207,181,171,110,33,8,3,1,4,15,36,48,90,183,240,200,115,35,44,35,7,0,2,0,0,0,0,0,0,0,5,15,25,45,51,35,42,76,97,131,207,245,252,242,194,135,68,28,14,8,3,5,18,25,41,120,217,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,242,163,74,25,12,10,15,40,59,37,32,69,144,231,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,238,176,123,132,66,14,3,5,22,30,19,28,81,143,158,80,34,15,22,25,10,0,2,1,0,0,0,3,10,30,76,112,138,153,153,153,181,220,239,247,253,254,254,237,150,82,46,23,18,27,23,9,10,16,38,115,213,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,240,152,93,93,88,51,39,34,33,32,51,103,179,242,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,250,212,125,98,78,45,22,14,17,12,5,15,58,96,72,38,27,17,14,20,12,2,6,5,4,3,8,35,76,131,192,224,237,240,241,246,251,253,254,254,254,254,254,239,148,73,44,25,11,11,29,30,34,43,48,109,209,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,225,138,115,156,179,110,49,18,12,25,60,123,204,247,255,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,247,195,90,86,123,122,66,12,4,8,10,12,18,23,41,48,50,38,23,14,18,35,42,30,30,66,120,187,225,244,252,253,253,254,253,254,254,254,253,254,254,253,245,197,132,66,25,20,23,29,21,25,43,53,103,209,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,216,156,126,90,78,65,24,7,6,12,38,110,211,249,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,254,250,191,128,142,153,98,27,11,16,9,2,0,1,11,33,68,83,61,53,93,109,79,88,162,216,236,252,254,254,254,254,254,253,254,254,254,254,253,254,254,253,239,184,148,67,14,49,100,63,15,12,29,60,125,216,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,251,206,134,78,29,11,14,11,8,9,16,40,120,220,251,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,253,247,218,163,84,36,23,23,25,15,6,3,3,2,6,19,41,51,88,173,167,113,163,242,253,254,253,254,254,254,253,254,254,254,255,254,253,254,254,254,253,233,159,112,46,18,60,139,116,41,20,27,66,134,213,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,250,184,77,30,14,3,2,10,14,24,51,85,146,227,253,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,254,250,220,126,43,23,19,20,30,28,22,25,18,16,32,46,54,86,134,155,191,240,254,254,255,255,254,254,254,254,254,254,255,255,254,253,253,255,254,254,233,161,92,33,20,27,56,90,90,74,63,88,146,212,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,247,157,42,24,27,11,6,15,24,46,113,148,155,223,252,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,253,252,241,187,112,53,23,37,51,58,75,71,87,106,99,107,123,148,201,244,253,254,255,255,255,255,255,255,255,255,255,255,255,255,254,254,255,254,254,234,157,75,19,9,2,3,29,137,206,157,136,180,229,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,241,141,43,29,28,16,18,41,35,37,87,117,136,219,252,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,253,252,253,244,210,148,84,53,48,61,67,93,100,97,123,161,203,242,252,254,254,255,255,255,255,255,255,255,255,255,255,255,255,254,254,255,254,254,234,131,46,12,6,1,1,12,84,143,127,122,179,239,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,237,140,60,34,18,8,21,59,51,21,24,49,117,223,252,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,254,253,252,253,253,247,220,165,112,81,88,122,134,129,147,190,234,252,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,254,254,255,254,254,236,127,42,27,22,8,6,8,15,28,44,86,169,238,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,239,170,97,45,19,10,10,22,30,12,9,30,119,229,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,254,253,254,254,254,252,240,217,206,221,232,232,236,245,252,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,241,176,119,92,84,71,53,32,30,24,21,53,147,232,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,235,181,119,61,35,30,20,11,20,17,20,48,125,229,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,254,245,217,200,163,106,89,70,56,69,65,51,77,161,236,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,227,157,135,126,93,48,25,22,42,23,17,37,110,227,254,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,254,242,187,139,81,28,25,34,30,35,51,82,132,196,242,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,231,171,163,145,82,24,11,15,28,11,6,23,110,235,254,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,254,231,152,71,19,4,7,18,19,23,30,60,109,173,238,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,234,174,110,49,12,3,5,5,3,2,8,35,139,244,254,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,253,210,117,51,12,7,11,11,24,37,33,29,49,126,230,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,211,99,28,8,4,9,28,32,16,18,40,69,151,245,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,252,187,81,38,14,8,11,9,9,17,24,29,51,138,235,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,250,201,100,39,18,17,24,40,61,68,72,79,90,155,244,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,252,189,86,34,9,9,14,8,5,9,17,32,77,167,241,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,250,199,120,70,48,53,49,28,44,88,99,85,95,170,247,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,255,252,201,106,38,7,5,8,8,7,7,9,30,102,189,245,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,249,198,102,54,49,56,41,19,23,46,61,65,97,189,251,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,251,194,110,68,35,15,12,14,11,5,5,29,121,205,250,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,247,204,109,49,23,12,9,15,19,20,30,51,93,189,251,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,251,187,117,99,63,20,15,23,20,16,24,46,107,200,250,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,247,211,148,65,17,3,7,16,16,12,22,46,90,189,250,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,251,189,120,85,44,18,23,38,33,37,74,89,93,193,250,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,247,206,158,73,27,18,20,18,11,12,19,44,102,203,251,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,247,167,86,44,18,25,44,55,44,30,58,85,112,204,251,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,244,190,108,61,45,25,18,19,14,11,16,41,115,219,253,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,239,141,51,16,8,25,46,48,51,28,17,46,134,223,252,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,244,184,81,38,25,9,9,24,28,17,16,43,113,215,252,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,235,164,79,21,6,12,28,30,38,46,56,66,120,227,253,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,245,178,69,30,21,7,5,12,17,12,18,53,123,216,253,254,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,234,174,115,45,11,12,20,18,12,30,92,144,172,240,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,237,150,68,43,23,6,2,6,7,4,12,44,99,203,254,254,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,252,212,116,95,78,32,15,14,12,8,15,48,133,227,252,254,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,234,136,59,33,12,3,2,10,20,17,21,36,80,201,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,249,178,56,42,82,72,16,8,7,27,48,67,135,233,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,236,148,59,21,7,3,4,16,48,83,92,75,105,216,253,253,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,244,161,39,16,40,41,8,4,5,21,37,65,137,227,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,234,158,73,25,12,17,23,21,37,74,112,115,142,224,254,253,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,236,154,67,28,18,14,7,8,12,8,11,44,130,233,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,230,144,69,25,19,42,55,22,12,9,32,97,157,219,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,220,136,113,59,21,22,28,27,33,24,34,76,164,246,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,232,133,45,15,12,21,25,21,27,27,45,108,174,230,253,254,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,250,193,90,46,19,7,12,42,68,64,55,61,100,198,252,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,241,160,64,25,19,18,23,37,71,76,74,100,151,227,253,254,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,237,148,48,11,10,11,11,25,56,59,39,46,112,223,254,254,254,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,244,186,112,68,48,43,56,70,63,39,33,46,88,206,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,204,98,45,30,30,25,12,8,18,27,35,95,186,246,253,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,242,198,159,113,55,23,37,80,64,23,15,28,76,201,254,254,253,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,247,157,61,46,58,67,50,25,23,23,22,55,122,209,252,253,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,244,191,127,71,25,6,11,35,33,18,16,41,107,217,253,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,254,253,237,128,51,45,74,72,37,17,19,17,12,40,126,225,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,242,171,84,30,11,5,7,8,7,6,15,51,125,223,253,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,254,253,220,118,55,46,64,45,16,8,4,3,4,43,168,245,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,236,159,92,45,17,5,7,18,22,9,33,74,126,217,254,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,252,253,249,191,90,38,25,19,14,14,15,8,6,15,93,224,252,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,240,173,116,72,29,6,6,35,71,42,79,132,165,227,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,252,237,128,30,8,5,3,5,8,15,19,25,45,138,244,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,240,170,86,51,32,14,4,9,25,30,59,102,153,224,254,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,250,196,53,5,2,2,3,5,11,12,9,23,77,199,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,242,176,95,59,45,24,5,1,1,12,25,54,122,218,253,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,254,252,225,129,25,2,3,10,9,12,36,50,21,44,134,242,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,244,189,133,103,64,22,3,1,3,19,39,61,122,220,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,247,153,55,40,25,39,72,51,28,39,56,71,149,218,253,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,245,184,109,64,28,5,2,6,18,46,78,83,108,201,253,254,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,233,110,41,80,93,65,65,48,30,39,67,116,210,249,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,242,172,75,25,10,4,4,19,35,48,61,63,78,174,250,254,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,247,174,77,49,79,89,34,16,14,18,39,92,150,226,253,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,241,157,61,33,30,23,16,20,22,15,20,43,82,175,247,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,253,253,252,203,63,23,25,28,23,17,22,17,11,22,82,197,247,254,255,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,239,144,59,41,38,30,23,20,14,7,20,67,128,199,249,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,253,253,239,146,38,8,4,4,9,30,61,46,22,17,97,236,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,242,178,84,24,8,8,19,25,22,16,41,84,130,200,250,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,253,246,181,83,34,14,6,3,5,18,32,36,39,50,170,252,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,247,211,115,25,4,3,10,12,15,46,55,59,100,199,251,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,253,252,205,73,14,8,9,12,16,11,16,18,30,71,148,238,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,249,200,100,41,24,12,2,1,9,61,51,42,103,215,252,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,253,253,231,134,48,16,12,24,35,30,12,9,9,19,100,223,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,250,201,102,60,45,27,9,6,8,24,36,49,89,184,247,253,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,254,253,253,244,135,50,42,23,25,45,39,14,7,12,15,41,180,250,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,221,139,72,30,16,25,19,7,5,30,46,51,123,234,253,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,254,253,253,221,76,12,12,12,30,60,37,5,6,16,29,123,240,253,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,238,175,79,17,5,22,17,4,3,16,22,32,100,221,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,253,253,235,189,86,11,5,9,23,35,18,5,8,18,87,223,251,253,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,232,161,75,37,21,5,3,3,8,6,17,53,130,221,253,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,239,146,61,32,17,16,18,8,2,3,12,27,74,201,252,253,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,225,131,74,85,80,24,12,20,15,10,33,77,131,216,252,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,245,176,71,15,9,15,14,12,8,7,15,40,78,175,247,254,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,232,129,56,50,73,92,72,51,20,27,48,65,112,207,250,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,252,251,174,49,21,20,19,12,11,15,29,56,65,61,144,237,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,244,159,56,15,12,37,40,29,32,60,71,80,117,198,246,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,251,204,50,4,12,30,43,32,16,14,25,45,37,84,227,252,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,247,183,87,34,7,2,2,4,16,41,66,84,110,171,239,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,252,201,73,9,36,51,32,23,25,21,10,9,12,48,192,253,253,252,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,251,200,136,107,46,5,3,4,6,14,27,43,73,141,230,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,231,108,25,50,107,83,25,8,19,40,29,12,36,152,247,253,253,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,217,142,123,74,16,11,15,15,12,11,18,46,121,216,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,253,244,174,92,77,95,80,43,25,20,22,38,34,34,136,238,253,255,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,224,103,44,25,17,17,28,40,30,18,25,60,125,205,250,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,252,231,142,100,117,105,37,16,30,49,40,19,7,21,121,235,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,230,112,38,17,16,36,73,55,21,14,27,78,143,207,249,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,225,123,37,16,22,30,12,15,43,50,19,7,15,102,231,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,241,151,77,49,35,45,88,39,7,8,25,65,121,184,244,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,234,118,34,17,5,1,2,5,11,25,25,11,9,73,210,252,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,249,191,140,126,78,41,53,38,32,30,29,44,93,152,231,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,255,254,230,127,46,24,9,2,4,5,14,12,8,7,6,55,192,252,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,229,179,123,82,64,46,70,95,61,36,59,112,148,221,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,255,255,253,253,252,216,102,37,33,14,4,3,15,33,38,22,8,2,42,187,250,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,253,240,174,98,65,45,27,50,71,43,35,73,127,168,224,252,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,254,254,253,251,213,100,25,25,35,23,12,12,25,33,25,20,22,56,173,247,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,253,240,164,95,54,14,6,14,25,21,23,44,82,150,224,252,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,253,251,211,92,27,17,22,35,30,21,17,14,9,7,15,80,193,249,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,254,253,253,247,177,90,49,12,3,7,14,12,10,16,38,97,183,242,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,254,249,205,86,32,44,36,17,12,11,9,5,2,2,10,63,187,249,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,251,199,100,58,38,17,16,14,7,4,15,41,68,115,212,252,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,254,254,254,253,239,183,100,42,48,71,46,12,6,10,18,29,25,30,84,197,249,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,225,139,77,51,30,18,7,2,5,14,23,41,80,174,244,253,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,254,253,252,253,251,226,133,53,27,19,14,14,10,11,23,42,71,116,125,139,207,250,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,244,184,93,35,29,19,4,0,6,12,8,19,48,123,221,252,252,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,252,253,249,206,93,15,5,6,6,10,19,28,35,48,75,89,87,148,223,252,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,251,214,110,60,49,25,7,2,2,5,12,29,68,122,196,247,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,241,177,85,17,1,4,9,12,25,56,66,43,40,58,74,118,212,251,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,239,170,126,82,43,25,16,6,10,44,69,87,122,178,238,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,254,253,247,218,133,56,36,18,4,6,9,9,16,38,46,24,23,51,130,218,251,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,251,221,166,92,46,46,56,42,40,97,85,60,82,141,211,250,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,253,254,254,240,183,95,33,17,21,27,10,4,7,14,17,17,19,25,51,117,215,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,238,171,100,49,37,61,71,59,69,39,28,53,99,166,240,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,253,251,227,137,51,24,27,21,12,32,18,10,25,43,24,12,34,110,177,227,252,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,246,187,137,98,51,27,25,18,6,5,19,54,85,129,212,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,253,253,250,227,191,142,51,11,18,50,45,27,30,20,23,45,32,6,21,103,219,247,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,251,213,159,142,116,61,30,17,7,4,9,29,61,113,198,250,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,252,241,187,110,67,46,24,12,16,42,78,51,11,5,12,16,14,34,92,192,247,253,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,252,254,237,171,112,93,66,45,45,37,12,3,8,32,105,205,242,253,254,254,254,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,255,254,254,254,249,226,174,83,25,10,10,19,32,23,15,30,25,3,1,1,3,25,116,205,247,255,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,251,216,121,58,46,54,56,29,10,3,5,27,77,132,187,241,252,254,253,253,254,253,253,254,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,254,254,254,254,251,242,227,186,110,58,42,43,35,32,29,34,34,21,6,3,5,9,17,54,147,232,251,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,253,253,246,201,146,93,43,18,8,5,6,14,30,34,46,112,187,239,253,253,253,254,253,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,253,254,254,253,253,249,230,184,125,82,56,34,32,51,61,41,33,22,12,12,11,4,6,27,61,117,194,244,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,254,253,253,246,215,123,37,9,12,19,23,16,10,6,12,37,67,136,213,242,250,252,253,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,253,252,240,216,178,122,60,23,12,15,32,37,21,12,7,9,10,8,6,12,22,33,78,162,227,250,253,254,253,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,251,210,108,49,42,40,61,77,29,3,1,2,5,3,10,51,106,151,193,235,251,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,247,231,215,201,141,84,51,24,7,7,12,17,24,12,1,0,0,2,4,7,16,56,100,126,187,242,253,254,253,253,254,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,255,255,254,253,239,167,118,110,54,61,154,139,67,29,6,1,0,1,2,5,11,30,82,139,200,240,252,254,254,254,254,254,254,254,254,254,254,254,253,254,254,254,254,254,254,254,254,254,254,253,253,254,254,254,254,254,254,254,254,253,253,254,254,254,254,253,252,250,244,230,211,199,201,175,100,72,77,48,16,4,3,12,20,12,4,0,1,3,8,16,12,7,10,37,122,203,234,252,254,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,240,205,134,51,40,123,184,164,119,39,3,1,2,4,5,3,4,12,24,55,135,210,246,253,253,253,253,253,254,253,253,254,254,253,253,254,253,253,253,254,254,253,253,253,253,253,253,254,253,253,252,253,252,250,249,246,242,233,223,212,196,177,161,132,95,69,75,113,109,39,17,21,37,21,2,5,18,8,1,0,3,18,36,56,85,63,41,56,119,210,247,253,253,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,250,216,151,95,63,65,82,83,40,9,7,10,12,17,14,12,17,23,36,75,153,229,252,253,253,253,254,254,253,253,253,254,253,254,254,253,253,253,253,252,251,252,251,247,245,242,238,226,210,210,212,203,191,184,167,134,105,82,66,55,41,29,19,14,14,19,37,46,22,11,16,58,45,5,3,4,1,1,1,16,48,56,54,70,93,136,192,235,252,253,253,254,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,252,254,253,247,221,143,61,30,27,18,11,14,16,17,29,30,39,72,85,88,127,204,247,253,253,252,254,253,251,249,247,245,235,227,224,217,212,214,215,197,172,172,203,194,143,116,148,170,129,77,75,85,70,50,46,34,18,12,9,7,14,25,11,2,5,7,3,1,1,1,1,1,9,9,3,2,7,6,4,16,45,75,85,100,137,194,240,253,254,253,253,253,254,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,253,253,253,253,249,196,88,49,46,36,30,39,34,45,66,88,121,154,169,217,247,245,230,217,211,216,225,196,168,165,161,120,88,75,83,116,161,138,65,50,65,95,84,43,23,51,110,113,73,43,33,29,19,7,2,2,30,61,51,33,25,20,7,2,1,1,0,0,0,0,0,0,8,36,56,71,58,38,61,100,132,177,221,242,253,254,254,254,253,254,254,254,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,255,254,254,253,253,251,218,121,74,77,93,90,72,76,85,105,134,147,148,183,198,195,211,207,160,100,77,93,123,108,97,93,74,41,17,14,59,105,115,79,33,43,67,46,23,12,9,14,40,63,74,43,18,24,34,4,3,17,75,107,70,23,4,5,7,1,0,0,0,1,3,4,7,18,49,103,110,80,59,56,102,160,205,241,253,253,254,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,237,138,45,42,44,39,39,39,56,98,143,181,162,113,146,143,75,79,117,113,56,20,17,22,24,36,42,34,22,7,9,44,51,25,23,48,45,39,16,4,5,11,15,10,11,23,19,9,24,56,16,17,64,51,19,8,1,0,1,5,4,2,2,5,19,28,33,58,79,81,90,93,74,80,129,198,237,251,254,254,254,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,242,157,48,14,15,15,10,5,2,5,17,51,88,73,33,40,46,15,9,14,20,18,7,3,1,0,1,8,30,32,12,3,2,2,0,3,12,3,0,0,0,7,34,36,8,4,8,12,12,17,41,37,25,51,19,3,2,2,0,2,10,45,80,66,46,61,63,63,89,102,93,107,162,199,223,247,253,251,252,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,184,68,18,10,8,8,7,8,2,3,2,2,3,3,1,2,9,8,11,7,1,2,2,3,6,12,6,2,4,7,8,2,0,0,0,0,0,0,0,0,1,5,17,12,3,3,12,37,36,18,15,30,22,19,12,8,8,8,7,16,50,150,201,148,108,130,131,133,159,191,213,233,249,252,253,254,253,253,253,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,217,79,19,11,10,7,4,3,2,1,2,1,0,0,0,0,0,0,1,7,12,11,4,7,16,22,45,20,1,0,1,4,4,1,0,0,1,1,3,4,3,7,9,8,4,5,7,14,44,51,34,27,43,50,45,35,27,25,39,61,87,137,203,215,190,187,217,231,239,246,251,253,254,254,253,254,254,254,254,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,254,244,110,8,1,3,5,3,1,0,0,0,0,0,0,0,0,0,0,0,0,1,15,34,25,16,20,12,15,12,15,20,14,7,6,14,28,19,8,21,35,19,24,41,37,28,36,46,43,38,46,66,80,96,117,131,133,143,156,164,181,205,223,239,247,249,250,251,253,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,251,187,34,3,2,2,3,2,0,0,0,1,4,4,4,4,4,4,6,5,3,6,19,46,46,27,22,15,20,38,80,115,80,41,44,93,146,138,117,127,128,115,123,141,149,155,167,183,190,187,192,205,218,227,236,242,247,249,252,254,254,254,253,253,253,253,253,253,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,254,252,227,110,22,8,9,9,9,5,1,1,3,5,7,18,28,32,35,39,32,21,19,24,42,61,63,61,73,70,79,103,145,176,160,151,168,207,233,235,233,236,236,239,240,244,246,247,249,251,252,252,252,252,254,254,254,254,254,253,254,254,254,254,254,253,253,253,253,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,246,160,63,46,27,25,34,42,28,10,2,7,22,30,56,93,109,113,122,122,108,110,120,131,141,153,173,200,209,215,221,233,241,242,246,251,252,252,254,253,252,253,253,254,254,253,253,254,254,254,254,253,253,254,254,254,254,254,253,253,254,255,254,254,254,253,253,253,254,254,254,255,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,254,254,253,205,89,81,123,85,54,48,50,45,30,18,54,146,179,196,215,224,226,232,239,239,242,246,247,249,252,254,254,254,254,254,254,254,254,254,254,254,254,254,255,254,254,254,255,254,254,254,254,254,254,254,255,255,254,254,255,254,254,254,254,254,255,254,254,255,255,255,254,254,255,255,255,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,253,253,253,241,150,113,113,67,32,35,36,30,42,53,60,153,242,253,253,254,253,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,254,253,253,252,209,118,119,88,25,19,56,54,29,37,51,102,223,253,254,254,254,254,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,253,253,227,120,53,41,36,48,69,105,78,32,27,56,175,251,254,254,254,254,254,253,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,255,254,254,254,254,254,254,254,254,254,254,255,255,255,255,255,254,254,255,254,254,254,254,254,254,255,254,254,254,254,254,253,253,242,145,30,8,4,14,53,60,34,30,20,24,110,238,253,254,254,254,254,253,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,254,254,253,253,254,253,253,253,253,253,253,254,254,254,254,254,254,253,254,253,253,253,253,254,254,254,253,253,254,254,253,254,252,207,112,46,14,6,5,6,8,4,10,18,50,181,252,253,254,254,255,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,253,253,254,253,254,253,252,253,252,253,254,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,252,253,254,252,253,235,128,98,44,9,10,18,18,14,22,51,90,152,239,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,254,253,254,254,251,244,225,200,190,198,211,215,213,216,213,207,204,204,200,197,201,223,238,211,195,204,207,197,189,193,196,190,174,99,21,21,16,23,42,74,93,72,77,96,153,232,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,253,242,214,179,148,108,83,72,76,88,97,95,102,103,93,79,64,56,69,89,98,135,127,73,43,51,69,74,69,51,30,16,4,1,1,4,29,46,65,88,61,51,71,187,251,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,252,249,225,166,100,79,86,72,59,44,39,49,59,42,39,43,48,40,30,25,41,53,21,23,56,48,22,16,28,35,30,17,5,2,8,10,2,1,6,11,12,15,12,27,120,237,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,254,252,231,183,139,95,64,78,109,90,46,21,23,32,30,18,23,25,25,24,30,29,14,11,2,0,3,16,33,19,4,2,2,3,2,6,21,23,12,3,0,0,0,0,3,56,206,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,253,249,201,110,63,71,75,76,97,100,71,37,20,19,14,2,12,53,36,12,11,27,38,16,14,9,2,0,2,8,5,0,1,2,2,4,9,9,6,11,8,11,19,17,11,39,160,247,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,244,199,117,49,35,61,67,44,25,12,7,22,30,21,8,1,7,33,10,0,1,6,18,32,49,41,11,2,1,2,2,6,15,28,29,18,10,5,6,9,20,37,64,83,95,164,239,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,255,255,254,254,255,255,255,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,253,246,183,80,46,48,59,35,16,7,3,2,6,14,23,25,12,1,1,3,3,2,4,5,11,25,46,48,19,6,6,14,16,18,37,90,96,44,16,11,18,34,55,61,74,110,173,238,252,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,255,254,254,254,254,254,254,254,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,254,254,253,242,176,69,18,44,50,25,5,2,1,1,2,9,10,27,54,39,12,11,14,25,51,76,83,85,110,136,84,39,39,56,71,61,44,58,110,107,69,61,65,48,53,76,103,130,177,239,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,252,253,253,254,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,254,254,247,162,54,17,30,67,38,11,5,7,7,3,4,16,35,81,145,167,154,145,144,162,186,184,179,184,194,198,166,152,170,184,190,190,170,155,169,172,160,155,154,152,156,171,194,227,247,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,252,253,253,253,253,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,253,252,213,80,21,22,37,25,19,19,24,33,25,15,30,64,113,177,223,242,247,247,247,249,250,247,245,246,247,247,245,246,247,249,249,250,249,244,246,247,246,244,242,246,247,247,251,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,252,247,233,240,247,252,254,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,252,253,231,120,37,20,25,25,10,25,39,53,53,51,88,135,174,220,246,253,253,254,254,253,253,253,254,254,253,254,253,254,254,253,253,253,253,253,254,254,253,254,254,254,253,254,253,253,252,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,242,206,165,184,205,221,238,247,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,252,242,149,33,12,12,17,21,27,28,36,44,36,69,196,242,249,254,254,254,254,254,254,254,254,253,254,254,253,254,253,253,254,254,253,254,254,254,254,254,254,254,254,254,254,254,253,254,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,247,213,153,107,123,151,171,200,227,249,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,218,106,50,33,18,17,34,30,14,11,21,42,132,238,252,253,254,254,254,254,254,254,255,255,254,254,254,254,255,254,254,254,254,254,255,255,254,254,255,255,255,254,254,254,254,254,255,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,235,192,142,93,90,115,142,171,203,236,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,251,203,106,60,48,32,19,23,27,23,14,38,97,198,252,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,230,178,137,100,79,82,107,132,160,203,246,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,246,175,80,22,21,27,18,11,24,40,46,58,113,216,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,234,170,116,93,65,45,56,92,143,191,234,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,239,160,85,32,12,12,18,22,35,51,56,65,140,234,253,253,253,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,245,199,135,80,44,28,36,65,103,146,195,244,254,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,230,157,100,71,34,19,25,29,30,50,48,72,164,242,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,251,220,143,56,27,25,34,44,56,85,143,225,252,253,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,232,164,102,84,72,54,37,29,28,33,37,84,181,247,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,247,197,113,51,35,36,28,25,41,70,118,203,247,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,244,200,128,82,103,100,56,46,55,18,22,89,194,250,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,245,176,103,74,61,44,18,14,42,81,117,181,239,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,247,221,162,103,107,113,75,53,54,20,28,79,190,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,249,192,113,63,37,24,16,15,32,56,79,138,215,250,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,223,164,129,113,107,90,51,20,25,51,58,79,187,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,254,253,234,172,78,33,35,35,23,28,30,36,82,179,241,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,250,193,105,76,84,73,41,17,17,63,86,59,93,201,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,246,200,112,59,49,56,84,85,50,30,50,112,196,250,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,244,159,70,25,14,18,17,12,16,45,45,58,121,218,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,241,184,130,87,46,38,73,74,45,41,65,88,157,242,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,236,137,60,14,2,5,10,10,21,32,25,73,169,238,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,247,193,122,93,69,34,28,30,30,46,76,103,166,239,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,231,135,68,25,10,14,15,17,41,68,54,105,198,247,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,252,224,150,103,88,46,29,32,48,70,92,126,196,245,253,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,227,134,89,73,42,24,23,29,46,73,79,127,201,247,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,247,214,134,69,54,44,46,72,129,162,148,180,221,250,254,254,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,254,253,216,107,83,103,64,22,15,18,16,20,49,122,207,251,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,247,201,128,84,60,29,22,44,108,146,120,125,181,241,253,254,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,254,252,207,90,40,29,23,19,12,7,5,20,64,143,231,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,249,181,109,100,60,15,7,20,55,81,84,86,144,225,252,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,254,251,212,103,30,14,12,12,11,11,19,70,143,183,242,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,251,191,92,59,32,12,9,10,20,56,85,71,102,184,242,254,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,254,242,159,72,32,22,16,15,23,30,33,82,161,191,242,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,215,113,53,24,22,22,12,6,25,56,46,65,138,226,253,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,253,230,117,39,29,23,14,24,33,25,14,25,82,163,242,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,232,156,95,41,22,18,9,5,7,18,24,43,105,203,251,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,252,225,110,33,22,16,12,28,39,30,25,25,64,166,247,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,244,190,138,71,32,18,15,12,6,5,18,50,92,179,247,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,251,216,108,32,12,12,28,39,40,50,56,53,81,200,252,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,250,198,135,103,84,63,50,40,20,12,37,86,108,158,231,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,253,247,192,98,41,12,17,72,66,29,25,39,64,120,233,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,214,149,128,116,88,66,49,32,39,71,98,93,119,205,253,254,254,254,254,254,255,255,255,255,255,254,254,254,254,254,253,253,249,209,134,103,86,40,33,59,43,20,17,32,100,196,250,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,235,189,133,73,46,44,35,22,28,46,61,65,93,180,249,253,253,254,254,254,254,254,254,254,254,253,254,253,253,254,253,246,187,83,43,73,116,98,67,34,25,49,79,79,163,240,253,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,240,178,113,51,30,32,39,24,8,7,27,74,120,178,242,252,252,252,252,251,250,249,247,247,247,247,247,247,247,244,223,169,76,20,12,12,30,86,131,97,78,60,55,122,226,253,254,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,247,190,110,64,44,34,37,50,36,14,25,86,160,174,167,172,178,187,209,207,180,156,137,128,142,168,183,183,174,159,120,61,25,20,12,3,7,35,61,72,122,82,50,177,250,253,254,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,251,219,144,109,99,65,39,77,97,41,30,53,109,138,121,109,89,81,99,96,73,53,41,34,48,90,99,72,51,46,33,19,15,12,8,6,12,20,12,14,56,90,148,239,253,253,253,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,253,237,170,150,161,110,49,48,50,16,8,12,23,42,69,63,33,14,10,12,16,15,11,10,12,30,25,8,2,2,3,7,10,5,4,12,25,20,15,16,35,121,227,252,253,254,254,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,253,244,183,145,135,85,33,12,3,0,0,0,0,0,1,1,0,0,0,1,2,3,2,1,2,2,3,1,0,0,0,4,5,5,14,24,20,19,54,79,117,209,251,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,254,251,219,146,80,34,12,6,2,3,5,5,4,2,1,2,2,3,4,3,1,0,2,2,1,0,0,0,1,2,2,2,6,12,20,21,15,32,90,164,227,251,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,255,254,250,220,146,76,32,12,4,2,4,6,7,4,3,9,21,25,23,9,3,4,8,10,6,5,4,5,17,30,22,15,14,17,21,29,61,113,175,234,252,253,253,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,242,220,175,103,51,20,8,6,4,3,3,12,41,67,49,25,17,16,12,15,25,24,19,25,59,97,73,51,56,69,68,79,144,211,245,253,253,253,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,253,254,254,247,218,169,103,64,51,48,43,41,49,56,46,40,49,58,40,43,61,51,43,54,86,100,79,82,112,134,152,190,235,252,254,254,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,253,250,242,219,200,189,176,164,157,157,158,164,175,186,181,177,179,175,175,184,194,195,189,199,219,233,244,251,253,253,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,253,253,253,253,252,250,247,247,247,247,249,251,251,252,251,250,250,251,251,253,252,251,253,253,253,253,253,253,254,254,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,253,253,254,254,254,253,253,253,254,253,253,253,253,253,252,253,253,254,254,254,253,254,253,253,254,252,254,254,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,254,254,254,255,255,254,254,254,253,254,254,254,253,254,254,254,253,253,254,254,254,254,254,254,253,254,254,253,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,254,255,254,254,254,254,255,255,254,254,254,254,255,255,254,254,254,254,254,254,254,254,254,255,255,254,254,254,254,255,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,]);
-
-    let xyz_old = decode(&xyz_new);
-
-    println!("{}", xyz_new.len());
-    println!("{}", xyz_old.len());
-
-    let screen_lock = VGAE.lock();
-    screen_lock.set_mode();
-    for y in 0..8 {
-        for x in 0..8 {
-            // trace!("");
-            info!("x{} | y{}", x, y);
-
-            // Stops at 419
-            match xyz_old[y * 290 + x] {
-                221..=255 => {
-                    screen_lock.set_pixel(x, y, vga::colors::Color16::Red);
-                }
-                170..=220 => {
-                    screen_lock.set_pixel(x, y, vga::colors::Color16::DarkGrey);
-                }
-
-                100..=169 => {
-                    screen_lock.set_pixel(x, y, vga::colors::Color16::LightGrey);
-                }
-                _ => {
-                    // VGAE.lock().set_pixel(x, y, Color16::Red);
-                }
-            }
-        }
-    }
-}
diff --git a/ableos/src/relib/math/ciphers/mod.rs b/ableos/src/relib/math/ciphers/mod.rs
deleted file mode 100644
index 8b13789..0000000
--- a/ableos/src/relib/math/ciphers/mod.rs
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/ableos/src/relib/math/mod.rs b/ableos/src/relib/math/mod.rs
deleted file mode 100644
index bb39ef7..0000000
--- a/ableos/src/relib/math/mod.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-//! A standard implementation of common math functions
-
-pub mod ciphers;
diff --git a/ableos/src/relib/mod.rs b/ableos/src/relib/mod.rs
deleted file mode 100644
index 4cea1c9..0000000
--- a/ableos/src/relib/mod.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-//! A simple reimplimentation of the the rust standard library
-
-pub mod clparse;
-pub mod encoding;
-pub mod image;
-pub mod math;
-pub mod network;
-pub mod time;
-
-pub struct VectorTwo {
-    pub x: i32,
-    pub y: i32,
-}
diff --git a/ableos/src/relib/network/mod.rs b/ableos/src/relib/network/mod.rs
deleted file mode 100644
index d22cc84..0000000
--- a/ableos/src/relib/network/mod.rs
+++ /dev/null
@@ -1 +0,0 @@
-pub mod socket;
diff --git a/ableos/src/relib/network/socket.rs b/ableos/src/relib/network/socket.rs
deleted file mode 100644
index b1187e2..0000000
--- a/ableos/src/relib/network/socket.rs
+++ /dev/null
@@ -1,151 +0,0 @@
-pub static SOCKETS: spin::Mutex<SocketState> = spin::Mutex::new(vec![]);
-
-pub type SocketState = Vec<SimpleSock>;
-pub type Stream = Vec<u8>;
-
-#[derive(Debug)]
-pub struct SocketID {
-    pub id: usize,
-}
-
-impl SocketID {
-    pub fn protocol(self) -> Option<String> {
-        SOCKETS.lock()[self.id].protocol.clone()
-    }
-}
-
-impl Socket for SocketID {
-    fn peek(&mut self) -> SocketReturns {
-        SOCKETS.lock()[self.id].peek()
-    }
-
-    fn read(&mut self, length: usize) -> SocketReturns {
-        SOCKETS.lock()[self.id].read(length)
-    }
-
-    fn write(&mut self, stream: Stream) -> SocketReturns {
-        SOCKETS.lock()[self.id].write(stream)
-    }
-    fn register_protocol(&mut self, protocol_name: String) {
-        SOCKETS.lock()[self.id].protocol = Some(protocol_name);
-    }
-
-    fn check_protocol(&mut self, protocol_name: String) -> bool {
-        SOCKETS.lock()[self.id].check_protocol(protocol_name)
-    }
-}
-
-pub trait Socket {
-    fn peek(&mut self) -> SocketReturns;
-
-    /// Reads from the socket and removes read bytes from the socket
-    fn read(&mut self, length: usize) -> SocketReturns;
-
-    fn write(&mut self, stream: Stream) -> SocketReturns;
-    fn register_protocol(&mut self, protocol_name: String);
-    fn check_protocol(&mut self, protocol_name: String) -> bool;
-
-    fn close(&mut self) {}
-}
-
-#[derive(Debug)]
-pub enum SocketReturns {
-    ReadOk(Stream),
-    ReadIndexOutOfBounds,
-    WriteOk,
-}
-
-impl SocketReturns {
-    pub fn unwrap(self) -> Stream {
-        match self {
-            SocketReturns::ReadOk(stream) => stream,
-            SocketReturns::ReadIndexOutOfBounds => panic!("Read Index Out Of Bounds"),
-            SocketReturns::WriteOk => vec![1],
-        }
-    }
-}
-
-pub struct SimpleSock {
-    stream: Vec<u8>,
-    protocol: Option<String>,
-}
-
-impl SimpleSock {
-    pub fn new() -> SocketID {
-        let sock = SimpleSock {
-            stream: vec![],
-            protocol: None,
-        };
-        let mut sock_lock = SOCKETS.lock();
-        sock_lock.push(sock);
-
-        SocketID {
-            id: sock_lock.len() - 1,
-        }
-    }
-    pub fn regrab_sock(id: usize) -> SocketID {
-        SocketID { id }
-    }
-
-    pub fn grab_socket(protocol_name: String) -> Option<SocketID> {
-        let socket_handle = SOCKETS.lock();
-        let socket_count = socket_handle.len();
-        drop(socket_handle);
-
-        let return_sock = None;
-        for socket_id in 0..socket_count {
-            let mut id = SimpleSock::regrab_sock(socket_id);
-
-            if id.check_protocol(protocol_name.clone()) {
-                return Some(id);
-            }
-        }
-
-        return_sock
-    }
-}
-
-impl Socket for SimpleSock {
-    fn peek(&mut self) -> SocketReturns {
-        let mut return_vec = vec![];
-
-        for x in &self.stream {
-            return_vec.push(*x);
-        }
-        SocketReturns::ReadOk(return_vec)
-    }
-
-    fn read(&mut self, length: usize) -> SocketReturns {
-        let mut return_vec = vec![];
-        if length > self.stream.len() {
-            SocketReturns::ReadIndexOutOfBounds
-        } else {
-            for _ in 0..length {
-                return_vec.push(self.stream[0]);
-                self.stream.remove(0);
-            }
-            SocketReturns::ReadOk(return_vec)
-        }
-    }
-
-    fn register_protocol(&mut self, protocol_name: String) {
-        self.protocol = Some(protocol_name);
-    }
-
-    fn check_protocol(&mut self, protocol_name: String) -> bool {
-        if self.protocol == Some(protocol_name) {
-            return true;
-        }
-
-        false
-    }
-
-    fn write(&mut self, stream: Stream) -> SocketReturns {
-        for byte in stream {
-            self.stream.push(byte);
-        }
-        SocketReturns::WriteOk
-    }
-
-    fn close(&mut self) {}
-}
diff --git a/ableos/src/relib/security/mod.rs b/ableos/src/relib/security/mod.rs
deleted file mode 100644
index 71c79f1..0000000
--- a/ableos/src/relib/security/mod.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copilot module
-// Language: rust
-
-//! Security module.
-//!
-//! This module provides a security interface for AbleOS.
-//!
-//! # Examples
-//! ```
-//! use crate::security::Security;
-//!     
-//! let mut security = Security::new();
-//! security.add_user("admin", "password");
-//! security.add_user("user", "password");
-//! security.add_user("guest", "password");
-//!     
-//! assert_eq!(security.authenticate("admin", "password"), true);
-//! assert_eq!(security.authenticate("user", "password"), true);
-//! assert_eq!(security.authenticate("guest", "password"), true);
-//! assert_eq!(security.authenticate("admin", "password2"), false);
-//! assert_eq!(security.authenticate("user", "password2"), false);
-//! assert_eq!(security.authenticate("guest", "password2"), false);
-//! ```
diff --git a/ableos/src/relib/time/kilotime.rs b/ableos/src/relib/time/kilotime.rs
deleted file mode 100644
index 06cae00..0000000
--- a/ableos/src/relib/time/kilotime.rs
+++ /dev/null
@@ -1,61 +0,0 @@
-use super::Time;
-use core::fmt::{Display, Error, Formatter};
-
-#[derive(Debug, Clone, Copy)]
-#[repr(transparent)]
-pub struct Kilosecond(u32);
-impl Kilosecond {
-    pub fn from_ms(ms: u32) -> Self {
-        Self(ms)
-    }
-
-    pub fn from_sec(sec: u32) -> Self {
-        Self(sec * 1000)
-    }
-
-    pub fn from_minutes(min: u32) -> Self {
-        Self(min * 60 * 1000)
-    }
-
-    pub fn from_hours(hrs: u32) -> Self {
-        Self(hrs * 60 * 60 * 1000)
-    }
-
-    pub fn from_days(days: u32) -> Self {
-        Self(days * 24 * 60 * 60 * 1000)
-    }
-
-    pub fn s(&self) -> u32 {
-        (self.0 % 1000)
-    }
-
-    pub fn k(&self) -> u32 {
-        self.0 / 1000
-    }
-}
-
-impl Display for Kilosecond {
-    fn fmt(&self, f: &mut Formatter) -> Result<(), Error> {
-        write![f, "{}K {}S", self.k(), self.s()]
-    }
-}
-
-impl core::ops::Add for Kilosecond {
-    type Output = Self;
-    fn add(self, rhs: Self) -> Self {
-        Self(self.0 + rhs.0)
-    }
-}
-
-impl core::ops::Sub for Kilosecond {
-    type Output = Self;
-    fn sub(self, rhs: Self) -> Self {
-        Self(self.0 - rhs.0)
-    }
-}
-
-impl From<Time> for Kilosecond {
-    fn from(t: Time) -> Self {
-        Self((t.hour as u32 * 3600 + t.minutes as u32 * 60 + t.seconds as u32) * 1000)
-    }
-}
diff --git a/ableos/src/relib/time/mod.rs b/ableos/src/relib/time/mod.rs
deleted file mode 100644
index ff00de8..0000000
--- a/ableos/src/relib/time/mod.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-pub mod kilotime;
-
-use core::fmt;
-
-pub struct Time {
-    pub year: u16,
-    pub month: u16,
-    pub day: u16,
-    pub hour: u16,
-    pub minutes: u16,
-    pub seconds: u16,
-    pub microseconds: u32,
-}
-
-impl fmt::Display for Time {
-    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        write!(
-            f,
-            "{:?}/{:?}/{:?} {:02}:{:02}:{:02}",
-            self.year, self.month, self.day, self.hour, self.minutes, self.seconds
-        )
-    }
-}
diff --git a/ableos/src/rhai_shell/balloon.txt b/ableos/src/rhai_shell/balloon.txt
deleted file mode 100644
index a44994c..0000000
--- a/ableos/src/rhai_shell/balloon.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-    ,-""""-.         OS: AbleOS
-  ,'\  _   _`.       Host: {}
- /   \)_)-)_)-\      Kernel: AKern-{}-v{}
-:              :     Uptime: {}
-\              /     Packages: None
- \            /      Shell: RhaiShell
-  `.        ,'       Resolution: 640x480
-    `.    ,'         Terminal: VGABuffer
-      `.,'           CPU: {}
-       /\`.   ,-._   GPU: VGA Compatible 
-           `-'       Memory: {}/{}
\ No newline at end of file
diff --git a/ableos/src/rhai_shell/mod.rs b/ableos/src/rhai_shell/mod.rs
deleted file mode 100644
index 9873aae..0000000
--- a/ableos/src/rhai_shell/mod.rs
+++ /dev/null
@@ -1,217 +0,0 @@
-use crate::arch::drivers::sysinfo::master;
-use crate::systeminfo::{KERNEL_VERSION, RELEASE_TYPE};
-use crate::{time::fetch_time, KERNEL_STATE};
-// use genfs::{Fs, OpenOptions};
-use kernel::allocator::ALLOCATOR;
-// use rhai::Engine;
-use spin::Lazy;
-use x86_64::instructions::interrupts::{disable, enable};
-
-pub const RHAISHELL_VERSION: &str = "0.1.0";
-
-pub static KEYBUFF: spin::Mutex<Vec<char>> = spin::Mutex::new(Vec::new());
-pub static CURRENT_DIR: Lazy<spin::Mutex<String>> = Lazy::new(|| spin::Mutex::new("/".to_string()));
-
-#[cfg(target_arch = "riscv64")]
-pub fn shell() {}
-
-// #[cfg(target_arch = "x86_64")]
-// pub fn shell() {
-//     let _current_dir = "/".to_string();
-//     let engine = engine_construction();
-//     let mut scope = rhai::Scope::new();
-
-//     println!("Rhaishell v{}", RHAISHELL_VERSION);
-
-//     let mut buf = String::new();
-//     print!("> ");
-
-//     loop {
-//         match x86_64::instructions::interrupts::without_interrupts(|| KEYBUFF.lock().pop()) {
-//             Some('\n') => {
-//                 if buf == "quit" {
-//                     println!("Bye!");
-//                     break;
-//                 }
-
-//                 match engine.eval_with_scope::<rhai::Dynamic>(&mut scope, &buf) {
-//                     Ok(o) => println!("{o}"),
-
-//                     Err(e) => println!("Eval error: {e}"),
-//                 };
-
-//                 buf.clear();
-//                 print!("> ");
-//             }
-//             Some('\u{0008}') => {
-//                 buf.pop();
-//             }
-
-//             Some('\u{0009}') => {
-//                 buf.push(' ');
-//                 buf.push(' ');
-//                 buf.push(' ');
-//                 buf.push(' ');
-//             }
-
-//             Some(chr) => buf.push(chr),
-//             None => (),
-//         }
-//     }
-// }
-
-pub fn afetch() {
-    let kstate = KERNEL_STATE.lock();
-
-    let tick_time = fetch_time();
-
-    disable();
-    let allocator = ALLOCATOR.lock();
-    let size = allocator.size();
-    let used = allocator.used();
-    enable();
-
-    println!(
-        include_str!("balloon.txt"),
-        kstate.hostname,
-        RELEASE_TYPE,
-        KERNEL_VERSION,
-        tick_time,
-        master().unwrap().brand_string().unwrap(),
-        // "",
-        // mem
-        used,
-        size
-    );
-    drop(kstate);
-}
-
-pub fn set_hostname(name: String) {
-    let mut kstate = KERNEL_STATE.lock();
-    kstate.hostname = name;
-}
-
-/// Examine a memory pointer
-pub fn peek_memory(ptr: i64) -> i64 {
-    unsafe { *(ptr as *const u8) as _ }
-}
-
-pub fn poke_memory(ptr: i64, val: i64) {
-    match val.try_into() {
-        Ok(val) => unsafe { *(ptr as *mut u8) = val },
-        Err(_) => error!("{val} cannot be converted into u8"),
-    }
-}
-
-// pub fn ls() {
-//     let current_dir = CURRENT_DIR.lock();
-
-//     let fs = &*FILE_SYSTEM.lock();
-
-//     let file = fs
-//         .open(current_dir.as_bytes(), OpenOptions::new().read(true))
-//         .unwrap();
-
-//     let mut files = file.directory().unwrap();
-//     println!("current dir: {}", *current_dir);
-//     while let Some(Ok(entry)) = files.next() {
-//         let inode_name = entry.name;
-//         let s = String::from_utf8_lossy(&inode_name);
-//         println!("{}", s);
-//     }
-// }
-
-pub fn log_dump() {
-    use crate::network::socket::SimpleSock;
-    use crate::relib::network::socket::Socket;
-    let log_socket_id = SimpleSock::grab_socket("Logger".to_string());
-    match log_socket_id {
-        Some(mut log_socket_id) => {
-            let log = log_socket_id.peek();
-
-            match log {
-                crate::network::socket::SocketReturns::ReadOk(ok) => {
-                    for x in ok.iter() {
-                        print!("{}", *x as char);
-                    }
-                }
-
-                crate::network::socket::SocketReturns::ReadIndexOutOfBounds => todo!(),
-                crate::network::socket::SocketReturns::WriteOk => todo!(),
-            }
-        }
-        None => warn!("No socket found for Logger"),
-    }
-}
-
-// pub fn echo_file(path: String) {
-//     let mut current_dir = CURRENT_DIR.lock();
-
-//     let fs = &*FILE_SYSTEM.lock();
-
-//     current_dir.push_str(&path);
-
-//     let file = fs
-//         .open(current_dir.as_bytes(), OpenOptions::new().read(true))
-//         .unwrap();
-
-//     if file.is_dir() {
-//         println!("{} is a directory", path);
-//     } else {
-//         let mut file_contents = Vec::new();
-
-//         let _ret = file.read_to_end(&mut file_contents).unwrap();
-
-//         let file_contents_str = String::from_utf8_lossy(&file_contents);
-
-//         println!("{}", file_contents_str);
-//     }
-// }
-
-// pub fn change_directory(path: String) {
-//     let mut current_dir = CURRENT_DIR.lock();
-
-//     let _fs = &*FILE_SYSTEM.lock();
-//     if path == "." || path == ".." {
-//         let mut split_dir = current_dir.split('/').collect::<Vec<&str>>();
-//         let mut new_dir = String::new();
-//         split_dir.remove(split_dir.len() - 1);
-//         println!("{:?}", split_dir);
-//         if split_dir.is_empty() {
-//             new_dir = "/".to_string();
-//         } else {
-//             for x in split_dir {
-//                 new_dir.push_str(x);
-//                 new_dir.push('/');
-//             }
-//         }
-//         *current_dir = new_dir;
-//     } else {
-//         if !current_dir.ends_with('/') {
-//             current_dir.push('/');
-//         }
-//         current_dir.push_str(&path);
-//     }
-// }
-
-// fn engine_construction() -> Engine {
-//     let mut engine = rhai::Engine::new();
-
-//     engine.on_print(|x| println!("{}", x));
-//     engine.on_debug(|x, src, pos| {
-//         let src = src.unwrap_or("unknown");
-//         println!("DEBUG: {} at {:?}: {}", src, pos, x);
-//         debug!("{} at {:?}: {}", src, pos, x);
-//     });
-
-//     engine.register_fn("afetch", afetch);
-//     engine.register_fn("set_hostname", set_hostname);
-//     engine.register_fn("shutdown", shutdown);
-//     engine.register_fn("peek", peek_memory);
-//     engine.register_fn("poke", poke_memory);
-//     engine.register_fn("sloop", sloop);
-//     engine.register_fn("log_dump", log_dump);
-//     // engine.register_fn("ls", ls);
-
-//     engine
-// }
diff --git a/ableos/src/scratchpad.rs b/ableos/src/scratchpad.rs
deleted file mode 100644
index 02c60d9..0000000
--- a/ableos/src/scratchpad.rs
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * Copyright (c) 2022, Able <able@ablecorp.us>
- *
- * SPDX-License-Identifier: MPL-2.0
- */
-
-use crate::arch::drivers::sysinfo::master;
-use crate::arch::interrupts::{reset_pit_for_cpu, set_pit_2};
-use crate::devices::pci::ide::{Channel, Drive};
-use crate::devices::pci::{PciDevice, PCI_DEVICES};
-use crate::filesystem;
-use crate::filesystem::vfs::VFS;
-use crate::systeminfo::{KERNEL_VERSION, RELEASE_TYPE};
-use crate::time::fetch_time;
-use crate::{
-    arch::shutdown, rhai_shell::KEYBUFF, vterm::VTerm, wasm_jumploader::run_program, KERNEL_STATE,
-};
-
-use acpi::{AcpiTables, PlatformInfo};
-use cpuio::{inb, outb};
-use kernel::allocator::ALLOCATOR;
-use spin::Lazy;
-use x86_64::instructions::interrupts::{disable, enable};
-
-pub const BANNER_WIDTH: &str =
-    "================================================================================";
-
-// TODO: move to a better place
-#[derive(Clone, Copy, Debug, PartialEq, Eq)]
-pub struct AcpiStruct {}
-impl acpi::AcpiHandler for AcpiStruct {
-    unsafe fn map_physical_region<T>(
-        &self,
-        physical_address: usize,
-        size: usize,
-    ) -> acpi::PhysicalMapping<Self, T> {
-        info!("PHYS ADDR: {:?}", physical_address);
-        info!("Size: {:?}", size);
-        todo!("map_physical_region");
-    }
-    fn unmap_physical_region<T>(_region: &acpi::PhysicalMapping<Self, T>) {
-        todo!("unmap_physical_region");
-    }
-}
-
-// pub static TERM: Lazy<spin::Mutex<VTerm>> = Lazy::new(|| {
-//     trace!("mutex");
-
-//     loop {}
-//     let mutex = spin::Mutex::new({
-//         trace!("vterm");
-//         let vterm = VTerm::new();
-//         trace!("vterm-done");
-//         vterm
-//     });
-//     trace!("mutex-done");
-//     mutex
-// });
-
-/// Experimental scratchpad for testing.
-pub fn scratchpad() {
-    // bruh();
-    // panic!(":>");
-
-    // for c in 0..144_697 {
-    // trace!("{:?}", char::from_u32(c));
-    // }
-
-    // bruh();
-
-    disable();
-    let tick_time = fetch_time();
-    let hostname = KERNEL_STATE.lock().hostname.clone();
-
-    let allocator = ALLOCATOR.lock();
-    let size = allocator.size();
-    let used = allocator.used();
-    drop(allocator);
-    enable();
-
-    println!(
-        "{}
-    ,-------.        OS: \0BLUE\0AbleOS\0RESET\0
-  ,'\\  _   _`.       Host: \0PINK\0{}\0RESET\0
- /   \\)_)-)_)-\\      Kernel: \0RED\0AKern-{}-v{}\0RESET\0
-:              :     Uptime: \0GREEN\0{}\0RESET\0
-\\              /     Packages: None
- \\            /      Shell: BuiltinShell
-  `.        ,'       Resolution: 640x480
-    `.    ,'         Terminal: VGABuffer
-      `.,'           CPU: {}
-       /\\`.   ,-._   GPU: VGA Compatible 
-           `-'       Memory: {}/{}
-{}",
-        // include_str!("../assets/balloon.txt"),
-        // kstate.hostname,
-        BANNER_WIDTH,
-        hostname,
-        RELEASE_TYPE,
-        KERNEL_VERSION,
-        tick_time,
-        master().unwrap().brand_string().unwrap(),
-        // "",
-        // mem
-        used,
-        size,
-        BANNER_WIDTH
-    );
-
-    let pci_ide_device = {
-        let pci_devices = PCI_DEVICES.lock();
-        pci_devices
-            .iter()
-            .find_map(|device_ref| {
-                let device = device_ref.lock();
-                if let PciDevice::Ide(_) = &*device {
-                    Some(device_ref.clone())
-                } else {
-                    None
-                }
-            })
-            .unwrap()
-    };
-
-    {
-        let mut pci_ide_device = pci_ide_device.lock();
-        if let PciDevice::Ide(device) = &mut *pci_ide_device {
-            let mut first_sector = Vec::with_capacity(512);
-            device
-                .read(Channel::Primary, Drive::Master, 0, 1, &mut first_sector)
-                .unwrap();
-            trace!("IDE Primary/Master sector 0: {first_sector:?}");
-        }
-    }
-
-    real_shell();
-}
-
-pub fn acpi() {
-    let acpi_handler = AcpiStruct {};
-    let _table;
-    unsafe {
-        _table = AcpiTables::search_for_rsdp_bios(acpi_handler);
-    }
-    match _table.unwrap().platform_info().unwrap() {
-        PlatformInfo {
-            power_profile,
-            interrupt_model,
-            ..
-        } => {
-            info!("{:?}", power_profile);
-            info!("{:?}", interrupt_model);
-            // info!("{:?}", processor_info.unwrap());
-            // info!("{:?}", pm_timer.unwrap());
-        }
-    }
-}
-
-pub fn real_shell() {
-    let prompt = "-> ";
-
-    let _current_dir = "/".to_string();
-    let current_user = "able".to_string();
-
-    let mut buf = String::new();
-    print!("{}", prompt);
-    // panic!(":<");
-    loop {
-        match x86_64::instructions::interrupts::without_interrupts(|| KEYBUFF.lock().pop()) {
-            Some('\n') => {
-                // panic!();
-                println!();
-                // match engine.eval_with_scope::<rhai::Dynamic>(&mut scope, &buf) {
-                // Ok(o) => println!("{o}"),
-
-                // Err(e) => println!("Eval error: {e}"),
-                // };
-                if !buf.is_empty() {
-                    command_parser(current_user.clone(), buf.clone());
-                }
-
-                buf.clear();
-                print!("{}", prompt);
-            }
-            Some('\u{8}') => {
-                print!("\u{8}");
-
-                buf.pop();
-            }
-
-            Some('\u{0009}') => {
-                buf.push(' ');
-                buf.push(' ');
-                buf.push(' ');
-                buf.push(' ');
-            }
-
-            Some(chr) => {
-                buf.push(chr);
-                print!("{}", chr);
-            }
-            None => {
-                // trace!("{}", buf);
-            }
-        }
-    }
-}
-
-pub fn command_parser(user: String, command: String) {
-    unimplemented!()
-}
-
-pub fn sound(n_frequency: u32) {
-    let div: u32;
-    let tmp: u8;
-
-    div = 1193180 / n_frequency;
-    unsafe {
-        outb(0xb6, 0x43);
-
-        set_pit_2(div);
-
-        // And play the sound using the PC speaker
-        tmp = inb(0x61);
-        if tmp != (tmp | 3) {
-            outb(tmp | 3, 0x61);
-        }
-    }
-}
-
-pub fn sound_off() {
-    unsafe {
-        let tmp = inb(0x61) & 0xFC;
-        outb(tmp, 0x61)
-    };
-    reset_pit_for_cpu();
-}
-
-pub fn echo_file(path: String) {
-    let mut current_path = String::from("/");
-    current_path.push_str(&path);
-    let mut vfs = VFS.lock();
-    let handle = vfs.resolve(&current_path).unwrap();
-    let file = vfs.fs_node(handle).unwrap();
-
-    if file.is_dir() {
-        // println!("{} is a directory", path);
-    } else {
-        let mut file_contents = Vec::new();
-        file.read(0, file.size(), &mut file_contents).unwrap();
-        let file_contents_str = String::from_utf8_lossy(&file_contents);
-        println!("{}", file_contents_str);
-    }
-}
diff --git a/ableos/src/serial_print.rs b/ableos/src/serial_print.rs
deleted file mode 100644
index aec8c66..0000000
--- a/ableos/src/serial_print.rs
+++ /dev/null
@@ -1,51 +0,0 @@
-use core::fmt::{Arguments, Error};
-
-pub struct Serialout;
-impl Serialout {
-    pub fn write_fmt(&mut self, arg: Arguments<'_>) /*-> Result<(), Error> */
-    {
-        let _ = core::fmt::Write::write_fmt(self, arg);
-        //   Ok(())
-    }
-}
-
-impl core::fmt::Write for Serialout {
-    #[cfg(target_arch = "aarch64")]
-    fn write_str(&mut self, s: &str) -> Result<(), Error> {
-        // Don't actually print anything yet lmao
-        Ok(())
-    }
-    #[cfg(target_arch = "x86_64")]
-    fn write_str(&mut self, s: &str) -> Result<(), Error> {
-        crate::arch::drivers::serial::_print(format_args!("{}", s));
-
-        Ok(())
-    }
-    #[cfg(target_arch = "riscv64")]
-    fn write_str(&mut self, s: &str) -> Result<(), Error> {
-        write!(crate::arch::drivers::uart::Uart::new(0x1000_0000), "{}", s)
-    }
-    fn write_char(&mut self, c: char) -> core::fmt::Result {
-        self.write_str(c.encode_utf8(&mut [0; 4]))
-    }
-    fn write_fmt(mut self: &mut Self, args: Arguments<'_>) -> core::fmt::Result {
-        core::fmt::write(&mut self, args)
-    }
-}
-
-#[macro_export]
-macro_rules! serial_print {
-    () => {
-        ::core::write!($crate::serial_print::Serialout, "")
-    };
-    ($($tt:tt)*) => {
-        ::core::write!($crate::serial_print::Serialout, $($tt)*)
-    };
-}
-
-#[macro_export]
-macro_rules! serial_println {
-    ($($tt:tt)*) => {
-        ::core::writeln!($crate::serial_print::Serialout, $($tt)*)
-    };
-}
diff --git a/ableos/src/stdio.rs b/ableos/src/stdio.rs
deleted file mode 100644
index f94360d..0000000
--- a/ableos/src/stdio.rs
+++ /dev/null
@@ -1,61 +0,0 @@
-use {
-    crate::device_interface::CharacterDevice,
-    crate::devices::Device::{Block, Character, Vterm},
-    core::fmt::{Arguments, Error, Write},
-};
-
-#[derive(Debug, Clone)]
-pub struct StdIo {
-    device: String,
-}
-
-impl StdIo {
-    pub fn new(device: String) -> StdIo {
-        StdIo { device }
-    }
-    pub fn write(&mut self, args: Arguments) -> Result<(), Error> {
-        use crate::devices::DEVICE_TABLE;
-        let mut dt = DEVICE_TABLE.lock();
-        let key_device = dt.devices.get_mut(&self.device).unwrap();
-
-        match key_device {
-            Character(dev) => {
-                let mut buf = String::new();
-                write!(buf, "{}", args).unwrap();
-                for c in buf.chars() {
-                    dev.write_char(c);
-                }
-                Ok(())
-            }
-            Vterm(vterm) => {
-                let mut buf = String::new();
-                write!(buf, "{}", args).unwrap();
-                for c in buf.chars() {
-                    vterm.write_char(c);
-                }
-                Ok(())
-            }
-            Block(_) => todo!(),
-        }
-    }
-
-    pub fn read(&mut self) {
-        use crate::devices::DEVICE_TABLE;
-        let mut dt = DEVICE_TABLE.lock();
-        let key_device = dt.devices.get_mut(&self.device).unwrap();
-
-        match key_device {
-            Character(dev) => {
-                let mut buf = String::new();
-                dev.read_char().map(|c| buf.push(c));
-                println!("{}", buf);
-            }
-            Vterm(vterm) => {
-                let mut buf = String::new();
-                vterm.read_char().map(|c| buf.push(c));
-                println!("{}", buf);
-            }
-            Block(_) => todo!(),
-        }
-    }
-}
diff --git a/ableos/src/tests/mod.rs b/ableos/src/tests/mod.rs
deleted file mode 100644
index ca8643a..0000000
--- a/ableos/src/tests/mod.rs
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2022, able <abl3theabove@gmail.com>
- *
- * SPDX-License-Identifier: MPL-2.0
- */
-
-use core::panic::PanicInfo;
-
-use kernel::arch::arch::sloop;
-pub trait Testable {
-    fn run(&self) -> ();
-}
-
-impl<T> Testable for T
-where
-    T: Fn(),
-{
-    fn run(&self) {
-        serial_print!("{}...\t", core::any::type_name::<T>());
-        self();
-        serial_println!("[ok]");
-    }
-}
-
-pub fn test_runner(tests: &[&dyn Testable]) {
-    serial_println!("Running {} tests", tests.len());
-    for test in tests {
-        test.run();
-    }
-    exit_qemu(QemuExitCode::Success);
-}
-
-pub fn test_panic_handler(info: &PanicInfo) -> ! {
-    serial_println!("[failed]\n");
-    serial_println!("Error: {}\n", info);
-    exit_qemu(QemuExitCode::Failed);
-}
-
-#[panic_handler]
-fn panic(info: &PanicInfo) -> ! {
-    test_panic_handler(info);
-}
-
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
-#[repr(u32)]
-pub enum QemuExitCode {
-    Success = 0x10,
-    Failed = 0x11,
-}
-
-pub fn exit_qemu(exit_code: QemuExitCode) -> ! {
-    use x86_64::instructions::port::Port;
-
-    unsafe {
-        let mut port = Port::new(0xf4);
-        port.write(exit_code as u32);
-    }
-    loop {}
-}
-
-entry_point!(test_kernel_main);
-/// Entry point for `cargo test`
-pub fn test_kernel_main(boot_info: &'static BootInfo) -> ! {
-    // init(boot_info.physical_memory_offset);
-    test_main();
-    loop {}
-}
-use bootloader::{entry_point, BootInfo};
diff --git a/ableos/src/tests/old_tests.rs b/ableos/src/tests/old_tests.rs
deleted file mode 100644
index c041774..0000000
--- a/ableos/src/tests/old_tests.rs
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * Copyright (c) 2022, able <abl3theabove@gmail.com>
- *
- * SPDX-License-Identifier: MPL-2.0
- */
-
-use crate::{
-    kmain::KERNEL_CONF,
-    network::socket::{SimpleSock, Socket, SocketReturns},
-    num_to_vga16, VgaBuffer, SCREEN_BUFFER,
-};
-use kernel::TICK;
-use picorand::PicoRandGenerate;
-use rkyv::{ser::serializers::AllocSerializer, Deserialize};
-use vga::colors::Color16;
-use y_compositor_protocol::Version;
-
-pub fn run_tests() {
-    if KERNEL_CONF.tests.run_tests {
-        // quick and dirty testing framework
-        screen_writer_test();
-        socket_test();
-        graphics_pipe_test();
-        socket_startup_rng();
-        socket_test_rng();
-    }
-
-    if KERNEL_CONF.tests.run_demos {
-        graphics_api_demo();
-    }
-
-    if KERNEL_CONF.tests.run_shader_tests {
-        shader_tests();
-    }
-}
-
-pub fn socket_test() {
-    let mut xyz = SimpleSock::new();
-
-    xyz.peek();
-
-    xyz.write(vec![0, 1, 2, 3]);
-
-    let x = "simple 🧦".to_string().into_bytes();
-    xyz.write(x);
-
-    info!("{:?}", &xyz.read(4).unwrap());
-
-    match &xyz.peek() {
-        SocketReturns::ReadOk(strr) => {
-            let out = String::from_utf8_lossy(strr);
-
-            info!("{}", out);
-        }
-        SocketReturns::ReadIndexOutOfBounds => todo!(),
-        SocketReturns::WriteOk => todo!(),
-    }
-}
-
-pub fn socket_test_rng() {
-    let mut test_sock = SimpleSock::grab_socket("RNGProvider".to_string()).unwrap();
-    info!(
-        "Recieving {} from protocol {}",
-        test_sock.read(1).unwrap()[0],
-        test_sock.protocol().unwrap()
-    );
-}
-
-pub fn socket_startup_rng() {
-    use picorand::{WyRand, RNG};
-    let mut random_socket = SimpleSock::new();
-
-    random_socket.register_protocol("RNGProvider".to_string());
-    let bruh = TICK.load(core::sync::atomic::Ordering::Relaxed);
-
-    let mut rng = RNG::<WyRand, u8>::new(bruh);
-
-    for _ in 0..512 {
-        let x = rng.generate();
-        random_socket.write(vec![x]);
-    }
-}
-
-pub fn screen_writer_test() {
-    let mut sock_print_id = SimpleSock::new();
-
-    sock_print_id.register_protocol("Screen Printer".to_string());
-    // sock_print_id.write(format!("a原 b画 cフ dァ eイ fル 集").into());
-    // sock_print_id.write(format!("â‹®").into());
-
-    sock_print_id.write(format!("λ³ Half Life 3 booting up  ㎣").into());
-    // sock_print_id.write(format!("Happy birthday 🎉").into());
-    // sock_print_id.write(format!("I look forward to ur ai stuff :^>").into());
-    // sock_print_id.write(format!("1....2....3....4....5....6....7....8....9").into());
-
-    let mut mode = SCREEN_BUFFER.lock();
-    for current in (*String::from_utf8_lossy(&sock_print_id.peek().unwrap())).chars() {
-        mode.draw_char(0, 0, current, from_vga_16(Color16::Red));
-    }
-    mode.copy_to_buffer();
-}
-
-pub fn vga_boot_screen() {
-    let mut abcde = SCREEN_BUFFER.lock();
-
-    for y in 0..480 {
-        for x in 0..640 {
-            let segment_x = x * 4 / 640;
-            let segment_y = y * 4 / 480;
-            let segment = segment_x + segment_y * 4;
-
-            abcde.set_pixel(x, y, from_vga_16(num_to_vga16(segment as u8)));
-        }
-    }
-}
-
-pub fn graphics_pipe_test() {
-    let mut graphics_pipe = SimpleSock::grab_socket("YCompositor".to_string()).unwrap();
-
-    let version = Version {
-        major: 13,
-        minor: 123,
-        patch: 0,
-    };
-    use rkyv::ser::Serializer;
-    let mut serializer = AllocSerializer::<0>::default();
-    serializer.serialize_value(&version).unwrap();
-    // let bytes = serializer.into_serializer().into_inner();
-
-    // info!("{:?}", bytes);
-    let bytes = serializer.into_serializer().into_inner();
-    graphics_pipe.write(bytes.into_vec());
-    unsafe {
-        let the_bytes = graphics_pipe.read(3).unwrap();
-        let archived = rkyv::archived_root::<Version>(&the_bytes);
-        let deserialized: Version = archived.deserialize(&mut rkyv::Infallible).unwrap();
-        trace!("{:?}", deserialized);
-    }
-}
-
-pub fn graphics_pipe_startup() {
-    let mut graphics_pipe = SimpleSock::new();
-
-    graphics_pipe.register_protocol("YCompositor".to_string());
-}
-
-pub fn graphics_api_demo() {
-    let mut abcde = SCREEN_BUFFER.lock();
-    abcde.force_redraw();
-
-    abcde.draw_filled_circle(100, 100, 300, 0x0000ff00);
-    abcde.draw_unfilled_rect(100, 100, 400, 200, 0xff000000);
-    abcde.draw_filled_rect(300, 300, 400, 400, 0xff000000);
-    abcde.draw_line(100, 100, 400, 200, 0xff000000);
-    abcde.copy_to_buffer();
-}
-
-pub fn shader_tests() {
-    let mut graphics = SCREEN_BUFFER.lock();
-
-    graphics.clear();
-    graphics.force_redraw();
-    graphics.draw_filled_rect(25, 25, 50, 50, 0xff000000);
-    graphics.set_pixel(50, 50, 0xffffff00);
-    graphics.shade();
-
-    graphics.copy_to_buffer();
-
-    // drop(graphics)
-}
-
-pub fn ser_de_test() {
-    let mut proc_1 = SimpleSock::new();
-    proc_1.register_protocol("ProcessSpawner".to_string());
-
-    let version = 0;
-    use rkyv::ser::Serializer;
-    let mut serializer = AllocSerializer::<0>::default();
-    serializer.serialize_value(&version).unwrap();
-
-    let bytes = serializer.into_serializer().into_inner();
-    proc_1.write(bytes.into_vec());
-    unsafe {
-        let the_bytes = proc_1.read(3).unwrap();
-        let archived = rkyv::archived_root::<Version>(&the_bytes);
-        let deserialized: Version = archived.deserialize(&mut rkyv::Infallible).unwrap();
-        trace!("{:?}", deserialized);
-    }
-}
diff --git a/ableos/src/time.rs b/ableos/src/time.rs
deleted file mode 100644
index 49462d2..0000000
--- a/ableos/src/time.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-use crate::kmain::TICK;
-use core::sync::atomic::Ordering;
-
-#[cfg(target_arch = "x86_64")]
-pub fn fetch_time() -> f64 {
-    let time = x86_64::instructions::interrupts::without_interrupts(|| {
-        TICK.load(Ordering::Relaxed) as f64
-    });
-    time
-}
-
-#[cfg(target_arch = "riscv64")]
-pub fn fetch_time() -> f64 {
-    let time = TICK.load(Ordering::Relaxed) as f64;
-    time
-}
diff --git a/ableos/src/unicode_utils.rs b/ableos/src/unicode_utils.rs
deleted file mode 100644
index 45d1930..0000000
--- a/ableos/src/unicode_utils.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-#![allow(dead_code)]
-
-pub const CONSOLE: &str = "\u{E795}";
-pub const POWER_SIGN: &str = "\u{23FB}";
-pub const LAMBDA: &str = "λ";
diff --git a/ableos/src/usb/mod.rs b/ableos/src/usb/mod.rs
deleted file mode 100644
index 2feda21..0000000
--- a/ableos/src/usb/mod.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-//!
-
-pub enum UsbSpeed {
-    /// Super-speed functions operate at up to 5 Gb/s.
-    Super,
-
-    /// High-speed functions operate at up to 480 Mb/s.
-    High,
-
-    /// Full-speed functions operate at up to 12 Mb/s.
-    Full,
-    
-    /// Low-speed functions operate at up to 1.5 Mb/s.
-    Low,
-}
diff --git a/ableos/src/utils.rs b/ableos/src/utils.rs
deleted file mode 100644
index 183d6db..0000000
--- a/ableos/src/utils.rs
+++ /dev/null
@@ -1,36 +0,0 @@
-//! Small generic utilities
-
-#[inline]
-pub fn type_of<T>(_: &T) -> &str {
-    core::any::type_name::<T>()
-}
-
-#[no_mangle]
-#[allow(unconditional_recursion)]
-pub extern "C" fn stack_overflow() -> u8 {
-    stack_overflow();
-    // meme number
-    69 // NOTE: Any specific reason for this number aside from memes?
-}
-
-#[cfg(test)]
-mod tests {
-    use super::*;
-
-    // #[test]
-    fn test_type_of() {
-        assert_eq!(type_of(&1), "i32");
-    }
-}
-
-pub const fn kb(x: usize) -> usize {
-    x * 1024
-}
-
-pub const fn mb(x: usize) -> usize {
-    x * 1024 * 1024
-}
-
-pub const fn gb(x: usize) -> usize {
-    x * 1024 * 1024 * 1024
-}
diff --git a/ableos/src/vga_e.rs b/ableos/src/vga_e.rs
deleted file mode 100644
index 72c0043..0000000
--- a/ableos/src/vga_e.rs
+++ /dev/null
@@ -1,35 +0,0 @@
-use vga::{colors::Color16, writers::Graphics640x480x16};
-
-pub static VGAE_BUFF_OFFSET_X: spin::Mutex<u8> = spin::Mutex::new(0);
-pub static VGAE_BUFF_OFFSET_Y: spin::Mutex<u8> = spin::Mutex::new(0);
-pub static VGAE: spin::Mutex<Graphics640x480x16> = {
-    let xyz = Graphics640x480x16::new();
-    // xyz.set_mode();
-    spin::Mutex::new(xyz)
-};
-
-/// Converts a number to ... i forgor 💀
-pub const fn num_to_vga16(num: u8) -> Color16 {
-    use Color16::*;
-
-    match num {
-        0 => Black,
-        1 => Blue,
-        2 => Green,
-        3 => Cyan,
-        4 => Red,
-        5 => Magenta,
-        6 => Brown,
-        7 => LightGrey,
-        8 => DarkGrey,
-        9 => LightBlue,
-        10 => LightGreen,
-        11 => LightCyan,
-        12 => LightRed,
-        13 => Pink,
-        14 => Yellow,
-        15 => White,
-        // NOTE: Leasve the in
-        _ => Color16::Pink,
-    }
-}
diff --git a/ableos/src/virtio/mod.rs b/ableos/src/virtio/mod.rs
deleted file mode 100644
index 802a722..0000000
--- a/ableos/src/virtio/mod.rs
+++ /dev/null
@@ -1,94 +0,0 @@
-//! virtio device
-//!
-//! This module contains the virtio device structural code.
-//!
-//! # Notes
-//! <https://docs.oasis-open.org/virtio/virtio/v1.1/csprd01/virtio-v1.1-csprd01.html#x1-20001>
-
-pub struct VirtioDevice {
-    _status: VirtioDeviceStatus,
-}
-
-use crate::devices::pci::PciDeviceInfo;
-
-pub fn device_handler(device: PciDeviceInfo) {
-    use crate::devices::pci::PciClass::*;
-    match device.class() {
-        // Unclassified => todo!(),
-        // MassStorage => todo!(),
-        // Network => todo!(),
-        Display => {
-            trace!("Display found");
-            println!("{}", device.interrupt_pin());
-        }
-        // Multimedia => todo!(),
-        // Memory => todo!(),
-        // Bridge => todo!(),
-        // Other => todo!(),
-        _ => {}
-    }
-}
-
-#[repr(C)]
-pub enum VirtioDeviceStatus {
-    // Indicates that the guest OS has found the device and recognized it as a valid virtio device.
-    Acknowleged = 1,
-    // Indicates that the guest OS knows how to drive the device. Note: There could be a significant (or infinite) delay before setting this bit. For example, under Linux, drivers can be loadable modules.
-    Driver = 2,
-    // Indicates that the driver has acknowledged all the features it understands, and feature negotiation is complete.
-    FeaturesOk = 8,
-    // Indicates that the device is set up and ready to drive the device.
-    DriverOk = 4,
-    // Indicates that the device needs to be reset.
-    DeviceNeedsReset = 64,
-    // Indicates that the device has failed.
-    Failed = 128,
-}
-
-pub struct FeaturesBits(u64);
-impl FeaturesBits {
-    // bit mask the first 23 bits and return a u64
-    //  0 to 23
-    // Feature bits for the specific device type
-    pub fn device_type_features(&self) -> u64 {
-        0
-    }
-
-    // bit mask the 24th bit to the 37th bit and return a u64
-    // 24 to 37
-    // Feature bits reserved for extensions to the queue and feature negotiation mechanisms
-    pub fn extension_features(&self) -> u64 {
-        0
-    }
-
-    // bit mask the 38th bit to the 63th bit and return a u64
-    // 38 and above
-    // Feature bits reserved for future extensions.
-    pub fn future_features(&self) -> u64 {
-        0
-    }
-}
-
-// configuration change notification
-// available buffer notification
-// used buffer notification.
-
-#[repr(C)]
-pub struct VirtioDeviceNotification {
-    pub type_: u32,
-    pub index: u32,
-    pub value: u32,
-}
-
-pub struct Vring {
-    pub addr: u64,
-    pub len: u32,
-    pub flags: u16,
-    pub next: u16,
-}
-
-pub struct VringAvail {
-    pub flags: u16,
-    pub idx: u16,
-    pub ring: [u16; 0xFFFF],
-}
diff --git a/ableos/src/vterm.rs b/ableos/src/vterm.rs
deleted file mode 100644
index 0d1f37c..0000000
--- a/ableos/src/vterm.rs
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * Copyright (c) 2022, Able <able@ablecorp.us>
- *
- * SPDX-License-Identifier: MPL-2.0
- */
-#![deny(missing_docs)]
-//! The VTerm is a terminal with nice
-
-use crate::{hardware::MOUSE, vga_e::VGAE};
-use ab_glyph::{Font, FontRef, Glyph};
-use logos::{Lexer, Logos};
-use spin::Lazy;
-use vga::{colors::Color16, writers::GraphicsWriter};
-
-const TERM_MINUS_ONE_LINE: usize = 4720;
-const CURSOR_COLOR: Color16 = Color16::Cyan;
-
-#[derive(Debug)]
-/// A VTerm
-pub struct VTerm {
-    dirty: bool,
-    color: Color16,
-    term: [(char, Color16); 80 * 60],
-    back_buffer: [u8; 640 * 480],
-    x: u8,
-}
-impl VTerm {
-    /// Construct a new VTerm
-    pub fn new() -> Self {
-        trace!("Setting vga mode");
-        let mode = VGAE.lock();
-        mode.set_mode();
-        // let fb = mode.get_frame_buffer();
-        drop(mode);
-
-        Self {
-            dirty: false,
-            x: 0,
-            back_buffer: [0; 640 * 480],
-            term: [('\0', Color16::DarkGrey); 80 * 60],
-            color: Color16::White,
-        }
-    }
-    /// Check the dirty state of the VTerm
-    pub fn is_dirty(&self) -> bool {
-        self.dirty
-    }
-
-    /// Set the dirty state of the VTerm
-    pub fn set_dirty(&mut self, dirty: bool) {
-        self.dirty = dirty
-    }
-
-    /// Append a &str to the VTerm
-    pub fn print(&mut self, data: &str) {
-        let mut lex = Token::lexer(data);
-
-        for toke in lex {
-            match toke {
-                Token::Reset => {
-                    self.color = Color16::White;
-                }
-                Token::Error => {}
-                Token::TBlack => self.color = Color16::Black,
-                Token::TBlue => self.color = Color16::Blue,
-                Token::TGreen => self.color = Color16::Green,
-                Token::TCyan => self.color = Color16::Cyan,
-                Token::TRed => self.color = Color16::Red,
-                Token::TMagenta => self.color = Color16::Magenta,
-                Token::TBrown => self.color = Color16::Brown,
-                Token::TLightGrey => self.color = Color16::LightGrey,
-                Token::TDarkGrey => self.color = Color16::DarkGrey,
-                Token::TLightBlue => self.color = Color16::LightBlue,
-                Token::TLightGreen => self.color = Color16::LightGreen,
-                Token::TLightCyan => self.color = Color16::LightCyan,
-                Token::TLightRed => self.color = Color16::LightRed,
-                Token::TPink => self.color = Color16::Pink,
-                Token::TYellow => self.color = Color16::Yellow,
-                Token::TWhite => self.color = Color16::White,
-                // Token::Space => {
-                //     self.term[TERM_MINUS_ONE_LINE + (self.x as usize)] = (' ', self.color);
-                //     self.x += 1;
-                // }
-                Token::Text(st) => {
-                    for c in st.chars() {
-                        if self.x == 80 {
-                            // trace!("X too big moving up");
-                            self.move_up();
-                        }
-                        // trace!("C");
-                        match c {
-                            '\0' => {
-                                self.term[TERM_MINUS_ONE_LINE + (self.x as usize)] =
-                                    (c, self.color);
-                                self.x += 1;
-                            }
-
-                            '\u{08}' => {
-                                if self.x == 0 {
-                                    trace!("IMPOSSIBLE BACKSPACE");
-                                    return;
-                                }
-                                self.x -= 1;
-                                self.term[TERM_MINUS_ONE_LINE + (self.x as usize)] =
-                                    ('\0', Color16::LightGrey);
-                            }
-                            '\n' => {
-                                self.move_up();
-                                self.x = 0;
-                            }
-
-                            c => {
-                                self.term[TERM_MINUS_ONE_LINE + (self.x as usize)] =
-                                    (c, self.color);
-                                self.x += 1;
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    /// Move the VTerm up by one line
-    pub fn move_up(&mut self) {
-        self.term.rotate_left(80);
-        for x in 0..80 {
-            self.term[TERM_MINUS_ONE_LINE + x] = ('\0', Color16::DarkGrey);
-        }
-        self.x = 0;
-    }
-
-    /// Redraw the VTerm to the VGA buffer
-    pub fn draw_term(&mut self) {
-        if self.is_dirty() {
-            // trace!("Redrawing");
-            use Color16::*;
-            let mode = VGAE.lock();
-            mode.clear_screen(DarkGrey);
-            let mut x = 0;
-            let mut y = 0;
-
-            for c in self.term {
-                mode.draw_character(x * 8, y * 8, c.0, c.1);
-                // mode.draw_unicode_char(x, y, c.0, c.1);
-                if x == 79 {
-                    y += 1;
-
-                    x = 0;
-                } else {
-                    x += 1
-                }
-            }
-
-            {
-                let mouse_coord = x86_64::instructions::interrupts::without_interrupts(|| {
-                    let cursor = MOUSE.lock();
-
-                    (cursor.get_x() as usize, cursor.get_y() as usize)
-                });
-
-                mode.draw_line(
-                    (mouse_coord.0 as isize + 0, mouse_coord.1 as isize + 0),
-                    (mouse_coord.0 as isize + 10, mouse_coord.1 as isize + 10),
-                    CURSOR_COLOR,
-                );
-                mode.draw_line(
-                    (mouse_coord.0 as isize + 0, mouse_coord.1 as isize + 0),
-                    (mouse_coord.0 as isize + 5, mouse_coord.1 as isize + 0),
-                    CURSOR_COLOR,
-                );
-                mode.draw_line(
-                    (mouse_coord.0 as isize + 0, mouse_coord.1 as isize + 0),
-                    (mouse_coord.0 as isize + 0, mouse_coord.1 as isize + 5),
-                    CURSOR_COLOR,
-                );
-            }
-
-            drop(mode);
-
-            /*
-            let mut x = 0;
-            let mut y = 0;
-            for c in ['b'; 80 * 60]
-            // "abcdefghijklmnopqrstuvwxyzabcdefghijk\nabcd jkjhgkjhgkjhgefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz12"
-            // .chars()
-            {
-                if c == '\n' {
-                    y += 1;
-                    x = 0;
-                    continue;
-                }
-
-                self.draw_char(x, y, c, Color16::Red);
-                if x == 80 {
-                    y += 1;
-                    x = 1;
-                } else {
-                    x += 1;
-                }
-            }
-            */
-            self.set_dirty(false);
-            // trace!("Finished drawing");
-        }
-    }
-}
-
-#[derive(Logos, Debug, Clone, PartialEq)]
-enum Token {
-    #[regex(r"", logos::skip)]
-    #[error]
-    Error,
-
-    #[token("\0RESET\0", priority = 10)]
-    Reset,
-
-    #[token("\0BLACK\0", priority = 10)]
-    TBlack,
-    #[regex("\0BLUE\0", priority = 10)]
-    TBlue,
-    #[token("\0GREEN\0", priority = 10)]
-    TGreen,
-    #[token("\0CYAN\0", priority = 10)]
-    TCyan,
-    #[token("\0RED\0", priority = 10)]
-    TRed,
-    #[token("\0MAGENTA\0", priority = 10)]
-    TMagenta,
-    #[token("\0BROWN\0", priority = 10)]
-    TBrown,
-    #[token("\0LIGHTGREY\0", priority = 10)]
-    TLightGrey,
-    #[token("\0DARKGREY\0", priority = 10)]
-    TDarkGrey,
-    #[token("\0LIGHTBLUE\0", priority = 10)]
-    TLightBlue,
-    #[token("\0LIGHTGREEN\0", priority = 10)]
-    TLightGreen,
-    #[token("\0LIGHTCYAN\0", priority = 10)]
-    TLightCyan,
-    #[token("\0LIGHTRED\0", priority = 10)]
-    TLightRed,
-    #[token("\0PINK\0", priority = 10)]
-    TPink,
-    #[token("\0YELLOW\0", priority = 10)]
-    TYellow,
-    #[token("\0WHITE\0", priority = 10)]
-    TWhite,
-
-    // #[token(" ")]
-
-    // Space,
-    #[regex("[\t\n\u{8}â–ˆ!-\u{10FFFF} ]+", text_lex, priority = 0)]
-    /// A printable string
-    Text(String),
-}
-
-fn text_lex(lex: &mut Lexer<Token>) -> String {
-    lex.slice().into()
-}
diff --git a/ableos/src/wasm/mod.rs b/ableos/src/wasm/mod.rs
deleted file mode 100644
index 7d55849..0000000
--- a/ableos/src/wasm/mod.rs
+++ /dev/null
@@ -1,110 +0,0 @@
-/// `NULL a s m` as an array of 4 bytes
-pub const WASM_BINARY_MAGIC: [u8; 4] = [0x00, 0x61, 0x73, 0x6d];
-
-///  `1 0 0 0` as an array of 4 bytes
-pub const WASM_VERSION: [u8; 4] = [0x01, 0x00, 0x00, 0x00];
-
-/// A wasm section
-///
-/// # Examples
-/// ```
-/// use wasm_loader::wasm::WasmSection;
-/// let section = WasmSection::new(0, vec![0x00, 0x01, 0x02, 0x03]);
-/// assert_eq!(section.id, 0);
-/// assert_eq!(section.data, vec![0x00, 0x01, 0x02, 0x03]);
-/// ```
-/// # Notes
-/// The wasm spec defines the following section types:
-/// * `0`: custom
-/// * `1`: type
-/// * `2`: import
-/// * `3`: function
-/// * `4`: table
-/// * `5`: memory
-/// * `6`: global
-/// * `7`: export
-/// * `8`: start
-/// * `9`: element
-/// * `10`: code
-/// * `11`: data
-pub enum SectionType {
-    None = 0,
-    Type = 1,
-    Import = 2,
-    Function = 3,
-    Table = 4,
-    Memory = 5,
-    Global = 6,
-    Export = 7,
-    Start = 8,
-    Element = 9,
-    Code = 10,
-    Data = 11,
-}
-
-pub struct Section {
-    /// The section type
-    _stype: SectionType,
-    _section_size: u8,
-}
-
-/// A wasm type
-/// # Examples
-/// ```
-/// use wasm_loader::wasm::WasmType;
-/// let type_ = WasmType::new(vec![0x00, 0x01, 0x02, 0x03]);
-/// assert_eq!(type_.subtypes, vec![0x00, 0x01, 0x02, 0x03]);
-/// ```
-/// # Notes
-/// The wasm spec defines the following type subtypes:
-/// * `0`: anyfunc
-/// * `1`: func
-/// * `2`: block
-/// * `3`: i32
-/// * `4`: i64
-/// * `5`: f32
-/// * `6`: f64
-pub enum WasmType {
-    Anyfunc = 0,
-    Func = 1,
-    Block = 2,
-    I32 = 3,
-    I64 = 4,
-    F32 = 5,
-    F64 = 6,
-}
-
-pub struct WasmProgram {
-    raw_bytes: Vec<u8>,
-}
-
-impl WasmProgram {
-    pub fn new_from_bytes(bytes: &[u8]) -> Self {
-        Self {
-            raw_bytes: bytes.to_vec(),
-        }
-    }
-    /// Returns the a tuple of two bools
-    /// The first bool is true if the wasm binary is valid
-    /// The second bool is true if the wasm binary version is 1
-    ///
-    /// # Examples
-    /// ```
-    /// use wasm_loader::wasm::WasmProgram;
-    /// let wasm_program = WasmProgram::new_from_bytes(b"\0\0\0\01\0\0\0");
-    /// assert_eq!(wasm_program.is_valid(), (true, false));
-    /// ```
-    pub fn validate_header(self) -> (bool, bool) {
-        let mut byte_magic_valid = false;
-        let mut byte_version_valid = false;
-
-        if self.raw_bytes[0..4] == WASM_BINARY_MAGIC {
-            byte_magic_valid = true;
-        }
-
-        if self.raw_bytes[4..8] == WASM_VERSION {
-            byte_version_valid = true;
-        }
-        (byte_magic_valid, byte_version_valid)
-    }
-}
diff --git a/ableos/src/wasm_jumploader/host_functions.rs b/ableos/src/wasm_jumploader/host_functions.rs
deleted file mode 100644
index f560d3a..0000000
--- a/ableos/src/wasm_jumploader/host_functions.rs
+++ /dev/null
@@ -1,178 +0,0 @@
-use crate::{arch::generate_process_pass, ipc::channel::ChannelMessage, rhai_shell::KEYBUFF};
-use wasmi::{
-    Error, Externals, FuncInstance, FuncRef, ModuleImportResolver, RuntimeArgs, RuntimeValue,
-    Signature, Trap, ValueType,
-};
-
-macro_rules! wasmi_type {
-    (bool) => {
-        ValueType::I32
-    };
-    (u8) => {
-        ValueType::I32
-    };
-    (u16) => {
-        ValueType::I32
-    };
-    (u32) => {
-        ValueType::I32
-    };
-    (u64) => {
-        ValueType::I64
-    };
-    (i8) => {
-        ValueType::I32
-    };
-    (i16) => {
-        ValueType::I32
-    };
-    (i32) => {
-        ValueType::I32
-    };
-    (i64) => {
-        ValueType::I64
-    };
-    (f32) => {
-        ValueType::F32
-    };
-    (f64) => {
-        ValueType::F64
-    };
-}
-
-macro_rules! wasmi_return_type {
-    () => {
-        None
-    };
-    ($type: ident) => {
-        Some(wasmi_type!($type))
-    };
-}
-
-macro_rules! host_externals {
-    (
-        $($index: literal: $name: ident ($($arg_name: ident: $arg_type: ident),* $(,)?) $(-> $return_type: ident)? $block: block)*
-    ) => {
-        pub struct HostExternals;
-        impl Externals for HostExternals {
-            fn invoke_index(
-                &mut self,
-                index: usize,
-                args: RuntimeArgs
-            ) -> Result<Option<RuntimeValue>, Trap> {
-                match index {
-                    $(
-                        $index => match args.as_ref() {
-                            [$($arg_name),*] => {
-                                $(
-                                    let $arg_name: $arg_type = (*$arg_name)
-                                        .try_into()
-                                        .ok_or(wasmi::TrapKind::UnexpectedSignature)?;
-                                )*
-                                $block
-                            },
-                            _ => return Err(wasmi::TrapKind::UnexpectedSignature.into()),
-                        }
-                    ),*
-                    _ => {
-                        error!("Unimplemented function at {index}");
-                        Err(Trap::new(wasmi::TrapKind::Unreachable))
-                    }
-                }
-            }
-        }
-
-        impl ModuleImportResolver for HostExternals {
-            fn resolve_func(&self, field_name: &str, signature: &Signature) -> Result<FuncRef, Error> {
-                let (index, param_types, return_type): (usize, &[ValueType], Option<ValueType>) =
-                    match field_name {
-                        $(
-                            stringify!($name) => (
-                                $index,
-                                &[$(wasmi_type!($arg_type)),*],
-                                wasmi_return_type!($($return_type)?),
-                            ),
-                        )*
-                        _ => {
-                            return Err(Error::Instantiation(format!(
-                                "Export {field_name} not found",
-                            )));
-                        },
-                    };
-
-                if !(param_types.len() != signature.params().len() || return_type != signature.return_type())
-                && param_types
-                    .iter()
-                    .zip(signature.params())
-                    .find(|(ty, param)| ty != param)
-                    .is_none()
-                {
-                    trace!("Resolved export {field_name} at func {index}");
-                    Ok(FuncInstance::alloc_host(signature.clone(), index))
-                } else {
-                    Err(Error::Instantiation(format!(
-                        "Export {field_name} has a bad signature {signature:?}",
-                    )))
-                }
-            }
-        }
-    };
-}
-
-host_externals! {
-    0: add(a: u32, b: u32) -> u32 {
-        let result = a + b;
-        trace!("SYSCALL: {} + {} = {}", a, b, result);
-        Ok(Some(result.into()))
-    }
-
-    1: send_signal(pid: u32, signal: u32) -> i32 {
-        trace!("SYSCALL: send signal {} to pid {}", signal, pid);
-        Ok(Some(0.into()))
-    }
-
-    2: get_time() -> u32 {
-        use core::sync::atomic::Ordering::*;
-        trace!("SYSCALL: get time");
-
-        x86_64::instructions::interrupts::disable();
-        let tick_time = crate::kmain::TICK.load(Relaxed);
-        x86_64::instructions::interrupts::enable();
-
-        let ret: u32 = tick_time.try_into().unwrap();
-        Ok(Some(ret.into()))
-    }
-
-    3: get_random() -> i32 {
-        trace!("SYSCALL: get random");
-        let rand = generate_process_pass() as i32;
-        Ok(Some(rand.into()))
-    }
-
-    4: get_input() -> i32 {
-        let input = None;
-        x86_64::instructions::interrupts::without_interrupts(|| KEYBUFF.lock().pop());
-        if let Some(chr) = input {
-            trace!("SYSCALL: input: {}", chr);
-        }
-
-        let ret = input.unwrap_or(0x00 as char) as i32;
-        Ok(Some(ret.into()))
-    }
-
-    5: print_char(chr: u8) {
-        trace!("SYSCALL: print: {}", chr);
-        print!("{}", char::from(chr));
-        Ok(None)
-    }
-
-
-
-    // TODO: Send a message to a channel
-    6: send_channel_message(){
-
-
-        Ok(None)
-
-    }
-}
diff --git a/ableos/src/wasm_jumploader/mod.rs b/ableos/src/wasm_jumploader/mod.rs
deleted file mode 100644
index 21e7df9..0000000
--- a/ableos/src/wasm_jumploader/mod.rs
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * Copyright (c) 2022, Umut Ä°nan ErdoÄŸan <umutinanerdogan@pm.me>
- *
- * SPDX-License-Identifier: MPL-2.0
- */
-
-pub mod host_functions;
-
-use crate::wasm_jumploader::host_functions::HostExternals;
-use wasmi::{ImportsBuilder, ModuleInstance};
-
-pub fn interp() {
-    trace!("Interpreting...");
-    // let fs = &*FILE_SYSTEM.lock();
-    // trace!("Got filesystem");
-    // let file = fs
-    //     .open(
-    //         b"/home/able/bins/aos_test.wasm",
-    //         OpenOptions::new().read(true),
-    //     )
-    //     .unwrap();
-
-    // let mut wasm_binary = Vec::new();
-
-    // let ret = file.read_to_end(&mut wasm_binary).unwrap();
-    // trace!("Binary size {}", ret);
-    // // Load wasm binary and prepare it for instantiation.
-    // let module = wasmi::Module::from_buffer(&wasm_binary).expect("failed to load wasm");
-    // trace!("Loaded wasm binary");
-    // let imports = ImportsBuilder::new().with_resolver("env", &host_functions::HostExternals {});
-    // trace!("Created imports");
-
-    // // Instantiate a module with empty imports and
-    // // assert that there is no `start` function.
-    // let instance = ModuleInstance::new(&module, &imports); // .expect("failed to instantiate wasm module")
-
-    // match instance {
-    //     Ok(inst) => {
-    //         let instance = inst.assert_no_start();
-    //         let mut is_driver = false;
-    //         let _is_program = false;
-    //         let mut has_driver_entry = false;
-    //         let mut has_driver_exit = false;
-    //         let mut has_start = false;
-
-    //         if let Some(_val) = instance.export_by_name("driver_entry") {
-    //             has_driver_entry = true;
-    //         }
-
-    //         if let Some(_val) = instance.export_by_name("driver_exit") {
-    //             has_driver_exit = true;
-    //         }
-
-    //         match instance.export_by_name("start") {
-    //             Some(_val) => {
-    //                 trace!("Program start function found");
-    //                 has_start = true;
-    //             }
-    //             None => debug!("No start function found"),
-    //         }
-
-    //         match instance.export_by_name("main") {
-    //             Some(_val) => {
-    //                 trace!("Program main function found");
-    //                 has_start = true;
-    //             }
-    //             None => debug!("No main function found"),
-    //         }
-
-    //         match (has_driver_entry, has_driver_exit) {
-    //             (true, true) => {
-    //                 trace!("Valid driver entry and exit functions found");
-    //                 is_driver = true;
-    //             }
-    //             (true, false) => error!("Driver entry function found but no driver exit function"),
-    //             (false, true) => error!("Driver exit function found but no driver entry function"),
-    //             (false, false) => {
-    //                 trace!("No driver entry or exit functions found");
-    //             }
-    //         }
-
-    //         if has_start && has_driver_entry {
-    //             error!(
-    //                 "A program should not have both a start function and a driver entry function. It Will be treated as a program."
-    //             );
-    //         }
-
-    //         if has_start {
-    //             let ret = instance
-    //                 .invoke_export("start", &[], &mut HostExternals {})
-    //                 .expect("failed to execute export");
-
-    //             println!("collected wasm return value: {:?}", ret);
-    //         } else if is_driver {
-    //             let ret = instance
-    //                 .invoke_export("driver_entry", &[], &mut HostExternals {})
-    //                 .expect("failed to execute export");
-
-    //             println!("collected wasm return value: {:?}", ret);
-    //         }
-    //     }
-    //     Err(err) => error!("{}", err),
-    // }
-}
-
-pub fn run_program(program: &[u8]) {
-    // Load wasm binary and prepare it for instantiation.
-    let module = wasmi::Module::from_buffer(program).expect("failed to load wasm");
-
-    trace!("Loaded wasm binary");
-    let imports = ImportsBuilder::new().with_resolver("env", &host_functions::HostExternals {});
-    trace!("Created imports");
-
-    // Instantiate a module with empty imports and
-    // assert that there is no `start` function.
-    let instance = ModuleInstance::new(&module, &imports);
-
-    // .expect("failed to instantiate wasm module")
-
-    match instance {
-        Ok(inst) => {
-            let instance = inst.assert_no_start();
-            let mut is_driver = false;
-            let _is_program = false;
-            let mut has_driver_entry = false;
-            let mut has_driver_exit = false;
-            let mut has_start = false;
-
-            if let Some(_val) = instance.export_by_name("driver_entry") {
-                has_driver_entry = true;
-            }
-
-            if let Some(_val) = instance.export_by_name("driver_exit") {
-                has_driver_exit = true;
-            }
-
-            match instance.export_by_name("start") {
-                Some(_val) => {
-                    trace!("Program start function found");
-                    has_start = true;
-                }
-                None => debug!("No start function found"),
-            }
-
-            match instance.export_by_name("main") {
-                Some(_val) => {
-                    trace!("Program main function found");
-                    has_start = false;
-                }
-                None => debug!("No main function found"),
-            }
-
-            match (has_driver_entry, has_driver_exit) {
-                (true, true) => {
-                    trace!("Valid driver entry and exit functions found");
-                    is_driver = true;
-                }
-                (true, false) => error!("Driver entry function found but no driver exit function"),
-                (false, true) => error!("Driver exit function found but no driver entry function"),
-                (false, false) => {
-                    trace!("No driver entry or exit functions found");
-                }
-            }
-
-            if has_start && has_driver_entry {
-                error!(
-                    "A program should not have both a start function and a driver entry function. It Will be treated as a program."
-                );
-            }
-
-            if has_start {
-                let ret = instance
-                    .invoke_export("start", &[], &mut HostExternals {})
-                    .expect("failed to execute export");
-
-                println!("collected wasm return value: {:?}", ret);
-            } else if is_driver {
-                let ret = instance
-                    .invoke_export("driver_entry", &[], &mut HostExternals {})
-                    .expect("failed to execute export");
-
-                println!("collected wasm return value: {:?}", ret);
-            } else {
-                println!("ERROR: No start or driver entry function found, invalid program");
-            }
-        }
-        Err(err) => error!("{}", err),
-    }
-}