diff options
27 files changed, 503814 insertions, 0 deletions
diff --git a/kattis-kth-alginda-quicksort/Cargo.lock b/kattis-kth-alginda-quicksort/Cargo.lock new file mode 100644 index 0000000..b3ab7a2 --- /dev/null +++ b/kattis-kth-alginda-quicksort/Cargo.lock @@ -0,0 +1,85 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "getrandom" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d39cd93900197114fa1fcb7ae84ca742095eed9442088988ae74fa744e930e77" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "kattis-kth-alginda-quicksort" +version = "0.1.0" +dependencies = [ + "rand", + "rand_pcg", +] + +[[package]] +name = "libc" +version = "0.2.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bf2e165bb3457c8e098ea76f3e3bc9db55f87aa90d52d0e6be741470916aaa4" + +[[package]] +name = "ppv-lite86" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_pcg" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e" +dependencies = [ + "rand_core", +] + +[[package]] +name = "wasi" +version = "0.10.2+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" diff --git a/kattis-kth-alginda-quicksort/Cargo.toml b/kattis-kth-alginda-quicksort/Cargo.toml new file mode 100644 index 0000000..4968225 --- /dev/null +++ b/kattis-kth-alginda-quicksort/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "kattis-kth-alginda-quicksort" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dev-dependencies] +rand = "0.8" +rand_pcg = "0.3" + +[dependencies] diff --git a/kattis-kth-alginda-quicksort/gen.py b/kattis-kth-alginda-quicksort/gen.py new file mode 100644 index 0000000..37c4095 --- /dev/null +++ b/kattis-kth-alginda-quicksort/gen.py @@ -0,0 +1,11 @@ +from random import randint as r +from sys import argv + +lo = int(argv[1]) +hi = int(argv[2]) +n = int(argv[3]) + +xs = [r(lo, hi) for _ in range(n)] + +print(len(xs), " ") +print(' \n '.join(str(x) for x in xs)) diff --git a/kattis-kth-alginda-quicksort/radix.c b/kattis-kth-alginda-quicksort/radix.c new file mode 100644 index 0000000..babc0ec --- /dev/null +++ b/kattis-kth-alginda-quicksort/radix.c @@ -0,0 +1,146 @@ +/* https://kth.kattis.com/problems/kth.alginda.quicksort */ + +#include <unistd.h> +#include <stdbool.h> +#include <stdlib.h> +#include <string.h> +#include <stdio.h> +#include <stdint.h> +/* #include <immintrin.h> */ + +// longest int: -2147483648 +#define BUFFER_MAX (12 * 600000) +char buffer[BUFFER_MAX]; +int xs[600000]; +int tmp[600000]; + +int *radix_sort(int n) { + int *out = xs; + int *in = tmp; + // we loop an even amount of times so the completely sorted array + // will be in xs, not tmp + for (int m = 0; m < 32; m += 8) { + int *tmp = out; + out = in; + in = tmp; + + int counts[256] = { 0 }; + for (int i = 0; i < n; i++) + counts[(uint8_t) (in[i] >> m)]++; + + int sum = 0; + for (int i = 0; i < 256; i++) { + sum += counts[i]; + counts[i] = sum; + } + for (int i = n - 1; i >= 0; i--) { + uint8_t fx = in[i] >> m; + counts[fx]--; + out[counts[fx]] = in[i]; + } + } +} + +int main() { + /* char *buffer = malloc(BUFFER_MAX); */ + /* ssize_t len = 0; */ + /* while (true) { */ + /* if (len >= BUFFER_MAX) return 1; */ + /* ssize_t r = read(0, &buffer[len], BUFFER_MAX - len); */ + /* len += r; */ + /* if (r == 0) */ + /* break; */ + /* } */ + ssize_t len = read(0, buffer, BUFFER_MAX); + + int curr = 0; + int n = 0; + while (buffer[curr] != ' ' && buffer[curr] != '\n') { + n *= 10; + n += buffer[curr] - '0'; + curr++; + } + while (buffer[curr] == ' ' || buffer[curr] == '\n') curr++; + + for (int i = 0; i < n; i++) { + int x = 0; + bool neg = false; + if (buffer[curr] == '-') { + neg = true; + curr++; + } + while (curr < len && buffer[curr] != ' ' && buffer[curr] != '\n') { + x *= 10; + x += buffer[curr] - '0'; + curr++; + } + while (curr < len && (buffer[curr] == ' ' || buffer[curr] == '\n')) curr++; + + if (neg) x = -x; + xs[i] = x ^ (1 << 31); + } + + radix_sort(n); + + len = 0; + for (int i = 0; i < n; i++, len += 12) { + long x = xs[i] ^ (1 << 31); + bool neg = false; + if (x < 0) { + neg = true; + x = -x; + } + int j = 11; + buffer[len + j--] = '\n'; + do { + buffer[len + j--] = (x % 10) + '0'; + x /= 10; + } while (x > 0); + if (neg) buffer[len + j--] = '-'; + while (j >= 0) buffer[len + j--] = ' '; + } + + /* + len = 0; + + __m256i highestbit = _mm256_set1_epi32(1 << 32); + __m256i zero = _mm256_set1_epi32(0); + __m256i lens = _mm256_set_epi32(0 * 12, + 1 * 12, + 2 * 12, + 3 * 12, + 4 * 12, + 5 * 12, + 6 * 12, + 7 * 12); + __m256i lenoffset = _mm256_set1_epi(8 * 12); + + for (int i = 0; i < n; i += 8) { + // long x = xs[i] ^ (1 << 31); + __m256i xx = _mm256_load_si256(&xs[i]); + xx = _mm256_xor_si256(xx, highestbit); + // bool neg = false; + // if (x < 0) { + // neg = true; + // x = -x; + // } + __m256i negs = _mm256_cmpgt(zero, xx); + xx = _mm256_abs_epi64(xx); + // todo... + int j = 11; + buffer[len + j--] = '\n'; + do { + buffer[len + j--] = (x % 10) + '0'; + x /= 10; + } while (x > 0); + if (neg) buffer[len + j--] = '-'; + while (j >= 0) buffer[len + j--] = ' '; + + // len += 8 * 12 + lens = _mm256_add_epi32(lens, lenoffset); + } + */ + /* ssize_t c = 0; */ + /* while (c < len) c += write(1, &buffer[c], len - c); */ + write(1, buffer, len); +} diff --git a/kattis-kth-alginda-quicksort/src/main.rs b/kattis-kth-alginda-quicksort/src/main.rs new file mode 100644 index 0000000..67646b3 --- /dev/null +++ b/kattis-kth-alginda-quicksort/src/main.rs @@ -0,0 +1,28 @@ +// https://kth.kattis.com/problems/kth.alginda.quicksort + +#![feature(test)] + +use std::fmt::Write; +use std::io::{stdin, Read}; + +mod radix_sort; + +use radix_sort::radix_sort; + +fn main() { + let mut buffer = String::new(); + stdin().lock().read_to_string(&mut buffer).unwrap(); + let xs: Vec<i32> = buffer + .split_ascii_whitespace() + .skip(1) + .map(|x| x.parse().unwrap()) + .collect(); + + let xs = radix_sort(xs); + + buffer.clear(); + for x in xs { + writeln!(buffer, "{}", x).unwrap(); + } + print!("{}", buffer); +} diff --git a/kattis-kth-alginda-quicksort/src/radix_sort.rs b/kattis-kth-alginda-quicksort/src/radix_sort.rs new file mode 100644 index 0000000..e7d4e02 --- /dev/null +++ b/kattis-kth-alginda-quicksort/src/radix_sort.rs @@ -0,0 +1,141 @@ +use std::mem; + +pub trait RadixFilters: 'static { + const FILTERS: &'static [fn(&Self) -> u8]; +} + +impl RadixFilters for u32 { + const FILTERS: &'static [fn(&Self) -> u8] = &[ + |x| ((x & 0x000000ff) >> (8 * 0)) as _, + |x| ((x & 0x0000ff00) >> (8 * 1)) as _, + |x| ((x & 0x00ff0000) >> (8 * 2)) as _, + |x| ((x & 0xff000000) >> (8 * 3)) as _, + ]; +} + +impl RadixFilters for i32 { + const FILTERS: &'static [fn(&Self) -> u8] = &[ + |x| ((x & 0x000000ff) >> (8 * 0)) as _, + |x| ((x & 0x0000ff00) >> (8 * 1)) as _, + |x| ((x & 0x00ff0000) >> (8 * 2)) as _, + |x| (((x & 0xff000000u32 as i32) ^ (1 << 31)) >> (8 * 3)) as _, + ]; +} + +impl RadixFilters for u64 { + const FILTERS: &'static [fn(&Self) -> u8] = &[ + |x| ((x & 0x00000000000000ff) >> (8 * 0)) as _, + |x| ((x & 0x000000000000ff00) >> (8 * 1)) as _, + |x| ((x & 0x0000000000ff0000) >> (8 * 2)) as _, + |x| ((x & 0x00000000ff000000) >> (8 * 3)) as _, + |x| ((x & 0x000000ff00000000) >> (8 * 4)) as _, + |x| ((x & 0x0000ff0000000000) >> (8 * 5)) as _, + |x| ((x & 0x00ff000000000000) >> (8 * 6)) as _, + |x| ((x & 0xff00000000000000) >> (8 * 7)) as _, + ]; +} + +pub fn radix_sort<T>(xs: Vec<T>) -> Vec<T> +where + T: Default + Copy + Clone + RadixFilters, +{ + // The first thing that happens it that these two are swapped so thats why this seems backwards + let mut output = xs; + let mut input = vec![T::default(); output.len()]; + for f in T::FILTERS { + mem::swap(&mut input, &mut output); + + let mut counts = [0; 256]; + for x in &input { + counts[f(x) as usize] += 1; + } + let mut sum = 0; + for c in &mut counts { + sum += *c; + *c = sum; + } + for x in input.iter_mut().rev() { + let fx = f(x) as usize; + counts[fx] -= 1; + output[counts[fx]] = *x; + } + } + output +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn basic_rand() { + let mut r = rand_pcg::Pcg32::new(0xcafef00dd15ea5e5, 0xa02bdbf7bb3c0a7); + let xs: Vec<u32> = (0..1_000_000).map(|_| r.next_u32()).collect(); + + let xs = radix_sort(xs); + for w in xs.as_slice().windows(2) { + assert!(w[0] <= w[1]); + } + } + + #[test] + fn negatives() { + let mut r = rand_pcg::Pcg32::new(0xcafef00dd15ea5e5, 0xa02bdbf7bb3c0a7); + let xs: Vec<i32> = (0..1_000_000).map(|_| r.next_u32() as i32).collect(); + + let xs = radix_sort(xs); + for w in xs.as_slice().windows(2) { + assert!(w[0] <= w[1], "{} <= {}", w[0], w[1]); + } + } + + extern crate test; + use rand::RngCore; + use test::{black_box, Bencher}; + + #[bench] + fn std_u32_x1e6(b: &mut Bencher) { + let mut r = rand_pcg::Pcg32::new(0xcafef00dd15ea5e5, 0xa02bdbf7bb3c0a7); + let xs: Vec<u32> = (0..1_000_000).map(|_| r.next_u32()).collect(); + + b.iter(|| { + let mut xs = black_box(xs.clone()); + xs.sort(); + black_box(xs); + }); + } + + #[bench] + fn radix_u32_x1e6(b: &mut Bencher) { + let mut r = rand_pcg::Pcg32::new(0xcafef00dd15ea5e5, 0xa02bdbf7bb3c0a7); + let xs: Vec<u32> = (0..1_000_000).map(|_| r.next_u32()).collect(); + + b.iter(|| { + let xs = black_box(xs.clone()); + black_box(radix_sort(xs)); + }); + } + + #[bench] + fn std_u64_x1e6(b: &mut Bencher) { + let mut r = rand_pcg::Pcg32::new(0xcafef00dd15ea5e5, 0xa02bdbf7bb3c0a7); + let xs: Vec<u64> = (0..1_000_000).map(|_| r.next_u64()).collect(); + + b.iter(|| { + let mut xs = black_box(xs.clone()); + xs.sort(); + black_box(xs); + }); + } + + #[bench] + fn radix_u64_x1e6(b: &mut Bencher) { + let mut r = rand_pcg::Pcg32::new(0xcafef00dd15ea5e5, 0xa02bdbf7bb3c0a7); + let xs: Vec<u64> = (0..1_000_000).map(|_| r.next_u64()).collect(); + + b.iter(|| { + let xs = black_box(xs.clone()); + black_box(radix_sort(xs)); + }); + } +} diff --git a/kattis-kth-alginda-quicksort/test.fish b/kattis-kth-alginda-quicksort/test.fish new file mode 100755 index 0000000..6aaf60c --- /dev/null +++ b/kattis-kth-alginda-quicksort/test.fish @@ -0,0 +1,10 @@ +#!/bin/fish + +echo hej > out_c +echo hej > out_r + +while diff out_c out_r + python gen.py -2147483648 2147483647 600000 > max + time ./radix < max > out_r + time ~/.cache/target/release/kattis-kth-alginda-quicksort < max > out_c +end diff --git a/kattis-kth-javap-windows/Cargo.lock b/kattis-kth-javap-windows/Cargo.lock new file mode 100644 index 0000000..780a06b --- /dev/null +++ b/kattis-kth-javap-windows/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "kattis-kth-javap-windows" +version = "0.1.0" diff --git a/kattis-kth-javap-windows/Cargo.toml b/kattis-kth-javap-windows/Cargo.toml new file mode 100644 index 0000000..230d61e --- /dev/null +++ b/kattis-kth-javap-windows/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "kattis-kth-javap-windows" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/kattis-kth-javap-windows/input b/kattis-kth-javap-windows/input new file mode 100644 index 0000000..7a0afaa --- /dev/null +++ b/kattis-kth-javap-windows/input @@ -0,0 +1,1001 @@ +1000 +1 1 8001 8001 +3 3 8003 8003 +5 5 8005 8005 +7 7 8007 8007 +9 9 8009 8009 +11 11 8011 8011 +13 13 8013 8013 +15 15 8015 8015 +17 17 8017 8017 +19 19 8019 8019 +21 21 8021 8021 +23 23 8023 8023 +25 25 8025 8025 +27 27 8027 8027 +29 29 8029 8029 +31 31 8031 8031 +33 33 8033 8033 +35 35 8035 8035 +37 37 8037 8037 +39 39 8039 8039 +41 41 8041 8041 +43 43 8043 8043 +45 45 8045 8045 +47 47 8047 8047 +49 49 8049 8049 +51 51 8051 8051 +53 53 8053 8053 +55 55 8055 8055 +57 57 8057 8057 +59 59 8059 8059 +61 61 8061 8061 +63 63 8063 8063 +65 65 8065 8065 +67 67 8067 8067 +69 69 8069 8069 +71 71 8071 8071 +73 73 8073 8073 +75 75 8075 8075 +77 77 8077 8077 +79 79 8079 8079 +81 81 8081 8081 +83 83 8083 8083 +85 85 8085 8085 +87 87 8087 8087 +89 89 8089 8089 +91 91 8091 8091 +93 93 8093 8093 +95 95 8095 8095 +97 97 8097 8097 +99 99 8099 8099 +101 101 8101 8101 +103 103 8103 8103 +105 105 8105 8105 +107 107 8107 8107 +109 109 8109 8109 +111 111 8111 8111 +113 113 8113 8113 +115 115 8115 8115 +117 117 8117 8117 +119 119 8119 8119 +121 121 8121 8121 +123 123 8123 8123 +125 125 8125 8125 +127 127 8127 8127 +129 129 8129 8129 +131 131 8131 8131 +133 133 8133 8133 +135 135 8135 8135 +137 137 8137 8137 +139 139 8139 8139 +141 141 8141 8141 +143 143 8143 8143 +145 145 8145 8145 +147 147 8147 8147 +149 149 8149 8149 +151 151 8151 8151 +153 153 8153 8153 +155 155 8155 8155 +157 157 8157 8157 +159 159 8159 8159 +161 161 8161 8161 +163 163 8163 8163 +165 165 8165 8165 +167 167 8167 8167 +169 169 8169 8169 +171 171 8171 8171 +173 173 8173 8173 +175 175 8175 8175 +177 177 8177 8177 +179 179 8179 8179 +181 181 8181 8181 +183 183 8183 8183 +185 185 8185 8185 +187 187 8187 8187 +189 189 8189 8189 +191 191 8191 8191 +193 193 8193 8193 +195 195 8195 8195 +197 197 8197 8197 +199 199 8199 8199 +201 201 8201 8201 +203 203 8203 8203 +205 205 8205 8205 +207 207 8207 8207 +209 209 8209 8209 +211 211 8211 8211 +213 213 8213 8213 +215 215 8215 8215 +217 217 8217 8217 +219 219 8219 8219 +221 221 8221 8221 +223 223 8223 8223 +225 225 8225 8225 +227 227 8227 8227 +229 229 8229 8229 +231 231 8231 8231 +233 233 8233 8233 +235 235 8235 8235 +237 237 8237 8237 +239 239 8239 8239 +241 241 8241 8241 +243 243 8243 8243 +245 245 8245 8245 +247 247 8247 8247 +249 249 8249 8249 +251 251 8251 8251 +253 253 8253 8253 +255 255 8255 8255 +257 257 8257 8257 +259 259 8259 8259 +261 261 8261 8261 +263 263 8263 8263 +265 265 8265 8265 +267 267 8267 8267 +269 269 8269 8269 +271 271 8271 8271 +273 273 8273 8273 +275 275 8275 8275 +277 277 8277 8277 +279 279 8279 8279 +281 281 8281 8281 +283 283 8283 8283 +285 285 8285 8285 +287 287 8287 8287 +289 289 8289 8289 +291 291 8291 8291 +293 293 8293 8293 +295 295 8295 8295 +297 297 8297 8297 +299 299 8299 8299 +301 301 8301 8301 +303 303 8303 8303 +305 305 8305 8305 +307 307 8307 8307 +309 309 8309 8309 +311 311 8311 8311 +313 313 8313 8313 +315 315 8315 8315 +317 317 8317 8317 +319 319 8319 8319 +321 321 8321 8321 +323 323 8323 8323 +325 325 8325 8325 +327 327 8327 8327 +329 329 8329 8329 +331 331 8331 8331 +333 333 8333 8333 +335 335 8335 8335 +337 337 8337 8337 +339 339 8339 8339 +341 341 8341 8341 +343 343 8343 8343 +345 345 8345 8345 +347 347 8347 8347 +349 349 8349 8349 +351 351 8351 8351 +353 353 8353 8353 +355 355 8355 8355 +357 357 8357 8357 +359 359 8359 8359 +361 361 8361 8361 +363 363 8363 8363 +365 365 8365 8365 +367 367 8367 8367 +369 369 8369 8369 +371 371 8371 8371 +373 373 8373 8373 +375 375 8375 8375 +377 377 8377 8377 +379 379 8379 8379 +381 381 8381 8381 +383 383 8383 8383 +385 385 8385 8385 +387 387 8387 8387 +389 389 8389 8389 +391 391 8391 8391 +393 393 8393 8393 +395 395 8395 8395 +397 397 8397 8397 +399 399 8399 8399 +401 401 8401 8401 +403 403 8403 8403 +405 405 8405 8405 +407 407 8407 8407 +409 409 8409 8409 +411 411 8411 8411 +413 413 8413 8413 +415 415 8415 8415 +417 417 8417 8417 +419 419 8419 8419 +421 421 8421 8421 +423 423 8423 8423 +425 425 8425 8425 +427 427 8427 8427 +429 429 8429 8429 +431 431 8431 8431 +433 433 8433 8433 +435 435 8435 8435 +437 437 8437 8437 +439 439 8439 8439 +441 441 8441 8441 +443 443 8443 8443 +445 445 8445 8445 +447 447 8447 8447 +449 449 8449 8449 +451 451 8451 8451 +453 453 8453 8453 +455 455 8455 8455 +457 457 8457 8457 +459 459 8459 8459 +461 461 8461 8461 +463 463 8463 8463 +465 465 8465 8465 +467 467 8467 8467 +469 469 8469 8469 +471 471 8471 8471 +473 473 8473 8473 +475 475 8475 8475 +477 477 8477 8477 +479 479 8479 8479 +481 481 8481 8481 +483 483 8483 8483 +485 485 8485 8485 +487 487 8487 8487 +489 489 8489 8489 +491 491 8491 8491 +493 493 8493 8493 +495 495 8495 8495 +497 497 8497 8497 +499 499 8499 8499 +501 501 8501 8501 +503 503 8503 8503 +505 505 8505 8505 +507 507 8507 8507 +509 509 8509 8509 +511 511 8511 8511 +513 513 8513 8513 +515 515 8515 8515 +517 517 8517 8517 +519 519 8519 8519 +521 521 8521 8521 +523 523 8523 8523 +525 525 8525 8525 +527 527 8527 8527 +529 529 8529 8529 +531 531 8531 8531 +533 533 8533 8533 +535 535 8535 8535 +537 537 8537 8537 +539 539 8539 8539 +541 541 8541 8541 +543 543 8543 8543 +545 545 8545 8545 +547 547 8547 8547 +549 549 8549 8549 +551 551 8551 8551 +553 553 8553 8553 +555 555 8555 8555 +557 557 8557 8557 +559 559 8559 8559 +561 561 8561 8561 +563 563 8563 8563 +565 565 8565 8565 +567 567 8567 8567 +569 569 8569 8569 +571 571 8571 8571 +573 573 8573 8573 +575 575 8575 8575 +577 577 8577 8577 +579 579 8579 8579 +581 581 8581 8581 +583 583 8583 8583 +585 585 8585 8585 +587 587 8587 8587 +589 589 8589 8589 +591 591 8591 8591 +593 593 8593 8593 +595 595 8595 8595 +597 597 8597 8597 +599 599 8599 8599 +601 601 8601 8601 +603 603 8603 8603 +605 605 8605 8605 +607 607 8607 8607 +609 609 8609 8609 +611 611 8611 8611 +613 613 8613 8613 +615 615 8615 8615 +617 617 8617 8617 +619 619 8619 8619 +621 621 8621 8621 +623 623 8623 8623 +625 625 8625 8625 +627 627 8627 8627 +629 629 8629 8629 +631 631 8631 8631 +633 633 8633 8633 +635 635 8635 8635 +637 637 8637 8637 +639 639 8639 8639 +641 641 8641 8641 +643 643 8643 8643 +645 645 8645 8645 +647 647 8647 8647 +649 649 8649 8649 +651 651 8651 8651 +653 653 8653 8653 +655 655 8655 8655 +657 657 8657 8657 +659 659 8659 8659 +661 661 8661 8661 +663 663 8663 8663 +665 665 8665 8665 +667 667 8667 8667 +669 669 8669 8669 +671 671 8671 8671 +673 673 8673 8673 +675 675 8675 8675 +677 677 8677 8677 +679 679 8679 8679 +681 681 8681 8681 +683 683 8683 8683 +685 685 8685 8685 +687 687 8687 8687 +689 689 8689 8689 +691 691 8691 8691 +693 693 8693 8693 +695 695 8695 8695 +697 697 8697 8697 +699 699 8699 8699 +701 701 8701 8701 +703 703 8703 8703 +705 705 8705 8705 +707 707 8707 8707 +709 709 8709 8709 +711 711 8711 8711 +713 713 8713 8713 +715 715 8715 8715 +717 717 8717 8717 +719 719 8719 8719 +721 721 8721 8721 +723 723 8723 8723 +725 725 8725 8725 +727 727 8727 8727 +729 729 8729 8729 +731 731 8731 8731 +733 733 8733 8733 +735 735 8735 8735 +737 737 8737 8737 +739 739 8739 8739 +741 741 8741 8741 +743 743 8743 8743 +745 745 8745 8745 +747 747 8747 8747 +749 749 8749 8749 +751 751 8751 8751 +753 753 8753 8753 +755 755 8755 8755 +757 757 8757 8757 +759 759 8759 8759 +761 761 8761 8761 +763 763 8763 8763 +765 765 8765 8765 +767 767 8767 8767 +769 769 8769 8769 +771 771 8771 8771 +773 773 8773 8773 +775 775 8775 8775 +777 777 8777 8777 +779 779 8779 8779 +781 781 8781 8781 +783 783 8783 8783 +785 785 8785 8785 +787 787 8787 8787 +789 789 8789 8789 +791 791 8791 8791 +793 793 8793 8793 +795 795 8795 8795 +797 797 8797 8797 +799 799 8799 8799 +801 801 8801 8801 +803 803 8803 8803 +805 805 8805 8805 +807 807 8807 8807 +809 809 8809 8809 +811 811 8811 8811 +813 813 8813 8813 +815 815 8815 8815 +817 817 8817 8817 +819 819 8819 8819 +821 821 8821 8821 +823 823 8823 8823 +825 825 8825 8825 +827 827 8827 8827 +829 829 8829 8829 +831 831 8831 8831 +833 833 8833 8833 +835 835 8835 8835 +837 837 8837 8837 +839 839 8839 8839 +841 841 8841 8841 +843 843 8843 8843 +845 845 8845 8845 +847 847 8847 8847 +849 849 8849 8849 +851 851 8851 8851 +853 853 8853 8853 +855 855 8855 8855 +857 857 8857 8857 +859 859 8859 8859 +861 861 8861 8861 +863 863 8863 8863 +865 865 8865 8865 +867 867 8867 8867 +869 869 8869 8869 +871 871 8871 8871 +873 873 8873 8873 +875 875 8875 8875 +877 877 8877 8877 +879 879 8879 8879 +881 881 8881 8881 +883 883 8883 8883 +885 885 8885 8885 +887 887 8887 8887 +889 889 8889 8889 +891 891 8891 8891 +893 893 8893 8893 +895 895 8895 8895 +897 897 8897 8897 +899 899 8899 8899 +901 901 8901 8901 +903 903 8903 8903 +905 905 8905 8905 +907 907 8907 8907 +909 909 8909 8909 +911 911 8911 8911 +913 913 8913 8913 +915 915 8915 8915 +917 917 8917 8917 +919 919 8919 8919 +921 921 8921 8921 +923 923 8923 8923 +925 925 8925 8925 +927 927 8927 8927 +929 929 8929 8929 +931 931 8931 8931 +933 933 8933 8933 +935 935 8935 8935 +937 937 8937 8937 +939 939 8939 8939 +941 941 8941 8941 +943 943 8943 8943 +945 945 8945 8945 +947 947 8947 8947 +949 949 8949 8949 +951 951 8951 8951 +953 953 8953 8953 +955 955 8955 8955 +957 957 8957 8957 +959 959 8959 8959 +961 961 8961 8961 +963 963 8963 8963 +965 965 8965 8965 +967 967 8967 8967 +969 969 8969 8969 +971 971 8971 8971 +973 973 8973 8973 +975 975 8975 8975 +977 977 8977 8977 +979 979 8979 8979 +981 981 8981 8981 +983 983 8983 8983 +985 985 8985 8985 +987 987 8987 8987 +989 989 8989 8989 +991 991 8991 8991 +993 993 8993 8993 +995 995 8995 8995 +997 997 8997 8997 +999 999 8999 8999 +1001 1001 9001 9001 +1003 1003 9003 9003 +1005 1005 9005 9005 +1007 1007 9007 9007 +1009 1009 9009 9009 +1011 1011 9011 9011 +1013 1013 9013 9013 +1015 1015 9015 9015 +1017 1017 9017 9017 +1019 1019 9019 9019 +1021 1021 9021 9021 +1023 1023 9023 9023 +1025 1025 9025 9025 +1027 1027 9027 9027 +1029 1029 9029 9029 +1031 1031 9031 9031 +1033 1033 9033 9033 +1035 1035 9035 9035 +1037 1037 9037 9037 +1039 1039 9039 9039 +1041 1041 9041 9041 +1043 1043 9043 9043 +1045 1045 9045 9045 +1047 1047 9047 9047 +1049 1049 9049 9049 +1051 1051 9051 9051 +1053 1053 9053 9053 +1055 1055 9055 9055 +1057 1057 9057 9057 +1059 1059 9059 9059 +1061 1061 9061 9061 +1063 1063 9063 9063 +1065 1065 9065 9065 +1067 1067 9067 9067 +1069 1069 9069 9069 +1071 1071 9071 9071 +1073 1073 9073 9073 +1075 1075 9075 9075 +1077 1077 9077 9077 +1079 1079 9079 9079 +1081 1081 9081 9081 +1083 1083 9083 9083 +1085 1085 9085 9085 +1087 1087 9087 9087 +1089 1089 9089 9089 +1091 1091 9091 9091 +1093 1093 9093 9093 +1095 1095 9095 9095 +1097 1097 9097 9097 +1099 1099 9099 9099 +1101 1101 9101 9101 +1103 1103 9103 9103 +1105 1105 9105 9105 +1107 1107 9107 9107 +1109 1109 9109 9109 +1111 1111 9111 9111 +1113 1113 9113 9113 +1115 1115 9115 9115 +1117 1117 9117 9117 +1119 1119 9119 9119 +1121 1121 9121 9121 +1123 1123 9123 9123 +1125 1125 9125 9125 +1127 1127 9127 9127 +1129 1129 9129 9129 +1131 1131 9131 9131 +1133 1133 9133 9133 +1135 1135 9135 9135 +1137 1137 9137 9137 +1139 1139 9139 9139 +1141 1141 9141 9141 +1143 1143 9143 9143 +1145 1145 9145 9145 +1147 1147 9147 9147 +1149 1149 9149 9149 +1151 1151 9151 9151 +1153 1153 9153 9153 +1155 1155 9155 9155 +1157 1157 9157 9157 +1159 1159 9159 9159 +1161 1161 9161 9161 +1163 1163 9163 9163 +1165 1165 9165 9165 +1167 1167 9167 9167 +1169 1169 9169 9169 +1171 1171 9171 9171 +1173 1173 9173 9173 +1175 1175 9175 9175 +1177 1177 9177 9177 +1179 1179 9179 9179 +1181 1181 9181 9181 +1183 1183 9183 9183 +1185 1185 9185 9185 +1187 1187 9187 9187 +1189 1189 9189 9189 +1191 1191 9191 9191 +1193 1193 9193 9193 +1195 1195 9195 9195 +1197 1197 9197 9197 +1199 1199 9199 9199 +1201 1201 9201 9201 +1203 1203 9203 9203 +1205 1205 9205 9205 +1207 1207 9207 9207 +1209 1209 9209 9209 +1211 1211 9211 9211 +1213 1213 9213 9213 +1215 1215 9215 9215 +1217 1217 9217 9217 +1219 1219 9219 9219 +1221 1221 9221 9221 +1223 1223 9223 9223 +1225 1225 9225 9225 +1227 1227 9227 9227 +1229 1229 9229 9229 +1231 1231 9231 9231 +1233 1233 9233 9233 +1235 1235 9235 9235 +1237 1237 9237 9237 +1239 1239 9239 9239 +1241 1241 9241 9241 +1243 1243 9243 9243 +1245 1245 9245 9245 +1247 1247 9247 9247 +1249 1249 9249 9249 +1251 1251 9251 9251 +1253 1253 9253 9253 +1255 1255 9255 9255 +1257 1257 9257 9257 +1259 1259 9259 9259 +1261 1261 9261 9261 +1263 1263 9263 9263 +1265 1265 9265 9265 +1267 1267 9267 9267 +1269 1269 9269 9269 +1271 1271 9271 9271 +1273 1273 9273 9273 +1275 1275 9275 9275 +1277 1277 9277 9277 +1279 1279 9279 9279 +1281 1281 9281 9281 +1283 1283 9283 9283 +1285 1285 9285 9285 +1287 1287 9287 9287 +1289 1289 9289 9289 +1291 1291 9291 9291 +1293 1293 9293 9293 +1295 1295 9295 9295 +1297 1297 9297 9297 +1299 1299 9299 9299 +1301 1301 9301 9301 +1303 1303 9303 9303 +1305 1305 9305 9305 +1307 1307 9307 9307 +1309 1309 9309 9309 +1311 1311 9311 9311 +1313 1313 9313 9313 +1315 1315 9315 9315 +1317 1317 9317 9317 +1319 1319 9319 9319 +1321 1321 9321 9321 +1323 1323 9323 9323 +1325 1325 9325 9325 +1327 1327 9327 9327 +1329 1329 9329 9329 +1331 1331 9331 9331 +1333 1333 9333 9333 +1335 1335 9335 9335 +1337 1337 9337 9337 +1339 1339 9339 9339 +1341 1341 9341 9341 +1343 1343 9343 9343 +1345 1345 9345 9345 +1347 1347 9347 9347 +1349 1349 9349 9349 +1351 1351 9351 9351 +1353 1353 9353 9353 +1355 1355 9355 9355 +1357 1357 9357 9357 +1359 1359 9359 9359 +1361 1361 9361 9361 +1363 1363 9363 9363 +1365 1365 9365 9365 +1367 1367 9367 9367 +1369 1369 9369 9369 +1371 1371 9371 9371 +1373 1373 9373 9373 +1375 1375 9375 9375 +1377 1377 9377 9377 +1379 1379 9379 9379 +1381 1381 9381 9381 +1383 1383 9383 9383 +1385 1385 9385 9385 +1387 1387 9387 9387 +1389 1389 9389 9389 +1391 1391 9391 9391 +1393 1393 9393 9393 +1395 1395 9395 9395 +1397 1397 9397 9397 +1399 1399 9399 9399 +1401 1401 9401 9401 +1403 1403 9403 9403 +1405 1405 9405 9405 +1407 1407 9407 9407 +1409 1409 9409 9409 +1411 1411 9411 9411 +1413 1413 9413 9413 +1415 1415 9415 9415 +1417 1417 9417 9417 +1419 1419 9419 9419 +1421 1421 9421 9421 +1423 1423 9423 9423 +1425 1425 9425 9425 +1427 1427 9427 9427 +1429 1429 9429 9429 +1431 1431 9431 9431 +1433 1433 9433 9433 +1435 1435 9435 9435 +1437 1437 9437 9437 +1439 1439 9439 9439 +1441 1441 9441 9441 +1443 1443 9443 9443 +1445 1445 9445 9445 +1447 1447 9447 9447 +1449 1449 9449 9449 +1451 1451 9451 9451 +1453 1453 9453 9453 +1455 1455 9455 9455 +1457 1457 9457 9457 +1459 1459 9459 9459 +1461 1461 9461 9461 +1463 1463 9463 9463 +1465 1465 9465 9465 +1467 1467 9467 9467 +1469 1469 9469 9469 +1471 1471 9471 9471 +1473 1473 9473 9473 +1475 1475 9475 9475 +1477 1477 9477 9477 +1479 1479 9479 9479 +1481 1481 9481 9481 +1483 1483 9483 9483 +1485 1485 9485 9485 +1487 1487 9487 9487 +1489 1489 9489 9489 +1491 1491 9491 9491 +1493 1493 9493 9493 +1495 1495 9495 9495 +1497 1497 9497 9497 +1499 1499 9499 9499 +1501 1501 9501 9501 +1503 1503 9503 9503 +1505 1505 9505 9505 +1507 1507 9507 9507 +1509 1509 9509 9509 +1511 1511 9511 9511 +1513 1513 9513 9513 +1515 1515 9515 9515 +1517 1517 9517 9517 +1519 1519 9519 9519 +1521 1521 9521 9521 +1523 1523 9523 9523 +1525 1525 9525 9525 +1527 1527 9527 9527 +1529 1529 9529 9529 +1531 1531 9531 9531 +1533 1533 9533 9533 +1535 1535 9535 9535 +1537 1537 9537 9537 +1539 1539 9539 9539 +1541 1541 9541 9541 +1543 1543 9543 9543 +1545 1545 9545 9545 +1547 1547 9547 9547 +1549 1549 9549 9549 +1551 1551 9551 9551 +1553 1553 9553 9553 +1555 1555 9555 9555 +1557 1557 9557 9557 +1559 1559 9559 9559 +1561 1561 9561 9561 +1563 1563 9563 9563 +1565 1565 9565 9565 +1567 1567 9567 9567 +1569 1569 9569 9569 +1571 1571 9571 9571 +1573 1573 9573 9573 +1575 1575 9575 9575 +1577 1577 9577 9577 +1579 1579 9579 9579 +1581 1581 9581 9581 +1583 1583 9583 9583 +1585 1585 9585 9585 +1587 1587 9587 9587 +1589 1589 9589 9589 +1591 1591 9591 9591 +1593 1593 9593 9593 +1595 1595 9595 9595 +1597 1597 9597 9597 +1599 1599 9599 9599 +1601 1601 9601 9601 +1603 1603 9603 9603 +1605 1605 9605 9605 +1607 1607 9607 9607 +1609 1609 9609 9609 +1611 1611 9611 9611 +1613 1613 9613 9613 +1615 1615 9615 9615 +1617 1617 9617 9617 +1619 1619 9619 9619 +1621 1621 9621 9621 +1623 1623 9623 9623 +1625 1625 9625 9625 +1627 1627 9627 9627 +1629 1629 9629 9629 +1631 1631 9631 9631 +1633 1633 9633 9633 +1635 1635 9635 9635 +1637 1637 9637 9637 +1639 1639 9639 9639 +1641 1641 9641 9641 +1643 1643 9643 9643 +1645 1645 9645 9645 +1647 1647 9647 9647 +1649 1649 9649 9649 +1651 1651 9651 9651 +1653 1653 9653 9653 +1655 1655 9655 9655 +1657 1657 9657 9657 +1659 1659 9659 9659 +1661 1661 9661 9661 +1663 1663 9663 9663 +1665 1665 9665 9665 +1667 1667 9667 9667 +1669 1669 9669 9669 +1671 1671 9671 9671 +1673 1673 9673 9673 +1675 1675 9675 9675 +1677 1677 9677 9677 +1679 1679 9679 9679 +1681 1681 9681 9681 +1683 1683 9683 9683 +1685 1685 9685 9685 +1687 1687 9687 9687 +1689 1689 9689 9689 +1691 1691 9691 9691 +1693 1693 9693 9693 +1695 1695 9695 9695 +1697 1697 9697 9697 +1699 1699 9699 9699 +1701 1701 9701 9701 +1703 1703 9703 9703 +1705 1705 9705 9705 +1707 1707 9707 9707 +1709 1709 9709 9709 +1711 1711 9711 9711 +1713 1713 9713 9713 +1715 1715 9715 9715 +1717 1717 9717 9717 +1719 1719 9719 9719 +1721 1721 9721 9721 +1723 1723 9723 9723 +1725 1725 9725 9725 +1727 1727 9727 9727 +1729 1729 9729 9729 +1731 1731 9731 9731 +1733 1733 9733 9733 +1735 1735 9735 9735 +1737 1737 9737 9737 +1739 1739 9739 9739 +1741 1741 9741 9741 +1743 1743 9743 9743 +1745 1745 9745 9745 +1747 1747 9747 9747 +1749 1749 9749 9749 +1751 1751 9751 9751 +1753 1753 9753 9753 +1755 1755 9755 9755 +1757 1757 9757 9757 +1759 1759 9759 9759 +1761 1761 9761 9761 +1763 1763 9763 9763 +1765 1765 9765 9765 +1767 1767 9767 9767 +1769 1769 9769 9769 +1771 1771 9771 9771 +1773 1773 9773 9773 +1775 1775 9775 9775 +1777 1777 9777 9777 +1779 1779 9779 9779 +1781 1781 9781 9781 +1783 1783 9783 9783 +1785 1785 9785 9785 +1787 1787 9787 9787 +1789 1789 9789 9789 +1791 1791 9791 9791 +1793 1793 9793 9793 +1795 1795 9795 9795 +1797 1797 9797 9797 +1799 1799 9799 9799 +1801 1801 9801 9801 +1803 1803 9803 9803 +1805 1805 9805 9805 +1807 1807 9807 9807 +1809 1809 9809 9809 +1811 1811 9811 9811 +1813 1813 9813 9813 +1815 1815 9815 9815 +1817 1817 9817 9817 +1819 1819 9819 9819 +1821 1821 9821 9821 +1823 1823 9823 9823 +1825 1825 9825 9825 +1827 1827 9827 9827 +1829 1829 9829 9829 +1831 1831 9831 9831 +1833 1833 9833 9833 +1835 1835 9835 9835 +1837 1837 9837 9837 +1839 1839 9839 9839 +1841 1841 9841 9841 +1843 1843 9843 9843 +1845 1845 9845 9845 +1847 1847 9847 9847 +1849 1849 9849 9849 +1851 1851 9851 9851 +1853 1853 9853 9853 +1855 1855 9855 9855 +1857 1857 9857 9857 +1859 1859 9859 9859 +1861 1861 9861 9861 +1863 1863 9863 9863 +1865 1865 9865 9865 +1867 1867 9867 9867 +1869 1869 9869 9869 +1871 1871 9871 9871 +1873 1873 9873 9873 +1875 1875 9875 9875 +1877 1877 9877 9877 +1879 1879 9879 9879 +1881 1881 9881 9881 +1883 1883 9883 9883 +1885 1885 9885 9885 +1887 1887 9887 9887 +1889 1889 9889 9889 +1891 1891 9891 9891 +1893 1893 9893 9893 +1895 1895 9895 9895 +1897 1897 9897 9897 +1899 1899 9899 9899 +1901 1901 9901 9901 +1903 1903 9903 9903 +1905 1905 9905 9905 +1907 1907 9907 9907 +1909 1909 9909 9909 +1911 1911 9911 9911 +1913 1913 9913 9913 +1915 1915 9915 9915 +1917 1917 9917 9917 +1919 1919 9919 9919 +1921 1921 9921 9921 +1923 1923 9923 9923 +1925 1925 9925 9925 +1927 1927 9927 9927 +1929 1929 9929 9929 +1931 1931 9931 9931 +1933 1933 9933 9933 +1935 1935 9935 9935 +1937 1937 9937 9937 +1939 1939 9939 9939 +1941 1941 9941 9941 +1943 1943 9943 9943 +1945 1945 9945 9945 +1947 1947 9947 9947 +1949 1949 9949 9949 +1951 1951 9951 9951 +1953 1953 9953 9953 +1955 1955 9955 9955 +1957 1957 9957 9957 +1959 1959 9959 9959 +1961 1961 9961 9961 +1963 1963 9963 9963 +1965 1965 9965 9965 +1967 1967 9967 9967 +1969 1969 9969 9969 +1971 1971 9971 9971 +1973 1973 9973 9973 +1975 1975 9975 9975 +1977 1977 9977 9977 +1979 1979 9979 9979 +1981 1981 9981 9981 +1983 1983 9983 9983 +1985 1985 9985 9985 +1987 1987 9987 9987 +1989 1989 9989 9989 +1991 1991 9991 9991 +1993 1993 9993 9993 +1995 1995 9995 9995 +1997 1997 9997 9997 +1999 1999 9999 9999 diff --git a/kattis-kth-javap-windows/src/main.rs b/kattis-kth-javap-windows/src/main.rs new file mode 100644 index 0000000..f10ba56 --- /dev/null +++ b/kattis-kth-javap-windows/src/main.rs @@ -0,0 +1,119 @@ +// https://kth.kattis.com/problems/kth.javap.windows + +use std::{ + io::{stdin, Read}, + iter::repeat, +}; + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +enum Tile { + Covered, + Empty, + Split(u32), +} +use Tile::*; + +trait Tiles { + fn fill(&mut self, i: u32, tile: Coord, coord: Coord); + fn count(&self, i: u32, tile: Coord) -> usize; +} + +impl Tiles for Vec<Tile> { + fn fill(&mut self, i: u32, tile: Coord, coord: Coord) { + if self[i as usize] == Covered { + return; + } + if coord.x2 <= tile.x1 || coord.x1 >= tile.x2 || coord.y2 <= tile.y1 || coord.y1 >= tile.y2 + { + return; + } + if coord.x1 <= tile.x1 && coord.x2 >= tile.x2 && coord.y1 <= tile.y1 && coord.y2 >= tile.y2 + { + self[i as usize] = Covered; + return; + } + let c = match self[i as usize] { + Empty => { + let c = self.len() as u32; + self[i as usize] = Split(c); + self.extend(repeat(Empty).take(4)); + c + } + Split(c) => c, + _ => unreachable!(), + }; + for q in 0..4 { + self.fill(c + q, tile.quadrant(q), coord); + } + } + + fn count(&self, i: u32, tile: Coord) -> usize { + match self[i as usize] { + Covered => (tile.x2 - tile.x1) as usize * (tile.y2 - tile.y1) as usize, + Empty => 0, + Split(c) => (0..4).map(|q| self.count(c + q, tile.quadrant(q))).sum(), + } + } +} + +#[derive(Clone, Copy, PartialEq, Eq)] +struct Coord { + x1: u16, + y1: u16, + x2: u16, + y2: u16, +} + +impl Coord { + fn mid(&self) -> (u16, u16) { + ( + self.x1 + (self.x2 - self.x1) / 2, + self.y1 + (self.y2 - self.y1) / 2, + ) + } + fn quadrant(mut self, q: u32) -> Self { + let mid = self.mid(); + let x = if q % 2 == 0 { + &mut self.x1 + } else { + &mut self.x2 + }; + let y = if q < 2 { &mut self.y1 } else { &mut self.y2 }; + *x = mid.0; + *y = mid.1; + self + } +} + +fn main() { + let mut input = String::new(); + stdin().lock().read_to_string(&mut input).unwrap(); + let mut ints = input + .split(|c| c == ' ' || c == '\n') + .flat_map(|i| i.trim().parse::<u16>().ok()); + let mut get = || ints.next().unwrap(); + + let mut tiles = Vec::with_capacity(33_000_000); + tiles.push(Empty); + + let screen = Coord { + x1: 0, + y1: 0, + x2: 10001, + y2: 10001, + }; + + let n = get(); + for _ in 0..n { + let coord = Coord { + x1: get(), + y1: get(), + x2: get(), + y2: get(), + }; + + tiles.fill(0, screen, coord); + } + + println!("{}", tiles.count(0, screen)); +} diff --git a/kattis-open-almostunionfind/Cargo.lock b/kattis-open-almostunionfind/Cargo.lock new file mode 100644 index 0000000..f79cc3f --- /dev/null +++ b/kattis-open-almostunionfind/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "kattis-open-almostunionfind" +version = "0.1.0" diff --git a/kattis-open-almostunionfind/Cargo.toml b/kattis-open-almostunionfind/Cargo.toml new file mode 100644 index 0000000..e40a8b1 --- /dev/null +++ b/kattis-open-almostunionfind/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "kattis-open-almostunionfind" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/kattis-open-almostunionfind/bad.py b/kattis-open-almostunionfind/bad.py new file mode 100755 index 0000000..1d4cbec --- /dev/null +++ b/kattis-open-almostunionfind/bad.py @@ -0,0 +1,53 @@ +#!/usr/bin/python + +while True: + try: + line = input() + except EOFError: + break + n, m = map(int, line.split()) + + u = [[i + 1] for i in range(n)] + + for _ in range(m): + line = input().split() + p = int(line[1]) + if line[0] != '3': + q = int(line[2]) + + if line[0] == '1': # union + a, b = False, False + for s in u: + if p in s: + a = s + if q in s: + b = s + if a == False or b == False: + raise ValueError(f"could not find {p} or {q} in {u}") + if a != b: + for i in b: + a.append(i) + b.clear() + u.remove(b) + elif line[0] == '2': # move + a, b = False, False + for s in u: + if p in s: + a = s + if q in s: + b = s + if a == False or b == False: + raise ValueError(f"could not find {p} or {q} in {u}") + if a != b: + a.remove(p) + b.append(p) + if not a: + u.remove(a) + elif line[0] == '3': + for s in u: + if p in s: + print(len(s), sum(s)) + break + else: + raise ValueError(f"could not find {p} in {u}") + # print(u) diff --git a/kattis-open-almostunionfind/geninput.py b/kattis-open-almostunionfind/geninput.py new file mode 100755 index 0000000..5eef1f3 --- /dev/null +++ b/kattis-open-almostunionfind/geninput.py @@ -0,0 +1,15 @@ +#!/usr/bin/python + +from random import randint as rand + +n, m = rand(10, 1000), rand(10, 1000) +print(n, m) + +for _ in range(m): + t = rand(1, 3) + if t < 3: + p, q = rand(1, n), rand(1, n) + print(t, p, q) + else: + p = rand(1, n) + print(t, p) diff --git a/kattis-open-almostunionfind/in2.txt b/kattis-open-almostunionfind/in2.txt new file mode 100644 index 0000000..1bb97fe --- /dev/null +++ b/kattis-open-almostunionfind/in2.txt @@ -0,0 +1,8 @@ +9 7 +1 6 1 +1 7 2 +1 5 2 +1 8 6 +1 5 8 +2 8 4 +3 5 diff --git a/kattis-open-almostunionfind/in3.txt b/kattis-open-almostunionfind/in3.txt new file mode 100644 index 0000000..1a27497 --- /dev/null +++ b/kattis-open-almostunionfind/in3.txt @@ -0,0 +1,241 @@ +429 240 +3 245 +2 141 372 +1 300 23 +3 184 +1 91 179 +2 45 232 +1 203 425 +2 393 12 +1 399 339 +2 302 138 +2 204 132 +2 429 139 +3 233 +1 88 315 +1 59 318 +3 259 +2 173 166 +1 322 420 +1 72 386 +3 212 +3 417 +1 409 127 +3 118 +3 113 +2 89 208 +3 365 +2 79 406 +1 109 29 +1 385 59 +2 406 409 +1 29 297 +3 48 +1 211 297 +3 147 +2 24 161 +3 1 +3 130 +3 266 +2 338 92 +1 143 302 +2 317 367 +3 294 +2 401 220 +1 170 273 +3 25 +1 296 329 +1 255 214 +2 153 177 +2 228 55 +2 79 311 +2 374 51 +2 373 65 +2 386 35 +2 388 103 +1 429 395 +1 229 82 +1 62 416 +1 6 272 +3 81 +2 15 310 +1 414 375 +3 309 +1 122 259 +3 410 +3 6 +3 330 +2 201 390 +1 377 69 +3 310 +3 233 +2 157 246 +3 24 +2 168 108 +3 216 +2 282 5 +2 190 156 +3 427 +1 109 334 +3 37 +2 384 412 +1 324 74 +2 296 262 +3 412 +1 7 109 +2 31 317 +3 214 +1 55 164 +3 349 +3 202 +3 255 +1 27 278 +1 156 379 +2 429 328 +2 136 385 +1 199 188 +2 275 368 +3 164 +2 313 190 +2 324 182 +1 286 279 +3 311 +3 415 +2 330 146 +2 176 343 +2 281 20 +3 164 +3 134 +2 128 258 +1 258 335 +1 408 363 +1 413 110 +3 374 +1 31 28 +2 86 247 +3 416 +1 245 51 +3 27 +2 125 303 +1 111 227 +3 335 +3 305 +2 111 78 +2 411 77 +1 57 26 +3 425 +2 222 209 +3 251 +2 111 115 +3 328 +1 127 394 +1 89 387 +3 352 +3 346 +1 135 338 +3 407 +3 372 +2 51 41 +3 284 +2 153 411 +2 225 316 +1 180 257 +1 89 127 +3 150 +3 218 +2 242 249 +3 317 +1 371 83 +2 201 145 +3 336 +2 92 10 +1 199 18 +1 318 184 +2 333 306 +2 375 416 +2 198 245 +3 337 +3 331 +2 401 429 +1 239 260 +3 197 +1 89 421 +3 315 +2 219 91 +3 172 +1 56 273 +1 225 48 +1 89 238 +1 424 418 +1 162 296 +3 416 +2 376 265 +1 96 354 +2 55 326 +1 248 105 +1 425 247 +1 37 87 +2 166 254 +3 315 +3 80 +3 273 +1 191 139 +1 181 159 +2 135 158 +2 158 392 +2 179 84 +1 251 422 +1 152 218 +1 12 287 +2 47 330 +1 245 386 +2 199 423 +1 204 35 +2 6 227 +3 209 +3 98 +3 60 +3 79 +3 38 +3 417 +1 11 409 +1 23 151 +2 226 39 +3 173 +3 225 +2 92 376 +2 123 107 +1 331 60 +3 399 +2 96 249 +2 365 177 +1 410 325 +2 8 61 +2 5 199 +2 279 107 +2 303 329 +2 237 366 +2 91 335 +3 145 +3 52 +1 301 254 +3 395 +1 278 70 +1 233 341 +1 164 193 +3 365 +3 34 +3 50 +2 147 121 +3 278 +2 63 131 +2 328 87 +2 29 206 +1 320 238 +3 304 +2 183 414 +3 10 +2 178 8 +1 10 243 +3 20 +2 142 417 diff --git a/kattis-open-almostunionfind/input.txt b/kattis-open-almostunionfind/input.txt new file mode 100644 index 0000000..315b418 --- /dev/null +++ b/kattis-open-almostunionfind/input.txt @@ -0,0 +1,41 @@ +17 40 +2 14 11 +2 3 13 +2 5 8 +2 13 15 +2 13 1 +2 4 6 +3 9 +2 2 7 +2 5 12 +2 14 1 +2 4 13 +3 6 +1 16 5 +3 12 +1 4 16 +1 15 3 +3 6 +3 3 +2 13 4 +3 16 +1 10 11 +3 6 +2 2 2 +3 4 +3 7 +3 3 +2 16 8 +2 7 2 +1 9 15 +3 14 +1 6 5 +2 17 3 +2 12 5 +3 17 +2 11 10 +3 2 +2 12 9 +1 17 2 +2 15 16 +1 3 15 diff --git a/kattis-open-almostunionfind/pyout.txt b/kattis-open-almostunionfind/pyout.txt new file mode 100644 index 0000000..63fdad2 --- /dev/null +++ b/kattis-open-almostunionfind/pyout.txt @@ -0,0 +1,281 @@ +1 309 +1 500 +1 112 +1 142 +1 366 +1 575 +1 113 +1 126 +1 496 +1 349 +1 23 +1 103 +1 339 +1 30 +1 436 +1 311 +3 416 +1 184 +1 548 +1 561 +1 568 +1 45 +1 206 +1 329 +1 544 +1 478 +1 352 +1 555 +1 103 +2 1036 +1 541 +3 530 +4 1205 +2 723 +1 459 +1 453 +1 52 +1 74 +1 258 +1 11 +3 1435 +2 345 +1 411 +3 708 +1 100 +1 576 +1 277 +1 574 +2 650 +1 460 +1 316 +1 48 +1 164 +1 75 +2 638 +4 1205 +1 190 +1 496 +3 747 +1 466 +1 371 +1 558 +1 573 +2 927 +1 104 +2 563 +1 127 +1 311 +1 151 +2 932 +1 596 +1 187 +1 543 +2 93 +2 811 +1 154 +1 498 +6 2215 +1 248 +1 250 +1 548 +3 747 +1 47 +1 370 +2 992 +5 945 +1 292 +1 108 +1 327 +3 693 +2 992 +2 334 +2 334 +3 799 +2 784 +2 439 +5 1721 +1 231 +1 442 +1 377 +1 53 +2 658 +1 552 +4 1674 +3 958 +4 1674 +3 797 +4 1007 +1 22 +3 1231 +2 432 +3 1383 +1 475 +1 111 +2 1138 +2 686 +1 211 +3 918 +1 504 +2 177 +5 1941 +2 586 +1 507 +1 48 +1 332 +1 77 +17 5984 +1 364 +2 811 +2 500 +26 9440 +1 146 +2 500 +1 66 +1 537 +1 532 +1 74 +4 1540 +1 132 +1 405 +1 469 +3 385 +1 443 +4 1422 +3 1393 +1 11 +4 1422 +3 653 +4 892 +3 922 +2 737 +1 377 +1 232 +3 592 +1 128 +1 289 +1 452 +2 638 +2 986 +1 299 +2 439 +4 767 +1 120 +1 48 +2 214 +3 1393 +4 794 +2 500 +1 286 +2 932 +3 1311 +43 14918 +1 61 +2 584 +2 555 +1 63 +1 232 +2 742 +6 2007 +1 275 +1 75 +1 3 +4 1104 +2 1138 +1 73 +2 533 +4 1110 +1 299 +1 330 +17 4452 +6 1568 +4 1651 +5 802 +6 2007 +2 555 +1 354 +46 15564 +1 203 +11 3264 +1 249 +2 605 +1 338 +1 324 +7 2383 +3 1187 +1 510 +3 1018 +3 1176 +10 2671 +3 954 +2 439 +3 1187 +1 443 +57 18251 +59 18690 +1 578 +1 63 +2 492 +8 2710 +8 2710 +2 326 +2 326 +51 14428 +4 1479 +1 50 +65 21427 +1 228 +2 675 +1 362 +65 21556 +5 1683 +3 753 +2 477 +65 21556 +2 732 +5 1377 +51 14428 +51 14428 +1 528 +51 14225 +1 237 +2 932 +1 132 +7 1842 +5 1552 +64 21578 +1 458 +2 360 +3 555 +2 410 +51 14024 +1 407 +8 1910 +8 1910 +72 23820 +11 3914 +73 24655 +9 2532 +77 25911 +75 22332 +75 22332 +5 1377 +1 287 +1 200 +76 22868 +3 1031 +3 1041 +4 1244 +7 1468 +5 1525 +15 5005 +77 22896 +5 1466 +1 43 +3 781 +1 514 +7 1358 +2 1011 +1 374 +1 225 +7 1468 diff --git a/kattis-open-almostunionfind/rustout.txt b/kattis-open-almostunionfind/rustout.txt new file mode 100644 index 0000000..63fdad2 --- /dev/null +++ b/kattis-open-almostunionfind/rustout.txt @@ -0,0 +1,281 @@ +1 309 +1 500 +1 112 +1 142 +1 366 +1 575 +1 113 +1 126 +1 496 +1 349 +1 23 +1 103 +1 339 +1 30 +1 436 +1 311 +3 416 +1 184 +1 548 +1 561 +1 568 +1 45 +1 206 +1 329 +1 544 +1 478 +1 352 +1 555 +1 103 +2 1036 +1 541 +3 530 +4 1205 +2 723 +1 459 +1 453 +1 52 +1 74 +1 258 +1 11 +3 1435 +2 345 +1 411 +3 708 +1 100 +1 576 +1 277 +1 574 +2 650 +1 460 +1 316 +1 48 +1 164 +1 75 +2 638 +4 1205 +1 190 +1 496 +3 747 +1 466 +1 371 +1 558 +1 573 +2 927 +1 104 +2 563 +1 127 +1 311 +1 151 +2 932 +1 596 +1 187 +1 543 +2 93 +2 811 +1 154 +1 498 +6 2215 +1 248 +1 250 +1 548 +3 747 +1 47 +1 370 +2 992 +5 945 +1 292 +1 108 +1 327 +3 693 +2 992 +2 334 +2 334 +3 799 +2 784 +2 439 +5 1721 +1 231 +1 442 +1 377 +1 53 +2 658 +1 552 +4 1674 +3 958 +4 1674 +3 797 +4 1007 +1 22 +3 1231 +2 432 +3 1383 +1 475 +1 111 +2 1138 +2 686 +1 211 +3 918 +1 504 +2 177 +5 1941 +2 586 +1 507 +1 48 +1 332 +1 77 +17 5984 +1 364 +2 811 +2 500 +26 9440 +1 146 +2 500 +1 66 +1 537 +1 532 +1 74 +4 1540 +1 132 +1 405 +1 469 +3 385 +1 443 +4 1422 +3 1393 +1 11 +4 1422 +3 653 +4 892 +3 922 +2 737 +1 377 +1 232 +3 592 +1 128 +1 289 +1 452 +2 638 +2 986 +1 299 +2 439 +4 767 +1 120 +1 48 +2 214 +3 1393 +4 794 +2 500 +1 286 +2 932 +3 1311 +43 14918 +1 61 +2 584 +2 555 +1 63 +1 232 +2 742 +6 2007 +1 275 +1 75 +1 3 +4 1104 +2 1138 +1 73 +2 533 +4 1110 +1 299 +1 330 +17 4452 +6 1568 +4 1651 +5 802 +6 2007 +2 555 +1 354 +46 15564 +1 203 +11 3264 +1 249 +2 605 +1 338 +1 324 +7 2383 +3 1187 +1 510 +3 1018 +3 1176 +10 2671 +3 954 +2 439 +3 1187 +1 443 +57 18251 +59 18690 +1 578 +1 63 +2 492 +8 2710 +8 2710 +2 326 +2 326 +51 14428 +4 1479 +1 50 +65 21427 +1 228 +2 675 +1 362 +65 21556 +5 1683 +3 753 +2 477 +65 21556 +2 732 +5 1377 +51 14428 +51 14428 +1 528 +51 14225 +1 237 +2 932 +1 132 +7 1842 +5 1552 +64 21578 +1 458 +2 360 +3 555 +2 410 +51 14024 +1 407 +8 1910 +8 1910 +72 23820 +11 3914 +73 24655 +9 2532 +77 25911 +75 22332 +75 22332 +5 1377 +1 287 +1 200 +76 22868 +3 1031 +3 1041 +4 1244 +7 1468 +5 1525 +15 5005 +77 22896 +5 1466 +1 43 +3 781 +1 514 +7 1358 +2 1011 +1 374 +1 225 +7 1468 diff --git a/kattis-open-almostunionfind/src/main.rs b/kattis-open-almostunionfind/src/main.rs new file mode 100644 index 0000000..6563043 --- /dev/null +++ b/kattis-open-almostunionfind/src/main.rs @@ -0,0 +1,153 @@ +// https://open.kattis.com/problems/almostunionfind + +use std::{ + io::{stdin, Read}, + iter::once, +}; + +enum Node { + Root { count: u32, sum: u64 }, + Child(usize), + Invalid, +} + +impl Node { + fn count(&self) -> u32 { + match self { + &Root { count, .. } => count, + _ => unreachable!(), + } + } +} + +use Node::*; + +fn root(uf: &mut [Node], mut node: usize) -> usize { + let mut root = node; + while let Child(parent) = uf[root] { + root = parent + } + while let Child(parent) = uf[node] { + uf[node] = Child(root); + node = parent; + } + root +} + +fn join(uf: &mut [Node], a: usize, b: usize) { + let mut a = root(uf, a); + let mut b = root(uf, b); + + if a == b { + return; + } + + if uf[a].count() < uf[b].count() { + let tmp = a; + a = b; + b = tmp; + } + + let (b_count, b_sum) = match uf[b] { + Root { count, sum } => (count, sum), + _ => unreachable!(), + }; + match &mut uf[a] { + Root { count, sum } => { + *count += b_count; + *sum += b_sum; + } + _ => unreachable!(), + } + uf[b] = Child(a); +} + +fn mov( + uf: &mut [Node], + free_index: &mut usize, + current_index_of: &mut [usize], + a: usize, + a_val: u64, + b: usize, +) { + let a_root = root(uf, a); + let b_root = root(uf, b); + if a_root == b_root { + return; + } + match &mut uf[a_root] { + Root { count, sum } => { + *count -= 1; + *sum -= a_val; + } + _ => unreachable!(), + } + match &mut uf[b_root] { + Root { count, sum } => { + *count += 1; + *sum += a_val; + } + _ => unreachable!(), + } + uf[*free_index] = Child(b_root); + current_index_of[a_val as usize] = *free_index; + *free_index += 1; +} + +fn main() { + let mut input = String::new(); + stdin().lock().read_to_string(&mut input).unwrap(); + let mut ints = input + .trim() + .split(|c| c == ' ' || c == '\n') + .map(|i| i.parse::<usize>().unwrap()); + let mut get = || ints.next(); + + while let Some(n) = get() { + let m = get().unwrap(); + + let mut uf: Vec<Node> = (0..n + m) + .map(|i| { + if i < n { + Root { + count: 1, + sum: i as u64 + 1, + } + } else { + Invalid + } + }) + .collect(); + let mut free_index = n; + let mut current_index_of: Vec<usize> = (once(0).chain(0..n)).collect(); + + for _ in 0..m { + match get().unwrap() { + 1 => { + let (p, q) = (get().unwrap(), get().unwrap()); + join(&mut uf, current_index_of[p], current_index_of[q]); + } + 2 => { + let (p, q) = (get().unwrap(), get().unwrap()); + let (pi, qi) = (current_index_of[p], current_index_of[q]); + mov( + &mut uf, + &mut free_index, + &mut current_index_of, + pi, + p as u64, + qi, + ); + } + _ => { + let p = get().unwrap(); + let r = root(&mut uf, current_index_of[p]); + match uf[r] { + Root { count, sum } => println!("{} {}", count, sum), + _ => unreachable!(), + } + } + } + } + } +} diff --git a/unsolved/kattis-kth-adk-spelling/Cargo.lock b/unsolved/kattis-kth-adk-spelling/Cargo.lock new file mode 100644 index 0000000..8656833 --- /dev/null +++ b/unsolved/kattis-kth-adk-spelling/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "kattis-kth-adk-spelling" +version = "0.1.0" diff --git a/unsolved/kattis-kth-adk-spelling/Cargo.toml b/unsolved/kattis-kth-adk-spelling/Cargo.toml new file mode 100644 index 0000000..45f6b19 --- /dev/null +++ b/unsolved/kattis-kth-adk-spelling/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "kattis-kth-adk-spelling" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/unsolved/kattis-kth-adk-spelling/input b/unsolved/kattis-kth-adk-spelling/input new file mode 100644 index 0000000..1dc51a0 --- /dev/null +++ b/unsolved/kattis-kth-adk-spelling/input @@ -0,0 +1,1011 @@ +maska +masken +masker +maskin +maskot +grukpcnjcmvgrrmvihrwemeuansixf +tlpnrdzxcyfipoplgwtxgzpyewzhiy +zwmgiewwmbiuiyioolsjusonzucrko +jnuktfrqvscteoullquntmkkztfays +cqnhznpjfjtklkjsccehbnxvpobxia +ssibqwrdzklicdlgwjtuiafralweeb +knrbjzpfxxlcskmvknwlkkyjsncbcc +njbhwplahsnwvivfzhbzcpalsnxcbw +ddzspejqrirlohfwummlohggjhundo +dzoaxpkdfaldrydmfgnrjynrtpztic +iynvbsfhvnpqdlnpxsvyaddvxrnrie +uvgsxxeufirobzxouoverdhrfqbawt +gdlraimoiyqctxfzouiyksmltrfoiy +ckaopwkidmfokxswxgqrvmogjcvrnl +bponvsuscstixugflnziasgzbbaqkg +nfopncdjcucqbbbgyphwlnxlkbqkhj +mhovrvsznieaxbdedojxtyxjbjiubg +skxcaucdlgqlbnmmlwcbatgosnxiil +ghibmunhdqilxfockklceydrelftwn +ohsbgrtvtrjbvftauvirmdnzgyqftx +gutkupdsrmmimsonuwstwnxiqrlppl +ijfgsjqvwovhzfvxpikxccbfuhijgv +jcxssrqarhvxxbjotqtainpytbiolm +yfyjjrjbjpcvzmgreiluxmtagazzfu +zarrnilizunqooxzvofyiavtlzppch +etqljmidbysxguorfvhsyantpuorli +kymgvjscjdjhtnaabsizomzdvihefg +upczmnurwuoczvaofambqjniyfschs +spzlyvrzsbqstvvzjaicwbnxqqbwln +ypgjnbjdiipcrznykklapbcghgbqfa +fssxxvpgfbhrknlulxvvmpgpsvpplh +qpxqumspiirjvhnhbayxyaexjntnzt +ixyhplbzufevcjapkahbfivttdrucw +inumjqzpkabkmdsladnqznfhmfbyfh +ulwcinaovzuwlyrvgjcdydpnizamob +htwodfjlisezswsvqhqioriasxygqa +cohrhlljrnqnunfwmtkyseptcwdukr +dpvzqjcsnayeknoztfkxxjflvuspud +wxdrncxdzhklfvyhbiuxkbzyklwxnz +vvzygwgqwglekcolzessjamujajbkp +hpminxowglqyoxwbhibswhfjnlesyv +nispjgcvcrnzuipguillqnxstrrogn +borehmjphgcchnqclhrwzogewowcdi +lphsfibpmmpaekpmroxjjfqkmryzpx +nrfzyoqbbmervxrvlupzenahojkyrb +oghpofqlhpvexkkhaacyvlvaqpxaxp +invktnldwylnqnbxmrlotyhhnrbemr +ntdpfupjjpxyskehiostqrafeevjkx +azeucpeckalbidwjhdvpaaryesabgl +kdskcgslcqtcyntidgejbnujjfiyba +ofapuiyiddfmeoxplssiphhpwvsxsv +hvtyjcenjeyolwiiccpfoxygblnlll +ghjhkpzjujltjetuwvorfzbjjmassb +bmgezwkfljpstxzymjsctgvprzajhn +scxxzjtcrslfkgjflavcxtvqppmoiu +dhfoahpqcsfobwzkrwgupajrwhquty +zvgzssigdehdtcaklrsmeukdmoxdub +tshjbircxrzuhcybrcsdidrrsnktfo +fhxakfrbtzsbygzgfboeyeymzrozgs +bmwdnseopoeznilqlxawzhcdphrgxu +okpxqdkaeoywfljbbxaviffdrxpsyz +afbyvmhkyuvbscyiujkjwjatsazxsc +kbfdysfbupralfserelzxwemadogoz +ujzbvwsrjcqvixpxevehfwytwmpxel +jfmzsjccfrjthqxnxyumkptbubtofo +idclnaaryyxrvvfrkumssgpbdnsvpk +zfsoatvfidcepkzttzywfurkizhlmb +nqaeyoxkxviuwxixmgbvuvmspthwxi +rabphxkqztixqkxubsydopbbggsdlg +ztffawxlmuxxlbnargkbiwigyevkkx +fqnkoxjyynonbuhtpxjxuhmpwxnnmf +rzfkkubzggqvfpelnsdaqwtxddrtfi +rqhdtrtjhjhhpatnvkgxxlkmoendxh +osvwzebriinztppyrjqvdtslohegmv +uurochgokjkyycocigcjliwavguxad +whsrewlotiaovopcfpcmoakbfhrkjx +cfhjqjuwmnwjagtuykcjunqiqxhpza +xegkdbmdmfiyxvishihzaurkaqunpm +kwqiamavbqrupfnzmjeufhdkgynuvd +ucvnarzctbeckleeuwhqfawuyqdwfr +wkvxwukxtsqcefgznusqeszvdnzcwt +layhryzqsmsqewdoqvygqdlfgkmfvv +iworbfxtaudvrqghcohjebsxfvvmmt +vxvlqxlzyfhafywmmizntdscopvrli +dfnzitxdnfnrreptrdlncpyuiqphdy +hcmdvnwsdrxpigdbjtxskzmowimzam +hxmcllzytyixugurwbvmdmxlwrlbpm +hvjsitffvqypmnrztnlnszbtfhkoxd +tkyfwfztbvzsivvqcxiuhphvhfkhfl +kqaylepbevtmujilsqwpzzavjmzgoa +uynenmjzwlrcvnanyfhywnewarublm +llkpritdpwxnlhhipopwaontibjtxz +vqqfzqhbznjvgxzhqqddmmokamkeup +fjogjxxoposusazglwgriquwlwibwb +qoskcgrixboczszzfvmedukonniwws +gcxnxenxbjheqxcxlhmzajemoiuhtk +fqqbhgallahpbnrdjnsbhytmmjnrxe +iynikrqivlybchogaqxpguezhnkopf +hyzphhczzemamlzjjgdemerfmgzplq +udylkjthpsevdiyqbsrovuntkpgkhn +nkrcshdkizqlxauvyuchxphedsmdls +gnyuddawutuguarfaorjoutmngsygl +efmbhocjkacyvuhvmkircsmbbmgjrw +vtrighqfkchcyuvbmfhpsaflfqpddl +zptfblhseccnbwystpgasqkfflefps +bdndhehlcuobctvxkbmkhvycbphtpj +ckruscvtdwdmpnvohielyhkhsezica +ckgyckxuwmizdwnrxhundomopojqzc +mlkptpwwxqwfzewbosyhdsowvlidzt +eeaojauxgkyxoozplpuqcxdvstigtp +zjzofjaddoyugerxgcvefnukkxvovi +xmlddjxsiwfzbpzsgrjprqmcynzplf +cibcqocliacdwigobruniuvuzocufg +scyrqzzhubwjvguqfohledefyqkfit +zefjlqdduzohqnxtjzcqppztlzogoz +hwqpufupvvyczgpkaitugvswvnipab +dhwiytvmpeohyxrhsfcelrmtsdrnuj +pixuomfcqmmwcphrpuqrolcyhdcigd +qyzpqqktnwxlpvejrkgbyvwfislyjm +ahmkksapuiqwwogiylzbdfyvnbgxea +krzdcurtwhvlsezrwcaijxblkvenzo +wuqlehpaatqpmhuqumkvjekrxuqofi +svohfizexpcqvcjbawdgkppwtqobds +yqhcbuisrwhwpgfkwkaddwwydodvlw +rhmivbhljkbvvuutedtllyjrcpkxca +wypwtipwhxwsdgmbbjgllmozzaxslq +qojorfjtnytdoloawbtxbzbjiogasi +gmykwkfcijepbrglkcrvvqepachoce +ykarecerabanuurkyjyacxmfawvwiv +gevisimuescylsadmktcwdmknzhhpk +uueadqgqdowyomjzwgrxjtojijudlj +ebyihldfsmxjgjkzrnvjaxwzxdykon +mivbvoisdgbywyybteybkmzbmrpoun +yeuthchzixpwrxtudpcmqiwkozemel +ttkfxgnourjkgtujwhoartwghvzznz +kxaamcaznzkomiuoxiygkozkbgaesu +anogjibphcxmeirdgkhgjopytxamxt +boxjbufkepkzuhmtmmyxlktefwnmmv +jgozxbkbvcrpaopepxjfttogtygquo +lsvyomfrhbalnhjrppkeadiapfnxtc +uadfzyenhhcmjwklermwpdxicvnhnn +nhckcgfpbskvfymhdaisipahwuwxev +fyexqtzmftidzxalecmbsalpzaflva +cketzvnsvrynvezgdurlcjjbtdazql +aodwvbpqmtvykycrkpfgneyifpdwdn +feyzuuwjhtkxblwmypmovqwwpumcek +ynklwpqejlmjdopfikrojitjvjfhor +jkfpngvnsnuysyjqxrnbivpcoauufd +jkubxkokeiccvzpusyfydzjaoybjxx +nnbttykjwwassyfgevhpbzkpgffsod +fxhfxbqbymijkeumvtnwiuohxsvdmy +rhlkzjxdblqsbcitocqwtqzlsgeyti +abywfiidkgzsiagxrtgfhqnwcptjkp +igmhvyzcmtbsmecxejrqurkwzetbhq +izjdxceebkvulgyyaocgsvwyxdxnga +rfctbngrzyyqrghhlezcfztxspcwpy +qcbwsxnwpgjijesmdjsdgsimzcegau +knseenqcaaeotfvhbniislywtmdhut +daorrkfzuowwxdwshahbmaokivakbo +zwecheqakccwqaihehnoqpfnjkcxlh +wwxgrvwizehixecvexqrnayaqthpbd +rfnuipttusdheqccnhaansmgrjuqnp +oegjhvuddysnkypkzuijsgnsajottk +hjlehkelvibxadjqmdzgjzhujbdrmk +grsogwineesbgwtmurattmrdiiexpj +iysserulurednvblsiouhsgjfgwxfo +bgpqgptmqmpgdqtqzlcvsfyjpjdzuc +gatsdrbusofjtzkwzialfvonnvntpe +jictptaurcsjcnzzkvmheuosxqrzya +dhxsqfvdfcnrwmbmzmttfrexwriath +bhienxjrsoirgwlmgwfumhehvaaruh +yiyiufcftyduowexcjhupfffjxaoxb +kuwsniykaranfnqfexmxgrwtrnpjaq +jxxvkdlwbqkaapmefdpnqqcxwrfjcl +sgtetxhtomtqvravkzhfyioelyrzug +tradhtrurlhvdujplnpawkrhukstog +mqnokfywylzktsltfrvbmuqmdinjwl +qevmcyksdkwcwctyyjtqpobbhtguem +vqojcksuddzwnckekmacjbtzijykvx +eivpqkfzzrpknolfojfzfcobctoyer +kegahqrxjtmstzlmnrfdnvxtrmsikp +zoucwlknsamzgolwnrfvfvtgizpnts +cnfwgdweblwtzxexnvhispmpunynfm +rudjaykpwhicfcxckyvmngnsathvmc +fyirbhrrlvcgynibtcuwtbznimbsoq +pgaxutzrdbevnieraeqfhdrjyzmsel +newtggireepzbtrfqqrhzszkpytzjb +apykodzefqwvsdjkjleqvpkdyduemi +dzitijsbbpwzpsgdjbxiwszcxbqvix +lvdvokukphdmavjwkhgeqlcrgstxlh +irgjesprdqhzogewxkfaprgukiigvt +xlcgkhtzumisiloxuzrblunntcagas +qvmwugjniingwylfkoixtnxktyplfz +sugkevtthqhefukmedbobywysvznvp +ublrwbtywbmzjlcybgonovmjuwkkeh +vrehlmqtutmqntkrjomifapgndango +iolvssyocnfxwzdkyrodegwmzowhxt +bnrqxrsnentytcgvhrkqyrwgmwdvkf +ojdmbjanfhwznadwildgpuygejngiv +ezyfztzkfttpjvqlmogtrtxixcbdni +biirkpmaavkqvjiwpjmuntovkspoqd +zzcvwbrvaltcrkxgegsdkijbmmwunw +yxlzhvjlxwwdrtkfyswitxsqliffbq +oclaoqahhwvptbbsqnpqvukufwycfw +dzcgurcrtcgsvnisrvkhnoybxrbjtb +ktdglloganwfjaolzffvvnjhngkhzq +chzoqczkucbatpwkiprhyktqivkoem +dtlrxpimbgzpczoqpxnvvapuqxpfjq +flmtcwpwchytqsvbvbgdlzrluvhspx +njvfpnboizdzwwdserhsimvtchvvwk +fuysaysvtqfhdelvfuspgphxajeiog +tysvxxulcpmhrzpzvhrbqmbzfrtlby +gxtfcqrkebdhcezrpfxsgvcydyzpja +xdysxuyjhtffwiegnjhdufdflzqlft +qhzlaxfvhyylmfpgbeevglmeuqidzf +xfmdhhjekpqpngcjzkxdlxkqvzvant +maibckammjluulgchejywngdlxzcqn +eregreicyncdrhssjqcjwemnmopawp +qeuptauwhtzkwtsinemdutbnfjbqdf +dzinybfhsitaebkiqflmblgoyepugo +fckbsmgbaanbbmebegwvfcnlkzxngj +vpnheveylksxcwxyrvvbafamudqeet +eszcmshteuznznxtvhaijxngatjcml +euuzhdogfyyknzlmejzzytgaqcqcwa +addtbhmqdqxmkivsoxyqsbdziatstz +bkurdlbnjlijehegdtnpxrgtfhsfkg +xlfmlvahedfyxbptasvjfbjiygadyh +qalycshtuxmrsittuhpylphawxcjmn +ljqctffievcztjzuboyzqubiqpwtww +xjzgtgzsnrbxpmddphakhiwlmdzjvt +uppofbzpmvdhusfgmjpobkmvwqtnbe +ejlxmepseaxgsnesilfcfxqteswxds +fnvsemovbhelgtemoozhbvgmapmznt +keadmcssnkzyvqritcuvdlwsymdcwj +imotkyslsjgblvrlowmrgejmppbezx +tcanqqburpwgbtnrfbiuaanijosgbn +qcffooupkdjsbwfgjtatoiajgccnny +tfwaaanicmbqpvyfzzdgilxofnebax +ugtrszurthndixoutxmiobliozrzrd +wcmqesidzgwpmflcmauruvfnzkwroi +cnewloaodwgnvtmoztfmejbjxznpst +umxhuzmeqxpctzsweaplkowxequrpr +agsvlylupmxpyxbeflkpwaugsdxlrk +zkiepqjncvtjgxllonjhcbishrthfa +lanecpgtpnitlxtljvsrpzhbwalqbj +imwvezfngvnotgwptrjgvopihmqjhb +prpfpjlsqfrxlclgraalxjqbfxvwez +wihfegodhgpffajeqydnpdekhcqyqb +jwsjyhnqspqssnozugoqfamnpdlrxe +gxaesjmzztylvqpswmhujcbfoinuvy +ziavhajoesnzjvrniebeyfrdhxhwjm +hljcuaisfowhnwvmvgrcvoqeukyven +ymaoyculuubvnzqyffyszbxcxrpqne +xnpvudtobuwtlmjuwgyfmsyvzmpgtr +mowcrlojmxafvjjmyzlvtlasqwkvli +uifbhllvudtwsikvttgrcdmqhwjceu +prqeotuhqcqcvvkkeauqkyesqqqxph +gadmlshknwqjlmyrrfvxizlerugfss +ncslnfozielfeaksmgymconyptrizy +jkutotawyhdmwuekwtyzzythysnddl +nllrhckpctcxdftilzhyikusqannuk +ooilmqssiceejsclhpnhnocrirpybv +akfnunrtmuflunouhpjybpcvnhastd +tzdeecfkbtfurmrxfjznsqnxlaqjmm +fiwnmgolyprnnafexmahurdqohxbwx +qgcxhvbwnsgbbjpdgjsbnnwnjqfidj +myvxesmmgmabrvnchiqyqmaaypucda +zdcnyysfolynngvrhipxssbwiwxpkv +qrnsqreceyuhwavilfmspxcjlsspxk +fjnvvjhypmybambhxhfplqsousdpxf +zptzrmklcdwoxsgbqrnclplgwyjjnf +okaaxcyluroexbblbabrttkwxadjsz +chfuozutxeaxampegzoqqyummgriss +nydxnxfnffsoqugzkjsxoxftijwfmq +iqxadbnkgmrqvvntudeqjowmyyrues +jorntkhfadkjbbijyjcklvyxehqoay +rocmeepdbkrantupvkorchzvzckkrg +sgdsqvhrrixnrdnruekhvavlmpkdmj +eypfyywtcakoyellnaqjievwegrgde +fuwxddonimipjpbomeitivqbldtmsr +xopgnmozckgajrzxnnvbbklcjcuylq +vefdobhoatodmxgwolcbeyosypfwpf +haookeomvwymqkxdtkhkrcofksxxte +pzuwjhnwghxtsmhytngwklrqaqskni +czhcquyylunzrimqfdcilyghzrkxpq +ufkujghqpuealbwlwgjvwmaxfhagmg +loeiysdnhogjmrgaskdlwekxxaaiih +fymiarkymwucibthzmwxphxfwmuqpl +jhxizwpyucminnvhvrqxguwffnixfy +ucmbwcqefyqquclekekdcvpiiyfpuz +mdovszhfkltjtgkdtmhslubqfedilp +bstnbskqikldsalulmlvoyrfqsqukm +xcsvxqhxcxhnssuuchwaxgwigdxukn +vvqgcdedufzpwtbmrrgvgdsyytgdrr +repagjuwtdgfooyclfzeufpcylakbs +qyxctliohofgribthvxupjpqmpfepu +lyrpcisqdloeukybxrelkrfaumcvkm +ltwictnqcisngxsgbabrwvijjeppbr +ioaqjngdrgiffjgpntzhcwwtveaugv +blofmkpsqozreuajiixvcpjkkubnyz +wgspweuregmvomynwkwiihlejprrle +bhsygitmzihqgvkixiwugmfogtnuoz +jsbahcwygppktvhfyzpypkpjbpoygv +luwjemugryqinlzmssmthmjbjkczhp +kkersyniewoxalkkzscrlfiafbvbwc +tbommxrhaylongwogzakjmpkapxple +vorqfowetzlwivlvjtbdvwsdvtxgvs +awkoltecjmvxiokiijxujomjhebaos +fdlkvomrtalolgeburqtkltpemgaiq +ndgblypchrydouykalvoahlxvdaxgl +vjvgfnpljpncfjpxxcsuljjqkuhcab +kurxjkimokjuiwrpyaszekonnhdwrq +ilcrdydukwrldcbhgldpefvoibohju +gnmfgbmusqxhicquthtevoyjvohudl +mfgsbbteiftpgaroofflqipwuhgidw +zzqfgoherrnabxdxmhfhgurfinhtcl +rltlurcnocwpcglrhckvtjjyipcnah +aqlqmejuohzjqhtxjyygmjvjriturn +eqgptlcskjuxytgtefmzattxohbynt +taakywyikrnxzsewyfkbgzkbjryskw +fsazfqmakhcgnfypadvfqlvkmnungt +wcofckheqiywdxdtuhfvhjqlcdeoic +xmhrslliwaviqhdnebsdpeewqvqrgm +imohjhyskbejwevxconegyfspdusep +fbxfcfkgxodaefbyjatkhsmgbvapcm +atsavyloouhntkhxdwmtlpzooftvde +jdfuogdrrxxmzqnttwewwfsguspvbp +yzgzgcvwlggzcvlmqahukuuefpsgxf +flfukngzrpzyesyhpmqgzayuacfepn +fgjdangrhrtcyhhshplslhzqfoqrrb +flvkaacjjiwrowrbtovpvzplqwdsph +ppxdvtujvdgmhawpbfstvqrlgmgmfe +qqppwzrjmufiqkokephgxrzilmayrh +nbotjytnbalcmbtfpmtrquxctxgqjm +jgnfiujtcfhzeyadfiubczjudzooqy +xoszynelfbrdlgqunbpfzhlghkxlfo +kovtoluluucofkbksmunjpcsigacbr +ecchydkrzsqfrzrwcfpfeogdhhtiae +qzyyuwyqdpacjdwqtojyrtpqueovqp +xkzzdyqbbtzciwxnyganrgqrzwddnw +zjtzkhuegglzuiykpqqlnfcguvpzma +langzxxyatcllqkysbilynjgpnnyio +xgezqoujockhengpwcwerrvuxgxpop +pshvsrkogxhpxjjnebzbfcenkbmgzt +jfllbgrzcqdanvdgiqfolxxkjlfdlv +lfvyjabtjcrwohugtolbdehjhupdyf +exhdesohlmwtbtlpnyycyojdwdybqo +pjbtrpkavpcsgozwuucpyejjghjvzw +rvaccnnifpomcovrbakbljqxuxsyam +idqfrozyfqprfpfewfktqytnwbkxbw +vattdxauhlgvstqweukribzrvvdwod +pxoarfccudwekainpacqjavswhrbxv +dwwvwrtjnebacixbohpwectzihhotq +ooxjmhfutbzujoswuhuequcwtwhhrj +tbcdukxxggczxoksyrrtyfacipkztt +ctofucrnwomezyndkbswlwopopxudz +hcghhezyjfxrvbqcytbrfrtaknudng +jierjxezblrobwzxojghjthneriqhb +zntwlypfhuwbppddpvwomwzqcsrfsp +iguziwkmrouczryunentqjqnmvfyco +nntwkmcnqeglsryhxzbbvorvgqhdkt +nwhbumdgfttoqoyyexlbrxehrvduds +zsnaopzpewbtbdyapszmwaapctogup +qyngqwiyxowhurmnelujxoetesoyre +hvdulzqtbpxnulhgzytyjlfoscuoji +vlyhglfqskfowzpvsmxnvcrrenkjbg +xbdochhfsaxhldfsublgvooiihlzqk +grjorcwgnrshhcsakyfsnsxmgirioc +rffhashannaezohvfhnbovhfsjxfmb +xolesmrokipuxqqxjkpwemhelgpwop +lkelgflfxnphevjemjlpeobizppyzc +komfhyyxpjbzdyurilceocqrckdpzp +caplaheolrylbhexymejifdfajdxtg +tpufcjunybfkygmyotwhmuybeyqwcs +copzicbdqtfjllxmdgesdxxeifufvd +gybtgnfolxqtllhpbtmuszocznylik +xbilngtohcoqunvjzqfdpbpjnnddty +ixozbckxvqjavlsabmubcndvxujlhs +sbrawrymqouvmrzuksmajyhxreeshn +uuhiytyspzecylqakjvhatkybrstrs +fqstphksgjliwxmzdccymnwveprgvc +yxgfoiiczqgedtzrkwtjczhyummhya +iwusjggpmaxvvtizqoqckfhzlshcto +oiafdusolvyqvnspvljcfkqgnpgiil +chcwxzctjltpfsmuyqlbbfixaaahee +rptlqyelknsoaplvuzflzryifowwyi +qybkowuiudkzyaezvfsflyyspftyjd +cewsglnshaocopawjqshxjngoopwmo +stxtbbmtzuneqzfjbzahimypustkvd +gdghdtfiuozifdbielinakkgwguehn +tvdkxjmkvcntiioohwyrohrzveesxy +nzlzcmchqgjoiqkqstdlzywitqqsev +pctqmsbcfyfmdirwufeuskigcpzmnr +zvrcqwubmxzeasrlwmwsadblhzqvpq +xhsmplwaevrpdmfjtbkabaaztdfdbq +szrdzkiikwtbvlldlhqfxkekqeqmie +filicwcaydfdpukelvttusptlxylsv +htrigxxexnkokpgdlljbpxxyphghqz +sggoagngzleimbeshvifaqbyyhtnxh +elcxsafjnghhnbntnpipnfzokeyabh +nlitevvrpagoryicueambzrjxtcsuc +txxkymkamqdyffdoximorqgjmikgqg +tjvobxjszstxaejoybdnlhjxnifsns +egbgraovhfxliknskcqpxxllojkxyu +evxxelezxtdyetjrhagabojazywxvt +cnskgkstvnivqcrdthbbawkyykzvbt +tdvuuqvwddstncinodknvbknbqidbl +ajdcprovcfgfxdmvcdhocbdnajwpee +seglzcmbpkcirjrkfargamelmtjvxs +tsmhnjwechpklsbsxixospjpryunuf +wbsfgedrcpuffnstjpcbvmlamlmhnu +rxqqyusnvkzjawdosucirgffmzdans +pkrfyxcsewmabgvdubtrjysswtysdw +skgisbenvbajijjtzzcqqbbdrjkhwf +xqhmypcpxigqwqrctohsfelvxwwkwm +odiuipgbqddlswdgqbrshzjlmhnjvm +eftncjbyuuixlwvevhqfrmdcuobkmq +yvbkzcubjdjglxdtdsdfxrznskcefq +qmsdmveugxetnxvxngufifpsxqcvie +ftkdhodwmfbumucxddupsrfqwtophd +onujqvfiisjjualisthbxumzzjewok +tvmgrucgabgfguvsvlrkjlhueuphvh +yukciumfkixviabicriodpxmqjtzha +quaavolpjeljpdftcfcglfqhkhknjj +pevjsxxlkxkjrhtxodwujuzlfhulvl +omfntvbdkbwpjtzyoclpdzxfnvfshg +guzraopozbablphjyxnhjqtcbmnaee +sldakewwyqtxemvcbcacfnfknskrhp +tfzlerbintscmsnykmyabnhnqkwbif +uxbdyennjemyzulszzpnmzqgyzmhme +cnrryxvzpqlsixraclhkbhpkdrzciw +vshyqjzvwgzzitatkursssqjczbbgi +ylidqffuzkxglrqmqhpomnkkdtvanp +gbkmbygcandjybuquomaoncrdqoyxd +wtsvaywhilpwrufbrnilwudslqmljp +pdkfxtmlkmknakpnufrsofulaufgfb +wluctbnrfokhxksrjifnrtpaskofnm +wjbrwuincwamtoohpsagtoorpsogfy +thshfieitkrrcmrlglofwvxpuavere +oygvjaxwnbcuakyzcsxnqpnyftkbhg +hzztmaeexsrwtasgvzfgomlwlsrhfi +anezxawgkhhuksbqqqydxgzziqioso +pmolvkxbmcnuzglnkdkhaupqdmmegp +byhocnwitzowykuunltfgndijsggwo +qqpitidqvsnsomhezhlssmquoatrpj +yhknjvuunyxxkfvwpbvubjsqezvfyg +wujnechamgrolcbljwnvhfilphnuww +pngrjvunivmdwhtdqkbyfsankqnbsk +lmrboqferxleavfemyxelsygxjhmuj +twtuoidiozsrxyoywohvrqbbzierrp +qgfnhgvejpnuuhtzhlroxieagzclfm +nyexgjwdortvccnqppefewebttjykq +mmgguvxowaqknszoisljhkwgfbscvf +wgeprfywsvvjjtatjvwtdoxfxvboob +fzkkqneewtnvsonklggobfbexsosnf +ukvorltbtfrgmbgzvdnzphwqsgzlyz +vfomvgaeedofkxjfueaazbtumrjafx +fqigdprwpggpeuixqzvpkskinhdhho +dvozyvvyklppnormbnvsxcwzkxmwvx +iqdjocwiggxvzajrdowuglsdjftgna +yymxqjipxyaonmmwlttfohhlbrwlwh +tudbneszomvguaypphnwrmictakvtx +chpdbherjiglfhpjbrzjoznbhxisog +frnsalfzyaodqmhyrjibjklfxxyhaj +ephacwweyipzuowedrbbarhuqwfftn +disfjrhgnszrelqtajqnidpequrcih +hgunqdswxbwmcdksosfbehhffszadi +oankweufhgpmtjgdjdcamqxoargzqc +ahlnnbdztpaidcmkifotlowracywnv +axqusuprrbenxximromiennqvngpro +edyvjlimzztinwftgvmqlkmtqyrodf +qurubulfohgjxfxbruflbppkovfrep +fepzsxvkcbbemtjcjcgjgglwruvavn +pzyxyqnemwvnvxyodjkmzgqyjomlds +lzotcugwicknwwwitgzqlekgfuqvec +excgdxwxrvougpagklsmkjmjmaaiwr +gzzuywwtgrgjaulyvofhtneplyscwa +ibrvwvtbxhkwwguckqzdgkkcdkaazj +caniydyypsklqtpggxuuhjfwlkvhcv +zcmlmybseprjgjdcwndysxrkiqpqvj +klycxcqqnntnnzzeqtwzxjthgrbkdk +dbovfhkcjoouijxbnegiictsjsuvho +rgsnmxiewjkbxbripsdusbvdurzdda +aimtbmdlietcmjrvjyipwbmvxyqguz +phyikurivsjcakgcalbsenzjhpkmmi +sjbcwjkghjaudmukunsuzzkpylftly +vofpdxisfseycoqyqprcuikcudghvs +wlcbkclaswodjrkeklwhuaweqyldse +cnnugdmbpytzkejroxetuzuwikxugx +jiqubjbvsbxjudeplbwktqohfrsfjz +lxmhatqhhppgcabagycubwyeogwasj +muuobnqdrmnmsxrtkdmdgahazflbtw +jncerqqcwcntrwtdpgyuqogfluiafg +sjoslpltswyjnivzfeuovsdvcjjviu +ykznvljeliuuqafaeixyslwvzdurri +jqftskqbzxdtmptwwsguuxcmoclmzy +oehwgqybnbvyojjfnjwexpssfyhueb +wensmvesaqgqldrfbontudvixwkhdw +eythwtefreuwqyfdgtrexbtsdswqkt +xvggmsdvykxdlfxokhiuocjuqepyxp +tabkjlmlxecaxncwfvqwthhfyyuqkn +tvvuzjwlebkfytnyeqkfztqxuyrctq +chjnwazaomnquvbouenwvtmrevrrlg +onhjzwgleceardhmgmqgfwlsmoztlw +thtssjxqdseqrapyscjdjwowiinjra +gxhycfbbmaokecejpzzkruyxsakyrz +ktaukyulsjptvbfrdozntkaowycrgh +rmxnualbbqhvzvegcviwxuvmxeqjaj +ksksvswjtcfqbtlquadefcwjaimdoi +deiyaplzirtdyfkajteawxqwpvbosd +ityxmokmttgadnewjtuxlagddepyfj +pbkxpwyvfwugszqgkszlpyiuqcyhua +voamjonvxpxwgusjjyscrnqkecpwsd +smgkutjxgcgcccqjfcpejzihqjjdtk +dyrvchxexgegtwiaieokovplffwpyu +jggnilqezwwgtmirykdqucqyorkpoc +okzrvkmwdorapqvsdgwwuvkgatkuzv +xeyuovyohgbmmnicgmmqlniuifmzoj +xgpmoesjcgbbmcqraexmbogcpjwaso +pqjxzzipnxckwtxqhyxfmontsfzalv +rujkvmvedpigltqhrzrqunozllzkfz +akuefkcswmwegohgjlopxvtukbpipa +ikqgysaxumtcaiphemsuzowzhrdwfv +kdrkvlxausqzdystdffssfeuacybad +caezkmydctndjqtfuewdgaectceibp +yqxeqhgbqhojsyizlqoqjzlwjfjipc +xlhvxvacrrqcptwmxpyrdilelctqbb +eiumzccawdqzrndsnmwqnjgxqeijwj +ystpndxwtsrvuflpnocwethotbefla +lbaoeyygotcsjctoebwqobxtwoxpji +pjpnbyjvqnmhxelqxxekmfamuroqzb +szvgxfymkuwyprwaivgynxqvoipcfn +gozbdcgzikwomlsnjuisrxtwxmhfmr +dabzfstgigsocrkrqqaafmqzolrzsj +senodkpfwjtrkbbljvlzdrptlgbykg +ifanswcuvrykifhbgidgihzjhqubto +jxthhcdcecvroeuppjaaoqmqszzrpz +gcgdjqymkczlhajilodyzpdoknshfx +pcxhcpyfdnwaeuebqbmfpxxqkkxasf +qdgrmvrcqbkyhpilopymmjmnoejhmh +qpdjmrxyjchjmecoxabropwixwxrbu +mztkqympkcjfabxkyxwkwhgytpuuzv +mbmyecfipwciaakpoblfutaqylxkwz +iysdqraqbgediifgdpxtluiabsvexh +pthzkxgmgcuxzyiegkmgdsvaljrvvh +vyoterqhtrgxplmzfcemctswodgxri +kzuorhfqhgmutfwgttxqdhxghtutmj +mdaaaqjlhntyimxtdvsxvjlexkgkou +wteqvkxvyvjacvydrmcdzkkcpacczr +cfzmsnkaxgnlgvbexvinwgcafbtsiw +qzedpqbqtjvkniszvyezlqhveqodco +efwmeiewpglggcblnxqvyoudyujfyb +cwhvgfnxripojhuzrbxqkxrrtcnkgu +jftodffixqwhyjmyhmvladxbrelidx +jxxerxruvzkteussaftihtgoiqamkb +cymewduzklpjsnjalgdgkntyptkurp +rbqhkacoqldiycipqckevnfifljzqc +mquumnhkhsmrjoupiwlvrslayrebib +licqdnjgjyvkbopgxcqpfliuldfftx +hoebcskoerjzhtidogjvsxgsnbbgxe +volmxirqrywrihogbgwyfgaociakmc +mwyiytfszdefyabzysyqvgwcoalgrs +wtdsobgpvcddtmitztthuariaxvguv +nvpgvddctuwanffmezprphczhxstbi +pcznaqsiauipegnukifaajrmxefpjb +nslyzmqpnbchuqdsfyddyrvqtuecir +mxkznrzgoydvrbcirhwaqgtvlutcmx +yygbmwlpvjthdgefumntmjugljmcef +lucinjhwnkbfihdynxxfthyxxidrhf +jeafehnxpqwftsbljjhhositfwjwrm +ltinslomhsrcixtxtwsgzkupfurfon +bgewgjbnpdzqfnvztfebilmqvkggrm +cytlbvygsbjcuogjlljosmrayikolz +guyvbmvztxkwusfcwfdivkwnisyqtw +nwqtkszkjyquqeajwliwlllqdiuviw +ysutjsrwtxlgynaqzoopvbcsyzgxxe +jphtvbhousgzyvkknuoaqvnygxeofs +vdsioexyokmhnvhlcimpmqxiryidyx +ybitynllrzblhlnmglibuipaudmzna +evqjopjasuzeqwtnhoabqcawadskgx +rmcauyfrxwvwhyphiuhuattibxrrny +ntmoxxjlrqnjdfcflaaubvurcqgduu +sxehtzrpzlkmwzzqbvinwumimkpsif +nnvxnefxowmmeagcitikpoedoadvkk +yicftpvxfusmiyextzsfmejyyebsrt +pweftfehwxvbvlzkyxdnfczugospdk +zuqzrvvzakotnkegiytkynhvazckel +zwszlqirhreiecvgsshzhrlmknutfq +ufxjaekcopyovyzucunhnwqrjnyomm +xwewhebebghjhiafjaltazzhqvcoll +pagcwfwmepoxgrjuhorhbikqirdgyc +nlifwhfnkedfooemcpijpieexcuwwo +mvsjzbhkskvelynsadkpfgwkfiyfxq +khpglynbfoyhqcqobvuidplddomywj +rmwatxahjsfabjwmbwmxotfxxodkrs +tguhcujoigzacmqxixpvojnqlnftgq +plavtcyahitkewiqiamvhumxjorgeg +jyqbhorudydjmqdtmxugchgeensplh +vtiposckizbujbwfolekerckpzqqru +rufframfrbwzbigsrlnmgkztbyblin +fxulkvutzhgtdxybjkzcbzlfnoppgz +tgnoggausrmtnntaogorlvxaixwlse +pnmjcjiijhzrvqkxvucnhbulzzmrcl +yrbcykmxrsxohoaanveduokagpkwoi +ataxjlrbolxevbsqwkpexhuhxtaxvg +lxboyqnrfxrdvkznspeddhsphsasuw +evudconcchsfpjsehyzzbgpfvjrwky +sykddcfgoywlemqpmfhjxrqahmrwui +yiangtywnuhkwkuhivzofbqlbwkobx +kqlhpgsgndbpsjvqjelbjrlaxdarvv +piedtbvumgrdypttwcshanlhwgwuoa +xzzzfhinpqhwubbieuzxiqxrmrimzg +gpmgsdzrlopjxwhuhfrlsrmunokcir +dnbsphcvmtxxbzndppvkhscahxwzoa +cesyzdahavxlodgekuhxiovsbxwcxt +puiomahjmgxsllvdiamivqdjocplco +asrcgkisodmwleehyboopazusjlxbi +qzvnzvroivwffzgitauctusmybjhpv +pspgjglvutbngdhfiksfymsyyusbyz +lzounljwruviisatswdxgadekthhlo +khsynukicbnftrzetcmkdaoyccqcuj +lucgqnjbxbrqjiokcrozwrgunikqjg +fjmaajplidxfcbzesbqkubispkkdcw +lthzlkzjwjfdxjulbszsqcxjpjltjc +vfffncmkovuyfkxzhjwkuxscfwpdgd +aokxkapohojblnccxondwyiatqeume +vjoptrqrbxrnipzyyggtlemsuepuzt +wnxuwcnwpdhdkfinqyuhcqcogkinkt +kpixaggiergtiuslcrjodndxtrmkxl +bqmvjixvcuhchbhjcfkolmnxhkvcpg +nhrcxhlhhallqeuucervhgbbrsorhw +ilhgdvarzsovfrzocjrxpwulkyaybz +xagmkevvngxxszgdamhxzvanxyndvj +urumfqmtltcnlooqzxezwvvnbixavy +qqhjrdwuykzxyuizhboehhlgnwkkdg +nnyqbxwjlumbytmilznzhrbbkgrpts +wanrkwoqomzozbrwypkeszgrmljeyn +qxzivdpfqyofzykghbnyihwqwfatnf +vafippfhowzslxsllfsggjuootlgzx +zqzektaxtgmijonclejaflorcmaakb +pfmkvulagrtbfmiaodovvnwkfzeaut +iqqbyxobobqqazycaezfctstzmzibz +licctyprhmmhcmzjwueevgtrcjipkn +iojyqsslxorwuqtkkpdhpqkyjrxeqs +ylwluwoynzrnnixztodsctmhdixsbj +qlcgnlbvpyjnawkapcgenxygmuoqts +bheupprlcnbpryzzgrprhtrtkflqtp +rlcveotsdnybnqwiysyskqhaqqcocq +mbzgdwjndgojrsvzzjpkwszbbbtkdi +ucdnrbjefpaufwhfnalaleftwrqudb +hdfdlvzayjeeujazihyxibojvuhdqg +cmjjgqjzkckmkhhhhkxwhsdlwcjfmz +pgcegwduxaxrtlrzajaudeizjgzifg +axuhgmsjhtbrxotskohxfoinmfliyt +pprnjswqgcgltleiicjjqfcjmdkefi +bfhxinbbpiofbleleakwkcgjmcpwcb +thbjevwcnuunclfojumtigbktajujm +icwbdwekcdbvsywofeqxjalkywojzx +gxjbwkhktwrlyhbtmcmafvbusvnyst +vajdgjhelwhqderzhshjihrhmnswms +twqwppzaannhfmrgxapjcyshkkhwca +xpyzdajbcyyktrkyclydapdjnihsha +daonhjccudhdsduleqnelrvybamnzs +wrfdudlxnemnodixjejgmbkebxgamz +zookopolmcxixgbceiommzyaejqbpu +pkxkrqqzuuizdkvyncmgpdtwmirgzb +togouswgeznwyyfyljganwnxobytji +fclgoxdphqkskvxvfzoeipdmvgdmwk +ayheiptrbidgbrmntehaikoxzuaeqp +cfjutitzdcxzpnjwlmqhrwpdlbmchd +osmmxbagsnsflkhcxzzcrtohfhkrhp +bwszdpkwhzcbwdnnvtovmwpavooiil +mnfsjsiaoohbgklmcvslqfpmkxamgl +ywivdbchczkmpjmpqcefifolskcctp +sjqvvvciwpdmaqwsenqwkhckboshzs +umlazfrjmchahrxojpydrtwfulqrbk +qdxqfevrsrippmrnbobjjvztxqmnuq +lujxmqwnrgudjribduflqpllydnogm +klkoyzvqfhgjaqwtijeufgsgpqrbmy +imsxxxxvemrdeqoleamemvubfiqjme +viurnemgzttgtoviykdbljslxjrald +cfzddvlcajrvkrxlvrqzdnttumpjab +wdoelvhksywhpoweoegmlivurlhdbr +guucysgusmoiedgulgdhumtoecczap +orzlchqlicovyebrdafxtsjisvdjvq +cskelcotxsaprlsheqrkrbqjcnbrgj +cvbpsoaidcczzlwiiptwkzrhpxlyjp +mddszzpjqnvmftfukjhiaiwyccsfeh +bejdnzhspofrpoovcdwatmfsiixwwp +caehncumunubjdwwzrggnfbayacsbh +gkxzncajbwyaccpmcwozvtivcwubgb +phuwyeovjigqhokjoofmwnrseojuyh +fvwwytaipmsseleculevxoennpltly +qzmybduogmdskicnhnimfttxnfaiar +ukdalrmxdickhczoijxgsqxaomjanr +kzkjqlvmnwufbdlkjotgwjhdwrlpwf +npikgzrvtdphxaobxizcueaermxpit +ejbtcdmnktjdjxnjhdeyaymvobcdkt +xldycodtrcwshowyvedrqhdjxaupqv +aejunlawejdynvbbzsgnefzkjpghps +jmliqpzxuxjlfifcmczxevitvgfuxt +oeucrjnttuewfyiiqxfdrdkzujcnvg +gweoltvjjrshobyjypneceqhdtpymj +spbphnlcpoxxsduarjnrvhwujsbzjv +tcxaloivrdutdrfieppibrspokbggg +ndbpeyghyzejgxstkiivojkhnepeqy +hyjenademzzbfagfcqyhrkxufozjmy +xcjdovcrzifvzchwcgknvmyxqdoygp +ruejiqdugxvgumiqvunxtnyyjnxuxt +ruxdriaypwfpeuvksnfzzuxytbsgkp +veijxbptqzrwohjjxusbtrngrlymig +szaqxvziqgtlwcjmqbnltjmhavfhee +elreivzhxyytqtexooaqaxyxwdasmv +cygvmyihmhmqkeomwjdijiinlxuzyc +rufasbdvydrrsooxdgbrhrhostsfya +fsdaopdndmpxiazsvtmbpdcjaimjwx +vvoepgzxwrxnxwpcdudmsgxkwmwebp +dmtmexbeordglkccncfeqydxjgpwne +zcjsiamyouoffmrxslbuqlbjlozxyk +jkvsbrfnenxiaoljtkrblihcngsshq +uuxoxawcgjqtnsoduwgenrwcexhzjq +ooneympeocdmyjyoytlhuskudxnusl +bgihiejuboiibxalzwrwskgtklubah +jzqgenidewfaeybpgjkotrjletdtok +yiifnmnqdyufjrflwgwevbrubofztd +cqoernwxjffircfkjyjagjxvjnjndf +wulmoezyqesiyrwnvectdvcyfcjygz +hnufnzctwbojtpukhlbqnbnydkgdvg +nebyxmqwvoohfimgizrrxezrfxwwje +hwrsaiculxqyktoyoxyrhwmombwwxj +snnzyydlzslxqsdhrchpeiospufegx +nwgraxsyutfyaieubqujkosrgwkxuh +vgttrfjfxctmehahdynnrpcwgmpjew +vcwppfbhrdtzaetkcovmzhledyshrb +shfnsgrskegdcaickbqopsfrcyadmx +uuwsxomxptdegpyitqpywxksulrysp +fjcjduevurhfpwexibnhxbaxhzbpgc +yospdzcquliajpyqaqhxoszchkdksu +cyygsfcbqdmuovoiupxjjmtaprkuza +jkbfagjbesdpzipfivxnvimeaehtrs +itkgciexhsmbwwivrmpwlliszormdv +ofdiupmklmgymcdmvwejobvftcjldp +mzuhiunftkkaugbcmkpbjzaemiheon +xhmewxbgrqaacmnvpycrxlygnezytf +eteprzaifpghmtxsvayzeaproxsofj +nogjkydhvciyuvmdkmxpkbrmalmgzu +abkxsbuoxpxltqhnzokhbhrifyhcsh +zhwwkmurdtbgwumnadzvzgqgluygft +xrneohlrakdeccysvdqskardfoupwn +biogxsyfjkaupbmrvobqicjljnefef +znoqepoynhhribtiwnvpdtntliisny +hveesxrkvgourefnyaxkhsktsqrkfo +dnowdzymiohptbbqvysqbyjnfsbzcc +rchqngpmvfinzxrhackpfgjpvagkew +zsuoagcninhoioknswunycxnexmpjm +qpmsvohkbusiygwzlhxxkyklmzgzeq +xyatjramuwfzafxlwojmukvuhnnkht +tnrxtydrgfplchvklzowlpsjhmnapx +dwfkdjbcmgrhvncycsnrbutqqisbun +bftkqugirhnvxjnlceqjqimneoojdy +ohwkveptpptbtflegopmakqmlcivxs +qxycxcsamqgmpvdcvjoxrscjunnoux +xlsqrlwnmsyydbubatptvacwnuqytu +sbgqxefxdmpavxlzgppkeuddkilrhq +vwclnlvkllweatlpvfetussjggzanx +rzxsidsthiqhdxndmnpyykehtqkcbu +otysqzgkpnudjoetdhwedhhpjyyeki +rpwosfxhrehixskywwasfvpmoonrtr +xnycnihphbfnqyogpqdidhbiohnrge +etknociyppfdrsyatywjegusxzsehy +ygkagojsxzwwmazunetuflejarugws +nbbdulrlkuhzvrgxtcfkcltsvdpsek +zzbrusuueocenznwarnwrjoduzooey +dbxavguzxtxwsdixgsrrehccpjliqm +vsrczeplaniwaxkejdwwbermegmgvq +azwwdwfueijsjhjopnsercnpnzleml +ndpsyazykbatnydptiiyzklmagsqbd +wugtgntokjuntfiofysrtwuojqvohq +vgszwbehifulrhodiziwuucvhlzeuf +btdofewvlanjnobwigfrabemqkspzv +nhxhdgeoaxrusdwmlfrzvokijclazk +rccqvxvmcgrbepatugeijsxddazsro +iecdwteqklfufhgilsrkzgraqhwpex +gdnytpzxmdmlacsrwtgkkqphhgrkje +nqluvjtmcmimezzlgdanrvgefjjvie +pyoqohfxcyzxrnreaayhacxfugqzoa +gavihswctxumnwtyjyfigfdgfqbmzq +obobjlclmcnbuzpfhpulstjhugnaem +ihvvteeqyfukuywwamtxlmmdovbeju +wgjedwpqwoibutrxsgfswfhzovbswe +eedxycbqkmmcsullmadlunkplkefaf +hdonvdcgqsfiffrtlgbkgtatqpealc +psndkkstmkljnxfbqrpnboasdccccq +dfknjqgoyvnsyarbbvlojgeiqypwbe +kmpiiunvbwynbifkngggpguafjocrg +lhjrzhvowzhregiahdyzgferzxuiyi +uvekpofvgmnghkwafuzjdghdcuxlga +pdbakidudeukrfysqjkikpprhkhkhw +kediigmsuxzkjxlwhulbdahlyrlxvw +jgxstponphxwfpylzfbamttduflwlb +ydqprfmrtqznbfaaonzcuifokskhzs +qnsdwylaxwldlgaefounoqqbnwqotq +hmyksydfsnfwvndxqefvimnaiwhadv +dhnljozbehpwqcapechuzrhkplgwtv +uygjmjdofhmuutetixiyydhahkevvn +zevbefjcirsjxurxbghygjuqmpjdcz +thvlxleljvlhmhyzgwumpsdvwfocsr +uygahmfmzstkhxuvzvpfmbextvhyeo +pqndngpuumwwhsldbfnrebwzkisaua +cqfatezjlvtutibcynsntabzgegoqg +hdogdphibsqflnzyzfbnfmccwbecqb +vcqgtvhqfbrjwdvncmiwwuuwjcphdc +xuygpmpxtzcugixongrsvkphxyzeid +qgmfnqoddyjhzpdwlvqjvcyhpaocyf +llfrvrgkotmlyrzwphvgnmonjhurvk +eujnnypjuwgbpddbuclrvriiwbixsx +wuyxudjhqdblubbxmkddugxvllcipg +fptbbwqldkbgxewbdykviofcmelyin +oarpqnnewousqytqvxowqfcxxztuth +hplcyyysquqzkdhaitcbmtcelnfakt +qxarrruukasqrfnijxqmmjoihfbsez +bhwbeyhqnnaffzlczofsolumwudyjg +kgjkdynwlsiqrgrxorvvqaanrcnbbm +tsdcguiwlzmgjaamutudoaqmpszsgu +davzsxtvjlegvlwaielxaukgypgryh +jlvragmsafjuccniahpqikhxnejvms +jbktdsfhqxmljzizuffsezjyxecopn +ngkxwefuatmlbrqbgqulghhnhgrmei +xeihhskeoksgtqgtpnqbldzoyakadb +btbeqjrvajqrsaapxwgtoizlmvcojk +apegeopxynzjvqkbvkkpmaqtonccdf +pbwgrmuxiaxeonuuwwnimcruhsmbgq +aixddcliqrevhrlmrufbxdeuxqrflj +cpgugsmerzorjanlbtwbccwyimyxmh +rtybuknmedwjzmaoyxdbnqqtobqzkp +tcfxvoakxcunehxcreiosmmypfattf +cknzotusfxyuhartnizgrxfnoqcbdw +mtplzcjqqyoiswygbnwmfkpjumzusk +ssaspolxynjmsbkheebpbdmdukvvzf +ohxswzgqdhehplipocjysdfqyrwvyx +yhnbetmcxtwhboaenvfdpapkrvsvnp +kdtqkaqsjlecsztekkvgiojugnjfjf +iqvqellwzkbgsyfryfqnvrroasxvdi +upkrwgvdkmkvkifquvgtunysjsmbgh +uydfximrkeadexsndfnhhsbqhsfwtl +xjmchpbwyymonrdgvmegrmpzfnbfnw +rvohlbghmkgxqfnohbthbjluufdocj +caiimotdphdddvnveifebziwplyygp +khchueosszzpdupbgwadkuivyurxvc +fuipdytrreeoxujkbwghdthlehouiu +iyapmvexlbcoetcimcbnwsjavlkzkx +xalzrqadjpatqcpzsairqgmdgjmuop +ydcanowdiznbbtthbngtqigqeormnk +susnnrhuxobzwvmkyzdqpqdxtnrpvw +qigwfukmkqxgvkvtxmnpmxvlxxifui +wqcglxawahqndyharkqirphncdwkvc +dvywevmbkpsjgzhyhlsuldfsssddug +swqpsnbbgtwlyidjhzmqkmwvwrecax +vbqyibbyevybroayasznofspvuqmat +dnmyjnsmhcuvptzwyorwkvplbhrxzj +sjkamyavvirkpyefjvugmvpilcfhwu +aiqojrouaynepxfyyyplviacxvfwax +yzvfuqaanzehhpdffdinammzhchyey +atczwvwdxkkkfdyaiczzvbcigmzlwx +risxbubqczpgdmpbwfonuuhjrzskls +lwkhwhdhyyqvbuuisdtcjhfktlshex +choryegqxcnacjktfpvizjjyhpezxx +jdrhywrsocrnqcnxfpbcdhzafhcdka +rojrrlrptwopfpydxbvjnraygxlfes +ffrejcqwsuzzhvmvnclhgumtjxsllz +vmatqjtuhysrpuepdvandorwaimmbr +ilfwqhahtfqhcfwtvgjebgbrzxsdvk +wcxjnirlmkcmfdtdxtzgroriraofzo +kfycqkfozromxsfhcjncpedhgnirtk +ubakxgbwrhkutumwrihodzyjvatvxj +uekeeasiozurneuyxszreykfducdop +yltxeolclgpkrfkngwdysblqccsjie +zbykectvmzceqklyzehebdyvvyexao +wvivjweizlqcjebcehvkhruhoyyxug +tistsvqpkhqtkhhcadeanzdiqjcisv +bqinkiwmmmbdsnzveglghuyhtlbwky +tkobmqudeyycwcncvsszkmiskepmab +hwgvvzlheknqmvjvoawnmldgcbcmhs +xklbzxqderhzlnwvdlreptdhsfwysk +aiwszweydoyiitxsweucepemwhqfil +cogzldmvpebcunsqoprrqmthgfymxz +baxohhiewwplyxlgxjvhirvvwigugg +rvohlzdxiqkiteenphfdsjwygvlsjo +juvzvphlyqjnvbbaclaxdjtuihhdlm +wnrwgzerpusnmfurdriteqksbfgvrg +azdwlopsrusbodjuycfdrbmchkdwaq +uaptgwqmgskruyhoxrrcaznugvkpht +lpzwimkadnibuggldnuaqpdqlgehgl +agelgkvmtasqkhlqxchwbtjjkhrpuv +lbejdjrfnddjklmpkrgtnnzccvwadz +lcqqezdlgjvwinljcgwgkfpxbiwjuz +mgiteqvqbnjqzunaleiisylypyaygy +qwfoiekzcqnptzflgalqtxaihpbcpf +ecbkpwfhqsdlwrhlacxjydssswragy +uascefcldjssbggtsoxdnbgxcqoukp +bnrjopwcckahsgezghjqwdvelxhevw +ziqzqzuuwlniwqgqnhutpoyqwvduge +fptegytacsfvdkkfubcqpngaumhlpl +lebpfjyvejiiobtesaldffhdcqodfm +pqsvksqpwrfrxiomyvjkucprxcpgvs +lfnboiepeqvvntcxqeyuiribkfbxhh +cwaiokffapyopljrwsqaqqjynkfbhd +fvvnuvxnnsoskfkqpzoujzetrnijea +hrotwbgpygnmxjyfpfzyowypdtkamt +hlitbgrubuvmstsnpeiodmkkdwvrfu +twczigciqwgdipfdpeobpkyyfyfpox +oarsklpgzyyvqydyvgayhvdqnqeweb +lpviokvocrdizetqovxefwvoyljycq +mzouuluczntdnozwmunxyvsxoejzah +gogtmzhicwpeowtbbhwxgrtxetyqed +lzbbaoyfphvdvktecrptgpkirqlfzv +nnrzlelylqcuoszmkuoopknkcmgsmc +xyujjgshurlcaakolsikryrpkpomoj +txyvhhpvdvhpcqbbrcsfxqwrhdaoek +tzbachzgpkyuhijjepfbsmzaksagta +tqxwgixfafdultfxkobjumtqvksidd +zbgjchhasolgaoblxujrcnxavpasph +syvtvagqgqibbaopiwktljswhvjkxg +soxlfrtrxwjhmetccpbnyuyondvovs +pzcemmjyobejsgemfbcrtdxdzbpizi +wswgxjtgvaarkjpdnhuyeqapqxklbt +qpmypooskenckfqkuvvdowthsqjsgg +kyzvudabvnbmgfnnmucsofyoaghqky +qkfdttaeunqvzbdgxtcqfonkogliga +hcdfkaojbjofzjfrcolazcxdsblaqb +tpbxnvbcouwrvsotgzxymtqhrlqvqk +lkioyxkbfjihqrtysnoeqebhslfqew +nddzzvehwhdwkdrruwlhfrtypgqdcy +iywfakcitihioetljxmhazbqomnhwp +xmqxepyjhrvpkiaunxunsrkxysvhup +unrepacehbehwzkasktoiulvmyfkyo +qofyhgwbdjygyvhpmylsvoaaikdlrt +vbwvfzmzgyhepdpudoifufaipkihvd +wegidlgdkhynwwgrwmcsqpwhknrbgz +jvxuvzeugeysqmmllghyvvdzmcxodh +eqndinoeevarriictdzraqcsfyequk +terssxstmtulyprpgetahigtplgwjg +zjblgggksnlgmtaccylkabrbqavvfl +fzolittkyevhsmatgcryktoiqoosvy +fikexkrmdktpklfnmttshfxauzweyn +czcmegztddyvciwjidznrvwxnozntq +bhtemcuhtbsjqxfqabektwupdbvnpq +ukuoqcbixeayjjaculcolkaantnwit +kvihpmiwosvdbdftnavecbklzuskxc +bvbwjkyqzoxkqagaiuxvleippmsreh +ieudxnrqqjzrpcxugebrjocyaxlhpo +fvigzxunsqisslhyymmsdbmxzxwqpi +zubrsvzktdhinsnhbtklqbpbrfritg +htxfpnlmcpgceombmocsvqxelcioog +ngobuwwbckqavraxknmalwadipmqba +fznagfhyqdtvbidzxplvnkfrziacka +rifymnxsowlspgamhgmiyewmejkqzo +xqpsnituqnfsmzgfvhyjvwxjmzuscj +mgbehuzofcotcwlqltpmttzcpmmmfe +yewcvbcsqdatanumfxguqdzkfruxfo +frkohmxhklyanixxvmbphehkmducug +ksopkdskbxjvfixuxdqyrhwetbopvf +jayxveqtjpxhwgzpdmojcwdankmrqy +dazznoyjbffjdzqjajmzqvvqqtgsgy +jcfbcymatsnjswnxwzhcadahcbmoxy +ffayublkquhejzxbinzgkudruhhuye +kugwudidlbvskrknkynefmdhtjrrlc +bsnhzebfebibybroxtouppitppkfgz +dctfqvymdykfnjsuduivrpslitfuyw +eehefxwiplcyqzqkibxsqaqjzcwdsi +svskakxmdfonmatydrixviyzdxfunf +yubkrdsnhgfqjmhondmlnjriciiwyz +fzustudopcvmpfkmzocwtnygncjoih +pzygvemiukfgewmttkdlwldxkckpqi +acjnykynrjgtdiiwdwrntlxwpfgrzh +bprrymegehwkqtdxbusedtnjzfwjjc +qzqjesnnpzvyehsohozgwbfqgjxprp +vmnovugmnzzmswlmpejwlneabvkswc +yfzuqmiljekjiexocfnwknxfhuvpoc +vkzzglgwjwdlhcteenzqsbrbkemymd +fyzpmnpcyepdmsbxnlytqaemhjoxqq +nxsxjwgiiekbgvtzibetpabpckljyd +xboilgfvfgjsrlsitqpxjbryeazxhf +ipoymfeedvsgqrhtpgixfiegdxkmxh +kaueqgeocmsookclxywxqfirtqnrsb +ykmanxaduyzjxkqtderfijzgqozzcd +yrosuxwugikyotwadtdghkntucrifo +zarwneffxjbfbranersglaiyohllcx +dpznzjrnyvplldkqfstwgbctsxmmal +zsraokgzwifbycctzzblbvlzymtlrt +vmfzkxubdsjtzkcqjxbvfimrefbxxt +ujypozbyopdnefbzyadvnqyatzrulr +jizpgypdmssxvpbqnsertosbpqzozy +eafawayewmuaodrtlwslyabdbzbdyi +gntsapgduiuejhhiwwccgunrxdrnvp +xhiwjkxnymbwlqtxaktnnjfvohefmf +duriuxugoezofxvrqwpirzajrkhoag +lphntunahghzcjqjkgqyfshtvuggsb +avhziuqonlhyfcpaznpafzastxivih +yvtdjckurquyfznqojrnsnkhppcuis +# +massa +ma +aske +mskt +m diff --git a/unsolved/kattis-kth-adk-spelling/src/main.rs b/unsolved/kattis-kth-adk-spelling/src/main.rs new file mode 100644 index 0000000..020b630 --- /dev/null +++ b/unsolved/kattis-kth-adk-spelling/src/main.rs @@ -0,0 +1,127 @@ +use std::{ + collections::HashSet, + io::{stdin, Read}, + mem, +}; + +fn to_str(v: &[u8]) -> String { + let mut res = String::with_capacity(v.len() * 3 / 2); + for &c in v { + res.push(match c { + b'a'..=b'z' => c as char, + b'1' => 'å', + b'2' => 'ä', + b'3' => 'ö', + _ => unreachable!(c), + }); + } + res +} + +fn main() { + let mut input = String::new(); + let _ = stdin().lock().read_to_string(&mut input); + + let lines: Vec<Vec<u8>> = input + .lines() + .map(|l| { + l.chars() + .map(|c| match c { + 'a'..='z' => c as u32 as u8, + 'å' => b'1', + 'ä' => b'2', + 'ö' => b'3', + '#' => b'#', + _ => unreachable!(), + }) + .collect() + }) + .collect(); + let (wordlist, words) = { + let mut s = lines.splitn(2, |l| l == &[b'#']); + (s.next().unwrap(), s.next().unwrap()) + }; + + let mut wordset = HashSet::new(); + let mut chars = vec![HashSet::<u8>::new(); 42]; + for w in wordlist { + wordset.insert(w); + for (i, &c) in w.iter().enumerate() { + chars[i].insert(c); + } + } + let longest = wordlist.iter().fold(0, |acc, w| acc.max(w.len())); + let shortest = wordlist.iter().fold(69, |acc, w| acc.min(w.len())); + + for start in words { + let mut curr = vec![start.clone()]; + let mut next: Vec<Vec<u8>> = vec![]; + let mut visited = HashSet::new(); + + let mut found = vec![]; + let mut depth = 0; + loop { + for mut w in curr.drain(..) { + if visited.contains(&w) { + continue; + } + visited.insert(w.clone()); + if wordset.contains(&w) { + found.push(w); + continue; + } + if !found.is_empty() { + continue; + } + for i in 0..w.len() { + let orig_c = w[i]; + for &c in b"qwfpbkluy2arstgmneio1zxcdvjh3" { + if !chars[i].contains(&c) { + continue; + } + w[i] = c; + next.push(w.clone()); + } + w[i] = orig_c; + if w.len() < longest { + for &c in b"qwfpbkluy2arstgmneio1zxcdvjh3" { + if !chars[i].contains(&c) { + continue; + } + let mut cpy = w[..i].to_owned(); + cpy.push(c); + cpy.append(&mut w[i..].to_owned()); + next.push(cpy); + } + } + if w.len() > shortest { + let mut cpy = w[..i].to_owned(); + cpy.append(&mut w[i + 1..].to_owned()); + next.push(cpy); + } + } + if w.len() < longest { + for &c in b"qwfpbkluy2arstgmneio1zxcdvjh3" { + if !chars[w.len()].contains(&c) { + continue; + } + let mut cpy = w.clone(); + cpy.push(c); + next.push(cpy); + } + } + } + if !found.is_empty() { + break; + } + mem::swap(&mut curr, &mut next); + depth += 1; + } + found.sort(); + print!("{} ({})", to_str(&start), depth); + for w in found { + print!(" {}", to_str(&w)); + } + println!(); + } +} diff --git a/unsolved/kattis-kth-adk-spelling/wl b/unsolved/kattis-kth-adk-spelling/wl new file mode 100644 index 0000000..bc1b0e1 --- /dev/null +++ b/unsolved/kattis-kth-adk-spelling/wl @@ -0,0 +1,500000 @@ +grukpcnjcmvgrrmvihrwemeuansixf +tlpnrdzxcyfipoplgwtxgzpyewzhiy +zwmgiewwmbiuiyioolsjusonzucrko +jnuktfrqvscteoullquntmkkztfays +cqnhznpjfjtklkjsccehbnxvpobxia +ssibqwrdzklicdlgwjtuiafralweeb +knrbjzpfxxlcskmvknwlkkyjsncbcc +njbhwplahsnwvivfzhbzcpalsnxcbw +ddzspejqrirlohfwummlohggjhundo +dzoaxpkdfaldrydmfgnrjynrtpztic +iynvbsfhvnpqdlnpxsvyaddvxrnrie +uvgsxxeufirobzxouoverdhrfqbawt +gdlraimoiyqctxfzouiyksmltrfoiy +ckaopwkidmfokxswxgqrvmogjcvrnl +bponvsuscstixugflnziasgzbbaqkg +nfopncdjcucqbbbgyphwlnxlkbqkhj +mhovrvsznieaxbdedojxtyxjbjiubg +skxcaucdlgqlbnmmlwcbatgosnxiil +ghibmunhdqilxfockklceydrelftwn +ohsbgrtvtrjbvftauvirmdnzgyqftx +gutkupdsrmmimsonuwstwnxiqrlppl +ijfgsjqvwovhzfvxpikxccbfuhijgv +jcxssrqarhvxxbjotqtainpytbiolm +yfyjjrjbjpcvzmgreiluxmtagazzfu +zarrnilizunqooxzvofyiavtlzppch +etqljmidbysxguorfvhsyantpuorli +kymgvjscjdjhtnaabsizomzdvihefg +upczmnurwuoczvaofambqjniyfschs +spzlyvrzsbqstvvzjaicwbnxqqbwln +ypgjnbjdiipcrznykklapbcghgbqfa +fssxxvpgfbhrknlulxvvmpgpsvpplh +qpxqumspiirjvhnhbayxyaexjntnzt +ixyhplbzufevcjapkahbfivttdrucw +inumjqzpkabkmdsladnqznfhmfbyfh +ulwcinaovzuwlyrvgjcdydpnizamob +htwodfjlisezswsvqhqioriasxygqa +cohrhlljrnqnunfwmtkyseptcwdukr +dpvzqjcsnayeknoztfkxxjflvuspud +wxdrncxdzhklfvyhbiuxkbzyklwxnz +vvzygwgqwglekcolzessjamujajbkp +hpminxowglqyoxwbhibswhfjnlesyv +nispjgcvcrnzuipguillqnxstrrogn +borehmjphgcchnqclhrwzogewowcdi +lphsfibpmmpaekpmroxjjfqkmryzpx +nrfzyoqbbmervxrvlupzenahojkyrb +oghpofqlhpvexkkhaacyvlvaqpxaxp +invktnldwylnqnbxmrlotyhhnrbemr +ntdpfupjjpxyskehiostqrafeevjkx +azeucpeckalbidwjhdvpaaryesabgl +kdskcgslcqtcyntidgejbnujjfiyba +ofapuiyiddfmeoxplssiphhpwvsxsv +hvtyjcenjeyolwiiccpfoxygblnlll +ghjhkpzjujltjetuwvorfzbjjmassb +bmgezwkfljpstxzymjsctgvprzajhn +scxxzjtcrslfkgjflavcxtvqppmoiu +dhfoahpqcsfobwzkrwgupajrwhquty +zvgzssigdehdtcaklrsmeukdmoxdub +tshjbircxrzuhcybrcsdidrrsnktfo +fhxakfrbtzsbygzgfboeyeymzrozgs +bmwdnseopoeznilqlxawzhcdphrgxu +okpxqdkaeoywfljbbxaviffdrxpsyz +afbyvmhkyuvbscyiujkjwjatsazxsc +kbfdysfbupralfserelzxwemadogoz +ujzbvwsrjcqvixpxevehfwytwmpxel +jfmzsjccfrjthqxnxyumkptbubtofo +idclnaaryyxrvvfrkumssgpbdnsvpk +zfsoatvfidcepkzttzywfurkizhlmb +nqaeyoxkxviuwxixmgbvuvmspthwxi +rabphxkqztixqkxubsydopbbggsdlg +ztffawxlmuxxlbnargkbiwigyevkkx +fqnkoxjyynonbuhtpxjxuhmpwxnnmf +rzfkkubzggqvfpelnsdaqwtxddrtfi +rqhdtrtjhjhhpatnvkgxxlkmoendxh +osvwzebriinztppyrjqvdtslohegmv +uurochgokjkyycocigcjliwavguxad +whsrewlotiaovopcfpcmoakbfhrkjx +cfhjqjuwmnwjagtuykcjunqiqxhpza +xegkdbmdmfiyxvishihzaurkaqunpm +kwqiamavbqrupfnzmjeufhdkgynuvd +ucvnarzctbeckleeuwhqfawuyqdwfr +wkvxwukxtsqcefgznusqeszvdnzcwt +layhryzqsmsqewdoqvygqdlfgkmfvv +iworbfxtaudvrqghcohjebsxfvvmmt +vxvlqxlzyfhafywmmizntdscopvrli +dfnzitxdnfnrreptrdlncpyuiqphdy +hcmdvnwsdrxpigdbjtxskzmowimzam +hxmcllzytyixugurwbvmdmxlwrlbpm +hvjsitffvqypmnrztnlnszbtfhkoxd +tkyfwfztbvzsivvqcxiuhphvhfkhfl +kqaylepbevtmujilsqwpzzavjmzgoa +uynenmjzwlrcvnanyfhywnewarublm +llkpritdpwxnlhhipopwaontibjtxz +vqqfzqhbznjvgxzhqqddmmokamkeup +fjogjxxoposusazglwgriquwlwibwb +qoskcgrixboczszzfvmedukonniwws +gcxnxenxbjheqxcxlhmzajemoiuhtk +fqqbhgallahpbnrdjnsbhytmmjnrxe +iynikrqivlybchogaqxpguezhnkopf +hyzphhczzemamlzjjgdemerfmgzplq +udylkjthpsevdiyqbsrovuntkpgkhn +nkrcshdkizqlxauvyuchxphedsmdls +gnyuddawutuguarfaorjoutmngsygl +efmbhocjkacyvuhvmkircsmbbmgjrw +vtrighqfkchcyuvbmfhpsaflfqpddl +zptfblhseccnbwystpgasqkfflefps +bdndhehlcuobctvxkbmkhvycbphtpj +ckruscvtdwdmpnvohielyhkhsezica +ckgyckxuwmizdwnrxhundomopojqzc +mlkptpwwxqwfzewbosyhdsowvlidzt +eeaojauxgkyxoozplpuqcxdvstigtp +zjzofjaddoyugerxgcvefnukkxvovi +xmlddjxsiwfzbpzsgrjprqmcynzplf +cibcqocliacdwigobruniuvuzocufg +scyrqzzhubwjvguqfohledefyqkfit +zefjlqdduzohqnxtjzcqppztlzogoz +hwqpufupvvyczgpkaitugvswvnipab +dhwiytvmpeohyxrhsfcelrmtsdrnuj +pixuomfcqmmwcphrpuqrolcyhdcigd +qyzpqqktnwxlpvejrkgbyvwfislyjm +ahmkksapuiqwwogiylzbdfyvnbgxea +krzdcurtwhvlsezrwcaijxblkvenzo +wuqlehpaatqpmhuqumkvjekrxuqofi +svohfizexpcqvcjbawdgkppwtqobds +yqhcbuisrwhwpgfkwkaddwwydodvlw +rhmivbhljkbvvuutedtllyjrcpkxca +wypwtipwhxwsdgmbbjgllmozzaxslq +qojorfjtnytdoloawbtxbzbjiogasi +gmykwkfcijepbrglkcrvvqepachoce +ykarecerabanuurkyjyacxmfawvwiv +gevisimuescylsadmktcwdmknzhhpk +uueadqgqdowyomjzwgrxjtojijudlj +ebyihldfsmxjgjkzrnvjaxwzxdykon +mivbvoisdgbywyybteybkmzbmrpoun +yeuthchzixpwrxtudpcmqiwkozemel +ttkfxgnourjkgtujwhoartwghvzznz +kxaamcaznzkomiuoxiygkozkbgaesu +anogjibphcxmeirdgkhgjopytxamxt +boxjbufkepkzuhmtmmyxlktefwnmmv +jgozxbkbvcrpaopepxjfttogtygquo +lsvyomfrhbalnhjrppkeadiapfnxtc +uadfzyenhhcmjwklermwpdxicvnhnn +nhckcgfpbskvfymhdaisipahwuwxev +fyexqtzmftidzxalecmbsalpzaflva +cketzvnsvrynvezgdurlcjjbtdazql +aodwvbpqmtvykycrkpfgneyifpdwdn +feyzuuwjhtkxblwmypmovqwwpumcek +ynklwpqejlmjdopfikrojitjvjfhor +jkfpngvnsnuysyjqxrnbivpcoauufd +jkubxkokeiccvzpusyfydzjaoybjxx +nnbttykjwwassyfgevhpbzkpgffsod +fxhfxbqbymijkeumvtnwiuohxsvdmy +rhlkzjxdblqsbcitocqwtqzlsgeyti +abywfiidkgzsiagxrtgfhqnwcptjkp +igmhvyzcmtbsmecxejrqurkwzetbhq +izjdxceebkvulgyyaocgsvwyxdxnga +rfctbngrzyyqrghhlezcfztxspcwpy +qcbwsxnwpgjijesmdjsdgsimzcegau +knseenqcaaeotfvhbniislywtmdhut +daorrkfzuowwxdwshahbmaokivakbo +zwecheqakccwqaihehnoqpfnjkcxlh +wwxgrvwizehixecvexqrnayaqthpbd +rfnuipttusdheqccnhaansmgrjuqnp +oegjhvuddysnkypkzuijsgnsajottk +hjlehkelvibxadjqmdzgjzhujbdrmk +grsogwineesbgwtmurattmrdiiexpj +iysserulurednvblsiouhsgjfgwxfo +bgpqgptmqmpgdqtqzlcvsfyjpjdzuc +gatsdrbusofjtzkwzialfvonnvntpe +jictptaurcsjcnzzkvmheuosxqrzya +dhxsqfvdfcnrwmbmzmttfrexwriath +bhienxjrsoirgwlmgwfumhehvaaruh +yiyiufcftyduowexcjhupfffjxaoxb +kuwsniykaranfnqfexmxgrwtrnpjaq +jxxvkdlwbqkaapmefdpnqqcxwrfjcl +sgtetxhtomtqvravkzhfyioelyrzug +tradhtrurlhvdujplnpawkrhukstog +mqnokfywylzktsltfrvbmuqmdinjwl +qevmcyksdkwcwctyyjtqpobbhtguem +vqojcksuddzwnckekmacjbtzijykvx +eivpqkfzzrpknolfojfzfcobctoyer +kegahqrxjtmstzlmnrfdnvxtrmsikp +zoucwlknsamzgolwnrfvfvtgizpnts +cnfwgdweblwtzxexnvhispmpunynfm +rudjaykpwhicfcxckyvmngnsathvmc +fyirbhrrlvcgynibtcuwtbznimbsoq +pgaxutzrdbevnieraeqfhdrjyzmsel +newtggireepzbtrfqqrhzszkpytzjb +apykodzefqwvsdjkjleqvpkdyduemi +dzitijsbbpwzpsgdjbxiwszcxbqvix +lvdvokukphdmavjwkhgeqlcrgstxlh +irgjesprdqhzogewxkfaprgukiigvt +xlcgkhtzumisiloxuzrblunntcagas +qvmwugjniingwylfkoixtnxktyplfz +sugkevtthqhefukmedbobywysvznvp +ublrwbtywbmzjlcybgonovmjuwkkeh +vrehlmqtutmqntkrjomifapgndango +iolvssyocnfxwzdkyrodegwmzowhxt +bnrqxrsnentytcgvhrkqyrwgmwdvkf +ojdmbjanfhwznadwildgpuygejngiv +ezyfztzkfttpjvqlmogtrtxixcbdni +biirkpmaavkqvjiwpjmuntovkspoqd +zzcvwbrvaltcrkxgegsdkijbmmwunw +yxlzhvjlxwwdrtkfyswitxsqliffbq +oclaoqahhwvptbbsqnpqvukufwycfw +dzcgurcrtcgsvnisrvkhnoybxrbjtb +ktdglloganwfjaolzffvvnjhngkhzq +chzoqczkucbatpwkiprhyktqivkoem +dtlrxpimbgzpczoqpxnvvapuqxpfjq +flmtcwpwchytqsvbvbgdlzrluvhspx +njvfpnboizdzwwdserhsimvtchvvwk +fuysaysvtqfhdelvfuspgphxajeiog +tysvxxulcpmhrzpzvhrbqmbzfrtlby +gxtfcqrkebdhcezrpfxsgvcydyzpja +xdysxuyjhtffwiegnjhdufdflzqlft +qhzlaxfvhyylmfpgbeevglmeuqidzf +xfmdhhjekpqpngcjzkxdlxkqvzvant +maibckammjluulgchejywngdlxzcqn +eregreicyncdrhssjqcjwemnmopawp +qeuptauwhtzkwtsinemdutbnfjbqdf +dzinybfhsitaebkiqflmblgoyepugo +fckbsmgbaanbbmebegwvfcnlkzxngj +vpnheveylksxcwxyrvvbafamudqeet +eszcmshteuznznxtvhaijxngatjcml +euuzhdogfyyknzlmejzzytgaqcqcwa +addtbhmqdqxmkivsoxyqsbdziatstz +bkurdlbnjlijehegdtnpxrgtfhsfkg +xlfmlvahedfyxbptasvjfbjiygadyh +qalycshtuxmrsittuhpylphawxcjmn +ljqctffievcztjzuboyzqubiqpwtww +xjzgtgzsnrbxpmddphakhiwlmdzjvt +uppofbzpmvdhusfgmjpobkmvwqtnbe +ejlxmepseaxgsnesilfcfxqteswxds +fnvsemovbhelgtemoozhbvgmapmznt +keadmcssnkzyvqritcuvdlwsymdcwj +imotkyslsjgblvrlowmrgejmppbezx +tcanqqburpwgbtnrfbiuaanijosgbn +qcffooupkdjsbwfgjtatoiajgccnny +tfwaaanicmbqpvyfzzdgilxofnebax +ugtrszurthndixoutxmiobliozrzrd +wcmqesidzgwpmflcmauruvfnzkwroi +cnewloaodwgnvtmoztfmejbjxznpst +umxhuzmeqxpctzsweaplkowxequrpr +agsvlylupmxpyxbeflkpwaugsdxlrk +zkiepqjncvtjgxllonjhcbishrthfa +lanecpgtpnitlxtljvsrpzhbwalqbj +imwvezfngvnotgwptrjgvopihmqjhb +prpfpjlsqfrxlclgraalxjqbfxvwez +wihfegodhgpffajeqydnpdekhcqyqb +jwsjyhnqspqssnozugoqfamnpdlrxe +gxaesjmzztylvqpswmhujcbfoinuvy +ziavhajoesnzjvrniebeyfrdhxhwjm +hljcuaisfowhnwvmvgrcvoqeukyven +ymaoyculuubvnzqyffyszbxcxrpqne +xnpvudtobuwtlmjuwgyfmsyvzmpgtr +mowcrlojmxafvjjmyzlvtlasqwkvli +uifbhllvudtwsikvttgrcdmqhwjceu +prqeotuhqcqcvvkkeauqkyesqqqxph +gadmlshknwqjlmyrrfvxizlerugfss +ncslnfozielfeaksmgymconyptrizy +jkutotawyhdmwuekwtyzzythysnddl +nllrhckpctcxdftilzhyikusqannuk +ooilmqssiceejsclhpnhnocrirpybv +akfnunrtmuflunouhpjybpcvnhastd +tzdeecfkbtfurmrxfjznsqnxlaqjmm +fiwnmgolyprnnafexmahurdqohxbwx +qgcxhvbwnsgbbjpdgjsbnnwnjqfidj +myvxesmmgmabrvnchiqyqmaaypucda +zdcnyysfolynngvrhipxssbwiwxpkv +qrnsqreceyuhwavilfmspxcjlsspxk +fjnvvjhypmybambhxhfplqsousdpxf +zptzrmklcdwoxsgbqrnclplgwyjjnf +okaaxcyluroexbblbabrttkwxadjsz +chfuozutxeaxampegzoqqyummgriss +nydxnxfnffsoqugzkjsxoxftijwfmq +iqxadbnkgmrqvvntudeqjowmyyrues +jorntkhfadkjbbijyjcklvyxehqoay +rocmeepdbkrantupvkorchzvzckkrg +sgdsqvhrrixnrdnruekhvavlmpkdmj +eypfyywtcakoyellnaqjievwegrgde +fuwxddonimipjpbomeitivqbldtmsr +xopgnmozckgajrzxnnvbbklcjcuylq +vefdobhoatodmxgwolcbeyosypfwpf +haookeomvwymqkxdtkhkrcofksxxte +pzuwjhnwghxtsmhytngwklrqaqskni +czhcquyylunzrimqfdcilyghzrkxpq +ufkujghqpuealbwlwgjvwmaxfhagmg +loeiysdnhogjmrgaskdlwekxxaaiih +fymiarkymwucibthzmwxphxfwmuqpl +jhxizwpyucminnvhvrqxguwffnixfy +ucmbwcqefyqquclekekdcvpiiyfpuz +mdovszhfkltjtgkdtmhslubqfedilp +bstnbskqikldsalulmlvoyrfqsqukm +xcsvxqhxcxhnssuuchwaxgwigdxukn +vvqgcdedufzpwtbmrrgvgdsyytgdrr +repagjuwtdgfooyclfzeufpcylakbs +qyxctliohofgribthvxupjpqmpfepu +lyrpcisqdloeukybxrelkrfaumcvkm +ltwictnqcisngxsgbabrwvijjeppbr +ioaqjngdrgiffjgpntzhcwwtveaugv +blofmkpsqozreuajiixvcpjkkubnyz +wgspweuregmvomynwkwiihlejprrle +bhsygitmzihqgvkixiwugmfogtnuoz +jsbahcwygppktvhfyzpypkpjbpoygv +luwjemugryqinlzmssmthmjbjkczhp +kkersyniewoxalkkzscrlfiafbvbwc +tbommxrhaylongwogzakjmpkapxple +vorqfowetzlwivlvjtbdvwsdvtxgvs +awkoltecjmvxiokiijxujomjhebaos +fdlkvomrtalolgeburqtkltpemgaiq +ndgblypchrydouykalvoahlxvdaxgl +vjvgfnpljpncfjpxxcsuljjqkuhcab +kurxjkimokjuiwrpyaszekonnhdwrq +ilcrdydukwrldcbhgldpefvoibohju +gnmfgbmusqxhicquthtevoyjvohudl +mfgsbbteiftpgaroofflqipwuhgidw +zzqfgoherrnabxdxmhfhgurfinhtcl +rltlurcnocwpcglrhckvtjjyipcnah +aqlqmejuohzjqhtxjyygmjvjriturn +eqgptlcskjuxytgtefmzattxohbynt +taakywyikrnxzsewyfkbgzkbjryskw +fsazfqmakhcgnfypadvfqlvkmnungt +wcofckheqiywdxdtuhfvhjqlcdeoic +xmhrslliwaviqhdnebsdpeewqvqrgm +imohjhyskbejwevxconegyfspdusep +fbxfcfkgxodaefbyjatkhsmgbvapcm +atsavyloouhntkhxdwmtlpzooftvde +jdfuogdrrxxmzqnttwewwfsguspvbp +yzgzgcvwlggzcvlmqahukuuefpsgxf +flfukngzrpzyesyhpmqgzayuacfepn +fgjdangrhrtcyhhshplslhzqfoqrrb +flvkaacjjiwrowrbtovpvzplqwdsph +ppxdvtujvdgmhawpbfstvqrlgmgmfe +qqppwzrjmufiqkokephgxrzilmayrh +nbotjytnbalcmbtfpmtrquxctxgqjm +jgnfiujtcfhzeyadfiubczjudzooqy +xoszynelfbrdlgqunbpfzhlghkxlfo +kovtoluluucofkbksmunjpcsigacbr +ecchydkrzsqfrzrwcfpfeogdhhtiae +qzyyuwyqdpacjdwqtojyrtpqueovqp +xkzzdyqbbtzciwxnyganrgqrzwddnw +zjtzkhuegglzuiykpqqlnfcguvpzma +langzxxyatcllqkysbilynjgpnnyio +xgezqoujockhengpwcwerrvuxgxpop +pshvsrkogxhpxjjnebzbfcenkbmgzt +jfllbgrzcqdanvdgiqfolxxkjlfdlv +lfvyjabtjcrwohugtolbdehjhupdyf +exhdesohlmwtbtlpnyycyojdwdybqo +pjbtrpkavpcsgozwuucpyejjghjvzw +rvaccnnifpomcovrbakbljqxuxsyam +idqfrozyfqprfpfewfktqytnwbkxbw +vattdxauhlgvstqweukribzrvvdwod +pxoarfccudwekainpacqjavswhrbxv +dwwvwrtjnebacixbohpwectzihhotq +ooxjmhfutbzujoswuhuequcwtwhhrj +tbcdukxxggczxoksyrrtyfacipkztt +ctofucrnwomezyndkbswlwopopxudz +hcghhezyjfxrvbqcytbrfrtaknudng +jierjxezblrobwzxojghjthneriqhb +zntwlypfhuwbppddpvwomwzqcsrfsp +iguziwkmrouczryunentqjqnmvfyco +nntwkmcnqeglsryhxzbbvorvgqhdkt +nwhbumdgfttoqoyyexlbrxehrvduds +zsnaopzpewbtbdyapszmwaapctogup +qyngqwiyxowhurmnelujxoetesoyre +hvdulzqtbpxnulhgzytyjlfoscuoji +vlyhglfqskfowzpvsmxnvcrrenkjbg +xbdochhfsaxhldfsublgvooiihlzqk +grjorcwgnrshhcsakyfsnsxmgirioc +rffhashannaezohvfhnbovhfsjxfmb +xolesmrokipuxqqxjkpwemhelgpwop +lkelgflfxnphevjemjlpeobizppyzc +komfhyyxpjbzdyurilceocqrckdpzp +caplaheolrylbhexymejifdfajdxtg +tpufcjunybfkygmyotwhmuybeyqwcs +copzicbdqtfjllxmdgesdxxeifufvd +gybtgnfolxqtllhpbtmuszocznylik +xbilngtohcoqunvjzqfdpbpjnnddty +ixozbckxvqjavlsabmubcndvxujlhs +sbrawrymqouvmrzuksmajyhxreeshn +uuhiytyspzecylqakjvhatkybrstrs +fqstphksgjliwxmzdccymnwveprgvc +yxgfoiiczqgedtzrkwtjczhyummhya +iwusjggpmaxvvtizqoqckfhzlshcto +oiafdusolvyqvnspvljcfkqgnpgiil +chcwxzctjltpfsmuyqlbbfixaaahee +rptlqyelknsoaplvuzflzryifowwyi +qybkowuiudkzyaezvfsflyyspftyjd +cewsglnshaocopawjqshxjngoopwmo +stxtbbmtzuneqzfjbzahimypustkvd +gdghdtfiuozifdbielinakkgwguehn +tvdkxjmkvcntiioohwyrohrzveesxy +nzlzcmchqgjoiqkqstdlzywitqqsev +pctqmsbcfyfmdirwufeuskigcpzmnr +zvrcqwubmxzeasrlwmwsadblhzqvpq +xhsmplwaevrpdmfjtbkabaaztdfdbq +szrdzkiikwtbvlldlhqfxkekqeqmie +filicwcaydfdpukelvttusptlxylsv +htrigxxexnkokpgdlljbpxxyphghqz +sggoagngzleimbeshvifaqbyyhtnxh +elcxsafjnghhnbntnpipnfzokeyabh +nlitevvrpagoryicueambzrjxtcsuc +txxkymkamqdyffdoximorqgjmikgqg +tjvobxjszstxaejoybdnlhjxnifsns +egbgraovhfxliknskcqpxxllojkxyu +evxxelezxtdyetjrhagabojazywxvt +cnskgkstvnivqcrdthbbawkyykzvbt +tdvuuqvwddstncinodknvbknbqidbl +ajdcprovcfgfxdmvcdhocbdnajwpee +seglzcmbpkcirjrkfargamelmtjvxs +tsmhnjwechpklsbsxixospjpryunuf +wbsfgedrcpuffnstjpcbvmlamlmhnu +rxqqyusnvkzjawdosucirgffmzdans +pkrfyxcsewmabgvdubtrjysswtysdw +skgisbenvbajijjtzzcqqbbdrjkhwf +xqhmypcpxigqwqrctohsfelvxwwkwm +odiuipgbqddlswdgqbrshzjlmhnjvm +eftncjbyuuixlwvevhqfrmdcuobkmq +yvbkzcubjdjglxdtdsdfxrznskcefq +qmsdmveugxetnxvxngufifpsxqcvie +ftkdhodwmfbumucxddupsrfqwtophd +onujqvfiisjjualisthbxumzzjewok +tvmgrucgabgfguvsvlrkjlhueuphvh +yukciumfkixviabicriodpxmqjtzha +quaavolpjeljpdftcfcglfqhkhknjj +pevjsxxlkxkjrhtxodwujuzlfhulvl +omfntvbdkbwpjtzyoclpdzxfnvfshg +guzraopozbablphjyxnhjqtcbmnaee +sldakewwyqtxemvcbcacfnfknskrhp +tfzlerbintscmsnykmyabnhnqkwbif +uxbdyennjemyzulszzpnmzqgyzmhme +cnrryxvzpqlsixraclhkbhpkdrzciw +vshyqjzvwgzzitatkursssqjczbbgi +ylidqffuzkxglrqmqhpomnkkdtvanp +gbkmbygcandjybuquomaoncrdqoyxd +wtsvaywhilpwrufbrnilwudslqmljp +pdkfxtmlkmknakpnufrsofulaufgfb +wluctbnrfokhxksrjifnrtpaskofnm +wjbrwuincwamtoohpsagtoorpsogfy +thshfieitkrrcmrlglofwvxpuavere +oygvjaxwnbcuakyzcsxnqpnyftkbhg +hzztmaeexsrwtasgvzfgomlwlsrhfi +anezxawgkhhuksbqqqydxgzziqioso +pmolvkxbmcnuzglnkdkhaupqdmmegp +byhocnwitzowykuunltfgndijsggwo +qqpitidqvsnsomhezhlssmquoatrpj +yhknjvuunyxxkfvwpbvubjsqezvfyg +wujnechamgrolcbljwnvhfilphnuww +pngrjvunivmdwhtdqkbyfsankqnbsk +lmrboqferxleavfemyxelsygxjhmuj +twtuoidiozsrxyoywohvrqbbzierrp +qgfnhgvejpnuuhtzhlroxieagzclfm +nyexgjwdortvccnqppefewebttjykq +mmgguvxowaqknszoisljhkwgfbscvf +wgeprfywsvvjjtatjvwtdoxfxvboob +fzkkqneewtnvsonklggobfbexsosnf +ukvorltbtfrgmbgzvdnzphwqsgzlyz +vfomvgaeedofkxjfueaazbtumrjafx +fqigdprwpggpeuixqzvpkskinhdhho +dvozyvvyklppnormbnvsxcwzkxmwvx +iqdjocwiggxvzajrdowuglsdjftgna +yymxqjipxyaonmmwlttfohhlbrwlwh +tudbneszomvguaypphnwrmictakvtx +chpdbherjiglfhpjbrzjoznbhxisog +frnsalfzyaodqmhyrjibjklfxxyhaj +ephacwweyipzuowedrbbarhuqwfftn +disfjrhgnszrelqtajqnidpequrcih +hgunqdswxbwmcdksosfbehhffszadi +oankweufhgpmtjgdjdcamqxoargzqc +ahlnnbdztpaidcmkifotlowracywnv +axqusuprrbenxximromiennqvngpro +edyvjlimzztinwftgvmqlkmtqyrodf +qurubulfohgjxfxbruflbppkovfrep +fepzsxvkcbbemtjcjcgjgglwruvavn +pzyxyqnemwvnvxyodjkmzgqyjomlds +lzotcugwicknwwwitgzqlekgfuqvec +excgdxwxrvougpagklsmkjmjmaaiwr +gzzuywwtgrgjaulyvofhtneplyscwa +ibrvwvtbxhkwwguckqzdgkkcdkaazj +caniydyypsklqtpggxuuhjfwlkvhcv +zcmlmybseprjgjdcwndysxrkiqpqvj +klycxcqqnntnnzzeqtwzxjthgrbkdk +dbovfhkcjoouijxbnegiictsjsuvho +rgsnmxiewjkbxbripsdusbvdurzdda +aimtbmdlietcmjrvjyipwbmvxyqguz +phyikurivsjcakgcalbsenzjhpkmmi +sjbcwjkghjaudmukunsuzzkpylftly +vofpdxisfseycoqyqprcuikcudghvs +wlcbkclaswodjrkeklwhuaweqyldse +cnnugdmbpytzkejroxetuzuwikxugx +jiqubjbvsbxjudeplbwktqohfrsfjz +lxmhatqhhppgcabagycubwyeogwasj +muuobnqdrmnmsxrtkdmdgahazflbtw +jncerqqcwcntrwtdpgyuqogfluiafg +sjoslpltswyjnivzfeuovsdvcjjviu +ykznvljeliuuqafaeixyslwvzdurri +jqftskqbzxdtmptwwsguuxcmoclmzy +oehwgqybnbvyojjfnjwexpssfyhueb +wensmvesaqgqldrfbontudvixwkhdw +eythwtefreuwqyfdgtrexbtsdswqkt +xvggmsdvykxdlfxokhiuocjuqepyxp +tabkjlmlxecaxncwfvqwthhfyyuqkn +tvvuzjwlebkfytnyeqkfztqxuyrctq +chjnwazaomnquvbouenwvtmrevrrlg +onhjzwgleceardhmgmqgfwlsmoztlw +thtssjxqdseqrapyscjdjwowiinjra +gxhycfbbmaokecejpzzkruyxsakyrz +ktaukyulsjptvbfrdozntkaowycrgh +rmxnualbbqhvzvegcviwxuvmxeqjaj +ksksvswjtcfqbtlquadefcwjaimdoi +deiyaplzirtdyfkajteawxqwpvbosd +ityxmokmttgadnewjtuxlagddepyfj +pbkxpwyvfwugszqgkszlpyiuqcyhua +voamjonvxpxwgusjjyscrnqkecpwsd +smgkutjxgcgcccqjfcpejzihqjjdtk +dyrvchxexgegtwiaieokovplffwpyu +jggnilqezwwgtmirykdqucqyorkpoc +okzrvkmwdorapqvsdgwwuvkgatkuzv +xeyuovyohgbmmnicgmmqlniuifmzoj +xgpmoesjcgbbmcqraexmbogcpjwaso +pqjxzzipnxckwtxqhyxfmontsfzalv +rujkvmvedpigltqhrzrqunozllzkfz +akuefkcswmwegohgjlopxvtukbpipa +ikqgysaxumtcaiphemsuzowzhrdwfv +kdrkvlxausqzdystdffssfeuacybad +caezkmydctndjqtfuewdgaectceibp +yqxeqhgbqhojsyizlqoqjzlwjfjipc +xlhvxvacrrqcptwmxpyrdilelctqbb +eiumzccawdqzrndsnmwqnjgxqeijwj +ystpndxwtsrvuflpnocwethotbefla +lbaoeyygotcsjctoebwqobxtwoxpji +pjpnbyjvqnmhxelqxxekmfamuroqzb +szvgxfymkuwyprwaivgynxqvoipcfn +gozbdcgzikwomlsnjuisrxtwxmhfmr +dabzfstgigsocrkrqqaafmqzolrzsj +senodkpfwjtrkbbljvlzdrptlgbykg +ifanswcuvrykifhbgidgihzjhqubto +jxthhcdcecvroeuppjaaoqmqszzrpz +gcgdjqymkczlhajilodyzpdoknshfx +pcxhcpyfdnwaeuebqbmfpxxqkkxasf +qdgrmvrcqbkyhpilopymmjmnoejhmh +qpdjmrxyjchjmecoxabropwixwxrbu +mztkqympkcjfabxkyxwkwhgytpuuzv +mbmyecfipwciaakpoblfutaqylxkwz +iysdqraqbgediifgdpxtluiabsvexh +pthzkxgmgcuxzyiegkmgdsvaljrvvh +vyoterqhtrgxplmzfcemctswodgxri +kzuorhfqhgmutfwgttxqdhxghtutmj +mdaaaqjlhntyimxtdvsxvjlexkgkou +wteqvkxvyvjacvydrmcdzkkcpacczr +cfzmsnkaxgnlgvbexvinwgcafbtsiw +qzedpqbqtjvkniszvyezlqhveqodco +efwmeiewpglggcblnxqvyoudyujfyb +cwhvgfnxripojhuzrbxqkxrrtcnkgu +jftodffixqwhyjmyhmvladxbrelidx +jxxerxruvzkteussaftihtgoiqamkb +cymewduzklpjsnjalgdgkntyptkurp +rbqhkacoqldiycipqckevnfifljzqc +mquumnhkhsmrjoupiwlvrslayrebib +licqdnjgjyvkbopgxcqpfliuldfftx +hoebcskoerjzhtidogjvsxgsnbbgxe +volmxirqrywrihogbgwyfgaociakmc +mwyiytfszdefyabzysyqvgwcoalgrs +wtdsobgpvcddtmitztthuariaxvguv +nvpgvddctuwanffmezprphczhxstbi +pcznaqsiauipegnukifaajrmxefpjb +nslyzmqpnbchuqdsfyddyrvqtuecir +mxkznrzgoydvrbcirhwaqgtvlutcmx +yygbmwlpvjthdgefumntmjugljmcef +lucinjhwnkbfihdynxxfthyxxidrhf +jeafehnxpqwftsbljjhhositfwjwrm +ltinslomhsrcixtxtwsgzkupfurfon +bgewgjbnpdzqfnvztfebilmqvkggrm +cytlbvygsbjcuogjlljosmrayikolz +guyvbmvztxkwusfcwfdivkwnisyqtw +nwqtkszkjyquqeajwliwlllqdiuviw +ysutjsrwtxlgynaqzoopvbcsyzgxxe +jphtvbhousgzyvkknuoaqvnygxeofs +vdsioexyokmhnvhlcimpmqxiryidyx +ybitynllrzblhlnmglibuipaudmzna +evqjopjasuzeqwtnhoabqcawadskgx +rmcauyfrxwvwhyphiuhuattibxrrny +ntmoxxjlrqnjdfcflaaubvurcqgduu +sxehtzrpzlkmwzzqbvinwumimkpsif +nnvxnefxowmmeagcitikpoedoadvkk +yicftpvxfusmiyextzsfmejyyebsrt +pweftfehwxvbvlzkyxdnfczugospdk +zuqzrvvzakotnkegiytkynhvazckel +zwszlqirhreiecvgsshzhrlmknutfq +ufxjaekcopyovyzucunhnwqrjnyomm +xwewhebebghjhiafjaltazzhqvcoll +pagcwfwmepoxgrjuhorhbikqirdgyc +nlifwhfnkedfooemcpijpieexcuwwo +mvsjzbhkskvelynsadkpfgwkfiyfxq +khpglynbfoyhqcqobvuidplddomywj +rmwatxahjsfabjwmbwmxotfxxodkrs +tguhcujoigzacmqxixpvojnqlnftgq +plavtcyahitkewiqiamvhumxjorgeg +jyqbhorudydjmqdtmxugchgeensplh +vtiposckizbujbwfolekerckpzqqru +rufframfrbwzbigsrlnmgkztbyblin +fxulkvutzhgtdxybjkzcbzlfnoppgz +tgnoggausrmtnntaogorlvxaixwlse +pnmjcjiijhzrvqkxvucnhbulzzmrcl +yrbcykmxrsxohoaanveduokagpkwoi +ataxjlrbolxevbsqwkpexhuhxtaxvg +lxboyqnrfxrdvkznspeddhsphsasuw +evudconcchsfpjsehyzzbgpfvjrwky +sykddcfgoywlemqpmfhjxrqahmrwui +yiangtywnuhkwkuhivzofbqlbwkobx +kqlhpgsgndbpsjvqjelbjrlaxdarvv +piedtbvumgrdypttwcshanlhwgwuoa +xzzzfhinpqhwubbieuzxiqxrmrimzg +gpmgsdzrlopjxwhuhfrlsrmunokcir +dnbsphcvmtxxbzndppvkhscahxwzoa +cesyzdahavxlodgekuhxiovsbxwcxt +puiomahjmgxsllvdiamivqdjocplco +asrcgkisodmwleehyboopazusjlxbi +qzvnzvroivwffzgitauctusmybjhpv +pspgjglvutbngdhfiksfymsyyusbyz +lzounljwruviisatswdxgadekthhlo +khsynukicbnftrzetcmkdaoyccqcuj +lucgqnjbxbrqjiokcrozwrgunikqjg +fjmaajplidxfcbzesbqkubispkkdcw +lthzlkzjwjfdxjulbszsqcxjpjltjc +vfffncmkovuyfkxzhjwkuxscfwpdgd +aokxkapohojblnccxondwyiatqeume +vjoptrqrbxrnipzyyggtlemsuepuzt +wnxuwcnwpdhdkfinqyuhcqcogkinkt +kpixaggiergtiuslcrjodndxtrmkxl +bqmvjixvcuhchbhjcfkolmnxhkvcpg +nhrcxhlhhallqeuucervhgbbrsorhw +ilhgdvarzsovfrzocjrxpwulkyaybz +xagmkevvngxxszgdamhxzvanxyndvj +urumfqmtltcnlooqzxezwvvnbixavy +qqhjrdwuykzxyuizhboehhlgnwkkdg +nnyqbxwjlumbytmilznzhrbbkgrpts +wanrkwoqomzozbrwypkeszgrmljeyn +qxzivdpfqyofzykghbnyihwqwfatnf +vafippfhowzslxsllfsggjuootlgzx +zqzektaxtgmijonclejaflorcmaakb +pfmkvulagrtbfmiaodovvnwkfzeaut +iqqbyxobobqqazycaezfctstzmzibz +licctyprhmmhcmzjwueevgtrcjipkn +iojyqsslxorwuqtkkpdhpqkyjrxeqs +ylwluwoynzrnnixztodsctmhdixsbj +qlcgnlbvpyjnawkapcgenxygmuoqts +bheupprlcnbpryzzgrprhtrtkflqtp +rlcveotsdnybnqwiysyskqhaqqcocq +mbzgdwjndgojrsvzzjpkwszbbbtkdi +ucdnrbjefpaufwhfnalaleftwrqudb +hdfdlvzayjeeujazihyxibojvuhdqg +cmjjgqjzkckmkhhhhkxwhsdlwcjfmz +pgcegwduxaxrtlrzajaudeizjgzifg +axuhgmsjhtbrxotskohxfoinmfliyt +pprnjswqgcgltleiicjjqfcjmdkefi +bfhxinbbpiofbleleakwkcgjmcpwcb +thbjevwcnuunclfojumtigbktajujm +icwbdwekcdbvsywofeqxjalkywojzx +gxjbwkhktwrlyhbtmcmafvbusvnyst +vajdgjhelwhqderzhshjihrhmnswms +twqwppzaannhfmrgxapjcyshkkhwca +xpyzdajbcyyktrkyclydapdjnihsha +daonhjccudhdsduleqnelrvybamnzs +wrfdudlxnemnodixjejgmbkebxgamz +zookopolmcxixgbceiommzyaejqbpu +pkxkrqqzuuizdkvyncmgpdtwmirgzb +togouswgeznwyyfyljganwnxobytji +fclgoxdphqkskvxvfzoeipdmvgdmwk +ayheiptrbidgbrmntehaikoxzuaeqp +cfjutitzdcxzpnjwlmqhrwpdlbmchd +osmmxbagsnsflkhcxzzcrtohfhkrhp +bwszdpkwhzcbwdnnvtovmwpavooiil +mnfsjsiaoohbgklmcvslqfpmkxamgl +ywivdbchczkmpjmpqcefifolskcctp +sjqvvvciwpdmaqwsenqwkhckboshzs +umlazfrjmchahrxojpydrtwfulqrbk +qdxqfevrsrippmrnbobjjvztxqmnuq +lujxmqwnrgudjribduflqpllydnogm +klkoyzvqfhgjaqwtijeufgsgpqrbmy +imsxxxxvemrdeqoleamemvubfiqjme +viurnemgzttgtoviykdbljslxjrald +cfzddvlcajrvkrxlvrqzdnttumpjab +wdoelvhksywhpoweoegmlivurlhdbr +guucysgusmoiedgulgdhumtoecczap +orzlchqlicovyebrdafxtsjisvdjvq +cskelcotxsaprlsheqrkrbqjcnbrgj +cvbpsoaidcczzlwiiptwkzrhpxlyjp +mddszzpjqnvmftfukjhiaiwyccsfeh +bejdnzhspofrpoovcdwatmfsiixwwp +caehncumunubjdwwzrggnfbayacsbh +gkxzncajbwyaccpmcwozvtivcwubgb +phuwyeovjigqhokjoofmwnrseojuyh +fvwwytaipmsseleculevxoennpltly +qzmybduogmdskicnhnimfttxnfaiar +ukdalrmxdickhczoijxgsqxaomjanr +kzkjqlvmnwufbdlkjotgwjhdwrlpwf +npikgzrvtdphxaobxizcueaermxpit +ejbtcdmnktjdjxnjhdeyaymvobcdkt +xldycodtrcwshowyvedrqhdjxaupqv +aejunlawejdynvbbzsgnefzkjpghps +jmliqpzxuxjlfifcmczxevitvgfuxt +oeucrjnttuewfyiiqxfdrdkzujcnvg +gweoltvjjrshobyjypneceqhdtpymj +spbphnlcpoxxsduarjnrvhwujsbzjv +tcxaloivrdutdrfieppibrspokbggg +ndbpeyghyzejgxstkiivojkhnepeqy +hyjenademzzbfagfcqyhrkxufozjmy +xcjdovcrzifvzchwcgknvmyxqdoygp +ruejiqdugxvgumiqvunxtnyyjnxuxt +ruxdriaypwfpeuvksnfzzuxytbsgkp +veijxbptqzrwohjjxusbtrngrlymig +szaqxvziqgtlwcjmqbnltjmhavfhee +elreivzhxyytqtexooaqaxyxwdasmv +cygvmyihmhmqkeomwjdijiinlxuzyc +rufasbdvydrrsooxdgbrhrhostsfya +fsdaopdndmpxiazsvtmbpdcjaimjwx +vvoepgzxwrxnxwpcdudmsgxkwmwebp +dmtmexbeordglkccncfeqydxjgpwne +zcjsiamyouoffmrxslbuqlbjlozxyk +jkvsbrfnenxiaoljtkrblihcngsshq +uuxoxawcgjqtnsoduwgenrwcexhzjq +ooneympeocdmyjyoytlhuskudxnusl +bgihiejuboiibxalzwrwskgtklubah +jzqgenidewfaeybpgjkotrjletdtok +yiifnmnqdyufjrflwgwevbrubofztd +cqoernwxjffircfkjyjagjxvjnjndf +wulmoezyqesiyrwnvectdvcyfcjygz +hnufnzctwbojtpukhlbqnbnydkgdvg +nebyxmqwvoohfimgizrrxezrfxwwje +hwrsaiculxqyktoyoxyrhwmombwwxj +snnzyydlzslxqsdhrchpeiospufegx +nwgraxsyutfyaieubqujkosrgwkxuh +vgttrfjfxctmehahdynnrpcwgmpjew +vcwppfbhrdtzaetkcovmzhledyshrb +shfnsgrskegdcaickbqopsfrcyadmx +uuwsxomxptdegpyitqpywxksulrysp +fjcjduevurhfpwexibnhxbaxhzbpgc +yospdzcquliajpyqaqhxoszchkdksu +cyygsfcbqdmuovoiupxjjmtaprkuza +jkbfagjbesdpzipfivxnvimeaehtrs +itkgciexhsmbwwivrmpwlliszormdv +ofdiupmklmgymcdmvwejobvftcjldp +mzuhiunftkkaugbcmkpbjzaemiheon +xhmewxbgrqaacmnvpycrxlygnezytf +eteprzaifpghmtxsvayzeaproxsofj +nogjkydhvciyuvmdkmxpkbrmalmgzu +abkxsbuoxpxltqhnzokhbhrifyhcsh +zhwwkmurdtbgwumnadzvzgqgluygft +xrneohlrakdeccysvdqskardfoupwn +biogxsyfjkaupbmrvobqicjljnefef +znoqepoynhhribtiwnvpdtntliisny +hveesxrkvgourefnyaxkhsktsqrkfo +dnowdzymiohptbbqvysqbyjnfsbzcc +rchqngpmvfinzxrhackpfgjpvagkew +zsuoagcninhoioknswunycxnexmpjm +qpmsvohkbusiygwzlhxxkyklmzgzeq +xyatjramuwfzafxlwojmukvuhnnkht +tnrxtydrgfplchvklzowlpsjhmnapx +dwfkdjbcmgrhvncycsnrbutqqisbun +bftkqugirhnvxjnlceqjqimneoojdy +ohwkveptpptbtflegopmakqmlcivxs +qxycxcsamqgmpvdcvjoxrscjunnoux +xlsqrlwnmsyydbubatptvacwnuqytu +sbgqxefxdmpavxlzgppkeuddkilrhq +vwclnlvkllweatlpvfetussjggzanx +rzxsidsthiqhdxndmnpyykehtqkcbu +otysqzgkpnudjoetdhwedhhpjyyeki +rpwosfxhrehixskywwasfvpmoonrtr +xnycnihphbfnqyogpqdidhbiohnrge +etknociyppfdrsyatywjegusxzsehy +ygkagojsxzwwmazunetuflejarugws +nbbdulrlkuhzvrgxtcfkcltsvdpsek +zzbrusuueocenznwarnwrjoduzooey +dbxavguzxtxwsdixgsrrehccpjliqm +vsrczeplaniwaxkejdwwbermegmgvq +azwwdwfueijsjhjopnsercnpnzleml +ndpsyazykbatnydptiiyzklmagsqbd +wugtgntokjuntfiofysrtwuojqvohq +vgszwbehifulrhodiziwuucvhlzeuf +btdofewvlanjnobwigfrabemqkspzv +nhxhdgeoaxrusdwmlfrzvokijclazk +rccqvxvmcgrbepatugeijsxddazsro +iecdwteqklfufhgilsrkzgraqhwpex +gdnytpzxmdmlacsrwtgkkqphhgrkje +nqluvjtmcmimezzlgdanrvgefjjvie +pyoqohfxcyzxrnreaayhacxfugqzoa +gavihswctxumnwtyjyfigfdgfqbmzq +obobjlclmcnbuzpfhpulstjhugnaem +ihvvteeqyfukuywwamtxlmmdovbeju +wgjedwpqwoibutrxsgfswfhzovbswe +eedxycbqkmmcsullmadlunkplkefaf +hdonvdcgqsfiffrtlgbkgtatqpealc +psndkkstmkljnxfbqrpnboasdccccq +dfknjqgoyvnsyarbbvlojgeiqypwbe +kmpiiunvbwynbifkngggpguafjocrg +lhjrzhvowzhregiahdyzgferzxuiyi +uvekpofvgmnghkwafuzjdghdcuxlga +pdbakidudeukrfysqjkikpprhkhkhw +kediigmsuxzkjxlwhulbdahlyrlxvw +jgxstponphxwfpylzfbamttduflwlb +ydqprfmrtqznbfaaonzcuifokskhzs +qnsdwylaxwldlgaefounoqqbnwqotq +hmyksydfsnfwvndxqefvimnaiwhadv +dhnljozbehpwqcapechuzrhkplgwtv +uygjmjdofhmuutetixiyydhahkevvn +zevbefjcirsjxurxbghygjuqmpjdcz +thvlxleljvlhmhyzgwumpsdvwfocsr +uygahmfmzstkhxuvzvpfmbextvhyeo +pqndngpuumwwhsldbfnrebwzkisaua +cqfatezjlvtutibcynsntabzgegoqg +hdogdphibsqflnzyzfbnfmccwbecqb +vcqgtvhqfbrjwdvncmiwwuuwjcphdc +xuygpmpxtzcugixongrsvkphxyzeid +qgmfnqoddyjhzpdwlvqjvcyhpaocyf +llfrvrgkotmlyrzwphvgnmonjhurvk +eujnnypjuwgbpddbuclrvriiwbixsx +wuyxudjhqdblubbxmkddugxvllcipg +fptbbwqldkbgxewbdykviofcmelyin +oarpqnnewousqytqvxowqfcxxztuth +hplcyyysquqzkdhaitcbmtcelnfakt +qxarrruukasqrfnijxqmmjoihfbsez +bhwbeyhqnnaffzlczofsolumwudyjg +kgjkdynwlsiqrgrxorvvqaanrcnbbm +tsdcguiwlzmgjaamutudoaqmpszsgu +davzsxtvjlegvlwaielxaukgypgryh +jlvragmsafjuccniahpqikhxnejvms +jbktdsfhqxmljzizuffsezjyxecopn +ngkxwefuatmlbrqbgqulghhnhgrmei +xeihhskeoksgtqgtpnqbldzoyakadb +btbeqjrvajqrsaapxwgtoizlmvcojk +apegeopxynzjvqkbvkkpmaqtonccdf +pbwgrmuxiaxeonuuwwnimcruhsmbgq +aixddcliqrevhrlmrufbxdeuxqrflj +cpgugsmerzorjanlbtwbccwyimyxmh +rtybuknmedwjzmaoyxdbnqqtobqzkp +tcfxvoakxcunehxcreiosmmypfattf +cknzotusfxyuhartnizgrxfnoqcbdw +mtplzcjqqyoiswygbnwmfkpjumzusk +ssaspolxynjmsbkheebpbdmdukvvzf +ohxswzgqdhehplipocjysdfqyrwvyx +yhnbetmcxtwhboaenvfdpapkrvsvnp +kdtqkaqsjlecsztekkvgiojugnjfjf +iqvqellwzkbgsyfryfqnvrroasxvdi +upkrwgvdkmkvkifquvgtunysjsmbgh +uydfximrkeadexsndfnhhsbqhsfwtl +xjmchpbwyymonrdgvmegrmpzfnbfnw +rvohlbghmkgxqfnohbthbjluufdocj +caiimotdphdddvnveifebziwplyygp +khchueosszzpdupbgwadkuivyurxvc +fuipdytrreeoxujkbwghdthlehouiu +iyapmvexlbcoetcimcbnwsjavlkzkx +xalzrqadjpatqcpzsairqgmdgjmuop +ydcanowdiznbbtthbngtqigqeormnk +susnnrhuxobzwvmkyzdqpqdxtnrpvw +qigwfukmkqxgvkvtxmnpmxvlxxifui +wqcglxawahqndyharkqirphncdwkvc +dvywevmbkpsjgzhyhlsuldfsssddug +swqpsnbbgtwlyidjhzmqkmwvwrecax +vbqyibbyevybroayasznofspvuqmat +dnmyjnsmhcuvptzwyorwkvplbhrxzj +sjkamyavvirkpyefjvugmvpilcfhwu +aiqojrouaynepxfyyyplviacxvfwax +yzvfuqaanzehhpdffdinammzhchyey +atczwvwdxkkkfdyaiczzvbcigmzlwx +risxbubqczpgdmpbwfonuuhjrzskls +lwkhwhdhyyqvbuuisdtcjhfktlshex +choryegqxcnacjktfpvizjjyhpezxx +jdrhywrsocrnqcnxfpbcdhzafhcdka +rojrrlrptwopfpydxbvjnraygxlfes +ffrejcqwsuzzhvmvnclhgumtjxsllz +vmatqjtuhysrpuepdvandorwaimmbr +ilfwqhahtfqhcfwtvgjebgbrzxsdvk +wcxjnirlmkcmfdtdxtzgroriraofzo +kfycqkfozromxsfhcjncpedhgnirtk +ubakxgbwrhkutumwrihodzyjvatvxj +uekeeasiozurneuyxszreykfducdop +yltxeolclgpkrfkngwdysblqccsjie +zbykectvmzceqklyzehebdyvvyexao +wvivjweizlqcjebcehvkhruhoyyxug +tistsvqpkhqtkhhcadeanzdiqjcisv +bqinkiwmmmbdsnzveglghuyhtlbwky +tkobmqudeyycwcncvsszkmiskepmab +hwgvvzlheknqmvjvoawnmldgcbcmhs +xklbzxqderhzlnwvdlreptdhsfwysk +aiwszweydoyiitxsweucepemwhqfil +cogzldmvpebcunsqoprrqmthgfymxz +baxohhiewwplyxlgxjvhirvvwigugg +rvohlzdxiqkiteenphfdsjwygvlsjo +juvzvphlyqjnvbbaclaxdjtuihhdlm +wnrwgzerpusnmfurdriteqksbfgvrg +azdwlopsrusbodjuycfdrbmchkdwaq +uaptgwqmgskruyhoxrrcaznugvkpht +lpzwimkadnibuggldnuaqpdqlgehgl +agelgkvmtasqkhlqxchwbtjjkhrpuv +lbejdjrfnddjklmpkrgtnnzccvwadz +lcqqezdlgjvwinljcgwgkfpxbiwjuz +mgiteqvqbnjqzunaleiisylypyaygy +qwfoiekzcqnptzflgalqtxaihpbcpf +ecbkpwfhqsdlwrhlacxjydssswragy +uascefcldjssbggtsoxdnbgxcqoukp +bnrjopwcckahsgezghjqwdvelxhevw +ziqzqzuuwlniwqgqnhutpoyqwvduge +fptegytacsfvdkkfubcqpngaumhlpl +lebpfjyvejiiobtesaldffhdcqodfm +pqsvksqpwrfrxiomyvjkucprxcpgvs +lfnboiepeqvvntcxqeyuiribkfbxhh +cwaiokffapyopljrwsqaqqjynkfbhd +fvvnuvxnnsoskfkqpzoujzetrnijea +hrotwbgpygnmxjyfpfzyowypdtkamt +hlitbgrubuvmstsnpeiodmkkdwvrfu +twczigciqwgdipfdpeobpkyyfyfpox +oarsklpgzyyvqydyvgayhvdqnqeweb +lpviokvocrdizetqovxefwvoyljycq +mzouuluczntdnozwmunxyvsxoejzah +gogtmzhicwpeowtbbhwxgrtxetyqed +lzbbaoyfphvdvktecrptgpkirqlfzv +nnrzlelylqcuoszmkuoopknkcmgsmc +xyujjgshurlcaakolsikryrpkpomoj +txyvhhpvdvhpcqbbrcsfxqwrhdaoek +tzbachzgpkyuhijjepfbsmzaksagta +tqxwgixfafdultfxkobjumtqvksidd +zbgjchhasolgaoblxujrcnxavpasph +syvtvagqgqibbaopiwktljswhvjkxg +soxlfrtrxwjhmetccpbnyuyondvovs +pzcemmjyobejsgemfbcrtdxdzbpizi +wswgxjtgvaarkjpdnhuyeqapqxklbt +qpmypooskenckfqkuvvdowthsqjsgg +kyzvudabvnbmgfnnmucsofyoaghqky +qkfdttaeunqvzbdgxtcqfonkogliga +hcdfkaojbjofzjfrcolazcxdsblaqb +tpbxnvbcouwrvsotgzxymtqhrlqvqk +lkioyxkbfjihqrtysnoeqebhslfqew +nddzzvehwhdwkdrruwlhfrtypgqdcy +iywfakcitihioetljxmhazbqomnhwp +xmqxepyjhrvpkiaunxunsrkxysvhup +unrepacehbehwzkasktoiulvmyfkyo +qofyhgwbdjygyvhpmylsvoaaikdlrt +vbwvfzmzgyhepdpudoifufaipkihvd +wegidlgdkhynwwgrwmcsqpwhknrbgz +jvxuvzeugeysqmmllghyvvdzmcxodh +eqndinoeevarriictdzraqcsfyequk +terssxstmtulyprpgetahigtplgwjg +zjblgggksnlgmtaccylkabrbqavvfl +fzolittkyevhsmatgcryktoiqoosvy +fikexkrmdktpklfnmttshfxauzweyn +czcmegztddyvciwjidznrvwxnozntq +bhtemcuhtbsjqxfqabektwupdbvnpq +ukuoqcbixeayjjaculcolkaantnwit +kvihpmiwosvdbdftnavecbklzuskxc +bvbwjkyqzoxkqagaiuxvleippmsreh +ieudxnrqqjzrpcxugebrjocyaxlhpo +fvigzxunsqisslhyymmsdbmxzxwqpi +zubrsvzktdhinsnhbtklqbpbrfritg +htxfpnlmcpgceombmocsvqxelcioog +ngobuwwbckqavraxknmalwadipmqba +fznagfhyqdtvbidzxplvnkfrziacka +rifymnxsowlspgamhgmiyewmejkqzo +xqpsnituqnfsmzgfvhyjvwxjmzuscj +mgbehuzofcotcwlqltpmttzcpmmmfe +yewcvbcsqdatanumfxguqdzkfruxfo +frkohmxhklyanixxvmbphehkmducug +ksopkdskbxjvfixuxdqyrhwetbopvf +jayxveqtjpxhwgzpdmojcwdankmrqy +dazznoyjbffjdzqjajmzqvvqqtgsgy +jcfbcymatsnjswnxwzhcadahcbmoxy +ffayublkquhejzxbinzgkudruhhuye +kugwudidlbvskrknkynefmdhtjrrlc +bsnhzebfebibybroxtouppitppkfgz +dctfqvymdykfnjsuduivrpslitfuyw +eehefxwiplcyqzqkibxsqaqjzcwdsi +svskakxmdfonmatydrixviyzdxfunf +yubkrdsnhgfqjmhondmlnjriciiwyz +fzustudopcvmpfkmzocwtnygncjoih +pzygvemiukfgewmttkdlwldxkckpqi +acjnykynrjgtdiiwdwrntlxwpfgrzh +bprrymegehwkqtdxbusedtnjzfwjjc +qzqjesnnpzvyehsohozgwbfqgjxprp +vmnovugmnzzmswlmpejwlneabvkswc +yfzuqmiljekjiexocfnwknxfhuvpoc +vkzzglgwjwdlhcteenzqsbrbkemymd +fyzpmnpcyepdmsbxnlytqaemhjoxqq +nxsxjwgiiekbgvtzibetpabpckljyd +xboilgfvfgjsrlsitqpxjbryeazxhf +ipoymfeedvsgqrhtpgixfiegdxkmxh +kaueqgeocmsookclxywxqfirtqnrsb +ykmanxaduyzjxkqtderfijzgqozzcd +yrosuxwugikyotwadtdghkntucrifo +zarwneffxjbfbranersglaiyohllcx +dpznzjrnyvplldkqfstwgbctsxmmal +zsraokgzwifbycctzzblbvlzymtlrt +vmfzkxubdsjtzkcqjxbvfimrefbxxt +ujypozbyopdnefbzyadvnqyatzrulr +jizpgypdmssxvpbqnsertosbpqzozy +eafawayewmuaodrtlwslyabdbzbdyi +gntsapgduiuejhhiwwccgunrxdrnvp +xhiwjkxnymbwlqtxaktnnjfvohefmf +duriuxugoezofxvrqwpirzajrkhoag +lphntunahghzcjqjkgqyfshtvuggsb +avhziuqonlhyfcpaznpafzastxivih +yvtdjckurquyfznqojrnsnkhppcuis +jhavtlqfpxwecszralzysxozqjxxcw +ocglizdmpmixhufhpjyjufpxongtqm +nthlqexufvkiikgyaucruxduvfzxbc +lyngrewjapogqoegnvyiilcupwngqw +nnlzmpfranonpcxvyllmpnrdagsgxl +nifjfngwainfpthrzackpfpgoawvhd +vpmbktqqplfbplbkolmjfpwqyjjxpx +yhguzyjuhmtmlorruurlfhgkebrimb +nghgkpnpuerfuzpkwhhauktbyhfige +nrmxvzkuqjneneunemzimmvonudrfd +tadntjlbarnqaauwfquqifoljhdsuy +mufmpukhymjqhqjhxinurztuhmiqma +rmvvpgriiwxznypgwnsdhtcahqyxvc +cywftxtgyrtpafmphfzwyxnxoyrrcd +coeqwfpfaospgouufhvvqgtjureyhc +lgajtkzmdrryuqhljmwhstmrgzonxc +qdfbwbtwfhlwdfzkyoiyjdntdotspc +vxsdvcswwvmocjyjtlvtcxbydggknp +bhtjxllkbvkjnvnptqwofzxfpfrbfy +xvourixtflifrccpjvzncjfstylajt +rpddlzkmmzfhfdtpsvkykhzpsyhpxe +oimkpcjtmkdajpmjnjrlotmjyayjdc +ooqhjglixlirpljvzhqkawphkucpnb +lxmlopddimglsltocuyolmonhamqpc +aunsdfseoxhemldhclupxbxhitefso +yxgsmegrgsjrvyrluwrmzduopiufqa +ekqgxhlmnjbdcllurmrrpeknxeufmf +hlhjvyqklumxexmfaqflmbzhexohcf +ievvvrjhomytzsoklzlxbiqclenyck +gotymhriiczhawuifioxzstkyucatu +yfqbnxoybvhqqovvgmsgusrirdleky +gvnyrfikuhkxotbajkgbphdggkgmjh +icypwplfadclpkxgpucwmpnkedfzsh +xykbabxgtobktvslbonemhidcommry +ueflvskruqdrlmrcnglxckxjximuhe +iuryjxmnyhxwcxeupvidjgofjhdezt +znzzznngronfcsawwnufcvdzcglhyu +yeujoiokeqedqzfwfsrmfyzmjjcngo +xhxzfesocdckolwgfswafibgcmneww +oytpalhqmlxgzqtxkdwglygqlzvbdi +aqrrtmytwzxctlzniznppfjbuqtaxg +gnqeazackorlpmmlzbodqblpsyytda +lobklieyrehmezjuwqrykomwgzxpok +ydrzgrqymapawtukcpggolhlltoxni +dssyvmunwqyvwjvkrakouyhzhrpagm +djfeojwvyzjyjcvtgjcjzxztgybcmo +jqdhubscqjrtavjzvlifmegckptzdv +fsyoqxzbgahwjikiezuqhpncephact +xaqndtqezkaggmjtmknydymjknjdqt +jtfegzhgiggrzaadcjdbdsngerojiy +xdnasmlhuvoueioykbqvfhfpbnvbvy +rczdmzmnnnlfjdofnnhkgwqiaxwbdm +znmvfupltzzoojaovpigjyhsasfwdp +nwbrnjaoaklypochkaryhqcztkbrac +tpwahrnsozagmylzrmpziifhsunyaf +oaoccfmqckvxcstkxuaadnwpumqvve +uuateoorbckxkicbwlgxricawrkmst +efgqojmhfqeughfnscbewkksanuzdp +xetmgjjdvlpcssefbnfljbvvevaeko +vgzkudbipmftylqdpfyqcbkyolslra +gvmafqsylnshfkbldavqgpsyiatldi +gaxfcbvyftkihnsvvzmpjjixiyjbzg +hbeyvvazjqnjdgnzefrnsdovfwjmgv +hwwbqpupviasanpfqcwytdfnithoix +vhlmmqnoowslxlgdqgtvnihsufdwjt +nrktglwznhikrengcqpboxqmtktxds +eqclwskullfqajwceqltkneiffwqzf +liiuwtjcqnvmbuuaocebtsxbjycihl +vuoakuwlqzoscegkcjdpavowyqmtgl +jlduxuntlnfhkxpcqsbyyjxbusmpor +rjedytnhqokwwqbaebasqijjdvpzbw +fhenrxnlpvbihbxxllezftblnyakuy +ljxfvhbbcbrgaftcnbzfbisrwhxoot +kdmlrzevahqmvetlketbniqnixfvix +vluztzacikzduyeihrijoepuoiwxfe +enlljianklsngzqmbbmxirbixdvijp +vhowaeztepjrptpxsyfekzvisqllmb +vvitatgttiwmqrbhfskydnikmuxwqm +ilhfsximcqxcosvseefkagdgddrojd +sbwtsuazbayxukvngjazkdygkmiuny +uwymsmesamhvshtuxhjrbiovtfuvhl +akbvjmtoggfihdpydumfwaarokwets +jdrprwnnuabmslvsxjnmqlzzerhuvt +onwexjpguafpkltbzecevhxtqftrmd +xavtowfbnuvphnquwppqplflnvsfig +hwwzpvmmprhtzxeoslbxcayjomxpkc +lmbvrhoqryadojtiezjhfxwqpazkkm +jlviapnernhoqntoudteftuyqaqgsy +yidwotvlipecdwriryqleollmfjttd +jkfiqelhrckecemyogouygbaxvsdde +ksgdzvvdyujdokgzrtdiehhzjtkuib +lywzxahqbjtxrgwmzgndkdvwetdxzl +fuzizgezbohjfpvkfwdzjgjeiszzlm +spmkkbjmspzewgoxkoheapksujpdxg +hnlbcgyhfwrxsvlhyaecohsxygneik +rlyochopcgmljiuqecicvihphhqbvh +khjgukhixoiqbzlqnaqengvvectzhh +xcigqxhkaskbsrulydhgygofmelfit +aqczzuvpefrnisizndtgcbuxxlyccl +ohjcwylpulylfuixxdasmwrdsdcppv +vtpkuglrwnbgprttepticmuafksiod +qcsypxtkhrtkdcgnmwtczicnupfwcx +ycvgwvzvtmrlfsumtccfzzxjmpkckf +abukxagmxqrlbpbwnuciepyplrlkco +qywmzvqeoadanaiklqwyuhxkkjtrzv +qwbedjiagqlyvvrsuuphaxxzigqdbx +xxgqascxvoosvmvxpqhbgfjdibpduv +pngqflkyunepfhhxqmqrocmdshhogr +asbrzvclluwjjaalzsquzcebmekppd +jvgmfhczrmyiqnonsxsheskhvxbwop +tubnjgjbxotwxmiexsmiwgqtrldxlq +plhezixoghjlkjvoqdqdaqrvwvgfte +osafmpbvtadcfbljxqejutvnyrqngn +dsgdqdlhiprgbevfcyoijjeanjfghs +xtexxqylhwsurxrvcbkxtvseruhcmf +vkorpdiuisabjtsawaphwuwnqzptxp +osrubfdylgwcadrscoazyervpwgwjg +ztnubeaizozhrkbfgovqjboilpagvh +szqbxlxoocymmlbwrhkbrmdposnlzx +onqakvttdtqavxlplmsduxrcfbwocd +bpipsvdupgkakiwfomsxtaagmtnddn +unawjxesnovmlgamprskqbkiimlyoh +erwevtyudbmdthstnfkkmcoiaavyim +aasaiomygwvfrznelsuipfjkslrjca +fiewlrnbfpncnohyojblkemufuyfnj +axdatwcvszmfvnkckufvvhsjwuonqp +sgysgovoasefqudxcntfkvlzgbvunv +alvcndjmoyypvkvkzfhnvlvnuggygc +fttklgatehmuothzosacpjvdpfbwzg +igudystqufcrnghrcwyhwfboypvfiq +prrrgornkqnmrvierpsrxhplamdxab +kbhkndkhyzylkeuyuqyzqepredaprt +agagslkkivlmodbdxbyiuzrtmixdgj +zjmnezqpogfkguhypqweytfplmtjip +ztiiypppfcjxtkueytlyfcfalyjcqv +mqowfqmqtlylpjaaanqcmevxmobjcj +lvhrkkvgnfpbeglnoxvqniiwbfgwkh +acnfqjpkquqgesrqzezaoxnadlsqmx +dwirbeluitfpilelbrnhsbthvywbtw +eznpidamnwjthaazzjihfwpevzccrz +btmpyohubxzjemcidrzdmeunrledvq +vdjuxajlezjqclrvzkrminbvztnavz +gkrgpimoiwhpmayymyvhfttujvbcih +gzgyzltfikbrrbvadvstnipbbeypnm +irtficklmxrmwdhohbltxkpzokvrwc +xeuzqzuiwsibzvniztttjmunxbiotc +zfwrfkqcvpdrsmnlsupzgtqmifqjcd +npewhwcdhwpyqahqffanlvfrndxayx +hzwrsscfajghtdzbgnfpweaenbfpee +jwexcgltsnmfxyssuthfikexnouhek +peqkheeqocdpueavwaondliwrtqmkz +hfjuifqgmgngankztorgrvnxzxqtxn +dioyavlhgjbwfuocrjvvdfflwmwhzi +lndhzkzywzpxhursyrjetwwpnxtsyn +moacwsnshtummyegnuncprfqbalcyx +oxwxdhzwtlpqncrbjmxpmtpygliieh +senmfcujjcfspoynyjxbrucykkkzwk +znalucysukxgwqqqttifrtiybofnpu +tnxkdmqpjfwpukrtwrvixlaocshozw +vlungdjsaypwiotzawtanmepzxvkeu +xmvzxvntgndbkgdrywajlorxvtrutz +tylpbfoxoenxtqkmsnuugiiqwweqgm +dswzstmgyxfrtsgtufmxygdmfjqkri +qfhkjgofaiskxibvarqngpopeiofcb +tkfqthnfjnvlrxaixqikojffhvsuvq +hhorqbbolmywsyygwfoosbaddrpmsl +kmxllftfsawblrcteonxtdpqqstypj +xujupetrrwlvtihnhcnvnmutjdvqoo +kaqvpdptxboxeiiakusjmkcfpqwaiz +jfabuukbehwofnldwylbyvmsaljjvp +tyzgyrkuczyhbkoslncbeulqwhwycn +oqdswlemunpkuagkomtgabbnaczono +lnhanmznnddzdxmtgifexrrclunkqw +mikyajxjqscwswjuoihofdmrydcgby +fluijbhujpfnhorxbabqtetixuafxh +tyzlmtbzeungcesdeaucqieqdqieju +ccajjixdwkahnwqehdzqhleigvyenz +zcrzfjbyjqqnnyndwuotghnpyztkvy +cyplkksxqqfduqgahqlmlcsjtetmmx +ukjbkjtfklkpbshfiuuubpzkxmlaxc +nwaaitgcafvdagmdbtuwikoncqumjq +eurggztfchinxigzjcamwpgixmznmi +dcrvdjwaymyhjdpognobpnjbgzsvch +uuzaopbjqofloxoncjbonceidtywtl +onmporlpyneykvhmunkjmvbeburvrv +prwnbdmjuxtjkfxbinlavumowljtty +fgwqfskoyofsayllwkhmmnictmmnwd +lozxbocnvellqwrccptsrgctwweeza +giufqanzfizzdldfdzhbksibziqfuv +mzztfenftmsnquvqpqfoojvuyefbmy +hvbkmoxkjozysglfbvhpotoknbrqax +lwmmsakzsssyeliubwmtzgtpuspmql +qysjjytpozrxekarzkqvctccwowidh +vfsldphdnljkqidswujkqjlcknfmpz +hzjrnkyhgyxceklxtqfkgsnwxssrrf +riemvntjhipwuaixeiuocfglwahiuw +fvucuxyyabuikmgrlcjeepsdvzfyvs +ycjrjeynugkliaendjgopajfguimie +ytygomnlfhnpayumjwogxzhdqpliwa +xznlnbbnxwctpcmcrnwztrndoxigut +zfnafeehbscvskntgnamlpuzmmxalb +igitveyfdzjqzqgmzkelumvcexvuuv +iirablkrertqpoqignhtnjbslhxxzp +fvtwvldrlbcvcbjdauitgbahxxhftz +vwvlvdxiiqludohevdxwluzpgmjiuq +altsntesxoykfvcjocoidsdofcvhap +dqsrmbsumkewbvogvzsqkwusaflerc +ugsvzdhvgclonfxufjfkxkbmintmot +qevdadbvizthtlipvqyqmaitfoevft +nxdlwdgqalxaerjttrjelbpajslktt +tyskebzhcajniprhjwttbhvviwpqlc +kdgmlfuijbmfwlguxzmllihbcvyoks +hlukjzmuuhpabixmdpnguaezxzeneo +fyjdnhuvvzvtezkijbtolaedfcslta +xbpxflpoateyrxdsfchfnxolbirdpg +wsyqivpvfacifktxbhjwhdvvnxxuuy +wzefxpovrijytzuiodkuamumehbiue +jysouenrnttwndprvpzlcayfkjjklb +cjrqldqgtahzlqoulryjbmustiyahb +diwogflkhjshfpytnwylfiytfgodlx +lxwrhhqkc |