From feb9efed49249e4589ba1926643f8f33301d256a Mon Sep 17 00:00:00 2001 From: Kegan Myers Date: Thu, 10 Dec 2020 02:33:00 -0600 Subject: [PATCH] initial commit --- .editorconfig | 10 + .gitignore | 0 README.md | 18 + data/2015/1.txt | 1 + data/2015/2.txt | 1000 +++++++++++++++++ data/2015/3.txt | 1 + data/2015/4.txt | 1 + data/2015/5.txt | 1000 +++++++++++++++++ data/2016/1.txt | 1 + data/2016/2.txt | 5 + data/2016/3.txt | 1914 +++++++++++++++++++++++++++++++++ data/2016/4.txt | 991 +++++++++++++++++ data/2016/5.txt | 1 + data/2016/6.txt | 546 ++++++++++ data/2017/1.txt | 1 + data/2017/2.txt | 16 + data/2017/3.txt | 1 + data/2017/4.txt | 512 +++++++++ data/2017/5.txt | 1092 +++++++++++++++++++ data/2018/1.txt | 994 +++++++++++++++++ data/2018/2.txt | 250 +++++ data/2018/3.txt | 1409 ++++++++++++++++++++++++ data/2018/4.txt | 905 ++++++++++++++++ data/2018/5.txt | 1 + data/2019/1.txt | 100 ++ data/2019/2.txt | 1 + data/2019/3.txt | 2 + data/2019/4.txt | 1 + data/2019/5.txt | 1 + data/2019/6.txt | 1315 ++++++++++++++++++++++ data/2020/1.txt | 200 ++++ data/2020/10.txt | 101 ++ data/2020/2.txt | 1000 +++++++++++++++++ data/2020/3.txt | 323 ++++++ data/2020/4.txt | 1031 ++++++++++++++++++ data/2020/5.txt | 761 +++++++++++++ data/2020/6.txt | 2093 ++++++++++++++++++++++++++++++++++++ data/2020/7.txt | 594 ++++++++++ data/2020/8.txt | 594 ++++++++++ data/2020/9.txt | 1000 +++++++++++++++++ index.js | 13 + lib/BNMath.js | 47 + lib/Glib.js | 327 ++++++ lib/Maps.js | 38 + lib/Sets.js | 47 + lib/Vector.js | 106 ++ lib/_pollute/array.js | 51 + lib/_pollute/index.js | 15 + lib/_pollute/map.js | 58 + lib/_pollute/set.js | 9 + lib/_pollute/string.js | 30 + lib/fn.js | 17 + lib/index.js | 18 + lib/load.js | 5 + lib/twodee.js | 111 ++ solutions/2015/1.js | 19 + solutions/2015/2.js | 21 + solutions/2015/3.js | 28 + solutions/2015/4.js | 12 + solutions/2015/5.js | 15 + solutions/2016/1.js | 87 ++ solutions/2016/2.js | 71 ++ solutions/2016/3.js | 46 + solutions/2016/4.js | 59 + solutions/2016/5.js | 37 + solutions/2016/6.js | 42 + solutions/2017/1.js | 22 + solutions/2017/2.js | 38 + solutions/2017/3.js | 162 +++ solutions/2017/4.js | 20 + solutions/2017/5.js | 34 + solutions/2018/1.js | 24 + solutions/2018/2.js | 35 + solutions/2018/3.js | 33 + solutions/2018/4.js | 81 ++ solutions/2018/5.js | 42 + solutions/2019/1.js | 22 + solutions/2019/2.js | 25 + solutions/2019/3.js | 33 + solutions/2019/4.js | 22 + solutions/2019/5.js | 17 + solutions/2019/6.js | 69 ++ solutions/2019/_intcode.js | 313 ++++++ solutions/2020/1.js | 28 + solutions/2020/10.js | 41 + solutions/2020/2.js | 33 + solutions/2020/3.js | 26 + solutions/2020/4.js | 92 ++ solutions/2020/5.js | 46 + solutions/2020/6.js | 32 + solutions/2020/7.js | 70 ++ solutions/2020/8.js | 63 ++ solutions/2020/9.js | 43 + testAll.js | 165 +++ 94 files changed, 22747 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 README.md create mode 100644 data/2015/1.txt create mode 100644 data/2015/2.txt create mode 100644 data/2015/3.txt create mode 100644 data/2015/4.txt create mode 100644 data/2015/5.txt create mode 100644 data/2016/1.txt create mode 100644 data/2016/2.txt create mode 100644 data/2016/3.txt create mode 100644 data/2016/4.txt create mode 100644 data/2016/5.txt create mode 100644 data/2016/6.txt create mode 100644 data/2017/1.txt create mode 100644 data/2017/2.txt create mode 100644 data/2017/3.txt create mode 100644 data/2017/4.txt create mode 100644 data/2017/5.txt create mode 100644 data/2018/1.txt create mode 100644 data/2018/2.txt create mode 100644 data/2018/3.txt create mode 100644 data/2018/4.txt create mode 100644 data/2018/5.txt create mode 100644 data/2019/1.txt create mode 100644 data/2019/2.txt create mode 100644 data/2019/3.txt create mode 100644 data/2019/4.txt create mode 100644 data/2019/5.txt create mode 100644 data/2019/6.txt create mode 100644 data/2020/1.txt create mode 100644 data/2020/10.txt create mode 100644 data/2020/2.txt create mode 100644 data/2020/3.txt create mode 100644 data/2020/4.txt create mode 100644 data/2020/5.txt create mode 100644 data/2020/6.txt create mode 100644 data/2020/7.txt create mode 100644 data/2020/8.txt create mode 100644 data/2020/9.txt create mode 100644 index.js create mode 100644 lib/BNMath.js create mode 100644 lib/Glib.js create mode 100644 lib/Maps.js create mode 100644 lib/Sets.js create mode 100644 lib/Vector.js create mode 100644 lib/_pollute/array.js create mode 100644 lib/_pollute/index.js create mode 100644 lib/_pollute/map.js create mode 100644 lib/_pollute/set.js create mode 100644 lib/_pollute/string.js create mode 100644 lib/fn.js create mode 100644 lib/index.js create mode 100644 lib/load.js create mode 100644 lib/twodee.js create mode 100644 solutions/2015/1.js create mode 100644 solutions/2015/2.js create mode 100644 solutions/2015/3.js create mode 100644 solutions/2015/4.js create mode 100644 solutions/2015/5.js create mode 100644 solutions/2016/1.js create mode 100644 solutions/2016/2.js create mode 100644 solutions/2016/3.js create mode 100644 solutions/2016/4.js create mode 100644 solutions/2016/5.js create mode 100644 solutions/2016/6.js create mode 100644 solutions/2017/1.js create mode 100644 solutions/2017/2.js create mode 100644 solutions/2017/3.js create mode 100644 solutions/2017/4.js create mode 100644 solutions/2017/5.js create mode 100644 solutions/2018/1.js create mode 100644 solutions/2018/2.js create mode 100644 solutions/2018/3.js create mode 100644 solutions/2018/4.js create mode 100644 solutions/2018/5.js create mode 100644 solutions/2019/1.js create mode 100644 solutions/2019/2.js create mode 100644 solutions/2019/3.js create mode 100644 solutions/2019/4.js create mode 100644 solutions/2019/5.js create mode 100644 solutions/2019/6.js create mode 100644 solutions/2019/_intcode.js create mode 100644 solutions/2020/1.js create mode 100644 solutions/2020/10.js create mode 100644 solutions/2020/2.js create mode 100644 solutions/2020/3.js create mode 100644 solutions/2020/4.js create mode 100644 solutions/2020/5.js create mode 100644 solutions/2020/6.js create mode 100644 solutions/2020/7.js create mode 100644 solutions/2020/8.js create mode 100644 solutions/2020/9.js create mode 100644 testAll.js diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..512ca4d --- /dev/null +++ b/.editorconfig @@ -0,0 +1,10 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 2 + +[*.txt] +insert_final_newline = false diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md new file mode 100644 index 0000000..a9ec068 --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +# Advent of Code + +This repository contains solutions to advent of code problems in JavaScript. + +# Methodology + +I have a few ideas I am following with these solutions: + +- Don't use any 3rd-party libraries (don't `yarn add` anything, don't even make a `package.json`) +- Use as few node modules as makes sense (sure, use `crypto`, `child_process`, and `fs`, but don't use `assert`) +- Build a collection of helpers in the "lib/" folder that helps to solve the problems quickly and concisely +- Try, but not too hard, to make single-statement solutions + +The most interesting thing written to service these goals is something called "Glib" (**G**enerator **lib**rary), which is similar to lodsh/lazy.js and built using generators to allow for lazy and intermediate-free operation (as much as possible). It also uses `BigInt`s throughout, because why not. + +# License + +This code is currently _not_ issued under any open source license and the author (Kegan Myers aka terribleplan) reserves all rights. Feel free to peruse the repo, but this is my OC, don't steal until I choose a license. It'll probably be BSD/ISC/MIT or similar at some point. diff --git a/data/2015/1.txt b/data/2015/1.txt new file mode 100644 index 0000000..f7beb58 --- /dev/null +++ b/data/2015/1.txt @@ -0,0 +1 @@ +((((()(()(((((((()))(((()((((()())(())()(((()((((((()((()(()(((()(()((())))()((()()())))))))))()((((((())((()))(((((()(((((((((()()))((()(())()((())((()(()))((()))()))()(((((()(((()()))()())((()((((())()())()((((())()(()(()(((()(())(()(())(((((((())()()(((())(()(()(()(())))(()((((())((()))(((()(()()(((((()()(()(((()(((((())()))()((()(()))()((()((((())((((())(()(((())()()(()()()()()(())((((())((())(()()))()((((())))((((()())()((((())((()())((())(())(((((()((((()(((()((((())(()(((()()))()))((((((()((())()())))(((()(()))(()()(()(((()(()))((()()()())((()()()(((())())()())())())((()))(()(()))(((((()(()(())((()(())(())()((((()())()))((((())(())((())())((((()(((())(())((()()((((()((((((()(())()()(()(()()((((()))(())()())()))(())))(())))())()()(())(()))()((()(()(())()()))(()())))))(()))(()()))(())(((((()(()(()()((())()())))))((())())((())(()(())((()))(())(((()((((((((()()()(()))()()(((()))()((()()(())(())())()(()(())))(((((()(())(())(()))))())()))(()))()(()(((((((()((((())))())())())())()((((((((((((((()()((((((()()()())())()())())())(())(())))())((()())((()(()))))))()))))))))))))))))())((())((())()()))))))(((()((()(()()))((())(()()))()()())))(())))))))(()(((())))())()())))()()(())()))()(()))())((()()))))(()))))()))(()()(())))))))()(((()))))()(()))(())())))))()))((()))((()))())(())))))))))((((())()))()))()))())(())()()(())))())))(()())()))((()()(())))(())((((((()(())((()(((()(()()(())))()))))))()))()(()((()))()(()))(()(((())((((())())(())(()))))))))())))))))())())))))())))))()()(((())()(()))))))))())))))(())()()()))()))()))(()(())()()())())))))))())()(()(()))))()()()))))())(()))))()()))))()())))))(((())()()))(()))))))))))()()))))()()()))))(()())())()()())()(()))))()(()))(())))))))(((((())(())())()()))()()))(())))))()(()))))(())(()()))()())()))()))()))()))))())()()))())())))(()))(()))))))())()(((())()))))))))()))()())))())))())))()))))))))))()()))(()()))))))(())()(()))))())(()))))(()))))(()())))))())())()()))))())()))))))))(()))))()))))))()(()())))))))()))())))())))())))())))))))())(()()))))))(()())())))()())()))))))))))))))())))()(())))()))())()()(())(()()))(())))())()())(()(()(()))))())))))))))))())(()))()))()))))(())()())()())))))))))))()()))))))))))))())())))))(()())))))))))))())(())))()))))))))())())(()))()))(())))()))()()(())()))))))()((((())()))())())))))()))()))))((()())()))))())))(())))))))))))))))))()))))()()())()))()()))))())()))((()())))())))(()))(()())))))))()))()))))(())))))))(())))))())()()(()))())()))()()))))())()()))))())()))())))))))(()))))()())()))))))))(()))())))(()))()))))(())()))())())(())())())))))))((((())))))()))()))()())()(())))()))()))()())(()())()()(()())()))))())())))))(()))()))))())(()()(())))))(())()()((())())))))(())(())))))))())))))))))()(())))))))()())())())()(()))))))))(()))))))))())()()))()(()))))))()))))))())))))))(())))()()(())()())))))(((())))()((())()))())))(()()))())(())())))()(((()())))))()(()()())))()()(()()(()()))())()(()()()))())()()))()())(()))))())))))())))(())()()))))(()))))(())(()))(())))))()()))()))))())()))()()(())())))((()))())()))))))()()))))((()(()))))()()))))))())))))())(()((()())))))))))))()())())))()))(()))))))(()))(())()())))(()))))))))())()()()()))))(()())))))))((())))()))(()))(())(())()())()))))))))(())))())))(()))()()))(()()))(()))())))()(())))())((()((()(())))((())))()))))((((())())()())))(())))()))))))())(()()((())))())()(()())))))(()())()))())))))))((())())))))))(()(()))())()()(()()(((()(((()())))))()))))))()(())(()()((()()(())()()))())()())()))()())())())))))))(((())))))))()()))))))(((())()))(()()))(()()))))(()(()()((((())()())((()()))))(()(())))))()((()()()())()()((()((()()))(()))(((()()()))(((())))()(((())()))))))((()(())())))(()())(((((()(()))(()((()))(()())()))))(()(()))()(()))(())(((())(()()))))()()))(((()))))(()()()()))())))((()()()(())()))()))))()()))()))))))((((((()()()))))())((()()(((()))))(()(())(()()())())())))()(((()()))(())((())))(()))(()()()())((())())())(()))))()))()((()(())()(()()(())(()))(())()))(())(()))))(())(())())(()()(()((()()((())))((()))()((())))(((()()()()((((()))(()()))()()()(((())((())())(()()(()()()))()((())(())()))())(((()()(())))()((()()())()())(()(())())(((())(())())((())(())()(((()()))(())))((())(()())())(())((()()()((((((())))((()(((((())()))()))(())(()()))()))(())()()))(())((()()())()()(()))())()((())))()((()()())((((()())((())())())((()((()))()))((())((()()(()((()()(((())(()()))))((()((())()(((())(()((())())((())(()((((((())())()(()())()(())(((())((((((()(())(()((()()()((()()(()()()())))()()(((((()()))()((((((()))()(()(()(()(((()())((()))())()((()))(())))()))()()))())()()))())((((())(()(()))(((((((())(((()(((((()(((()()((((())(((())())))(()()()(()(()))()))((((((()))((()(((()(())((()((((()((((((())(((((())))(((()(()))))(((()(((())()((())(()((()))(((()()(((())((((()(()(((((()))(((()(((((((()(()()()(()(()(()()())(())(((((()(())())()())(()(()(()))()(()()()())(()()(()((()))()((())())()(()))((())(()))()(()))()(((()(()(()((((((()()()()())()(((((()()(((()()()((()(((((()))((((((((()()()(((((()))))))(()()()(())(()))(()()))))(())()))(((((()(((((()()(()(()())(((()))((((()((()(()(()((()(()((())))()(((()((()))((()))(((((((((()((()((()(())))()((((()((()()))((())(((()(((((()()(()(()()((()(()()()(((((((())())()())))))((((()()(()))()))(()((())()(()(((((((((()()(((()(()())(()((()())((())())((((()(((()(((()((((()((()((((()(()((((((())((((((((((((()()(()()((((((((((((((()((()()))()((((((((((((())((((()(()())((()(()(()))()(((((()()(((()()))()())(())((()(((((()((())(((((()((()(((((()))()()((((())()((((())(((((((((()(())(()(())))())(()((())(((())(())(())())(()(()(())()()((()((())()(((()(((((()(())))()(((()((())))((()()()(((()(((()((()(()(())(()((()())(()(()(((()(((((((((())(()((((()()))(()((((()()()()(((()((((((((()(()()((((((()(()()(()((()((((((((((()()(((((((()())(())))(((()()))(((((()((()()())(()()((((())((()((((()))))(())((()(()()(((()(()(((()((((()(((((()))())())(()((())()))(((()())((())((())((((()((()((((((())(()((((()()))((((((())()(()))((()(((())((((((((((()()(((((()(((((()((()()()((((())))(()))()((()(())()()((()((((((((((()((())(())(((((()(()(()()))((((()((((()()((()(((()(((((((((()(()((()((()))((((((()(((())()()((()(((((((()())))()()(()((()((()()(((()(()()()()((((()((())((((()(((((((((()(((()()(((()(()(((()(((()((())()(()((()(()(()(()))()(((()))(()((((()((())((((())((((((())(()))(()((((())((()(()((((((((()()((((((()(()(()()()(())((()((()()(((()(((((((()()((()(((((((()))(((((()(((()(()()()(()(((()((()()((())(()(((((((((()(()((()((((((()()((())()))(((((()((())()())()(((((((((((()))((((()()()()())(()()(()(()()))()))(()))(()(((()()))())(()(()))()()((())(()())()())()(()))()))(()()(()((((((())((()(((((((((((()(())()((()(()((()((()(()((()((((((((((()()())((())()(())))((())()())()(((((()(()())((((()((()(())(()))(((())()((()))(((((())(()))()()(()))(((())((((()((((()(())))(((((((()))))())()())(())((())()(()()((()(()))()(()()(()()((()())((())((()()))((((()))()()))(()()(())()()(((((()(())((()((((()))()))(()())())(((()()(()()))(())))))(()))((())(((((()((((()))()((((()))()((())(((())))(((()())))((()(()()(( \ No newline at end of file diff --git a/data/2015/2.txt b/data/2015/2.txt new file mode 100644 index 0000000..263cfc2 --- /dev/null +++ b/data/2015/2.txt @@ -0,0 +1,1000 @@ +4x23x21 +22x29x19 +11x4x11 +8x10x5 +24x18x16 +11x25x22 +2x13x20 +24x15x14 +14x22x2 +30x7x3 +30x22x25 +29x9x9 +29x29x26 +14x3x16 +1x10x26 +29x2x30 +30x10x25 +10x26x20 +1x2x18 +25x18x5 +21x3x24 +2x5x7 +22x11x21 +11x8x8 +16x18x2 +13x3x8 +1x16x19 +19x16x12 +21x15x1 +29x9x4 +27x10x8 +2x7x27 +2x20x23 +24x11x5 +2x8x27 +10x28x10 +24x11x10 +19x2x12 +27x5x10 +1x14x25 +5x14x30 +15x26x12 +23x20x22 +5x12x1 +9x26x9 +23x25x5 +28x16x19 +17x23x17 +2x27x20 +18x27x13 +16x7x18 +22x7x29 +17x28x6 +9x22x17 +10x5x6 +14x2x12 +25x5x6 +26x9x10 +19x21x6 +19x4x27 +23x16x14 +21x17x29 +24x18x10 +7x19x6 +14x15x10 +9x10x19 +20x18x4 +11x14x8 +30x15x9 +25x12x24 +3x12x5 +12x21x28 +8x23x10 +18x26x8 +17x1x8 +2x29x15 +3x13x28 +23x20x11 +27x25x6 +19x21x3 +30x22x27 +28x24x4 +26x18x21 +11x7x16 +22x27x6 +27x5x26 +4x10x4 +4x2x27 +2x3x26 +26x29x19 +30x26x24 +8x25x12 +16x17x5 +13x2x3 +1x30x22 +20x9x1 +24x26x19 +26x18x1 +18x29x24 +1x6x9 +20x27x2 +3x22x21 +4x16x8 +29x18x16 +7x16x23 +13x8x14 +19x25x10 +23x29x6 +23x21x1 +22x26x10 +14x4x2 +18x29x17 +9x4x18 +7x22x9 +19x5x26 +27x29x19 +7x13x14 +19x10x1 +6x22x3 +12x21x5 +24x20x12 +28x2x11 +16x18x23 +2x13x25 +11x7x17 +27x21x4 +2x10x25 +22x16x17 +23x22x15 +17x13x13 +23x24x26 +27x18x24 +24x7x28 +30x12x15 +14x28x19 +2x15x29 +12x13x5 +17x22x21 +27x10x27 +17x6x25 +22x2x1 +1x10x9 +9x7x2 +30x28x3 +28x11x10 +8x23x15 +23x4x20 +12x5x4 +13x17x14 +28x11x2 +21x11x29 +10x23x22 +27x23x14 +7x15x23 +20x2x13 +8x21x4 +10x20x11 +23x28x11 +21x22x25 +23x11x17 +2x29x10 +28x16x5 +30x26x10 +17x24x16 +26x27x25 +14x13x25 +22x27x5 +24x15x12 +5x21x25 +4x27x1 +25x4x10 +15x13x1 +21x23x7 +8x3x4 +10x5x7 +9x13x30 +2x2x30 +26x4x29 +5x14x14 +2x27x9 +22x16x1 +4x23x5 +13x7x26 +2x12x10 +12x7x22 +26x30x26 +28x16x28 +15x19x11 +4x18x1 +20x14x24 +6x10x22 +9x20x3 +14x9x27 +26x17x9 +10x30x28 +6x3x29 +4x16x28 +8x24x11 +23x10x1 +11x7x7 +29x6x15 +13x25x12 +29x14x3 +26x22x21 +8x3x11 +27x13x25 +27x6x2 +8x11x7 +25x12x9 +24x30x12 +13x1x30 +25x23x16 +9x13x29 +29x26x16 +11x15x9 +11x23x6 +15x27x28 +27x24x21 +6x24x1 +25x25x5 +11x1x26 +21x4x24 +10x5x12 +4x30x13 +24x22x5 +26x7x21 +23x3x17 +22x18x2 +25x1x14 +23x25x30 +8x7x7 +30x19x8 +17x6x15 +2x11x20 +8x3x22 +23x14x26 +8x22x25 +27x1x2 +10x26x2 +28x30x7 +5x30x7 +27x16x30 +28x29x1 +8x25x18 +20x12x29 +9x19x9 +7x25x15 +25x18x18 +11x8x2 +4x20x6 +18x5x20 +2x3x29 +25x26x22 +18x25x26 +9x12x16 +18x7x27 +17x20x9 +6x29x26 +17x7x19 +21x7x5 +29x15x12 +22x4x1 +11x12x11 +26x30x4 +12x24x13 +13x8x3 +26x25x3 +21x26x10 +14x9x26 +20x1x7 +11x12x3 +12x11x4 +11x15x30 +17x6x25 +20x22x3 +1x16x17 +11x5x20 +12x12x7 +2x14x10 +14x27x3 +14x16x18 +21x28x24 +14x20x1 +29x14x1 +10x10x9 +25x23x4 +17x15x14 +9x20x26 +16x2x17 +13x28x25 +16x1x11 +19x16x8 +20x21x2 +27x9x22 +24x18x3 +23x30x6 +4x18x3 +30x15x8 +27x20x19 +28x29x26 +2x21x18 +1x23x30 +1x9x12 +4x11x30 +1x28x4 +17x10x10 +12x14x6 +8x9x24 +8x3x3 +29x8x20 +26x29x2 +29x25x25 +11x17x23 +6x30x21 +13x18x29 +2x10x8 +29x29x27 +27x15x15 +16x17x30 +3x3x22 +21x12x6 +22x1x5 +30x8x20 +6x28x13 +11x2x23 +14x18x27 +6x26x13 +10x24x24 +4x24x6 +20x8x3 +23x11x5 +29x5x24 +14x15x22 +21x17x13 +10x10x8 +1x11x23 +21x19x24 +19x9x13 +21x26x28 +25x11x28 +2x17x1 +18x9x8 +5x21x6 +12x5x2 +23x8x15 +30x16x24 +7x9x27 +16x30x7 +2x21x28 +5x10x6 +8x7x1 +28x13x5 +11x5x14 +26x22x29 +23x15x13 +14x2x16 +22x21x9 +4x20x3 +18x17x19 +12x7x9 +6x12x25 +3x30x27 +8x19x22 +1x9x27 +23x20x12 +14x7x29 +9x12x12 +30x2x6 +15x7x16 +19x13x18 +11x8x13 +16x5x3 +19x26x24 +26x8x21 +21x20x7 +15x1x25 +29x15x21 +22x17x7 +16x17x10 +6x12x24 +8x13x27 +30x25x14 +25x7x10 +15x2x2 +18x15x19 +18x13x24 +19x30x1 +17x1x3 +26x21x15 +10x10x18 +9x16x6 +29x7x30 +11x10x30 +6x11x2 +7x29x23 +13x2x30 +25x27x13 +5x15x21 +4x8x30 +15x27x11 +27x1x6 +2x24x11 +16x20x19 +25x28x20 +6x8x4 +27x16x11 +1x5x27 +12x19x26 +18x24x14 +4x25x17 +24x24x26 +28x3x18 +8x20x28 +22x7x21 +24x5x28 +23x30x29 +25x16x27 +28x10x30 +9x2x4 +30x2x23 +21x9x23 +27x4x26 +2x23x16 +24x26x30 +26x1x30 +10x4x28 +11x29x12 +28x13x30 +24x10x28 +8x12x12 +19x27x11 +11x28x7 +14x6x3 +6x27x5 +6x17x14 +24x24x17 +18x23x14 +17x5x7 +11x4x23 +5x1x17 +26x15x24 +3x9x24 +5x3x15 +5x20x19 +5x21x2 +13x5x30 +19x6x24 +19x17x6 +23x7x13 +28x23x13 +9x1x6 +15x12x16 +21x19x9 +25x5x5 +9x7x9 +6x5x8 +3x11x18 +23x25x11 +25x4x6 +4x27x1 +4x3x3 +30x11x5 +9x17x12 +15x6x24 +10x22x15 +29x27x9 +20x21x11 +18x10x5 +11x2x2 +9x8x8 +1x26x21 +11x11x16 +2x18x30 +29x27x24 +27x8x18 +19x3x17 +30x21x26 +25x13x25 +20x22x1 +10x1x12 +11x17x15 +29x11x30 +17x30x27 +21x22x17 +13x6x22 +22x16x12 +27x18x19 +4x13x6 +27x29x10 +3x23x10 +26x16x24 +18x26x20 +11x28x16 +21x6x15 +9x26x17 +8x15x8 +3x7x10 +2x28x8 +1x2x24 +7x8x9 +19x4x22 +11x20x9 +12x22x16 +26x8x19 +13x28x24 +4x10x16 +12x8x10 +14x24x24 +19x19x28 +29x1x15 +10x5x14 +20x19x23 +10x7x12 +1x7x13 +5x12x13 +25x21x8 +22x28x8 +7x9x4 +3x20x15 +15x27x19 +18x24x12 +16x10x16 +22x19x8 +15x4x3 +9x30x25 +1x1x6 +24x4x25 +13x18x29 +10x2x8 +21x1x17 +29x14x22 +17x29x11 +10x27x16 +25x16x15 +14x2x17 +12x27x3 +14x17x25 +24x4x1 +18x28x18 +9x14x26 +28x24x17 +1x26x12 +2x18x20 +12x19x22 +19x25x20 +5x17x27 +17x29x16 +29x19x11 +16x2x4 +23x24x1 +19x18x3 +28x14x6 +18x5x23 +9x24x12 +15x4x6 +15x7x24 +22x15x8 +22x1x22 +6x4x22 +26x1x30 +8x21x27 +7x1x11 +9x8x18 +20x27x12 +26x23x20 +26x22x30 +24x3x16 +8x24x28 +13x28x5 +4x29x23 +22x5x8 +20x22x3 +9x9x17 +28x3x30 +10x13x10 +10x25x13 +9x20x3 +1x21x25 +24x21x15 +21x5x14 +13x8x20 +29x17x3 +5x17x28 +16x12x7 +23x1x24 +4x24x29 +23x25x14 +8x27x2 +23x11x13 +13x4x5 +24x1x26 +21x1x23 +10x12x12 +21x29x25 +27x25x30 +24x23x4 +1x30x23 +29x28x14 +4x11x30 +9x25x10 +17x11x6 +14x29x30 +23x5x5 +25x18x21 +8x7x1 +27x11x3 +5x10x8 +11x1x11 +16x17x26 +15x22x19 +16x9x6 +18x13x27 +26x4x22 +1x20x21 +6x14x29 +11x7x6 +1x23x7 +12x19x13 +18x21x25 +15x17x20 +23x8x9 +15x9x26 +9x12x9 +12x13x14 +27x26x7 +11x19x22 +16x12x21 +10x30x28 +21x2x7 +12x9x18 +7x17x14 +13x17x17 +3x21x10 +30x9x15 +2x8x15 +15x12x10 +23x26x9 +29x30x10 +30x22x17 +17x26x30 +27x26x20 +17x28x17 +30x12x16 +7x23x15 +30x15x19 +13x19x10 +22x10x4 +17x23x10 +2x28x18 +27x21x28 +24x26x5 +6x23x25 +17x4x16 +14x1x13 +23x21x11 +14x15x30 +26x13x10 +30x19x25 +26x6x26 +9x16x29 +15x2x24 +13x3x20 +23x12x30 +22x23x23 +8x21x2 +18x28x5 +21x27x14 +29x28x23 +12x30x28 +17x16x3 +5x19x11 +28x22x22 +1x4x28 +10x10x14 +18x15x7 +18x11x1 +12x7x16 +10x22x24 +27x25x6 +19x29x25 +10x1x26 +26x27x30 +4x23x19 +24x19x4 +21x11x14 +4x13x27 +9x1x11 +16x20x8 +4x3x11 +1x16x12 +14x6x30 +8x1x10 +11x18x7 +29x28x30 +4x21x8 +3x21x4 +6x1x5 +26x18x3 +28x27x27 +17x3x12 +6x1x22 +23x12x28 +12x13x2 +11x2x13 +7x1x28 +27x6x25 +14x14x3 +14x11x20 +2x27x7 +22x24x23 +7x15x20 +30x6x17 +20x23x25 +18x16x27 +2x9x6 +9x18x19 +20x11x22 +11x16x19 +14x29x23 +14x9x20 +8x10x12 +18x17x6 +28x7x16 +12x19x28 +5x3x16 +1x25x10 +4x14x10 +9x6x3 +15x27x28 +13x26x14 +21x8x25 +29x10x20 +14x26x30 +25x13x28 +1x15x23 +6x20x21 +18x2x1 +22x25x16 +23x25x17 +2x14x21 +14x25x16 +12x17x6 +19x29x15 +25x9x6 +19x17x13 +24x22x5 +19x4x13 +10x18x6 +6x25x6 +23x24x20 +8x22x13 +25x10x29 +5x12x25 +20x5x11 +7x16x29 +29x24x22 +28x20x1 +10x27x10 +6x9x27 +26x15x30 +26x3x19 +20x11x3 +26x1x29 +6x23x4 +6x13x21 +9x23x25 +15x1x10 +29x12x13 +7x8x24 +29x30x27 +3x29x19 +14x16x17 +4x8x27 +26x17x8 +10x27x17 +11x28x17 +17x16x27 +1x8x22 +6x30x16 +7x30x22 +20x12x3 +18x10x2 +20x21x26 +11x1x17 +9x15x15 +19x14x30 +24x22x20 +11x26x23 +14x3x23 +1x28x29 +29x20x4 +1x4x20 +12x26x8 +14x11x14 +14x19x13 +15x13x24 +16x7x26 +11x20x11 +5x24x26 +24x25x7 +21x3x14 +24x29x20 +7x12x1 +16x17x4 +29x16x21 +28x8x17 +11x30x25 +1x26x23 +25x19x28 +30x24x5 +26x29x15 +4x25x23 +14x25x19 +29x10x7 +29x29x28 +19x13x24 +21x28x5 +8x15x24 +1x10x12 +2x26x6 +14x14x4 +10x16x27 +9x17x25 +25x8x7 +1x9x28 +10x8x17 +4x12x1 +17x26x29 +23x12x26 +2x21x22 +18x23x13 +1x14x5 +25x27x26 +4x30x30 +5x13x2 +17x9x6 +28x18x28 +7x30x2 +28x22x17 +14x15x14 +10x14x19 +6x15x22 +27x4x17 +28x21x6 +19x29x26 +6x17x17 +20x13x16 +25x4x1 +2x9x5 +30x3x1 +24x21x2 +14x19x12 +22x5x23 +14x4x21 +10x2x17 +3x14x10 +17x5x3 +22x17x13 +5x19x3 +29x22x6 +12x28x3 +9x21x25 +10x2x14 +13x26x7 +18x23x2 +9x14x17 +21x3x13 +13x23x9 +1x20x4 +11x4x1 +19x5x30 +9x9x29 +26x29x14 +1x4x10 +7x27x30 +8x3x23 +1x27x27 +7x27x27 +1x26x16 +29x16x14 +18x6x12 +24x24x24 +26x2x19 +15x17x4 +11x7x14 +14x19x10 +9x10x1 +14x17x9 +20x19x13 +25x20x8 +24x20x21 +26x30x2 +24x2x10 +28x4x13 +27x17x11 +15x3x8 +11x29x10 +26x15x16 +4x28x22 +7x5x22 +10x28x9 +6x28x13 +10x5x6 +20x12x6 +25x30x30 +17x16x14 +14x20x3 +16x10x8 +9x28x14 +16x12x12 +11x13x25 +21x16x28 +10x3x18 +5x9x20 +17x23x5 +3x13x16 +29x30x17 +2x2x8 +15x8x30 +20x1x16 +23x10x29 +4x5x4 +6x18x12 +26x10x22 +21x10x17 +26x12x29 +7x20x21 +18x9x15 +10x23x20 +20x1x27 +10x10x3 +25x12x23 +30x11x15 +16x22x3 +22x10x11 +15x10x20 +2x20x17 +20x20x1 +24x16x4 +23x27x7 +7x27x22 +24x16x8 +20x11x25 +30x28x11 +21x6x24 +15x2x9 +16x30x24 +21x27x9 +7x19x8 +24x13x28 +12x26x28 +16x21x11 +25x5x13 +23x3x17 +23x1x17 +4x17x18 +17x13x18 +25x12x19 +17x4x19 +4x21x26 +6x28x1 +23x22x15 +6x23x12 +21x17x9 +30x4x23 +2x19x21 +28x24x7 +19x24x14 +13x20x26 +19x24x29 +8x26x3 +16x12x14 +17x4x21 +8x4x20 +13x27x17 +9x21x1 +29x25x6 +7x9x26 +13x25x5 +6x9x21 +12x10x11 +30x28x21 +15x6x2 +8x18x19 +26x20x24 +26x17x14 +27x8x1 +19x19x18 +25x24x27 +14x29x15 +22x26x1 +14x17x9 +2x6x23 +29x7x5 +14x16x19 +14x21x18 +10x15x23 +21x29x14 +20x29x30 +23x11x5 \ No newline at end of file diff --git a/data/2015/3.txt b/data/2015/3.txt new file mode 100644 index 0000000..6e8d40e --- /dev/null +++ b/data/2015/3.txt @@ -0,0 +1 @@ +^^<<>^^>^^^><^>v^>v><><><^^v>v^v>>>^<>v<^<^>>>>><>^>>^>v^>><<^>v>v<>^v^v^vvv><>^^>v><>^><^^^v>>^v^>v><>v^^><vv^<<>v>>><<<>>^^^vv>>>^><<<>><><^>v<>^>v<^v^><<<<>^<>v>^v>vv<^<<>>>>^^v>vv^^<>^<>^^^^<^^^vv<^^v^^>v>^v^^^^>><v<>^v^><>^^><<^^<^^>vv<>v^<^v^>^^>^<>v^^vv<>>v><<<>vvv<>v<>><^<^v<>^vv>^^v<^<>>vv<^>>^>>vv^v>^v^<>^>>>>vv>^^>v>vv>v><^vv^<^<<^^vv^^v>^>>v><^<>v<><>^^<>v>><>^^>^^>>vvv^><<<<<^<^vv<^<>^^^<<<^>^^^vv<>^<>v<^v>^<<>^v<>>v<<^<^<<<><><>^>>>>^>v^v<>vv<^vvv^^^^vv>^v^^v^<^vv<^vv>v<^>vv<>>^>^><^>v>^v>vvv<>^>^v<><>vv>><^v^<><>>v^v^><^<^>vv>v<^>vvv>v<<<<<^>^vv>^><><>^<v^>^><><>>^>^>><^^^>^^>^^v^^<^v^^>v^^>>><<><><>^^<<^^v^>v>><>^^^><^vvv<^^^^^v><<><><>>^>vv>>^vv^^><v<^^>^<^^<^>>>^v<>v<^^^>vvv^v<<^><>>>>v>>>^^vvv^vvv<^^^^v^v^^<<^>v^v^<<><>><^v><<>><<<>^v>v<>^^vv>>^<>v^^<<^v>>v<>>^v^^>><^>v^<^v^^>><>v^>^v^v<<v<><>vv>>>>^>v<>v<<<>^^>vv^v<>^<<<<>>^^>^v<>^v<>>^v^<<^<^>>>^vv<>v^>>v<^^v>>^>><<><<<>>>^v>><^^vv>><>v^><>vv<^^v^^^v<>><^vvv<<^<>v>>>v>><>>><>>^v>v>^^<^>^>v><>vv>^v><<>>>>>>>^<<^vv^^vvvv<^^><<vvv<>^><v<>>^^<<^^vv>v>^vv>>^v^^vvvv>^^>>v^v^^><<^>v>>^^>^<^^<>vvv^vv>v>^v<><^vv^>^v>>>^^<^<^>^v^>^>>>^v>^>^^^>>^<>v^^<>^v<<^^>^^v<^v^>><^v^>^<>>^vv^vv^>v^><^^<^v<^><>v><^v^v^^^v>v^<>^<^^>^v^^<>v^<<>>vv<>>>>v>v<>^>>>v<>^^>^<^><>^><><>^<<>>><<^>^vv^v>>vv^<<^^<<><<^v^>>>v<<<v>^vv<^v>v<^>^^vv>v>><>><>^<>><><<^<<^v^v<v>vvv<^v^^^v^><^v>^<^>^<<>v^<><>>^v<>vvv<^>><^^>^>^v^vv<^><<^v>><^^v>^v<>^>vvvv><^>^<<>v>^>>^<^<<<^v^^^>^>>^>><><<^>v^^>v<<<^>vvv^^<<><^v^v^^^>^^>^vv<>v>>v^>vv^vv>v<^v^^>>^v^v<>>^^><><>>>^>^<>^^v^^><^<>><<^>vv^>>>v<<><<^>vv>vvv>^<><>>>>vv><<><<<<>><v>v^><>v^v^^><>v>v>^^v<^v<>>^^^^^>^^>v<^<^>>>^><^^>><<>>^><>^^^>v^^^>^^v^<>^^><^>>><><^>>vv<^>v<^v>v^<^vv^^><<<><><^v^v>v^>>^^vv^^v>^<^v<>^>^><^^v><^<^<>v^^>^><>>><<<><>v<<^v^^<^><>^<><>v<^^>^^<<>>^><^><^<^>^^v<>v>>><><<>^>v><><<<>^^^v>><<^v>^>>>>^vv<^<>>^<^^<^v>v^<<^<<<<<^<^>>^><<>><>v^v>^<^>v^<>^v^v^v><^vv<<^<>^^^<>^v>^v<>>^>v<<>v<>v^v>v<<<>>v>vv>>v<<>v<>v<^>^>^>v>^>^^^v<<>>>^vvv^^>^^<^vv^^^^>v>^v^>v^^v^>>^v>^vv>^^v^<<<<>^<><^<^<<^^>v^^^v<>>vvv>vv>^<^v>>^v<^^v^v>v<>^v<<<^^v^^^<^v>v^v^v>>v<>^v>vv^v>vv<<^v^v>v>><^vv>>>><<<><>^v^<^vvv>v<>><^v>^>>vv<><><>v><>>><^>vv>>^<>v^>>^><<<^><<>^v^>>><><>vv>^<>^>^v^^><^>>><<>v^<^vv>^<^vv>>vv<><<^><>v<^^<^>vv^^^^vv<<>vv<>v<>>>>^><>^<><>v<>><<>^^vvv>^^^<><>>vvv^v>><>vv^^^v^<<>^^v<><<^^v<>^^>^<^^v>>v^v^^>>v>>>^<<^<>^>^^v>>>>^v<<<^^vv><^>vv<>>vv^>v>>v^vvv^^>vv^<v^>>v^<>>><><<^^<^v>^>>>v>v>^v<>vv>v>^v<<<>><<><><>v^>>>v^>v^>>vv^^^<>>><^>v^<>^^>v<><<<>v^v>^>v<^<>v>v^^>>v>vv^v<>>^^^^<>v^>>>>>>>>^v<^<<>>><<<^<<^>^>v^<>^<<<>v>><^vv^>^>^>>>^v<<>^>^v^><>>v^>v^>^>>v<>vv^v<<>^^>>vv<>vv>>^v<^vv>^v>v<>v^<><>v^^><<<><>^>^v^<>>v^v>v<>>^^<<^<^^vv^<>>^vv^<>>^^^^v>v><^^^v^<<<>^<^<<>><>>v<<^v^>><>>^vv^v>vv>>>>>>^^<<>v^>v^v>^^>>>^v>>^^^<>><>v^<<v>v^^^>^v>^v<^<<><>vv>^^^<^^vv^^>vv>v<<^>^vv><^>^^^^v<v^<<^^>>^^vvvv^v^>vv>>v^vvv<>>^><>>v^^>>^<>>vvvv^>>>v<<^<<^>v^>><<v>v^>^v><>v<<>vv>>><^>>^^v>^>><>vv^><<>>vv<<<^<^^>^<<^>>>>>v>vv<^>^v><>>vv^vvvv>v^>>v><<^^^v>>vv^^>v>^v>^v^^>^<^vvvv<<^>>^<<^^>>^<^>v^><^vv>^^v>>><>v^v>^v<^><<<>vv>v<><>>v^<>^^>^<>^<<^>>vv^><^>v^>>v^>v>vv><>>v<^>><<vvv^vvv^vv^>^>v>>>>vv^>^<>v<^>^<^v>vv<^<<>>^<^<^^<>^<v<<>v>><^v<<^vvv>v>v<<^^<^^>v^^^>^>vv^^^vv>v<>>>vv>><><^><><<>vv>vv^v^>>><>v>>vv>^^vvv^>^^>^>^>^v<<^vv^>vvv^^vv><^>^v^>^><>v<^^vv<^<>>^^v^v>v^vv<>><^v>^<^v>^<>^v>>>><>>>v><^v^vv><<^v<<>^^<^v>vvv<><^^><<^v><>^<^v<^^<^vvvv^^>>>>vv>v>>>v<<<>v^>>vv^vvv<>vvv>>>><>>><>^v>><>>^vv<<^^vv><^v^vv^^^vv>^><^vvv<<>^vvv^>>>^<<<><<<<<^v<^^>>>>^>^v<<<^<^>>v^<<><<^^vvv^>v<>>^^>v>^v>>v>>>^<^<^>v^v^>><>^<<^vvv^^<>^v^>^^<<^>^vv>>v^v^>v>^<^^<>^>^>>>^^vvv^<<>v^<<>><>v<^<^>v^>^vv>^>>^<^v^<<<<^v^>v^><<<><^^^^>v>^^>v><>>^><<><^<>>^^>vv<^><^v^>>>vvv<^<>>^>>^v^<^^v>^^^v<^vv^>>^v><<^<><>>^>vv<<>^^^v^^><>>vv>v^>vvv^^v>^>>^>>v^<<v^<^v^vv^><^<^v<v>^v^<<^^>>^^^v>>>><^^v^>>^^>>^v^<^v>v^v^v^v^>v^vv<><>^^<>^><^^^<<<^v<<>^<^^^^^v^<^<<^^>^vv<>v^>><>>^>v>v<>^>v>><>^<>>>^>^>>v^>v><^vv^>v<v<><^><^v<<>v<>^^><<>v>vv<^vvv><><>vv^<<>^>^<^>>>^v>v<^v^^^vv<>>>^<<^>>><<^^v^>v^<^v>vvv>v^^vv>^^>>v<>^<<>^<><^^v^>><>^>v>>^^^<<^^v<>^^>^<>^>><^>^vvv><^>^<^>^>>vv<^>>^v>>^<>>^^>>>v^>v<>v^^vv>v><^v^^>v<<>v^^<><>^>vvv><^^^>^v^>v>>^vvv<^vv>^^>^>>v<>><<^v<^><>vv^<<^^vv>>^<^><^^v^<<>^v^^>v^>>^^^<^vv>v^>>>vv<<>v>>>^>v^^>v^<<>>vv<<^v>v<<^^>v>>v>v^>>^>>v>^><<^<<>^v>><^^<^<<^>vv<<>^<>^vv>^^^v<^v>vv>^^^^>v>v><<^<<<^vv><^<<<>>v<v>^v^v^<^<^vv>vvv<^^v<>v<<<<>v^<<><<<>v<^>^^v<^^v^>vv>vvv>v>>^><^>>v<v<<^^^v<<^v^^><><<<><<>v>^<<>v<<<^v>>v>><<^<><^v^^v^>^>vvvv<<><<>>^^^>v>v^><>>><^><<><<<^<>v^>>^v^>v^<>>v>^^><^<^v^>v>^vvv<>>v<>^vvvv><<<<<<<v<<<<^v<<><^<<>vv^<<>><^^<<>>>vv>>>>>>^v>v^v^^><<^v^^^<>^>>><>v^v^vvv^>>v>>>^^<<^^vv><<<^^^<<<^^>>>>vvv^v<^>^^>v<^<>v>>>^vv<<^^v^>^>^v>v>v^v^>v<><>>>>><<^v^<>^v<>vvv^>v>v^<><><>^>>><>^>^^<>v^^>^><>><>v^v^^v>>>>vv>>^v<<^v^<>^>v^^>^^<^><<<^^^v^^^^v<^<>v<^^<>vv^^v^<>^<<^>>v>v<<<^^^^vvv^<^<><>v<>><<><<^^^^vv><<>>>^v<<>^>>>v^>v>^^<>^<^>v>^>>>><>^^>v^^v>^vv^^v^><<<>>v<>v<<<>^<^<<>v>>>>^<vvv<^><^<<^>v>>v><>^>>>^v^v>v^^vv^>^<^^>>^><^vv^^vv^<>>^^^^<^^><>>^>>^>^vvv<^<^><>>>^^<><><<>>>>^<<>>>^<^v^>><<^>>>^<^>><>^^<>^v^^vv<><^>vv^^v^<^^^v^vvv^>><>>v<>^<^vvv<<^^>vv^^<<>>><^^vvv<<<^>^<><^>vv^><^<<>vv<>vv>v>v^<<>^^^^v^^^^^<<^><><^^v^>v>^>><^><<>v^>>^vvv>>^<^<>^^v^vv^^v><>>v<<<>v>^<>v<<>v^>^<<><<>v^>v<><^^>^<^v^^><^>vv>^>vvvv>^^><<>vv^>^v<<^<<^<<>vv>>^>>>>>v^v<^v>v>^^^vv^v<^<>v><>>vv>v><>v>^v<><<<<<>v^vv<<<<^<>^>><>^^vv>^<^<<>vv>>vv><>><^^><^<>^><>v^^^^v^^vv<>v<>v>^vv^>^<>^^^>v^>>>v><<^>>v<^v<>^^v<><<>v<^<^>v<>v^>v>^^<<<^^vv^<><<<>>v>^^<>v>>>><<>v^v<>v>><<<<^<<^>^>v^vv^><^v^^<>^^><>vv>^>vvv<^v^>>^>^>^^<<^>^>^v><>>^<^^v>^>>^^<><>>>^^>^^vvv>v<^^<>v^v^^v^v>><<^^^>>v>^vv>^>^^v<>^^<>v^^<>v^><<>vv<<^vvvv><<v>v^>v^<>v^>^^<>^>^^v<>><<<>^v^^v^v<<<^v^<>^<>v>^^>vv>^^<<<><<^>v<^^<^<<>^>>>>>^v^v<vvv<<>v>v>>^v^v^>><<<<>v^<<>>>^>>^>>< \ No newline at end of file diff --git a/data/2015/4.txt b/data/2015/4.txt new file mode 100644 index 0000000..73269d7 --- /dev/null +++ b/data/2015/4.txt @@ -0,0 +1 @@ +ckczppom \ No newline at end of file diff --git a/data/2015/5.txt b/data/2015/5.txt new file mode 100644 index 0000000..17f709f --- /dev/null +++ b/data/2015/5.txt @@ -0,0 +1,1000 @@ +zgsnvdmlfuplrubt +vlhagaovgqjmgvwq +ffumlmqwfcsyqpss +zztdcqzqddaazdjp +eavfzjajkjesnlsb +urrvucyrzzzooxhx +xdwduffwgcptfwad +orbryxwrmvkrsxsr +jzfeybjlgqikjcow +mayoqiswqqryvqdi +iiyrkoujhgpgkcvx +egcgupjkqwfiwsjl +zbgtglaqqolttgng +eytquncjituzzhsx +dtfkgggvqadhqbwb +zettygjpcoedwyio +rwgwbwzebsnjmtln +esbplxhvzzgawctn +vnvshqgmbotvoine +wflxwmvbhflkqxvo +twdjikcgtpvlctte +minfkyocskvgubvm +sfxhhdhaopajbzof +sofkjdtalvhgwpql +uqfpeauqzumccnrc +tdflsbtiiepijanf +dhfespzrhecigzqb +xobfthcuuzhvhzpn +olgjglxaotocvrhw +jhkzpfcskutwlwge +zurkakkkpchzxjhq +hekxiofhalvmmkdl +azvxuwwfmjdpjskj +arsvmfznblsqngvb +ldhkzhejofreaucc +adrphwlkehqkrdmo +wmveqrezfkaivvaw +iyphmphgntinfezg +blomkvgslfnvspem +cgpaqjvzhbumckwo +ydhqjcuotkeyurpx +sbtzboxypnmdaefr +vxrkhvglynljgqrg +ttgrkjjrxnxherxd +hinyfrjdiwytetkw +sufltffwqbugmozk +tohmqlzxxqzinwxr +jbqkhxfokaljgrlg +fvjeprbxyjemyvuq +gmlondgqmlselwah +ubpwixgxdloqnvjp +lxjfhihcsajxtomj +qouairhvrgpjorgh +nloszcwcxgullvxb +myhsndsttanohnjn +zjvivcgtjwenyilz +qaqlyoyouotsmamm +tadsdceadifqthag +mafgrbmdhpnlbnks +aohjxahenxaermrq +ovvqestjhbuhrwlr +lnakerdnvequfnqb +agwpwsgjrtcjjikz +lhlysrshsmzryzes +xopwzoaqtlukwwdu +xsmfrfteyddrqufn +ohnxbykuvvlbbxpf +bbdlivmchvzfuhoc +vtacidimfcfyobhf +tinyzzddgcnmiabd +tcjzxftqcqrivqhn +vgnduqyfpokbmzim +revkvaxnsxospyow +ydpgwxxoxlywxcgi +wzuxupbzlpzmikel +nscghlafavnsycjh +xorwbquzmgmcapon +asmtiycegeobfxrn +eqjzvgkxgtlyuxok +mmjrskloposgjoqu +gceqosugbkvytfto +khivvoxkvhrgwzjl +qtmejuxbafroifjt +ttmukbmpoagthtfl +bxqkvuzdbehtduwv +gvblrpzjylanoggj +cltewhyjxdbmbtqj +fbkgedqvomdipklj +uxvuplhenqawfcjt +fkdjmayiawdkycva +gnloqfgbnibzyidh +kyzorvtopjiyyyqg +drckpekhpgrioblt +tvhrkmbnpmkkrtki +khaldwntissbijiz +aoojqakosnaxosom +xfptccznbgnpfyqw +moqdwobwhjxhtrow +chfwivedutskovri +gprkyalfnpljcrmi +pwyshpwjndasykst +xuejivogihttzimd +bugepxgpgahtsttl +zufmkmuujavcskpq +urybkdyvsrosrfro +isjxqmlxwtqmulbg +pxctldxgqjqhulgz +hclsekryiwhqqhir +hbuihpalwuidjpcq +ejyqcxmfczqfhbxa +xljdvbucuxnnaysv +irqceqtqwemostbb +anfziqtpqzqdttnz +cgfklbljeneeqfub +zudyqkuqqtdcpmuo +iuvhylvznmhbkbgg +mpgppmgfdzihulnd +argwmgcvqqkxkrdi +pdhrfvdldkfihlou +cbvqnjrvrsnqzfob +lkvovtsqanohzcmm +vxoxjdyoylqcnyzt +kurdpaqiaagiwjle +gwklwnazaxfkuekn +rbaamufphjsjhbdl +tzbrvaqvizhsisbd +pbcqlbfjvlideiub +hiwoetbfywaeddtx +fjirczxtuupfywyf +omeoegeyyospreem +ozbbpupqpsskvrjh +pzvcxkvjdiyeyhxa +odclumkenabcsfzr +npdyqezqdjqaszvm +yodkwzmrhtexfrqa +rjcmmggjtactfrxz +mioxfingsfoimual +aqskaxjjborspfaa +wientdsttkevjtkf +tdaswkzckmxnfnct +voucjhzvkkhuwoqk +boaaruhalgaamqmh +iufzxutxymorltvb +pfbyvbayvnrpijpo +obztirulgyfthgcg +ntrenvhwxypgtjwy +ephlkipjfnjfjrns +pkjhurzbmobhszpx +gqbnjvienzqfbzvj +wjelolsrbginwnno +votanpqpccxqricj +bxyuyiglnmbtvehi +qyophcjfknbcbjrb +anoqkkbcdropskhj +tcnyqaczcfffkrtl +rsvqimuqbuddozrf +meppxdrenexxksdt +tyfhfiynzwadcord +wayrnykevdmywycf +mhowloqnppswyzbu +tserychksuwrgkxz +xycjvvsuaxsbrqal +fkrdsgaoqdcqwlpn +vrabcmlhuktigecp +xgxtdsvpaymzhurx +ciabcqymnchhsxkc +eqxadalcxzocsgtr +tsligrgsjtrnzrex +qeqgmwipbspkbbfq +vzkzsjujltnqwliw +ldrohvodgbxokjxz +jkoricsxhipcibrq +qzquxawqmupeujrr +mizpuwqyzkdbahvk +suupfxbtoojqvdca +ywfmuogvicpywpwm +uevmznxmsxozhobl +vjbyhsemwfwdxfxk +iyouatgejvecmtin +tcchwpuouypllcxe +lgnacnphdiobdsef +uoxjfzmdrmpojgbf +lqbxsxbqqhpjhfxj +knpwpcnnimyjlsyz +fezotpoicsrshfnh +dkiwkgpmhudghyhk +yzptxekgldksridv +pckmzqzyiyzdbcts +oqshafncvftvwvsi +yynihvdywxupqmbt +iwmbeunfiuhjaaic +pkpkrqjvgocvaxjs +ieqspassuvquvlyz +xshhahjaxjoqsjtl +fxrrnaxlqezdcdvd +pksrohfwlaqzpkdd +ravytrdnbxvnnoyy +atkwaifeobgztbgo +inkcabgfdobyeeom +ywpfwectajohqizp +amcgorhxjcybbisv +mbbwmnznhafsofvr +wofcubucymnhuhrv +mrsamnwvftzqcgta +tlfyqoxmsiyzyvgv +ydceguvgotylwtea +btyvcjqhsygunvle +usquiquspcdppqeq +kifnymikhhehgote +ybvkayvtdpgxfpyn +oulxagvbavzmewnx +tvvpekhnbhjskzpj +azzxtstaevxurboa +nfmwtfgrggmqyhdf +ynyzypdmysfwyxgr +iaobtgubrcyqrgmk +uyxcauvpyzabbzgv +fbasfnwiguasoedc +mgmjoalkbvtljilq +szgkxiqkufdvtksb +xgfzborpavdmhiuj +hmuiwnsonvfgcrva +zolcffdtobfntifb +mvzgcsortkugvqjr +pbbpgraaldqvzwhs +zvsxegchksgnhpuv +kdpdboaxsuxfswhx +jdfggigejfupabth +tpeddioybqemyvqz +mxsntwuesonybjby +tzltdsiojfvocige +ubtdrneozoejiqrv +fusyucnhncoxqzql +nlifgomoftdvkpby +pyikzbxoapffbqjw +hzballplvzcsgjug +ymjyigsfehmdsvgz +vpqgyxknniunksko +ffkmaqsjxgzclsnq +jcuxthbedplxhslk +ymlevgofmharicfs +nyhbejkndhqcoisy +rjntxasfjhnlizgm +oqlnuxtzhyiwzeto +tntthdowhewszitu +rmxyoceuwhsvfcua +qpgsjzwenzbxyfgw +sumguxpdkocyagpu +ymfrbxwrawejkduu +hetgrtmojolbmsuf +qzqizpiyfasgttex +qnmoemcpuckzsshx +ddyqiihagcmnxccu +oirwxyfxxyktgheo +phpaoozbdogbushy +uctjdavsimsrnvjn +aurbbphvjtzipnuh +hpbtrubopljmltep +pyyvkthqfsxqhrxg +jdxaiqzkepxbfejk +ukgnwbnysrzvqzlw +lfkatkvcssnlpthd +ucsyecgshklhqmsc +rwdcbdchuahkvmga +rxkgqakawgpwokum +hbuyxeylddfgorgu +tbllspqozaqzglkz +rqfwizjlbwngdvvi +xuxduyzscovachew +kouiuxckkvmetvdy +ycyejrpwxyrweppd +trctlytzwiisjamx +vtvpjceydunjdbez +gmtlejdsrbfofgqy +jgfbgtkzavcjlffj +tyudxlpgraxzchdk +gyecxacqitgozzgd +rxaocylfabmmjcvt +tornfzkzhjyofzqa +kocjcrqcsvagmfqv +zfrswnskuupivzxb +cunkuvhbepztpdug +pmpfnmklqhcmrtmf +tfebzovjwxzumxap +xpsxgaswavnzkzye +lmwijdothmxclqbr +upqxhmctbltxkarl +axspehytmyicthmq +xdwrhwtuooikehbk +tpggalqsytvmwerj +jodysbwnymloeqjf +rxbazvwuvudqlydn +ibizqysweiezhlqa +uexgmotsqjfauhzp +ldymyvumyhyamopg +vbxvlvthgzgnkxnf +pyvbrwlnatxigbrp +azxynqididtrwokb +lwafybyhpfvoawto +ogqoivurfcgspytw +cinrzzradwymqcgu +sgruxdvrewgpmypu +snfnsbywuczrshtd +xfzbyqtyxuxdutpw +fmpvjwbulmncykbo +ljnwoslktrrnffwo +ceaouqquvvienszn +yjomrunrxjyljyge +xpmjsapbnsdnbkdi +uetoytptktkmewre +eixsvzegkadkfbua +afaefrwhcosurprw +bwzmmvkuaxiymzwc +gejyqhhzqgsrybni +gjriqsfrhyguoiiw +gtfyomppzsruhuac +ogemfvmsdqqkfymr +jgzbipsygirsnydh +zghvlhpjnvqmocgr +ngvssuwrbtoxtrka +ietahyupkbuisekn +gqxqwjizescbufvl +eiprekzrygkncxzl +igxfnxtwpyaamkxf +soqjdkxcupevbren +fspypobyzdwstxak +qstcgawvqwtyyidf +gsccjacboqvezxvd +bfsblokjvrqzphmc +srezeptvjmncqkec +opmopgyabjjjoygt +msvbufqexfrtecbf +uiaqweyjiulplelu +pbkwhjsibtwjvswi +xwwzstmozqarurrq +nytptwddwivtbgyq +ejxvsufbzwhzpabr +jouozvzuwlfqzdgh +gfgugjihbklbenrk +lwmnnhiuxqsfvthv +bzvwbknfmaeahzhi +cgyqswikclozyvnu +udmkpvrljsjiagzi +zzuhqokgmisguyna +ekwcdnjzuctsdoua +eueqkdrnzqcaecyd +lnibwxmokbxhlris +fdrbftgjljpzwhea +iabvuhhjsxmqfwld +qgogzkynrgejakta +mfcqftytemgnpupp +klvhlhuqhosvjuqk +gdokmxcgoqvzvaup +juududyojcazzgvr +fyszciheodgmnotg +yfpngnofceqfvtfs +cahndkfehjumwavc +dxsvscqukljxcqyi +cqukcjtucxwrusji +vevmmqlehvgebmid +ahswsogfrumzdofy +ftasbklvdquaxhxb +tsdeumygukferuif +ybfgbwxaaitpwryg +djyaoycbymezglio +trzrgxdjqnmlnzpn +rumwchfihhihpqui +ffrvnsgrnzemksif +oizlksxineqknwzd +cirqcprftpjzrxhk +zrhemeqegmzrpufd +kqgatudhxgzlgkey +syjugymeajlzffhq +nlildhmgnwlopohp +flcszztfbesqhnyz +ohzicmqsajyqptrw +ebyszucgozsjbelq +enxbgvvcuqeloxud +ubwnvecbsmhkxwuk +noifliyxvlkqphbo +hazlqpetgugxxsiz +ihdzoerqwqhgajzb +ivrdwdquxzhdrzar +synwycdvrupablib +mqkdjkntblnmtvxj +qmmvoylxymyovrnq +pjtuxskkowutltlq +gchrqtloggkrjciz +namzqovvsdipazae +yfokqhkmakyjzmys +iapxlbuoiwqfnozm +fbcmlcekgfdurqxe +ednzgtczbplwxjlq +gdvsltzpywffelsp +oaitrrmpqdvduqej +gseupzwowmuuibjo +dfzsffsqpaqoixhh +tclhzqpcvbshxmgx +cfqkptjrulxiabgo +iraiysmwcpmtklhf +znwjlzodhktjqwlm +lcietjndlbgxzjht +gdkcluwjhtaaprfo +vbksxrfznjzwvmmt +vpfftxjfkeltcojl +thrmzmeplpdespnh +yafopikiqswafsit +xxbqgeblfruklnhs +qiufjijzbcpfdgig +ikksmllfyvhyydmi +sknufchjdvccccta +wpdcrramajdoisxr +grnqkjfxofpwjmji +lkffhxonjskyccoh +npnzshnoaqayhpmb +fqpvaamqbrnatjia +oljkoldhfggkfnfc +ihpralzpqfrijynm +gvaxadkuyzgbjpod +onchdguuhrhhspen +uefjmufwlioenaus +thifdypigyihgnzo +ugqblsonqaxycvkg +yevmbiyrqdqrmlbw +bvpvwrhoyneorcmm +gbyjqzcsheaxnyib +knhsmdjssycvuoqf +nizjxiwdakpfttyh +nwrkbhorhfqqoliz +ynsqwvwuwzqpzzwp +yitscrgexjfclwwh +dhajwxqdbtrfltzz +bmrfylxhthiaozpv +frvatcvgknjhcndw +xlvtdmpvkpcnmhya +pxpemuzuqzjlmtoc +dijdacfteteypkoq +knrcdkrvywagglnf +fviuajtspnvnptia +xvlqzukmwbcjgwho +bazlsjdsjoeuvgoz +nslzmlhosrjarndj +menvuwiuymknunwm +uavfnvyrjeiwqmuu +yrfowuvasupngckz +taevqhlrcohlnwye +skcudnogbncusorn +omtnmkqnqedsajfv +yqmgsqdgsuysqcts +odsnbtyimikkbmdd +vuryaohxdvjllieb +dhaxldeywwsfamlo +opobvtchezqnxpak +pzfnegouvsrfgvro +rzkcgpxdslzrdktu +ksztdtqzxvhuryam +ctnqnhkcooqipgkh +pyqbbvrzdittqbgm +koennvmolejeftij +rvzlreqikqlgyczj +xrnujfoyhonzkdgd +mmsmhkxaiqupfjil +ypjwoemqizddvyfd +qgugcxnbhvgahykj +cviodlsrtimbkgmy +xbfbbechhmrjxhnw +psuipaoucfczfxkp +hdhwcpeuptgqqvim +gsxlruhjeaareilr +vgyqonnljuznyrhk +eewezahlumervpyu +iiolebrxfadtnigy +tdadlrodykrdfscn +ocvdtzjxrhtjurpo +gidljbuvuovkhhrf +qwfcpilbjwzboohd +xzohxonlezuiupbg +vslpbkkqgvgbcbix +pivzqrzfxosbstzn +fyqcfboevcqmbhhs +yqsrneacnlxswojx +heicqpxxyrwcbsjz +yzynmnnoumkmlbeh +bncadbjdvvmczylw +hlnjskgfzbgmigfn +fphpszymugpcykka +zbifcktanxpmufvy +saklpkhoyfeqbguy +nqtqfcfxmpivnjyo +locygrwerxlsvzqm +qqflecydqvlogjme +njklmixvgkzpgppf +ugzkpjwjflaswyma +lriousvkbeftslcy +nsvsauxzfbbotgmh +tblcpuhjyybrlica +hqwshxcilwtmxrsf +xojwroydfeoqupup +tikuzsrogpnohpib +layenyqgxdfggloc +nqsvjvbrpuxkqvmq +ivchgxkdlfjdzxmk +uoghiuosiiwiwdws +twsgsfzyszsfinlc +waixcmadmhtqvcmd +zkgitozgrqehtjkw +xbkmyxkzqyktmpfi +qlyapfmlybmatwxn +ntawlvcpuaebuypf +clhebxqdkcyndyof +nrcxuceywiklpemc +lmurgiminxpapzmq +obalwqlkykzflxou +huvcudpiryefbcye +zlxbddpnyuyapach +gqfwzfislmwzyegy +jhynkjtxedmemlob +hmrnvjodnsfiukex +pstmikjykzyavfef +wuwpnscrwzsyalyt +hksvadripgdgwynm +tvpfthzjleqfxwkh +xpmrxxepkrosnrco +qjkqecsnevlhqsly +jjnrfsxzzwkhnwdm +pehmzrzsjngccale +bsnansnfxduritrr +ejzxkefwmzmbxhlb +pceatehnizeujfrs +jtidrtgxopyeslzl +sytaoidnamfwtqcr +iabjnikomkgmyirr +eitavndozoezojsi +wtsbhaftgrbqfsmm +vvusvrivsmhtfild +qifbtzszfyzsjzyx +ifhhjpaqatpbxzau +etjqdimpyjxiuhty +fvllmbdbsjozxrip +tjtgkadqkdtdlkpi +xnydmjleowezrecn +vhcbhxqalroaryfn +scgvfqsangfbhtay +lbufpduxwvdkwhmb +tshipehzspkhmdoi +gtszsebsulyajcfl +dlrzswhxajcivlgg +kgjruggcikrfrkrw +xxupctxtmryersbn +hljjqfjrubzozxts +giaxjhcwazrenjzs +tyffxtpufpxylpye +jfugdxxyfwkzqmgv +kbgufbosjghahacw +xpbhhssgegmthwxb +npefofiharjypyzk +velxsseyxuhrpycy +sglslryxsiwwqzfw +susohnlpelojhklv +lfnpqfvptqhogdmk +vtcrzetlekguqyle +jlyggqdtamcjiuxn +olxxqfgizjmvigvl +cyypypveppxxxfuq +hewmxtlzfqoqznwd +jzgxxybfeqfyzsmp +xzvvndrhuejnzesx +esiripjpvtqqwjkv +xnhrwhjtactofwrd +knuzpuogbzplofqx +tihycsdwqggxntqk +xkfywvvugkdalehs +cztwdivxagtqjjel +dsaslcagopsbfioy +gmowqtkgrlqjimbl +ctcomvdbiatdvbsd +gujyrnpsssxmqjhz +nygeovliqjfauhjf +mmgmcvnuppkbnonz +bhipnkoxhzcotwel +wkwpgedgxvpltqid +mliajvpdocyzcbot +kqjhsipuibyjuref +zqdczykothbgxwsy +koirtljkuqzxioaz +audpjvhmqzvhzqas +cxyhxlhntyidldfx +iasgocejboxjgtkx +abehujmqotwcufxp +fmlrzqmazajxeedl +knswpkekbacuxfby +yvyalnvrxgstqhxm +sjnrljfrfuyqfwuw +ssaqruwarlvxrqzm +iaxbpeqqzlcwfqjz +uwyxshjutkanvvsc +uxwrlwbblcianvnb +nodtifgrxdojhneh +mloxjfusriktxrms +lkfzrwulbctupggc +gcrjljatfhitcgfj +tkdfxeanwskaivqs +ypyjxqtmitwubbgt +ssxbygzbjsltedjj +zdrsnoorwqfalnha +xlgmissaiqmowppd +azhbwhiopwpguiuo +fydlahgxtekbweet +qtaveuqpifprdoiy +kpubqyepxqleucem +wlqrgqmnupwiuory +rwyocktuqkuhdwxz +abzjfsdevoygctqv +zsofhaqqghncmzuw +lqbjwjqxqbfgdckc +bkhyxjkrqbbunido +yepxfjnnhldidsjb +builayfduxbppafc +wedllowzeuswkuez +gverfowxwtnvgrmo +tpxycfumxdqgntwf +lqzokaoglwnfcolw +yqsksyheyspmcdqt +vufvchcjjcltwddl +saeatqmuvnoacddt +dxjngeydvsjbobjs +ucrcxoakevhsgcep +cajgwjsfxkasbayt +hknzmteafsfemwuv +xxwhxwiinchqqudr +usfenmavvuevevgr +kxcobcwhsgyizjok +vhqnydeboeunnvyk +bgxbwbxypnxvaacw +bwjzdypacwgervgk +rrioqjluawwwnjcr +fiaeyggmgijnasot +xizotjsoqmkvhbzm +uzphtrpxwfnaiidz +kihppzgvgyoncptg +hfbkfrxwejdeuwbz +zgqthtuaqyrxicdy +zitqdjnnwhznftze +jnzlplsrwovxlqsn +bmwrobuhwnwivpca +uuwsvcdnoyovxuhn +nmfvoqgoppoyosaj +hxjkcppaisezygpe +icvnysgixapvtoos +vbvzajjgrmjygkhu +jinptbqkyqredaos +dpmknzhkhleawfvz +ouwwkfhcedsgqqxe +owroouiyptrijzgv +bewnckpmnbrmhfyu +evdqxevdacsbfbjb +catppmrovqavxstn +dqsbjibugjkhgazg +mkcldhjochtnvvne +sblkmhtifwtfnmsx +lynnaujghehmpfpt +vrseaozoheawffoq +ytysdzbpbazorqes +sezawbudymfvziff +vrlfhledogbgxbau +bipdlplesdezbldn +ermaenjunjtbekeo +eyaedubkthdecxjq +gbzurepoojlwucuy +rsiaqiiipjlouecx +beqjhvroixhiemtw +buzlowghhqbcbdwv +ldexambveeosaimo +fpyjzachgrhxcvnx +komgvqejojpnykol +fxebehjoxdujwmfu +jnfgvheocgtvmvkx +qmcclxxgnclkuspx +rsbelzrfdblatmzu +vexzwqjqrsenlrhm +tnfbkclwetommqmh +lzoskleonvmprdri +nnahplxqscvtgfwi +ubqdsflhnmiayzrp +xtiyqxhfyqonqzrn +omdtmjeqhmlfojfr +cnimgkdbxkkcnmkb +tapyijgmxzbmqnks +byacsxavjboovukk +awugnhcrygaoppjq +yxcnwrvhojpuxehg +btjdudofhxmgqbao +nzqlfygiysfuilou +nubwfjdxavunrliq +vqxmmhsbmhlewceh +ygavmcybepzfevrp +kgflmrqsvxprkqgq +iaqyqmcaedscmakk +cvbojnbfmrawxzkh +jjjrprbnlijzatuw +lcsudrrfnnggbrmk +qzgxbiavunawfibc +gnnalgfvefdfdwwg +nokmiitzrigxavsc +etzoxwzxqkkhvais +urxxfacgjccieufi +lqrioqhuvgcotuec +dydbaeyoypsbftra +hhrotenctylggzaf +evctqvzjnozpdxzu +tbpvithmorujxlcp +pllbtcbrtkfpvxcw +fzyxdqilyvqreowv +xdleeddxwvqjfmmt +fcldzthqqpbswoin +sgomzrpjfmvgwlzi +axjyskmtdjbxpwoz +hcvaevqxsmabvswh +lfdlsfcwkwicizfk +isjbwpzdognhoxvm +oqnexibqxlyxpluh +zqfbgodsfzwgcwuf +kvmnwruwsjllbldz +kghazimdyiyhmokj +uiktgpsxpoahofxn +zkdwawxargcmidct +ftbixlyiprshrjup +nofhmbxififwroeg +mcdaqrhplffxrcdt +fbjxnwojcvlawmlb +rizoftvwfdhiwyac +eduogrtyhxfwyars +zoikunqxgjwfqqwr +zxwbbpmvctzezaqh +nghujwyeabwdqnop +vcxamijpoyyksogn +jnckdbuteoqlsdae +jurfqqawafmsiqwv +inepmztrzehfafie +tznzkyvzodbrtscf +xewbavjeppflwscl +ucndzsorexjlnplo +jpxbctscngxgusvu +mfmygcllauzuoaok +oibkuxhjmhxhhzby +zjkslwagmeoisunw +avnnxmopdgvmukuu +jmaargejcwboqhkt +yacmpeosarsrfkrv +iqhgupookcaovwgh +ebjkdnxwtikqzufc +imdhbarytcscbsvb +ifyibukeffkbqvcr +aloighmyvwybtxhx +yszqwrutbkiwkxjg +xyholyzlltjhsuhp +gykhmrwucneoxcrf +badkdgqrpjzbabet +sunaucaucykwtkjj +pumqkglgfdhneero +usgtyuestahlydxq +xmfhflphzeudjsjm +knywgmclisgpootg +mtojnyrnvxtweuzb +uuxufbwfegysabww +vobhwwocqttlbsik +yuydfezeqgqxqmnd +wbqgqkwbibiilhzc +sfdmgxsbuzsawush +ilhbxcfgordyxwvp +ahqoavuysblnqaeg +plwgtvpgotskmsey +ewjcmzkcnautrrmp +tyekgzbznlikcyqj +bqzctiuaxpriuiga +bimvbfjkiupyqiys +mpqtbcxfhwymxncw +htemlptvqhharjgb +mqbsmsruwzzxgcxc +zjyedjwhnvteuaid +pzoelkoidwglpttc +efydnsvlfimvwxhx +gfyhgoeiyjcgfyze +deqtomhwopmzvjlt +casafubtkoopuaju +yylsfarntbucfulg +mgjwsormkjsrrxan +lkkenpupgmjpnqqd +tegweszyohsoluot +lihsfdwxmxvwdxna +rrefrjjxerphejwb +guuazonjoebhymtm +ysofqzmfmyneziki +lmjgaliatcpduoal +qzthcpjwtgahbebr +wvakvephyukmpemm +simxacxxzfoaeddw +aetgqmiqzxbvbviz +jxlmhdmqggevrxes +mmuglnjmuddzgaik +svopsqhtrslgycgc +xnvcsiiqrcjkvecn +kkvumxtvashxcops +bduflsdyeectvcgl +vfrxbwmmytjvqnsj +eeqtdneiyiaiofxw +crtbgknfacjtwkfl +uuutuoxdsxolpbhd +lcrztwzreaswovtn +htorkvnvujmjdqzj +wttzuzvrzlyhfzyf +oraewznfwgdsnhuk +rctlkqqvkwbgrcgk +cfehrsrqhzyiwtmz +kbvxwcumjkhvjpui +xxlocexbmniiakfo +gtknkkzvykmlqghl +kcjuxvkuimhwqrtk +vohekwkuyuoacuww +vorctgughscysyfo +zmjevqplngzswxyq +qhswdrhrijnatkyo +joakcwpfggtitizs +juzlwjijcmtswdtq +icbyaqohpkemhkip +rpdxgpzxncedmvzh +rozkmimbqhbhcddv +wkkypomlvyglpfpf +jcaqyaqvsefwtaya +ghvmtecoxlebdwnf +lqrcyiykkkpkxvqt +eqlarfazchmzotev +vqwndafvmpguggef +dbfxzrdkkrusmdke +cmjpjjgndozcmefj +hbrdcwjuyxapyhlo +mmforetykbosdwce +zynfntqwblbnfqik +sodwujfwlasznaiz +yyvrivjiqnxzqkfp +uldbskmmjbqllpnm +fyhhrmrsukeptynl +hpfjekktvdkgdkzl +bozhkoekcxzeorob +uvpptyfrzkvmtoky +hkhfprmjdpjvfkcb +igxzwktwsqhsivqu +qceomwysgkcylipb +cglateoynluyeqgc +xcsdfkpeguxgvpfh +owjhxlcncdgkqyia +rpbmrpcesiakqpna +lueszxiourxsmezb +zelvsowimzkxliwc +vzxbttoobtvdtkca +pfxvzphzwscqkzsi +edsjorainowytbzu +ipsegdaluoiphmnz +mkhueokfpemywvuw +urxdnumhylpafdlc +ggluurzavsxkvwkl +ctclphidqgteakox +tfobosynxsktajuk +jzrmemhxqmzhllif +eemwekimdfvqslsx +yjkwpzrbanoaajgq +rlxghzanuyeimfhx +hozbgdoorhthlqpv +obkbmflhyanxilnx +xojrippyxjmpzmsz +ukykmbfheixuviue +qivlmdexwucqkres +rmyxxipqkarpjmox +fgaftctbvcvnrror +raawxozucfqvasru +dinpjbdfjfizexdh +gybxubwnnbuyvjcr +qrqitdvyoneqyxcg +jqzcfggayzyoqteo +cikqpvxizpdbmppm +stfpldgyhfmucjjv +slzbcuihmimpduri +aufajwfrsorqqsnl +iylmzraibygmgmqj +lcdyfpcqlktudfmu +pmomzzsdpvgkkliw +zpplirgtscfhbrkj +mvhyerxfiljlotjl +ofkvrorwwhusyxjx +xngzmvcgkqfltjpe +yxfxaqipmysahqqq +sdqafdzgfdjuabup +qcqajmerahcdgxfv +xqimrqtupbapawro +qfvkqwidzzrehsbl +himixxvueksiqfdf +vgtfqpuzxxmhrvvd +adiioqeiejguaost +jnzxuycjxvxehbvm +xedbpxdhphamoodk +jsrioscmwlsfuxrg +mtsynnfxunuohbnf +enamqzfzjunnnkpe +uwcvfecunobyhces +ciygixtgbsccpftq +ewjgcronizkcsfjy +wztjkoipxsikoimv +jrgalyvfelwxforw +imylyalawbqwkrwb +yflwqfnuuvgjsgcj +wkysyzusldlojoue +zopllxnidcffcuau +bscgwxuprxaerskj +zvnvprxxjkhnkkpq +nejwxbhjxxdbenid +chryiccsebdbcnkc +guoeefaeafhlgvxh +nzapxrfrrqhsingx +mkzvquzvqvwsejqs +kozmlmbchydtxeeo +keylygnoqhmfzrfp +srwzoxccndoxylxe +uqjzalppoorosxxo +potmkinyuqxsfdfw +qkkwrhpbhypxhiun +wgfvnogarjmdbxyh +gkidtvepcvxopzuf +atwhvmmdvmewhzty +pybxizvuiwwngqej +zfumwnazxwwxtiry +keboraqttctosemx +vtlzxaqdetbhclib +wjiecykptzexuayl +ejatfnyjjdawepyk +mpcrobansyssvmju +gqukndzganeueabm +ukzscvomorucdnqd +wfydhtbzehgwfazx +mtwqdzlephqvxqmx +dltmlfxbjopefibh +atcfrowdflluqtbi +vowawlophlxaqonw +vblgdjzvwnocdipw +uzerzksmkvnlvlhm +ytjwhpaylohorvxd +siprvfxvnxcdgofz +cbhjupewcyjhvtgs +apqtozaofusmfqli +tmssrtlxfouowqnr +ntutrvwnzzgmokes +zrsgpwdzokztdpis +nrobvmsxtfmrqdhv +kadkaftffaziqdze +yrovbgcyqtlsnoux +modheiwuhntdecqs +gzhjypwddizemnys +gaputpwpcsvzxjho +bgmouxwoajgaozau +oxuapfrjcpyakiwt +kntwbvhuaahdixzj +epqjdjbnkxdnaccx +dspltdvznhypykri +tdrgqmbnagrxdwtt +njfqawzjggmemtbg +chpemsgwpzjpdnkk +fpsrobmbqbmigmwk +flxptsrqaazmprnl +nzdunrxlcbfklshm +miuwljvtkgzdlbnn +xbhjakklmbhsdmdt +xwxhsbnrwnegwcov +pwosflhodjaiexwq +fhgepuluczttfvqh +tldxcacbvxyamvkt +gffxatrjglkcehim +tzotkdrpxkucsdps +wxheftdepysvmzbe +qfooyczdzoewrmku +rvlwikuqdbpjuvoo +bcbrnbtfrdgijtzt +vaxqmvuogsxonlgq +ibsolflngegravgo +txntccjmqakcoorp +vrrbmqaxfbarmlmc +dzspqmttgsuhczto +pikcscjunxlwqtiw +lwzyogwxqitqfqlv +gsgjsuaqejtzglym +feyeqguxbgmcmgpp +gmttebyebdwvprkn +mzuuwbhzdjfdryxu +fganrbnplymqbzjx +cvsrbdcvhtxxdmro +scmgkjlkqukoamyp +fkgrqbyqpqcworqc +hjsrvkdibdjarxxb +sztzziuqroeidcus +pxdfvcpvwaddrzwv +phdqqxleqdjfgfbg +cqfikbgxvjmnfncy \ No newline at end of file diff --git a/data/2016/1.txt b/data/2016/1.txt new file mode 100644 index 0000000..309468a --- /dev/null +++ b/data/2016/1.txt @@ -0,0 +1 @@ +R3, L2, L2, R4, L1, R2, R3, R4, L2, R4, L2, L5, L1, R5, R2, R2, L1, R4, R1, L5, L3, R4, R3, R1, L1, L5, L4, L2, R5, L3, L4, R3, R1, L3, R1, L3, R3, L4, R2, R5, L190, R2, L3, R47, R4, L3, R78, L1, R3, R190, R4, L3, R4, R2, R5, R3, R4, R3, L1, L4, R3, L4, R1, L4, L5, R3, L3, L4, R1, R2, L4, L3, R3, R3, L2, L5, R1, L4, L1, R5, L5, R1, R5, L4, R2, L2, R1, L5, L4, R4, R4, R3, R2, R3, L1, R4, R5, L2, L5, L4, L1, R4, L4, R4, L4, R1, R5, L1, R1, L5, R5, R1, R1, L3, L1, R4, L1, L4, L4, L3, R1, R4, R1, R1, R2, L5, L2, R4, L1, R3, L5, L2, R5, L4, R5, L5, R3, R4, L3, L3, L2, R2, L5, L5, R3, R4, R3, R4, R3, R1 \ No newline at end of file diff --git a/data/2016/2.txt b/data/2016/2.txt new file mode 100644 index 0000000..ac31d43 --- /dev/null +++ b/data/2016/2.txt @@ -0,0 +1,5 @@ +LUULRUULULLUDUDULDLUDDDLRURUDLRRDRDULRDDULLLRULLLURDDLRDLUUDDRURDDRDDDDRDULULLLLURDDLLRLUUDDDRLRRRDURLDDLRRLDUDRRRDLDLRRDLDLUURRLRULLULRUDRDLRUURLDRDLRLDULLLUDRDDRLURLUUDRLLLDRUUULLUULRUDDUDRDUURRRUDRLDDUURDUURUDRDDLULDDUDUDRRDDULUDULRDRULRLRLURURDULRUULLRDDDDRRUUDDDUUDRLLRUDRLRDLRRLULRLULRUDDULRLLLURLDDRLDDLRRLDRDDDRRLRUDRULUUDUURLDLRRULUDRDULDLLRRURRDDLRRRLULUDUUDDUDDLRDLRDRLRLDUDUDDUDLURRUURDRLRURLURRRLRLRRUDDUDDLUDRLUURUUDUUDDULRRLUUUDRLRLLUR +LDLLRRLDULDDRDDLULRRRDDUDUDRRLLRUUULRUDLLRRDDRRLDDURUUDLUDRRLDURDDRUDLUDUUDLDLLLDLLLDRLLDLRUULULLUUDULDUUULDDLRUDLLUDLUUULDRLUDRULUUDLDURDLDUULLRDUDRDLURULDLUUUDURLDDRLLDRLRDDDUDRUULLDLUDRRDDLDLUURUDDLDRURRLULUDDURLDRDRDUDDRRULRLDURULULRURDUURRUDRDDRDRLDRDUUDLRULRDDDULRURUDRUUULUUDDLRRDDDUDRLRUDRDLRRUDLUDRULDDUDLRLDDLDRLRDLULRDRULRLLRLUDUURULLLDDUULUUDDDUDRRULDDDULRUDRRLRLLLUDLULDUUULDDULDUUDLUULRDLDUDRUDLLDLDLLULDDDDLUDDUDRUDLRRRDDDDDLLRRDRUUDDDRRULRUDUUDRULLDLLLDDRDDUURLUUURUDRUDURLRUUUULUUURDRRRULDUULDLDDDRDDDDLLDRUDRDURLDDURDURULDDRLLRRLDUDRDURRLDRDLLULUUUD +LDDLRLRDDRLRUDDRDDUDRULUUULULDULRUULLRRDUULRDUUDDDRRULDDUDRLLLDULURDLDDRLLRURULULDLDULRDLDLRULUDLLDRUDLDURRDULDDRLRURDLLUDRDDDUDLUDULURULRDRLRULDLLRLDRRUDRDRUDRLDLRLUUURURRRLDDULLULLLRLRLULDLLRLDDRLDULURULRUURRUUURRUDRLRRURURDDDRULDULDLDLRRRLLDDRRURRULULULDRDULDRRULDUDRRLDULDRDURRDULLRRRLLLLRRLLRRRDRURDUULLURURURDDRRDRLLLULRRRDRLDRLDRDLLRUUDURRDRRDLLUDLDRLRLDLUDRDULRULRRLLRDLULDRLUDUUULLDRULDDLLRDUUUDRUUUUULUURDDLLDUURURRURLLURRDDUDUDRUUDDRDDRRLRLULRLRRRDRLLRRLLLDUULLUUDDLULLLDURRLLDRLDRDRLRRLRRULRRRRLRRRRRURUDULUULRDLLDRLRRDUURDRRUDRURRRDDRLDDLRLUDRDRDRRLDDDRDDRRRDUDULRURRDRDLLDRUD +UUUDLDDLRDLLLLRUUURDDLLURRUUURLUULLURUUDUDLDULULLRRRRLLLRDLLUDRUURDRURUDRURRLRLDRURLUDRLULRRURDDDURLLDULDLRRRDUUDDDRDLRUURRDRDRLRDLULRLDDRULRULDRDUDRUURLDLUDDULLLRURRLURLULDRRLUUURURLDLDDULLLRUUURDDDUURULULLUUUDUDRLLRRULUULDDDLLUDLURLLLRRULLURDRLUUDDLLDLLLUDULLRDRRRURDRUDUDUULUDURDLRUDLLRDDRURUDURLRULURDDURULLRDDRLRRDRLLULRDDDULRDLRULDDLRRDULDLUURRURUULRRDUURUDRRRRRLDULDLRURRULULDLRDDDRLLDURRULDUDUDRRRLUULRLUDURRRLRLDURRRRUULDRLUDDDUDURLURUDLLUDRDDDRLLURLRLDDURUUDDDUDUR +RURRRRURUDDRLURUDULRDUDDDUURULDRRRRURDLDRRLLDLUDLRRLRRUULLURULLRDLLRDDDDULLRLLDDLLRUDDULDUDLDURLRUULDDURURDURDLDRRULRURRRRRLRRLLUDURRURULRLRDLRLRRRLLURURDLLLDLDDULDLUDDLLLRUDDRDRLRUDRRLDDLRDLRLRLRLRRDUUURRUDRRLDLRRUULULLUDRRRUDLURDRUULDRDRRLUULULDDLURRLDULLURLDRLDULDRLLDLUUULLULRRDDRURRURLDLDRRLLLLLUDUURUULURLRDDDLRRRRLLLURUDLDDRDDRRUDURUULDRRULLLRRLRULLLRLDDLLRRLRURLRDRUDULLDDLDDDDDLDURURDLULRDDLRDLLRURLLRDLRUDDRDRRDURDURLUDRLDUDDDRRURRLUULURULLRLRDLRRLRURULLDDURLLRRRUDDRDLULURRRUUUULUULRRLLDLRUUURLLURLUURRLRL \ No newline at end of file diff --git a/data/2016/3.txt b/data/2016/3.txt new file mode 100644 index 0000000..cc71f9d --- /dev/null +++ b/data/2016/3.txt @@ -0,0 +1,1914 @@ + 775 785 361 + 622 375 125 + 297 839 375 + 245 38 891 + 503 463 849 + 731 482 759 + 29 734 734 + 245 771 269 + 261 315 904 + 669 96 581 + 570 745 156 + 124 678 684 + 472 360 73 + 174 251 926 + 406 408 976 + 413 238 571 + 375 554 22 + 211 379 590 + 271 821 847 + 696 253 116 + 513 972 959 + 539 557 752 + 168 362 550 + 690 236 284 + 434 91 818 + 859 393 779 + 620 313 56 + 188 983 783 + 799 900 573 + 932 359 565 + 357 670 69 + 525 71 52 + 640 654 43 + 695 781 907 + 676 680 938 + 63 507 570 + 985 492 587 + 984 34 333 + 25 489 399 + 470 158 43 + 715 491 617 + 508 412 607 + 365 446 743 + 504 189 378 + 225 424 517 + 473 45 649 + 847 927 424 + 455 889 697 + 64 230 846 + 579 368 881 + 639 536 74 + 433 803 943 + 14 629 963 + 432 481 136 + 781 625 323 + 836 215 201 + 620 614 366 + 801 679 673 + 745 376 326 + 891 957 751 + 64 430 347 + 784 534 237 + 740 485 470 + 570 894 790 + 905 979 90 + 571 526 716 + 810 602 259 + 20 41 648 + 816 566 848 + 891 883 616 + 801 797 341 + 99 119 584 + 175 40 994 + 8 234 831 + 184 254 958 + 625 999 945 + 326 385 266 + 475 644 785 + 345 769 650 + 427 410 680 + 689 887 40 + 380 109 842 + 342 640 785 + 164 546 554 + 843 871 419 + 873 687 74 + 84 192 465 + 186 777 83 + 180 130 726 + 315 860 652 + 88 273 735 + 859 684 791 + 806 655 299 + 763 409 636 + 310 532 897 + 891 163 855 + 631 200 986 + 104 559 294 + 555 679 989 + 770 437 935 + 997 189 711 + 830 300 983 + 566 325 793 + 7 694 911 + 574 490 138 + 596 230 973 + 855 377 552 + 969 150 518 + 453 653 525 + 753 556 47 + 858 509 551 + 103 545 325 + 660 215 284 + 566 509 591 + 647 97 650 + 993 597 775 + 970 566 802 + 242 922 349 + 693 932 502 + 872 267 657 + 526 87 944 + 395 85 188 + 134 129 901 + 56 244 785 + 1 733 300 + 55 698 552 + 372 933 480 + 548 459 792 + 631 653 983 + 443 320 23 + 555 117 715 + 665 268 704 + 804 899 736 + 654 823 13 + 441 250 736 + 229 324 580 + 41 389 857 + 215 103 753 + 933 311 835 + 955 234 744 + 113 141 315 + 790 130 235 + 464 464 129 + 328 386 315 + 787 735 301 + 839 744 299 + 77 119 23 + 407 321 190 + 968 962 904 + 653 752 732 + 962 145 723 + 175 452 717 + 868 474 195 + 10 273 943 + 308 388 626 + 296 133 647 + 851 474 336 + 839 777 975 + 514 651 867 + 949 947 886 + 802 92 113 + 167 938 941 + 840 627 166 + 825 72 754 + 166 661 677 + 759 71 279 + 705 70 113 + 849 4 295 + 563 679 588 + 343 76 636 + 842 669 45 + 892 597 431 + 26 864 580 + 889 509 641 + 696 267 506 + 608 778 297 + 293 867 667 + 662 469 97 + 243 184 809 + 785 434 715 + 691 568 759 + 599 4 164 + 444 566 816 + 486 145 595 + 787 41 538 + 953 151 842 + 861 877 759 + 228 972 678 + 846 114 915 + 253 41 621 + 59 989 405 + 222 948 665 + 478 631 364 + 524 717 175 + 752 94 474 + 47 421 419 + 113 510 343 + 99 733 667 + 787 651 708 + 703 557 486 + 489 637 702 + 510 287 529 + 483 308 545 + 454 177 87 + 433 735 242 + 638 734 172 + 208 702 285 + 999 157 251 + 776 76 341 + 689 164 553 + 477 938 456 + 45 848 863 + 466 255 644 + 578 396 93 + 471 419 368 + 411 27 320 + 317 291 732 + 303 42 605 + 597 313 473 + 70 419 120 + 101 440 745 + 35 176 656 + 236 329 198 + 74 296 40 + 272 78 233 + 864 404 510 + 37 368 531 + 828 35 50 + 191 272 396 + 238 548 387 + 129 527 13 + 464 600 194 + 385 42 341 + 81 596 432 + 589 663 943 + 256 704 723 + 671 152 505 + 873 532 364 + 758 755 202 + 378 621 563 + 735 463 555 + 806 910 409 + 809 897 276 + 546 755 608 + 609 852 79 + 279 133 527 + 106 696 980 + 63 981 360 + 90 440 832 + 127 860 495 + 714 395 480 + 815 485 59 + 792 91 507 + 249 524 138 + 567 452 486 + 923 544 768 + 913 253 767 + 456 582 293 + 706 507 577 + 187 619 644 + 569 978 602 + 88 886 291 + 448 712 211 + 517 815 258 + 743 397 816 + 977 793 795 + 847 905 668 + 690 869 162 + 426 541 257 + 637 586 272 + 82 950 821 + 785 936 350 + 812 31 490 + 318 253 159 + 515 688 479 + 423 855 407 + 931 830 651 + 496 241 28 + 491 924 624 + 864 966 133 + 171 438 712 + 736 867 734 + 551 548 267 + 288 455 474 + 557 622 273 + 494 74 507 + 541 628 390 + 288 583 310 + 411 63 353 + 487 527 295 + 520 567 536 + 739 816 848 + 349 681 269 + 898 902 676 + 647 759 892 + 573 512 75 + 186 252 895 + 804 320 772 + 730 934 107 + 198 651 774 + 625 535 985 + 568 499 235 + 159 42 837 + 854 617 695 + 34 299 670 + 823 733 41 + 830 615 789 + 825 652 562 + 697 105 504 + 114 103 540 + 18 141 106 + 94 121 479 + 859 774 177 + 464 873 208 + 790 125 305 + 982 586 811 + 521 386 478 + 916 329 620 + 764 91 351 + 526 684 103 + 314 749 283 + 510 226 378 + 160 269 278 + 638 368 120 + 616 540 475 + 863 637 89 + 744 172 445 + 856 391 269 + 768 276 634 + 940 610 820 + 289 254 649 + 254 364 98 + 304 613 620 + 164 652 257 + 890 74 483 + 813 640 710 + 884 99 735 + 707 881 380 + 954 983 971 + 487 911 275 + 256 920 43 + 384 772 313 + 863 120 903 + 703 821 82 + 765 731 957 + 55 935 516 + 162 785 801 + 140 161 927 + 460 139 84 + 926 139 965 + 764 3 976 + 765 487 42 + 377 835 277 + 897 734 256 + 345 320 55 + 515 755 504 + 615 623 562 + 412 280 6 + 382 392 468 + 365 625 461 + 542 406 610 + 360 200 801 + 562 221 627 + 556 557 141 + 372 231 212 + 523 457 272 + 80 701 676 + 940 59 871 + 906 695 987 + 715 922 573 + 618 446 552 + 196 849 62 + 772 867 608 + 735 377 418 + 676 607 236 + 25 447 830 + 187 270 738 + 214 175 990 + 438 790 816 + 456 396 534 + 220 628 356 + 384 935 215 + 377 593 802 + 566 651 650 + 648 529 999 + 128 884 472 + 688 951 661 + 312 722 722 + 48 526 696 + 266 347 903 + 698 21 354 + 933 404 570 + 303 417 685 + 46 562 897 + 566 931 14 + 539 747 911 + 374 623 743 + 868 353 513 + 927 903 481 + 207 765 560 + 351 956 215 + 540 945 512 + 362 322 651 + 820 555 190 + 548 301 467 + 405 931 842 + 598 347 150 + 276 971 814 + 450 480 361 + 577 538 493 + 139 104 181 + 716 233 697 + 494 647 287 + 511 782 575 + 809 728 107 + 895 167 85 + 741 746 141 + 23 115 83 + 173 147 549 + 191 208 581 + 313 356 284 + 357 393 123 + 60 322 363 + 830 87 661 + 403 711 713 + 433 651 101 + 783 738 792 + 574 821 764 + 705 214 263 + 256 243 334 + 341 152 444 + 520 140 131 + 975 461 313 + 319 441 161 + 791 47 309 + 228 973 235 + 583 305 398 + 389 876 277 + 551 974 351 + 822 786 876 + 364 347 874 + 523 130 173 + 806 90 462 + 304 146 402 + 748 760 239 + 164 345 704 + 833 817 628 + 239 739 640 + 284 296 234 + 127 711 415 + 435 590 402 + 480 250 914 + 282 379 914 + 547 845 267 + 922 795 324 + 600 500 447 + 342 464 53 + 404 341 143 + 641 129 90 + 375 730 138 + 263 32 124 + 450 749 251 + 588 697 89 + 688 431 603 + 156 614 617 + 604 259 349 + 475 282 45 + 572 197 308 + 743 749 686 + 770 811 907 + 117 543 845 + 41 179 766 + 147 555 742 + 130 410 169 + 476 62 627 + 652 879 240 + 678 852 508 + 953 795 413 + 699 597 444 + 324 577 846 + 919 79 727 + 908 719 125 + 128 776 714 + 299 256 118 + 513 222 115 + 624 75 181 + 1 605 162 + 55 106 230 + 58 672 286 + 639 558 549 + 150 662 435 + 662 695 222 + 461 173 344 + 428 354 647 + 56 405 653 + 699 631 995 + 967 608 269 + 365 853 794 + 768 606 943 + 413 601 128 + 362 427 919 + 735 448 566 + 276 354 377 + 604 657 544 + 913 192 592 + 811 762 62 + 120 720 606 + 618 232 392 + 85 19 764 + 603 241 541 + 993 997 840 + 818 894 266 + 247 305 682 + 280 964 511 + 559 967 455 + 531 38 674 + 878 731 684 + 783 156 390 + 617 742 604 + 370 770 896 + 592 667 353 + 222 921 736 + 741 508 285 + 759 395 156 + 37 128 254 + 209 631 716 + 237 423 613 + 65 856 439 + 942 526 288 + 862 811 341 + 753 840 59 + 369 67 907 + 817 947 802 + 768 945 137 + 356 557 207 + 716 9 205 + 361 558 1 + 310 889 719 + 97 128 887 + 361 776 873 + 86 181 892 + 284 865 808 + 218 859 279 + 299 649 624 + 542 583 624 + 617 66 48 + 921 459 75 + 921 672 759 + 800 345 814 + 572 975 685 + 720 980 867 + 522 135 267 + 139 376 86 + 362 399 585 + 330 206 511 + 419 194 679 + 293 374 3 + 560 272 676 + 224 926 717 + 685 927 347 + 555 786 943 + 591 776 538 + 326 835 471 + 635 67 464 + 276 916 913 + 304 965 2 + 50 110 912 + 893 200 307 + 445 248 596 + 725 128 681 + 279 602 888 + 7 204 766 + 284 429 191 + 264 503 351 + 531 335 140 + 381 220 292 + 518 905 824 + 416 477 600 + 405 663 511 + 531 92 321 + 824 131 534 + 409 113 431 + 12 192 485 + 864 557 391 + 858 390 756 + 28 465 231 + 188 216 825 + 177 316 910 + 766 41 329 + 202 105 219 + 787 125 542 + 639 108 5 + 639 10 525 + 17 105 532 + 586 498 918 + 630 389 19 + 317 361 903 + 185 575 708 + 679 532 355 + 851 367 844 + 775 68 120 + 644 45 194 + 802 44 242 + 852 214 601 + 595 525 281 + 258 450 415 + 534 121 561 + 117 33 620 + 576 147 318 + 217 953 365 + 863 686 803 + 751 694 680 + 502 669 546 + 385 204 399 + 740 760 650 + 105 567 227 + 526 574 378 + 496 858 216 + 248 475 19 + 790 358 887 + 556 713 866 + 348 334 937 + 364 364 88 + 396 58 915 + 871 418 645 + 438 507 449 + 967 924 960 + 435 153 47 + 831 861 835 + 787 958 832 + 376 231 602 + 487 528 782 + 485 532 607 + 820 96 256 + 856 177 549 + 302 240 751 + 146 412 332 + 268 715 463 + 309 584 399 + 939 548 465 + 966 854 412 + 517 385 574 + 425 809 919 + 88 796 924 + 468 317 287 + 195 131 961 + 10 485 229 + 190 374 827 + 573 178 842 + 575 255 358 + 220 359 713 + 401 853 206 + 736 904 667 + 450 209 798 + 865 42 300 + 806 373 182 + 383 403 258 + 397 51 691 + 492 146 568 + 814 179 584 + 545 851 182 + 606 135 208 + 135 934 183 + 733 365 561 + 215 97 642 + 617 418 209 + 641 297 106 + 400 876 246 + 399 665 156 + 424 20 222 + 954 860 194 + 930 875 34 + 883 469 376 + 111 576 753 + 995 515 461 + 535 380 786 + 117 578 780 + 646 803 965 + 243 951 886 + 563 935 879 + 520 91 879 + 390 332 402 + 955 471 221 + 810 398 527 + 312 876 131 + 256 371 527 + 293 945 501 + 724 900 650 + 798 526 908 + 199 510 377 + 285 338 780 + 729 157 584 + 866 259 438 + 91 680 717 + 982 618 786 + 918 255 178 + 66 257 416 + 288 223 81 + 237 405 404 + 597 762 518 + 671 661 39 + 976 431 502 + 524 337 919 + 524 194 343 + 23 167 623 + 882 993 129 + 741 572 465 + 694 830 394 + 353 846 895 + 312 254 903 + 52 614 101 + 300 513 706 + 976 310 698 + 929 736 22 + 732 248 113 + 816 471 405 + 230 466 355 + 749 854 492 + 956 286 554 + 833 928 239 + 334 883 528 + 782 968 977 + 715 608 898 + 264 576 100 + 530 705 344 + 779 189 245 + 560 692 658 + 550 325 931 + 22 757 277 + 860 962 567 + 695 542 611 + 227 936 116 + 812 696 604 + 889 520 282 + 512 180 350 + 735 582 392 + 511 400 667 + 754 871 309 + 899 133 582 + 986 66 309 + 186 183 367 + 543 242 522 + 132 255 887 + 538 225 934 + 57 276 438 + 452 396 382 + 501 608 195 + 292 741 619 + 69 671 801 + 331 731 279 + 485 350 380 + 81 926 182 + 513 834 298 + 165 801 799 + 204 426 521 + 245 650 330 + 716 716 155 + 693 699 658 + 305 69 710 + 661 744 698 + 599 327 957 + 577 593 903 + 924 117 176 + 949 808 323 + 267 710 257 + 91 683 927 + 404 262 918 + 347 716 109 + 155 266 483 + 142 676 512 + 216 501 103 + 923 110 424 + 856 329 617 + 229 332 231 + 466 803 573 + 498 388 827 + 38 788 587 + 770 367 435 + 736 584 445 + 93 569 834 + 65 948 479 + 172 630 581 + 239 369 396 + 820 270 656 + 32 515 348 + 803 324 969 + 70 188 635 + 219 766 279 + 166 736 640 + 257 604 851 + 555 616 822 + 589 345 165 + 166 196 64 + 909 185 700 + 870 119 693 + 20 565 737 + 680 198 244 + 700 486 825 + 194 812 67 + 236 756 407 + 64 905 344 + 92 755 905 + 748 349 681 + 707 781 811 + 505 50 456 + 471 889 672 + 35 891 334 + 899 411 164 + 663 459 232 + 539 446 322 + 57 785 718 + 273 421 308 + 308 744 501 + 45 819 416 + 936 258 466 + 980 825 841 + 100 33 345 + 898 904 750 + 920 903 453 + 947 9 765 + 580 979 375 + 753 977 844 + 402 174 156 + 573 827 782 + 975 663 644 + 179 358 353 + 55 777 834 + 221 871 631 + 120 714 199 + 663 369 217 + 599 713 135 + 11 472 765 + 803 445 746 + 797 30 284 + 259 776 677 + 598 707 675 + 484 339 3 + 298 750 162 + 119 820 168 + 180 69 9 + 433 332 676 + 142 164 343 + 435 233 414 + 153 977 263 + 532 54 244 + 600 999 25 + 394 756 311 + 354 196 703 + 666 858 760 + 227 312 525 + 389 419 436 + 218 311 744 + 318 531 245 + 324 939 509 + 183 997 543 + 944 598 70 + 790 486 828 + 710 745 880 + 546 368 219 + 316 668 29 + 398 360 218 + 702 453 987 + 774 462 373 + 722 829 947 + 541 732 44 + 310 494 582 + 239 596 548 + 579 810 907 + 490 169 62 + 926 883 915 + 281 414 595 + 845 412 609 + 632 106 618 + 112 404 492 + 864 460 314 + 842 93 436 + 412 805 874 + 353 686 465 + 240 393 800 + 788 654 346 + 666 78 185 + 418 608 404 + 658 537 960 + 794 449 680 + 711 324 489 + 59 525 330 + 323 259 544 + 359 745 542 + 877 701 403 + 119 897 533 + 977 392 227 + 528 340 194 + 398 180 283 + 538 301 123 + 775 263 195 + 53 385 630 + 749 253 686 + 533 30 624 + 678 187 590 + 937 218 50 + 205 466 918 + 796 672 47 + 818 203 963 + 461 953 881 + 739 457 696 + 661 711 220 + 624 121 663 + 908 173 644 + 602 185 70 + 168 957 159 + 283 341 934 + 196 845 939 + 494 354 543 + 796 422 87 + 430 762 478 + 526 762 859 + 535 600 926 + 28 555 651 + 170 748 379 + 117 745 33 + 52 1 351 + 946 796 446 + 148 844 920 + 950 131 740 + 392 490 118 + 286 465 667 + 202 101 662 + 326 629 556 + 773 661 219 + 540 683 613 + 406 314 525 + 154 947 451 + 401 661 186 + 574 690 796 + 558 730 855 + 153 244 156 + 618 37 10 + 856 991 363 + 820 959 370 + 644 700 800 + 421 469 908 + 422 233 288 + 416 281 707 + 370 430 487 + 284 525 916 + 535 713 354 + 210 576 524 + 432 930 215 + 712 374 612 + 686 508 102 + 40 141 616 + 979 525 663 + 838 696 326 + 472 261 357 + 321 910 663 + 228 153 536 + 223 940 896 + 137 39 506 + 139 706 187 + 4 666 483 + 944 856 119 + 720 602 93 + 410 260 85 + 601 647 520 + 162 474 317 + 599 742 313 + 242 886 381 + 250 78 353 + 109 916 117 + 597 926 673 + 318 114 309 + 892 819 424 + 491 682 85 + 765 657 682 + 558 60 721 + 990 634 160 + 640 461 410 + 430 839 535 + 42 961 686 + 752 251 690 + 747 931 3 + 439 930 85 + 44 628 953 + 465 961 874 + 313 447 913 + 249 600 859 + 359 896 472 + 698 187 657 + 57 957 805 + 721 977 239 + 782 93 96 + 860 159 250 + 368 142 218 + 565 157 46 + 622 403 383 + 63 546 382 + 63 774 308 + 446 495 475 + 467 831 310 + 448 77 798 + 930 281 189 + 767 289 644 + 514 765 524 + 330 827 992 + 340 284 964 + 600 97 785 + 418 432 755 + 983 442 58 + 872 435 725 + 107 344 315 + 917 682 547 + 24 613 561 + 665 448 238 + 680 872 737 + 108 180 449 + 220 545 583 + 268 676 863 + 796 791 2 + 694 992 39 + 788 767 41 + 235 572 377 + 975 864 883 + 953 448 608 + 909 888 452 + 93 850 414 + 852 48 49 + 136 558 842 + 300 428 776 + 427 814 64 + 223 45 283 + 100 562 659 + 290 519 828 + 678 786 346 + 371 711 934 + 686 276 826 + 808 208 669 + 832 198 6 + 317 11 675 + 504 182 448 + 162 745 642 + 623 791 687 + 408 947 693 + 247 267 641 + 328 693 758 + 773 411 149 + 66 2 589 + 786 407 527 + 81 760 803 + 946 696 552 + 878 698 994 + 190 203 649 + 548 713 634 + 657 724 676 + 195 397 887 + 175 346 118 + 356 264 981 + 191 919 468 + 490 470 570 + 583 740 151 + 340 773 889 + 176 446 314 + 206 384 935 + 172 996 620 + 362 842 497 + 208 786 731 + 207 395 750 + 368 819 87 + 524 524 702 + 609 761 554 + 753 975 290 + 559 932 731 + 584 203 140 + 477 100 982 + 784 162 876 + 371 209 67 + 236 754 108 + 439 633 163 + 734 717 626 + 808 216 639 + 133 521 94 + 180 813 208 + 136 770 844 + 57 867 871 + 700 900 740 + 96 75 662 + 628 893 284 + 843 851 196 + 546 427 607 + 797 471 664 + 180 363 117 + 961 775 95 + 846 969 210 + 535 269 666 + 216 585 490 + 736 521 335 + 489 493 602 + 627 574 723 + 857 217 629 + 385 808 433 + 615 115 361 + 687 705 455 + 898 390 177 + 737 393 476 + 355 727 371 + 533 526 69 + 615 467 157 + 614 683 202 + 876 892 581 + 949 165 357 + 86 766 432 + 233 47 702 + 448 407 821 + 227 364 424 + 158 372 933 + 966 405 365 + 913 512 813 + 585 698 482 + 720 171 716 + 172 868 740 + 96 489 33 + 531 882 552 + 618 949 523 + 425 860 424 + 909 676 116 + 806 770 430 + 836 868 355 + 640 561 523 + 858 353 411 + 400 149 612 + 872 364 491 + 940 469 870 + 127 256 47 + 561 306 322 + 626 147 276 + 13 547 289 + 218 561 705 + 234 16 842 + 301 663 261 + 81 415 368 + 301 945 593 + 232 855 760 + 522 649 929 + 401 847 376 + 764 542 452 + 774 536 929 + 10 935 499 + 710 262 94 + 72 475 524 + 722 618 481 + 515 135 637 + 962 115 303 + 665 88 416 + 544 303 735 + 828 488 680 + 827 575 354 + 44 999 437 + 232 985 128 + 226 36 346 + 310 325 307 + 473 809 315 + 184 487 91 + 778 310 926 + 749 260 988 + 869 216 878 + 663 790 458 + 914 237 476 + 258 935 201 + 956 796 313 + 888 105 282 + 160 874 42 + 715 524 451 + 477 604 886 + 596 111 554 + 524 510 388 + 778 878 320 + 894 453 574 + 210 808 633 + 340 77 956 + 159 872 426 + 4 756 333 + 528 697 677 + 530 474 442 + 75 427 536 + 874 706 437 + 944 536 357 + 726 919 349 + 911 791 637 + 447 224 483 + 742 941 693 + 632 42 918 + 302 907 547 + 204 618 927 + 86 765 15 + 280 396 926 + 857 422 560 + 801 355 368 + 53 718 577 + 613 946 933 + 641 378 563 + 39 928 423 + 252 906 454 + 626 318 81 + 477 838 407 + 85 531 475 + 129 622 419 + 184 372 147 + 364 805 559 + 445 128 302 + 656 813 724 + 485 140 509 + 537 267 549 + 164 184 89 + 464 231 881 + 111 63 706 + 383 283 567 + 408 31 455 + 698 864 501 + 692 887 753 + 573 681 783 + 453 393 338 + 171 707 850 + 68 663 190 + 342 588 284 + 309 218 102 + 121 743 56 + 321 722 379 + 307 99 357 + 444 485 636 + 548 419 517 + 407 101 714 + 168 496 140 + 111 520 594 + 55 129 476 + 706 849 93 + 529 200 416 + 848 680 470 + 731 189 61 + 591 689 20 + 801 777 52 + 395 449 821 + 337 421 292 + 618 208 674 + 116 13 66 + 459 790 615 + 429 796 565 + 891 795 903 + 929 443 263 + 49 694 890 + 708 929 577 + 764 786 554 + 971 473 236 + 271 483 440 + 666 506 858 + 582 959 594 + 470 918 457 + 583 662 551 + 777 446 214 + 609 503 929 + 861 691 766 + 256 201 940 + 894 386 172 + 624 397 17 + 615 9 159 + 454 494 344 + 606 717 995 + 251 333 688 + 714 910 670 + 531 346 227 + 693 754 745 + 947 8 411 + 9 862 598 + 937 858 601 + 309 977 18 + 731 684 943 + 579 384 958 + 359 647 495 + 8 355 476 + 363 459 21 + 712 383 997 + 892 71 981 + 374 433 156 + 86 194 341 + 60 298 385 + 31 110 452 + 813 501 635 + 249 82 215 + 895 585 456 + 571 961 784 + 734 746 854 + 742 268 73 + 575 7 583 + 660 643 908 + 559 643 336 + 222 725 935 + 660 82 939 + 709 745 41 + 277 504 918 + 604 679 913 + 717 419 183 + 613 306 732 + 491 694 742 + 628 707 108 + 885 867 527 + 970 740 567 + 147 267 119 + 288 766 969 + 132 190 372 + 175 862 992 + 942 468 639 + 63 908 581 + 939 703 830 + 328 186 554 + 936 130 355 + 865 270 479 + 253 104 444 + 99 378 107 + 342 385 340 + 651 480 324 + 14 841 249 + 635 538 79 + 229 415 530 + 489 931 329 + 654 828 719 + 911 703 693 + 202 425 201 + 897 314 745 + 126 606 323 + 201 459 307 + 79 719 51 + 595 913 432 + 261 980 554 + 708 272 591 + 423 754 58 + 175 538 449 + 552 671 418 + 871 86 809 + 5 579 309 + 877 635 850 + 607 621 470 + 584 166 732 + 443 666 887 + 305 612 454 + 547 252 90 + 324 431 510 + 827 912 501 + 329 868 593 + 524 944 461 + 10 709 299 + 902 76 539 + 894 783 448 + 304 883 270 + 358 716 346 + 626 192 530 + 900 47 880 + 807 796 757 + 672 774 885 + 596 391 358 + 300 355 318 + 617 44 310 + 363 51 907 + 138 183 704 + 243 184 234 + 977 406 460 + 811 692 579 + 412 459 196 + 509 346 366 + 697 646 777 + 247 930 583 + 383 268 54 + 387 11 471 + 434 273 444 + 462 191 917 + 474 236 605 + 924 192 348 + 515 15 128 + 398 609 300 + 608 627 296 + 289 624 427 + 16 448 70 + 280 329 492 + 186 448 444 + 709 27 239 + 566 472 535 + 395 737 535 + 666 108 512 + 398 788 762 + 187 46 733 + 689 389 690 + 717 350 106 + 243 988 623 + 13 950 830 + 247 379 679 + 654 150 272 + 157 229 213 + 710 232 314 + 585 591 948 + 193 624 781 + 504 553 685 + 135 76 444 + 998 845 416 + 901 917 69 + 885 266 328 + 32 236 487 + 877 223 312 + 602 264 297 + 429 852 180 + 558 833 380 + 579 341 829 + 708 823 603 + 480 625 551 + 168 995 465 + 24 236 898 + 180 770 985 + 827 126 352 + 790 491 324 + 198 379 105 + 953 609 224 + 793 519 389 + 988 303 169 + 636 575 937 + 460 869 500 + 859 552 819 + 647 650 366 + 838 643 233 + 223 170 244 + 689 381 542 + 15 293 371 + 696 443 796 + 549 128 525 + 919 719 231 + 651 599 417 + 413 80 413 + 864 940 344 + 753 989 342 + 583 816 28 + 399 818 894 + 522 1 884 + 105 122 148 + 2 868 301 + 100 945 306 + 990 516 458 + 604 484 27 + 587 36 468 + 774 726 241 + 931 993 277 + 908 406 352 + 783 586 706 + 760 27 469 + 42 611 958 + 72 118 399 + 526 638 55 + 598 737 392 + 134 84 825 + 734 804 273 + 600 778 888 + 788 539 691 + 57 854 592 + 824 629 286 + 359 24 824 + 548 857 646 + 820 831 194 + 29 842 939 + 966 133 201 + 992 709 970 + 357 44 29 + 320 649 356 + 35 611 379 + 407 894 581 + 408 940 680 + 652 367 124 + 630 200 182 + 652 271 828 + 65 296 786 + 821 42 341 + 84 24 562 + 894 29 500 + 739 799 310 + 289 461 385 + 540 731 430 + 393 303 389 + 756 560 731 + 637 470 761 + 105 314 202 + 339 437 717 + 256 526 810 + 639 382 381 + 11 289 290 + 638 450 336 + 602 415 901 + 671 494 718 + 460 507 186 + 596 160 528 + 766 811 389 + 319 955 281 + 24 317 562 + 489 870 295 + 514 924 477 + 386 887 49 + 479 940 432 + 558 523 416 + 343 53 46 + 542 803 597 + 696 784 565 + 474 495 650 + 613 692 465 + 352 841 199 + 911 927 640 + 273 693 512 + 701 468 597 + 144 915 630 + 949 967 185 + 952 293 538 + 642 426 249 + 788 408 678 + 457 32 579 + 571 462 686 + 650 752 651 + 260 681 182 + 158 89 312 + 693 336 517 + 812 355 634 + 216 507 591 + 643 520 310 + 769 18 896 + 630 852 677 + 566 912 185 + 643 621 739 + 433 347 52 + 691 413 758 + 262 458 761 + 882 877 576 + 914 254 194 + 407 919 511 + 826 345 490 + 551 187 611 + 501 163 507 + 59 749 708 + 364 502 718 + 390 317 38 + 316 77 424 + 400 834 339 + 296 868 102 + 360 533 38 + 326 607 529 + 442 962 544 + 773 371 300 + 22 6 300 + 789 378 386 + 643 461 14 + 486 312 75 + 901 428 73 + 275 734 871 + 384 793 475 + 197 59 798 + 662 682 342 + 812 638 459 + 461 59 642 + 895 253 990 + 693 128 596 + 415 270 537 + 587 193 575 + 265 644 638 + 745 661 61 + 465 712 251 + 269 617 285 + 257 958 442 + 387 120 612 + 776 833 198 + 734 948 726 + 946 539 878 + 58 776 787 + 970 235 143 + 129 875 350 + 561 999 180 + 496 609 390 + 460 184 184 + 618 137 25 + 866 189 170 + 959 997 911 + 631 636 728 + 466 947 468 + 76 708 913 + 70 15 811 + 65 713 307 + 110 503 597 + 776 808 944 + 854 330 755 + 978 207 896 + 850 835 978 + 378 937 657 + 403 421 492 + 716 530 63 + 854 249 518 + 657 998 958 + 355 921 346 + 761 267 642 + 980 83 943 + 691 726 115 + 342 724 842 + 859 144 504 + 978 822 631 + 198 929 453 + 657 423 603 + 687 450 417 + 297 44 260 + 158 460 781 + 29 108 744 + 136 486 409 + 941 659 831 + 71 606 640 + 908 251 372 + 403 180 857 + 458 598 52 + 184 594 880 + 38 861 395 + 302 850 883 + 262 580 667 + 2 905 843 + 474 825 794 + 473 209 96 + 926 833 585 + 903 119 532 + 23 712 831 + 875 558 406 + 146 635 851 + 844 703 511 + 900 530 612 + 824 21 356 + 746 511 721 + 737 445 326 + 644 162 309 + 892 291 17 + 105 581 795 + 318 869 402 + 408 289 535 + 656 444 83 + 647 754 133 + 43 901 205 + 386 420 766 + 549 90 859 + 756 436 188 + 664 491 753 + 700 402 573 + 403 590 189 + 258 982 20 + 4 553 529 + 264 718 538 + 206 647 136 + 257 860 279 + 338 449 249 + 421 569 865 + 188 640 124 + 487 538 796 + 276 358 748 + 269 260 625 + 83 106 309 + 496 340 467 + 456 953 179 + 461 643 367 + 411 722 222 + 519 763 677 + 550 39 539 + 135 828 760 + 979 742 988 + 868 428 315 + 423 535 869 + 677 757 875 + 853 415 618 + 591 425 937 + 585 896 318 + 207 695 782 + 200 904 131 + 95 563 623 + 176 675 532 + 493 704 628 + 707 685 521 + 690 484 543 + 584 766 673 + 667 933 617 + 276 416 577 + 808 966 321 + 327 875 145 + 660 722 453 + 769 544 355 + 83 391 382 + 837 184 553 + 111 352 193 + 67 385 397 + 127 100 475 + 167 121 87 + 621 84 120 + 592 110 124 + 476 484 664 + 646 435 664 + 929 385 129 + 371 31 282 + 570 442 547 + 298 433 796 + 682 807 556 + 629 869 112 + 141 661 444 + 246 498 865 + 605 545 105 + 618 524 898 + 728 826 402 + 976 826 883 + 304 8 714 + 211 644 195 + 752 978 580 + 556 493 603 + 517 486 92 + 77 111 153 + 518 506 227 + 72 281 637 + 764 717 633 + 696 727 639 + 463 375 93 + 258 772 590 + 266 460 593 + 886 950 90 + 699 747 433 + 950 411 516 + 372 990 673 + 69 319 843 + 333 679 523 + 394 606 175 + 640 923 772 + 893 657 638 + 563 285 244 + 874 579 433 + 387 758 253 + 389 114 809 + 736 269 738 + 345 173 126 + 248 793 502 + 422 271 583 + 399 528 654 + 825 956 348 + 822 378 52 + 7 658 313 + 729 371 395 + 553 267 475 + 624 287 671 + 806 34 693 + 254 201 711 + 667 234 785 + 875 934 782 + 107 45 809 + 967 946 30 + 443 882 753 + 554 808 536 + 876 672 580 + 482 72 824 + 559 645 766 + 784 597 76 + 495 619 558 + 323 879 460 + 178 829 454 + 12 230 592 + 90 283 832 + 81 203 452 + 201 978 785 + 643 869 591 + 647 180 854 + 343 624 137 + 744 771 278 + 717 272 303 + 304 298 799 + 107 418 960 + 353 378 798 + 544 642 606 + 475 300 383 + 445 801 935 + 778 582 638 + 938 608 375 + 342 481 512 + 666 72 708 + 349 725 780 + 368 797 163 + 342 815 441 + 167 959 681 + 499 199 813 + 475 461 495 + 354 462 532 + 390 730 369 + 202 623 877 + 656 139 883 + 495 666 8 + 348 955 976 + 998 356 906 + 725 645 938 + 353 539 438 + 982 470 636 + 651 140 906 + 895 706 538 + 895 721 203 + 158 26 649 + 489 249 520 + 320 157 751 + 810 274 812 + 327 315 921 + 639 56 738 + 941 360 442 + 117 419 127 + 167 535 403 + 118 834 388 + 97 644 669 + 390 330 691 + 339 469 119 + 164 434 309 + 777 876 305 + 668 893 507 + 946 326 440 + 822 645 197 + 339 480 252 + 75 569 274 + 548 378 698 + 617 548 817 + 725 752 282 + 850 763 510 + 167 9 642 + 641 927 895 + 201 870 909 + 744 614 678 + 44 16 322 + 127 164 930 + 163 163 672 + 945 865 251 + 647 817 352 + 315 69 100 + 66 973 330 + 450 972 211 + 401 38 225 + 561 765 753 + 554 753 193 + 222 13 800 + 124 178 456 + 475 703 602 + 420 659 990 + 487 94 748 + 578 284 577 + 776 355 190 + 194 801 566 + 42 124 401 + 179 871 669 + 303 123 957 + 596 503 820 + 846 424 985 + 522 882 254 + 835 811 405 + 796 94 209 + 185 355 394 + 387 145 223 + 300 240 395 + 381 826 899 + 503 868 606 + 121 675 467 + 159 456 724 + 28 477 233 + 165 43 566 + 159 404 26 + 969 413 725 + 927 389 733 + 720 345 38 + 752 197 879 + 219 196 866 + 583 195 84 + 654 996 364 + 234 941 298 + 136 890 732 + 147 296 874 + 245 948 627 + 633 404 794 + 443 689 477 + 819 923 324 + 391 821 683 + 774 255 339 + 684 856 391 + 751 420 608 + 594 884 207 + 280 903 472 + 365 916 620 + 421 1 760 + 66 913 227 + 73 631 787 + 471 266 393 + 469 629 525 + 534 210 781 + 765 198 630 + 654 236 771 + 939 865 265 + 362 849 243 + 670 22 225 + 269 644 843 + 30 586 15 + 266 178 849 + 237 547 926 + 908 33 574 + 788 525 895 + 717 448 413 + 951 4 254 + 931 447 158 + 254 856 371 + 941 803 322 + 697 678 99 + 339 508 155 + 958 608 661 + 639 356 692 + 121 320 969 + 222 47 76 + 130 273 957 + 243 85 734 + 696 302 809 + 665 375 287 \ No newline at end of file diff --git a/data/2016/4.txt b/data/2016/4.txt new file mode 100644 index 0000000..8f99f7a --- /dev/null +++ b/data/2016/4.txt @@ -0,0 +1,991 @@ +aczupnetwp-dnlgpyrpc-sfye-dstaatyr-561[patyc] +jsehsyafy-vqw-ljsafafy-866[nymla] +tyepcyletzylw-ncjzrpytn-prr-opawzjxpye-743[cnrdl] +foadouwbu-qvcqczohs-obozmgwg-662[lamjh] +ckgvutofkj-pkrrehkgt-zkinturume-436[krtue] +pelbtravp-pnaql-ernpdhvfvgvba-481[szram] +yflexwxoalrp-ciltbo-tlohpelm-887[bmwep] +ipvohghykvbz-ihzrla-jbzavtly-zlycpjl-253[lzhvy] +cybyjqho-whqtu-rqiauj-fkhsxqiydw-322[syzwi] +tipfxvezt-sleep-tljkfdvi-jvimztv-425[tveif] +ktiaaqnqml-xtiabqk-oziaa-xczkpiaqvo-616[aiqko] +ckgvutofkj-xghhoz-gtgreyoy-306[nyhpz] +molgbzqfib-zovldbkfz-zxkav-lmboxqflkp-341[xlomg] +ikhcxvmbex-vtgwr-vhtmbgz-mxvaghehzr-111[hvgmx] +dpssptjwf-fhh-tfswjdft-805[fstdh] +oaddaeuhq-otaoaxmfq-qzsuzqqduzs-534[qadou] +dzczkrip-xiruv-sleep-drerxvdvek-685[erdvi] +jvsvymbs-yhiipa-vwlyhapvuz-149[zfyqn] +nsyjwsfyntsfq-gfxpjy-jslnsjjwnsl-853[sjnfy] +mbiyqoxsm-lsyrkjkbnyec-nio-wkbuodsxq-614[bkosy] +jchipqat-uadltg-hidgpvt-375[kcnop] +jqwpihizlwca-lgm-nqvivkqvo-980[ldeay] +xfbqpojafe-dipdpmbuf-tfswjdft-493[fdpbj] +kwvacumz-ozilm-kpwkwtibm-lmxtwgumvb-798[mwkbi] +eqttqukxg-ejqeqncvg-ocpcigogpv-648[sdtzl] +dsxxw-bwc-bcnjmwkclr-678[cwbxd] +jvuzbtly-nyhkl-ibuuf-thuhnltlua-175[ulhtb] +rdadguja-uadltg-bpgztixcv-401[adgtu] +atyzghrk-kmm-ktmotkkxotm-930[xzfpe] +uwtojhynqj-ojqqdgjfs-xjwanhjx-151[waqmk] +hwdtljsnh-uqfxynh-lwfxx-rfsfljrjsy-567[fhjls] +xst-wigvix-gspsvjyp-gerhc-erepcwmw-724[uplfw] +kzgwomvqk-jcvvg-zmamizkp-122[kmvzg] +sbejpbdujwf-dboez-dpbujoh-dvtupnfs-tfswjdf-623[uxrpz] +bxaxipgn-vgpst-rwdrdapit-prfjxhxixdc-609[xpdir] +avw-zljyla-zjhclunly-obua-ayhpupun-981[aluyh] +nuatmlmdpage-qss-fdmuzuzs-404[btopv] +oaddaeuhq-otaoaxmfq-dqoquhuzs-716[aoqdu] +myvybpev-cmkfoxqob-rexd-bomosfsxq-432[khwfc] +oxaflxzqfsb-zelzlixqb-jxohbqfkd-471[hxkwc] +fnjyxwrinm-snuuhknjw-anbnjalq-875[ztvnr] +qfmcusbwq-pibbm-fsqswjwbu-922[bqswf] +wihmogyl-aluxy-jfumncw-alumm-nluchcha-916[lmuac] +oxaflxzqfsb-avb-bkdfkbbofkd-757[trzjy] +ksodcbwnsr-qzoggwtwsr-gqojsbusf-vibh-fsgsofqv-818[gsdca] +rzvkjiduzy-xcjxjgvoz-gvwjmvojmt-161[zufvq] +nwlddtqtpo-mldvpe-dezclrp-639[zlnki] +vkppo-rqiauj-huqsgkyiyjyed-530[yijkp] +dfcxsqhwzs-qobrm-qcohwbu-fsoqeiwgwhwcb-688[wqbch] +vxupkizork-xghhoz-aykx-zkyzotm-462[kzoxh] +zotts-jfumncw-alumm-omyl-nymncha-396[bstha] +yaxsnlcrun-npp-cajrwrwp-355[nprac] +bkwzkqsxq-pvygob-nozkbdwoxd-822[bkodq] +frqvxphu-judgh-fdqgb-frdwlqj-hqjlqhhulqj-595[ezyxq] +hqtyeqsjylu-sqdto-sedjqydcudj-764[dqjsy] +fab-eqodqf-omzpk-fdmuzuzs-430[yxkbc] +gpewwmjmih-glsgspexi-xvemrmrk-204[cynzd] +kwtwznct-jcvvg-wxmzibqwva-694[cdaps] +guahyncw-wuhxs-zchuhwcha-396[xwnmj] +pybgmyargtc-zsllw-dglylagle-912[mcrsp] +kyelcrga-zyqicr-jyzmpyrmpw-782[yrcmp] +wsvsdkbi-qbkno-zvkcdsm-qbkcc-myxdksxwoxd-432[kdsbc] +ltpedcxots-rwdrdapit-advxhixrh-271[drtxa] +elrkdcdugrxv-sodvwlf-judvv-vklsslqj-465[vdlsj] +htwwtxnaj-hfsid-htfynsl-ywfnsnsl-281[ghfea] +nij-mywlyn-xsy-xymcah-682[kiasm] +zovldbkfz-yrkkv-abmilvjbkq-939[chetn] +esyfwlau-kusnwfywj-zmfl-ghwjslagfk-398[fwlsa] +lahxpnwrl-yujbcrl-pajbb-mnyuxhvnwc-147[tzcxk] +rwcnawjcrxwju-lqxlxujcn-lxwcjrwvnwc-381[hxsdl] +pbybeshy-pynffvsvrq-wryylorna-jbexfubc-143[ybfre] +lxaaxbren-kdwwh-bqryyrwp-407[sktqh] +pybgmyargtc-zyqicr-rpyglgle-106[vsdft] +jfifqxov-doxab-yxphbq-obxznrfpfqflk-939[nyvhm] +pualyuhapvuhs-jovjvshal-thuhnltlua-383[lrfob] +gvcskirmg-tpewxmg-kveww-pskmwxmgw-438[ujily] +lgh-kwujwl-tmffq-esfsywewfl-242[fwles] +jyddc-fewoix-hitevxqirx-412[ixdec] +uzfqdzmfuazmx-otaoaxmfq-ogefayqd-eqdhuoq-222[lbfru] +ryexqpqhteki-sxesebqju-tufbeocudj-348[tjzhb] +kfg-jvtivk-sleep-wzeretzex-477[ektvz] +kzgwomvqk-jcvvg-bmkpvwtwog-174[vgkwm] +odiih-kdwwh-uxprbcrlb-251[bdhir] +htqtwkzq-xhfajsljw-mzsy-yjhmstqtld-229[thjqs] +qjopwxha-xwogap-owhao-914[astye] +wrs-vhfuhw-edvnhw-hqjlqhhulqj-439[vufmz] +rdggdhxkt-xcitgcpixdcpa-rpcsn-rdpixcv-stktadebtci-609[cdtip] +eqttqukxg-fag-eqpvckpogpv-544[jmtpx] +kdijqrbu-sqdto-seqjydw-iuhlysui-946[bioht] +fydelmwp-awldetn-rcldd-cplnbftdtetzy-951[kpxim] +ubhatstkwhnl-unggr-nlxk-mxlmbgz-761[geyqm] +ocipgvke-gii-fgxgnqrogpv-726[giopv] +fab-eqodqf-otaoaxmfq-iadwetab-430[azmnb] +fab-eqodqf-otaoaxmfq-pqhqxabyqzf-456[qafob] +xekdwvwnzkqo-zua-naoawnyd-784[anwdk] +sbejpbdujwf-fhh-tbmft-285[mbfsn] +hwbba-eqpuwogt-itcfg-rncuvke-itcuu-ugtxkegu-648[ugtce] +hqcfqwydw-fbqijys-whqii-cqdqwucudj-452[ztesw] +dmpuamofuhq-nmewqf-emxqe-742[meqfu] +iqmbazulqp-pkq-iadwetab-976[kcxmz] +lahxpnwrl-ljwmh-lxjcrwp-bnaerlnb-927[lnrwa] +laffe-lruckx-vaxingyotm-306[aflxc] +forwcoqhwjs-qcffcgwjs-tzcksf-rsdzcmasbh-220[csfwh] +yflexwxoalrp-gbiivybxk-abpfdk-731[sjtrd] +foadouwbu-ibghopzs-pogysh-kcfygvcd-506[ogbcd] +rtqlgevkng-hnqygt-ugtxkegu-232[zdgob] +yrwxefpi-fyrrc-asvowlst-880[jmzfi] +tyepcyletzylw-nlyoj-nzletyr-fdpc-epdetyr-795[jfvnq] +rkpqxyib-yxphbq-lmboxqflkp-627[vzmla] +xjinphzm-bmvyz-hvbizodx-ytz-gjbdnodxn-967[jmuws] +ktfitzbgz-vtgwr-inkvatlbgz-813[tgzbi] +hqtyeqsjylu-sbqiiyvyut-fbqijys-whqii-vydqdsydw-634[yqisd] +hcd-gsqfsh-dzoghwq-ufogg-qcbhowbasbh-506[hgboq] +ryexqpqhteki-uww-qdqboiyi-140[qiewy] +bkzrrhehdc-qzaahs-cdoknxldms-625[czsmn] +sawlkjevaz-lhwopey-cnwoo-yqopkian-oanreya-966[znhlt] +xjgjmapg-hdgdovmt-bmvyz-zbb-yzkgjthzio-577[gzbjm] +myxcewob-qbkno-lexxi-wkbuodsxq-250[xboek] +nsyjwsfyntsfq-hfsid-htfynsl-wjfhvznxnynts-255[umtns] +kpvgtpcvkqpcn-ecpfa-ewuvqogt-ugtxkeg-596[ehsca] +vkrhzxgbv-cxeeruxtg-ftgtzxfxgm-579[ymast] +pbeebfvir-fpniratre-uhag-genvavat-663[smznt] +vehmsegxmzi-glsgspexi-hitpscqirx-802[jszht] +tyepcyletzylw-nlyoj-nzletyr-cpdplcns-223[lycen] +jxdkbqfz-oxaflxzqfsb-avb-lmboxqflkp-523[mzvny] +tcfkqcevkxg-tcddkv-uvqtcig-336[cdsln] +ide-htrgti-hrpktcvtg-wjci-ldgzhwde-947[tdghi] +ojk-nzxmzo-kgvnodx-bmvnn-ozxcijgjbt-213[nojxz] +avw-zljyla-msvdly-yljlpcpun-539[lyajp] +rdchjbtg-vgpst-rpcsn-rdpixcv-htgkxrth-661[rtcgh] +xlrypetn-dnlgpyrpc-sfye-dezclrp-353[pelry] +enqvbnpgvir-enoovg-erfrnepu-455[ftlpj] +xjinphzm-bmvyz-xviyt-xjvodib-pnzm-oznodib-291[mlybz] +rwcnawjcrxwju-kjbtnc-bqryyrwp-511[tkyns] +gokzyxsjon-pvygob-nofovyzwoxd-458[ndtfs] +bjfutsneji-hfsid-htfynsl-rfwpjynsl-489[fsjnh] +ydjuhdqjyedqb-rqiauj-qdqboiyi-452[qdijy] +enzcntvat-rtt-genvavat-351[lznyt] +rdadguja-qjccn-advxhixrh-791[yncim] +fmsledevhsyw-ikk-irkmriivmrk-646[nlxzm] +jfifqxov-doxab-mixpqfz-doxpp-obpbxoze-471[oxpbf] +jqwpihizlwca-zijjqb-aitma-408[gzpmw] +pyknyegle-afmamjyrc-bcqgel-808[gynip] +zbytomdsvo-mkxni-bocokbmr-406[obmkc] +wfummczcyx-luvvcn-fuvilunils-526[bavmt] +hwdtljsnh-gfxpjy-rfsfljrjsy-541[gpszy] +lsyrkjkbnyec-oqq-gybucryz-848[ybckq] +oaddaeuhq-vqxxknqmz-xasuefuoe-378[rzmqe] +vhglnfxk-zktwx-fbebmtkr-zktwx-wrx-vhgmtbgfxgm-813[xepwt] +yrwxefpi-gerhc-hitevxqirx-594[eirxh] +mvydjvxodqz-xviyt-xjvodib-rjmfncjk-265[cqirj] +kdijqrbu-tou-kiuh-juijydw-140[uijdk] +ugjjgkanw-usfvq-vwkayf-970[rntsw] +froruixo-fdqgb-ilqdqflqj-569[cylni] +gpsxdprixkt-hrpktcvtg-wjci-gtprfjxhxixdc-999[xptcg] +kwvacumz-ozilm-akidmvomz-pcvb-nqvivkqvo-460[emnrk] +pejji-zvkcdsm-qbkcc-domrxyvyqi-484[cdijk] +rdadguja-xcitgcpixdcpa-qphzti-bpgztixcv-791[cipad] +rkpqxyib-zxkav-zlxqfkd-qoxfkfkd-965[qiftn] +bkzrrhehdc-bnmrtldq-fqzcd-atmmx-qdrdzqbg-937[dqrbm] +eqttqukxg-rtqlgevkng-dwppa-fgxgnqrogpv-570[gxetc] +zbytomdsvo-mkxni-myxdksxwoxd-510[xdmok] +ymszqfuo-rxaiqd-dqmocgueufuaz-274[umtwy] +pelbtravp-ovbunmneqbhf-qlr-znantrzrag-663[xlyio] +rdadguja-ytaanqtpc-gtprfjxhxixdc-141[krcaf] +etaqigpke-hnqygt-eqpvckpogpv-362[pegqk] +rtqlgevkng-etaqigpke-ecpfa-eqcvkpi-ewuvqogt-ugtxkeg-206[gxszf] +fubrjhqlf-fkrfrodwh-sxufkdvlqj-777[pozts] +wfintfhynaj-wfggny-xjwanhjx-957[nfjwa] +xcitgcpixdcpa-bpvctixr-qphzti-gthtpgrw-479[zjlmc] +gntmfefwitzx-hfsid-fsfqdxnx-697[oanif] +xgjougizobk-jek-jkvgxzsktz-384[kgjzo] +nzydfxpc-rclop-mldvpe-cpdplcns-925[pcdln] +ltpedcxots-qphzti-gtrtxkxcv-739[txcpd] +gvaaz-fhh-mphjtujdt-233[hajtd] +jchipqat-rpcsn-gtprfjxhxixdc-297[cpxhi] +gsvvswmzi-gerhc-tyvglewmrk-308[zbdcy] +dmybmsuzs-omzpk-oamfuzs-pqhqxabyqzf-508[mzqsa] +iruzfrtkzmv-treup-tfrkzex-jkfirxv-295[rfktz] +pdjqhwlf-mhoobehdq-vwrudjh-127[hdjoq] +rgndvtcxr-hrpktcvtg-wjci-apqdgpidgn-375[jdrhb] +sbqiiyvyut-isqludwuh-xkdj-efuhqjyedi-114[qjzpn] +lahxpnwrl-npp-nwprwnnarwp-459[ontmq] +zntargvp-onfxrg-fnyrf-871[fnrga] +molgbzqfib-avb-absbilmjbkq-601[bailm] +kpvgtpcvkqpcn-tcddkv-wugt-vguvkpi-492[vkpcg] +jfifqxov-doxab-zxkav-zlkqxfkjbkq-341[kxfqa] +qfmcusbwq-dzoghwq-ufogg-fsqswjwbu-220[zbjty] +xjinphzm-bmvyz-mvwwdo-yzkgjthzio-785[zmhij] +ejpanjwpekjwh-ydkykhwpa-owhao-186[hqlfd] +nzydfxpc-rclop-prr-cplnbftdtetzy-483[pcrtd] +kwtwznct-rmttgjmiv-amzdqkma-590[mtakw] +muqfedyput-fbqijys-whqii-iqbui-790[gjxky] +egdytrixat-rgndvtcxr-rpcsn-jhtg-ithixcv-115[trcgi] +fab-eqodqf-rxaiqd-mzmxkeue-404[eqadf] +zotts-xsy-guleyncha-708[ymnbi] +mbiyqoxsm-pvygob-gybucryz-536[zbyxv] +dmybmsuzs-bxmefuo-sdmee-pqhqxabyqzf-716[mbeqs] +qspkfdujmf-ezf-fohjoffsjoh-519[fjohs] +nwlddtqtpo-prr-xlcvpetyr-249[owkmz] +amlqskcp-epybc-aylbw-amyrgle-bctcjmnkclr-808[clabm] +qspkfdujmf-qmbtujd-hsbtt-eftjho-727[tigys] +pualyuhapvuhs-thnulapj-msvdly-ylzlhyjo-877[lhuya] +diozmivodjivg-zbb-nzmqdxzn-629[zdibm] +yrwxefpi-qmpmxevc-kvehi-gerhc-gsexmrk-qerekiqirx-126[erixk] +qlm-pbzobq-zxkav-zlxqfkd-zrpqljbo-pbosfzb-575[phqza] +irgyyolokj-lruckx-aykx-zkyzotm-904[ubkvy] +cebwrpgvyr-pnaql-pbngvat-bcrengvbaf-793[bagnp] +wlsiayhcw-wifilzof-wuhxs-mylpcwym-630[wilyc] +nglmtuex-ktuubm-nlxk-mxlmbgz-215[egtsz] +sbejpbdujwf-dboez-nbobhfnfou-883[jpkmo] +qzoggwtwsr-qobrm-gsfjwqsg-480[xkwvm] +nwzekwypera-oywrajcan-dqjp-wymqeoepekj-472[zeydw] +sawlkjevaz-ywjzu-yqopkian-oanreya-836[ayejk] +pybgmyargtc-afmamjyrc-rpyglgle-470[zgmsu] +nzwzcqfw-qwzhpc-cplnbftdtetzy-977[zctwf] +lhkhszqx-fqzcd-okzrshb-fqzrr-cdudknoldms-651[defrs] +ugfkmewj-yjsvw-owshgfarwv-tskcwl-wfyafwwjafy-294[wfajs] +gpbepvxcv-gpqqxi-stktadebtci-609[npyad] +pxtihgbsxw-vahvhetmx-hixktmbhgl-397[pvcfe] +guahyncw-vohhs-fiacmncwm-656[chamn] +wfruflnsl-uqfxynh-lwfxx-wjfhvznxnynts-463[fnxlw] +lzfmdshb-cxd-dmfhmddqhmf-703[dmfhb] +gzefmnxq-eomhqzsqd-tgzf-oazfmuzyqzf-118[zfqme] +udskkaxawv-usfvq-ugslafy-hmjuzskafy-658[asufk] +ugjjgkanw-vqw-ksdwk-112[kwgja] +enqvbnpgvir-cynfgvp-tenff-fuvccvat-975[vfnce] +fydelmwp-ojp-nfdezxpc-dpcgtnp-353[gziom] +fmsledevhsyw-gpewwmjmih-glsgspexi-tyvglewmrk-178[egmsw] +shmml-enoovg-freivprf-585[efmor] +bnqqnrhud-atmmx-qdrdzqbg-651[qdbmn] +pxtihgbsxw-vahvhetmx-nlxk-mxlmbgz-943[xhmbg] +xfbqpojafe-dipdpmbuf-tbmft-441[wuizc] +zsxyfgqj-uqfxynh-lwfxx-ijxnls-749[futrq] +oaddaeuhq-nmewqf-dqmocgueufuaz-508[mwlcv] +buzahisl-zjhclunly-obua-zavyhnl-201[kzylj] +yhwooebeaz-iwcjapey-oywrajcan-dqjp-zaoecj-524[aejoc] +bwx-amkzmb-qvbmzvibqwvit-lgm-zmikycqaqbqwv-772[dubva] +oxmeeuruqp-ngzzk-fqotzaxask-638[zaeko] +xfbqpojafe-qmbtujd-hsbtt-efwfmpqnfou-363[fbqte] +iehepwnu-cnwza-xqjju-nayaerejc-472[eajnc] +ytu-xjhwjy-jll-ijxnls-385[moyjn] +nvrgfezqvu-treup-tfrkzex-wzeretzex-997[fpvnt] +kwvacumz-ozilm-moo-camz-bmabqvo-434[sanvt] +lxaaxbren-ouxfna-bjunb-277[abnxu] +gpsxdprixkt-uadltg-tcvxcttgxcv-453[txcgd] +owshgfarwv-jsttal-hmjuzskafy-658[asfhj] +pbafhzre-tenqr-qlr-ynobengbel-403[ebnrl] +yaxsnlcrun-mhn-jlzdrbrcrxw-121[wngsc] +bgmxkgtmbhgte-vtgwr-vhtmbgz-tgterlbl-995[gtbme] +nvrgfezqvu-avccpsvre-tljkfdvi-jvimztv-269[vcefi] +apwmeclga-pyzzgr-dglylagle-158[auvsi] +qczcftiz-pogysh-rsgwub-350[kcdvs] +qlm-pbzobq-gbiivybxk-abpfdk-211[bikpq] +crwwv-rkpqxyib-yrkkv-cfkxkzfkd-419[krcfv] +sbnqbhjoh-cbtlfu-tupsbhf-285[bhfst] +qlm-pbzobq-avb-bkdfkbbofkd-159[golnc] +nchhg-jiasmb-lmaqov-902[dpmcw] +tagzsrsjvgmk-jsttal-umklgewj-kwjnauw-944[fsqml] +rkpqxyib-yxphbq-jxkxdbjbkq-601[npbtf] +ujqgywfau-tmffq-hmjuzskafy-736[zmnlk] +ujqgywfau-hdsklau-yjskk-umklgewj-kwjnauw-190[kujwa] +uqtqbizg-ozilm-jcvvg-lmxizbumvb-850[mhanw] +yhtwhnpun-ihzrla-klclsvwtlua-591[lkqzn] +sbqiiyvyut-sqdto-seqjydw-sedjqydcudj-738[warvn] +bwx-amkzmb-uqtqbizg-ozilm-moo-kwvbiqvumvb-746[wystg] +tipfxvezt-vxx-cfxzjkztj-555[xtzfj] +cjpibabsepvt-cvooz-sftfbsdi-571[myqsb] +ymszqfuo-fab-eqodqf-pkq-xmnadmfadk-274[tkbds] +wlqqp-treup-tfrkzex-jkfirxv-581[refkp] +lnkfaypeha-fahhuxawj-wjwhuoeo-550[ahwef] +lsyrkjkbnyec-oqq-ckvoc-874[azsyv] +gvcskirmg-fewoix-wlmttmrk-360[mgikr] +irdgrxzex-tipfxvezt-treup-tfrkzex-cfxzjkztj-607[txzer] +avw-zljyla-zjhclunly-obua-yljlpcpun-617[lajuy] +nwzekwypera-lhwopey-cnwoo-hkceopeyo-134[zulqp] +vkppo-sqdto-seqjydw-jhqydydw-114[dqyjo] +zixppfcfba-zxkav-zlkqxfkjbkq-679[txhzn] +sbnqbhjoh-dboez-sftfbsdi-623[bsdfh] +qjopwxha-bhksan-zalhkuiajp-316[ahjkp] +yhtwhnpun-thnulapj-ibuuf-klzpnu-773[unhpl] +uwtojhynqj-kqtbjw-wjfhvznxnynts-827[ntyqj] +jef-iushuj-rkddo-ijehqwu-504[biekf] +gspsvjyp-tpewxmg-kveww-gywxsqiv-wivzmgi-672[sryce] +rgllk-eomhqzsqd-tgzf-etubbuzs-118[zbegl] +shmml-pubpbyngr-ynobengbel-403[bnegl] +gsrwyqiv-kvehi-fewoix-wivzmgiw-256[rimyz] +iuxxuyobk-yigbktmkx-natz-xkykgxin-852[kxiyb] +excdklvo-oqq-vklybkdybi-744[utifh] +ojk-nzxmzo-agjrzm-xpnojhzm-nzmqdxz-915[zmjno] +qspkfdujmf-sbccju-eftjho-103[byjhc] +fodvvlilhg-mhoobehdq-whfkqrorjb-699[taskb] +aflwjfslagfsd-usfvq-ogjckzgh-814[emsnh] +sebehvkb-uww-tulubefcudj-712[ubewc] +egdytrixat-gpbepvxcv-hrpktcvtg-wjci-hidgpvt-531[vzdcg] +nsyjwsfyntsfq-zsxyfgqj-gzssd-wjxjfwhm-749[sgmhv] +ktfitzbgz-yehpxk-kxvxbobgz-761[ryzea] +tcrjjzwzvu-irsszk-rthlzjzkzfe-503[ocepg] +dfcxsqhwzs-pibbm-sbuwbssfwbu-558[tocys] +nwzekwypera-bhksan-odellejc-758[eakln] +qfmcusbwq-qobrm-qcohwbu-fsoqeiwgwhwcb-402[cpzsy] +cvabijtm-zijjqb-uizsmbqvo-434[btzma] +irdgrxzex-srjbvk-glityrjzex-867[rxegi] +rdadguja-tvv-gtrtxkxcv-609[tvadg] +wdjcvuvmyjpn-zbb-mznzvmxc-213[ndmaz] +vagreangvbany-sybjre-nanylfvf-507[bryme] +vjpwncrl-mhn-bqryyrwp-979[rnpwy] +jqwpihizlwca-ntwemz-abwziom-642[iyzsa] +jchipqat-rwdrdapit-detgpixdch-921[dipta] +vqr-ugetgv-tcddkv-eqpvckpogpv-440[vgpcd] +ajyqqgdgcb-aylbw-amyrgle-qyjcq-756[qyagb] +fbebmtkr-zktwx-utldxm-nlxk-mxlmbgz-553[onbvf] +hwdtljsnh-kqtbjw-ijajqturjsy-827[jthqs] +sedikcuh-whqtu-sxesebqju-udwyduuhydw-556[rvudf] +ipvohghykvbz-tpspahyf-nyhkl-yhiipa-huhsfzpz-123[hpyiz] +fubrjhqlf-mhoobehdq-oderudwrub-153[bdhor] +mbggf-zjhclunly-obua-dvyrzovw-695[bglou] +houngfgxjuay-igtje-aykx-zkyzotm-176[qcita] +lugjuacha-mwupyhayl-bohn-xyjulngyhn-318[gnftc] +rdggdhxkt-rpcsn-rdpixcv-itrwcdadvn-505[uancd] +yaxsnlcrun-ouxfna-jwjuhbrb-199[xnmwj] +yrwxefpi-tpewxmg-kveww-wlmttmrk-334[rfqkl] +ktwbhtvmbox-unggr-kxtvjnblbmbhg-215[bgthk] +amlqskcp-epybc-bwc-pcyaosgqgrgml-600[cgpab] +ujqgywfau-usfvq-ugslafy-jwuwanafy-606[uafwy] +nwzekwypera-lhwopey-cnwoo-lqnydwoejc-134[xithv] +nwzekwypera-acc-naoawnyd-160[itvch] +luxciuwncpy-ohmnuvfy-yaa-wihnuchgyhn-526[hnuyc] +ygcrqpkbgf-ejqeqncvg-tgegkxkpi-674[gekqc] +mtzslklcozfd-qwzhpc-nfdezxpc-dpcgtnp-223[ucwob] +tinnm-tzcksf-zcuwghwqg-948[nmktj] +rdchjbtg-vgpst-hrpktcvtg-wjci-itrwcdadvn-453[ngtzh] +yrwxefpi-nippcfier-hizipstqirx-932[ipref] +cvabijtm-xtiabqk-oziaa-kcabwumz-amzdqkm-590[mpqzo] +dpmpsgvm-dipdpmbuf-efqmpznfou-259[pmdfu] +ynukcajey-nwxxep-zarahkliajp-238[ytaej] +zbytomdsvo-mkxni-mykdsxq-nocsqx-770[mosxd] +tagzsrsjvgmk-xdgowj-jwuwanafy-814[efhpk] +xqvwdeoh-fdqgb-rshudwlrqv-127[jpkat] +kpvgtpcvkqpcn-fag-qrgtcvkqpu-596[pcgkq] +zlkprjbo-doxab-gbiivybxk-obpbxoze-393[boxik] +zbytomdsvo-mrymyvkdo-domrxyvyqi-744[ymodv] +jvuzbtly-nyhkl-qlssfilhu-klwhyatlua-695[lhuya] +nzydfxpc-rclop-nsznzwlep-xlylrpxpye-145[plnxy] +atyzghrk-xghhoz-rghuxgzuxe-748[ghxzr] +vhglnfxk-zktwx-ietlmbv-zktll-ftkdxmbgz-787[wbspa] +njmjubsz-hsbef-dipdpmbuf-vtfs-uftujoh-623[fubjs] +pyknyegle-aylbw-jmegqrgaq-756[egyal] +bgmxkgtmbhgte-lvtoxgzxk-angm-vhgmtbgfxgm-137[gmtxb] +ydjuhdqjyedqb-vbemuh-jusxdebewo-946[debju] +jxdkbqfz-zxkav-zlxqfkd-mrozexpfkd-263[kxzdf] +nbhofujd-dipdpmbuf-pqfsbujpot-597[pbdfu] +wrs-vhfuhw-fdqgb-vklsslqj-647[sfhlq] +vkrhzxgbv-vtgwr-ehzblmbvl-449[knuzb] +gsrwyqiv-kvehi-fyrrc-pefsvexsvc-750[versc] +hqcfqwydw-vbemuh-ixyffydw-270[fwydh] +vetllbybxw-vkrhzxgbv-lvtoxgzxk-angm-ybgtgvbgz-527[jxrwq] +bkzrrhehdc-eknvdq-cdrhfm-365[dhrce] +cybyjqho-whqtu-rkddo-qsgkyiyjyed-530[ydqhj] +ckgvutofkj-hatte-ynovvotm-332[tovka] +sawlkjevaz-zua-iwngapejc-758[jzwql] +mvhkvbdib-kgvnodx-bmvnn-gjbdnodxn-551[bmkyo] +enzcntvat-fpniratre-uhag-grpuabybtl-689[sqkoh] +bqvvu-acc-oanreyao-108[acovb] +tyepcyletzylw-nlyoj-nzletyr-nfdezxpc-dpcgtnp-275[yelnp] +fbebmtkr-zktwx-lvtoxgzxk-angm-kxlxtkva-839[kxtab] +ojk-nzxmzo-wvnfzo-vivgtndn-707[mlndw] +tpspahyf-nyhkl-qlssfilhu-klwsvftlua-487[iewds] +shoewudys-isqludwuh-xkdj-husuylydw-868[tlyhz] +qzoggwtwsr-qobrm-oqeiwgwhwcb-116[wgoqb] +zlkprjbo-doxab-yxphbq-pxibp-237[ocanz] +iruzfrtkzmv-avccpsvre-vexzevvizex-893[nyktl] +hqtyeqsjylu-hqrryj-tulubefcudj-894[ujqye] +zlkprjbo-doxab-fkqbokxqflkxi-mixpqfz-doxpp-xznrfpfqflk-523[fxkpo] +dpmpsgvm-sbccju-dvtupnfs-tfswjdf-129[neysa] +qcbgiasf-ufors-dzoghwq-ufogg-zopcfohcfm-246[yhmkz] +esyfwlau-ugjjgkanw-usfvq-kzahhafy-242[wnzhb] +mbiyqoxsm-lkcuod-nozkbdwoxd-432[odbkm] +usfvq-ugslafy-vwhdgqewfl-632[fglqs] +gokzyxsjon-zvkcdsm-qbkcc-oxqsxoobsxq-484[xrkfl] +hdgdovmt-bmvyz-wvnfzo-gjbdnodxn-395[bwicg] +sehheiylu-fhezusjybu-rkddo-udwyduuhydw-530[udhye] +glrcplyrgmlyj-aylbw-amyrgle-nspafyqgle-210[dmuny] +aflwjfslagfsd-jsttal-xafsfuafy-138[faslj] +yuxufmdk-sdmpq-iqmbazulqp-otaoaxmfq-pqbxakyqzf-586[qamfp] +jef-iushuj-sxesebqju-ixyffydw-270[iztnj] +zvyvgnel-tenqr-enzcntvat-ohaal-ratvarrevat-793[atven] +yuxufmdk-sdmpq-vqxxknqmz-ogefayqd-eqdhuoq-612[qdmux] +yhtwhnpun-kfl-ylhjxbpzpapvu-357[phlnu] +egdytrixat-qjccn-bpcpvtbtci-557[mtpgc] +wsvsdkbi-qbkno-mkxni-mykdsxq-ecob-docdsxq-120[dksbo] +xtwtelcj-rclop-ojp-dstaatyr-873[omnal] +wifilzof-jfumncw-alumm-xypyfijgyhn-318[evfso] +mvydjvxodqz-agjrzm-hvivbzhzio-655[vzdhi] +jsehsyafy-usfvq-ugslafy-jwuwanafy-840[afsyu] +myxcewob-qbkno-nio-bocokbmr-900[obckm] +ipvohghykvbz-wshzapj-nyhzz-vwlyhapvuz-539[hzvpy] +tbxmlkfwba-pzxsbkdbo-erkq-zrpqljbo-pbosfzb-185[bkopz] +rdadguja-eaphixr-vgphh-itrwcdadvn-869[nfpxs] +lugjuacha-jfumncw-alumm-zchuhwcha-734[uachm] +jsehsyafy-jsttal-jwsuimakalagf-762[mnvlh] +zixppfcfba-yrkkv-absbilmjbkq-393[ihgyz] +bxaxipgn-vgpst-rdchjbtg-vgpst-rpcsn-rdpixcv-hpath-817[pgtch] +rtqlgevkng-ejqeqncvg-hkpcpekpi-154[xpgty] +laffe-hgyqkz-xkikobotm-488[kfoab] +jfifqxov-doxab-zxkav-zlxqfkd-qoxfkfkd-419[ubaro] +myxcewob-qbkno-cmkfoxqob-rexd-zebmrkcsxq-952[boxce] +apuut-wvnfzo-rjmfncjk-447[fjnua] +lejkrscv-tfcfiwlc-avccpsvre-fgvirkzfej-113[cfver] +nglmtuex-cxeeruxtg-kxvxbobgz-215[xegbt] +sgmtkzoi-kmm-xkgiwaoyozout-748[qrkst] +amppmqgtc-djmucp-rcaflmjmew-912[bcvna] +xst-wigvix-fyrrc-wepiw-438[ygref] +dzczkrip-xiruv-jtrmvexvi-ylek-fgvirkzfej-295[irvek] +diozmivodjivg-xviyt-xjvodib-zibdizzmdib-265[zmrey] +rgndvtcxr-ytaanqtpc-stepgibtci-661[tcagi] +xgsvgmotm-hgyqkz-jkyomt-358[ajyhb] +zloolpfsb-yxphbq-ixyloxqlov-393[loxbp] +zilqwikbqdm-jiasmb-uizsmbqvo-668[ibmqs] +rtqlgevkng-rncuvke-itcuu-ucngu-206[ucgne] +dmybmsuzs-yuxufmdk-sdmpq-eomhqzsqd-tgzf-iadwetab-482[nkqyl] +vetllbybxw-ktuubm-hixktmbhgl-345[ikqop] +bwx-amkzmb-jcvvg-ikycqaqbqwv-954[symcn] +ubhatstkwhnl-ynssr-lvtoxgzxk-angm-kxlxtkva-163[ktxal] +zlilocri-yxphbq-pefmmfkd-471[filmp] +yflexwxoalrp-zlkprjbo-doxab-zxkav-zlxqfkd-qoxfkfkd-419[xkflo] +oxaflxzqfsb-zelzlixqb-xznrfpfqflk-393[flxzq] +ixccb-vfdyhqjhu-kxqw-ghyhorsphqw-101[pzgst] +pybgmyargtc-qaytclecp-fslr-sqcp-rcqrgle-860[crglp] +zbytomdsvo-mkxni-kmaescsdsyx-562[smdko] +hwbba-dwppa-ocpcigogpv-570[pabcg] +eza-dpncpe-nlyoj-nzletyr-wlmzclezcj-171[elzcn] +tbxmlkfwba-mixpqfz-doxpp-zlkqxfkjbkq-159[kxbfp] +vetllbybxw-yehpxk-ehzblmbvl-657[blehv] +zuv-ykixkz-jek-lotgtiotm-852[ktioz] +fnjyxwrinm-mhn-mnyjacvnwc-277[zgpnw] +odiih-ljwmh-lxjcrwp-mnenuxyvnwc-615[nwchi] +wfummczcyx-wuhxs-qilembij-838[mciuw] +sno-rdbqds-bgnbnkzsd-bnmszhmldms-859[sbdnm] +nvrgfezqvu-gcrjkzt-xirjj-ivjvrity-555[ylfxv] +encuukhkgf-uecxgpigt-jwpv-ujkrrkpi-622[kugpc] +lnkfaypeha-xqjju-qoan-paopejc-446[ajpen] +kmjezxodgz-ytz-gvwjmvojmt-109[jmzgo] +ygcrqpkbgf-hnqygt-octmgvkpi-128[gckpq] +jxdkbqfz-mixpqfz-doxpp-tlohpelm-107[pxdfl] +xjgjmapg-xviyt-xjvodib-adivixdib-759[ixdjv] +laffe-jek-sgtgmksktz-644[vuenb] +pbafhzre-tenqr-enoovg-ratvarrevat-975[ymshj] +lqwhuqdwlrqdo-vfdyhqjhu-kxqw-uhvhdufk-959[kzlvy] +rflsjynh-jll-zxjw-yjxynsl-697[jlyns] +wrs-vhfuhw-sodvwlf-judvv-ghvljq-361[vhwdf] +ynssr-unggr-tvjnblbmbhg-163[bgnrs] +jyfvnlupj-jvsvymbs-yhiipa-zopwwpun-903[nrdma] +kzeed-hfsid-uzwhmfxnsl-515[uoyvx] +ide-htrgti-uadltg-gtprfjxhxixdc-375[tdgix] +sorozgxe-mxgjk-hatte-vaxingyotm-358[fwxei] +ydjuhdqjyedqb-fbqijys-whqii-jusxdebewo-582[nuzsj] +yknnkoera-xwogap-paydjkhkcu-498[kanop] +nzydfxpc-rclop-upwwjmply-opdtry-691[pycdl] +dlhwvupglk-jhukf-jvhapun-zlycpjlz-409[lhjpu] +kwvacumz-ozilm-moo-bmkpvwtwog-694[mowkv] +kmjezxodgz-wpiit-mzxzdqdib-863[anvbu] +xlrypetn-nsznzwlep-xlylrpxpye-587[znfwt] +pybgmyargtc-qaytclecp-fslr-umpiqfmn-600[nzvej] +etyyx-qzaahs-lzqjdshmf-781[ahqsy] +ovbunmneqbhf-wryylorna-znantrzrag-221[pnazx] +gzefmnxq-bxmefuo-sdmee-ymzmsqyqzf-352[lgvpu] +ixeumktoi-jek-jkbkruvsktz-488[mzeun] +dzczkrip-xiruv-avccpsvre-glityrjzex-321[eflmp] +wfruflnsl-hfsid-fhvznxnynts-307[fnshl] +vkppo-rkddo-iqbui-218[dikop] +muqfedyput-zubboruqd-mehaixef-452[inbaj] +ftzgxmbv-cxeeruxtg-nlxk-mxlmbgz-683[xgmbe] +htsxzrjw-lwfij-uqfxynh-lwfxx-hzxytrjw-xjwanhj-827[xjwhf] +qekrixmg-wgezirkiv-lyrx-tyvglewmrk-282[regik] +ktiaaqnqml-jiasmb-apqxxqvo-226[asvyf] +lejkrscv-irdgrxzex-srjbvk-kvtyefcfxp-165[rekvx] +hvbizodx-nxvqzibzm-cpio-hvmfzodib-291[izbov] +ltpedcxots-tvv-rjhidbtg-htgkxrt-297[tdghr] +dlhwvupglk-mbggf-jovjvshal-zlycpjlz-565[lgjvh] +xfbqpojafe-tdbwfohfs-ivou-sfbdrvjtjujpo-779[fjobd] +kmjezxodgz-xviyt-gvwjmvojmt-577[flhas] +jshzzpmplk-jhukf-jvhapun-vwlyhapvuz-669[hpjuv] +tfejldvi-xiruv-gcrjkzt-xirjj-drerxvdvek-295[dpsef] +zotts-yaa-lymyulwb-968[skymd] +rmn-qcapcr-zyqicr-umpiqfmn-704[cmqri] +xfbqpojafe-cbtlfu-qvsdibtjoh-727[bfjoq] +ykhknbqh-nwxxep-oanreyao-732[naehk] +raphhxuxts-hrpktcvtg-wjci-hidgpvt-921[hmzng] +yrwxefpi-qmpmxevc-kvehi-gerhc-gsexmrk-hizipstqirx-932[mdsza] +xjgjmapg-xviyt-vivgtndn-603[utnks] +cxy-bnlanc-mhn-vjwjpnvnwc-745[mtsvn] +ujoon-gpbepvxcv-eaphixr-vgphh-uxcpcrxcv-687[pcvxh] +ykjoqian-cnwza-iwcjapey-lhwopey-cnwoo-opknwca-264[owacn] +lnkfaypeha-oywrajcan-dqjp-zalwnpiajp-108[apjnl] +ktwbhtvmbox-yehpxk-mktbgbgz-293[cndif] +hqcfqwydw-cqwdujys-rqiauj-qsgkyiyjyed-738[qydjw] +amlqskcp-epybc-zyqicr-kylyeckclr-600[sdrzj] +bnmrtldq-fqzcd-rbzudmfdq-gtms-zbpthrhshnm-443[dmbhq] +nwlddtqtpo-nlyoj-nzletyr-epnsyzwzrj-379[tyrzv] +cvabijtm-kpwkwtibm-lmxtwgumvb-980[mbtwi] +amlqskcp-epybc-afmamjyrc-jyzmpyrmpw-574[mpyac] +aflwjfslagfsd-vqw-dstgjslgjq-424[sfgjl] +willimcpy-zfiqyl-xymcah-110[ilycm] +kpvgtpcvkqpcn-lgnnadgcp-ujkrrkpi-128[knmqz] +wyvqljapsl-buzahisl-ibuuf-lunpullypun-409[wyhza] +amlqskcp-epybc-pyzzgr-pcacgtgle-210[cpgae] +xtwtelcj-rclop-mldvpe-dstaatyr-821[nkabu] +pdjqhwlf-gbh-sxufkdvlqj-751[cdmbz] +wkqxodsm-zvkcdsm-qbkcc-ecob-docdsxq-432[cdkoq] +xjmmjndqz-wpiit-gjbdnodxn-811[djnim] +zlkprjbo-doxab-zelzlixqb-absbilmjbkq-939[blzai] +htqtwkzq-xhfajsljw-mzsy-ywfnsnsl-619[lfsnu] +zhdsrqlchg-mhoobehdq-xvhu-whvwlqj-361[hqdlo] +tcfkqcevkxg-tcorcikpi-ejqeqncvg-uvqtcig-544[lsyzm] +kwtwznct-kivlg-zmamizkp-824[ixjen] +bkzrrhehdc-qzaahs-rghoohmf-287[hraoz] +lxuxaodu-mhn-cajrwrwp-303[aruwx] +tcorcikpi-dcumgv-octmgvkpi-700[vygzd] +crwwv-zlkprjbo-doxab-yxphbq-bkdfkbbofkd-809[bkdof] +xgvnndadzy-xcjxjgvoz-ncdkkdib-447[dnxcg] +elrkdcdugrxv-fkrfrodwh-xvhu-whvwlqj-179[eubfs] +odkasqzuo-rxaiqd-eqdhuoqe-430[nlyts] +vhglnfxk-zktwx-xzz-xgzbgxxkbgz-917[xzgkb] +jyfvnlupj-wyvqljapsl-jovjvshal-zlycpjlz-357[jlvpy] +gpbepvxcv-eaphixr-vgphh-gtrtxkxcv-687[pvxgh] +jrncbavmrq-zntargvp-qlr-qrirybczrag-741[dnzpg] +hqfxxnknji-hfsid-knsfshnsl-307[wtfhe] +aietsrmdih-nippcfier-stivexmsrw-750[iersm] +glrcplyrgmlyj-pyzzgr-pcqcypaf-912[nkoyv] +ugfkmewj-yjsvw-hdsklau-yjskk-sfsdqkak-216[ksjad] +mhi-lxvkxm-vtgwr-kxtvjnblbmbhg-917[bmvxg] +tipfxvezt-irsszk-kvtyefcfxp-451[fteik] +jxdkbqfz-mixpqfz-doxpp-qoxfkfkd-939[fxdkp] +dsxxw-pyzzgr-qrmpyec-288[prxyz] +ejpanjwpekjwh-fahhuxawj-ajcejaanejc-394[jaehw] +pinovwgz-xgvnndadzy-xviyt-vxlpdndodji-109[dnvix] +szfyrqriuflj-upv-rercpjzj-243[jprqg] +dmbttjgjfe-gmpxfs-efqbsunfou-701[fbegj] +sgmtkzoi-inuiurgzk-ykxboiky-436[qlcfs] +slqryzjc-djmucp-ylyjwqgq-158[jqycl] +aflwjfslagfsd-vqw-hmjuzskafy-398[fasjl] +slqryzjc-djmucp-pcacgtgle-886[cgjlp] +qjopwxha-ywjzu-ajcejaanejc-420[zoehr] +amjmpdsj-njyqrga-epyqq-kylyeckclr-756[yksln] +zlkprjbo-doxab-zxkav-zlxqfkd-abpfdk-445[kabdx] +lhkhszqx-fqzcd-bgnbnkzsd-nodqzshnmr-989[nzdhq] +dlhwvupglk-ibuuf-klwhyatlua-591[dzktb] +dpotvnfs-hsbef-cbtlfu-ufdiopmphz-623[homsd] +ajvyjprwp-npp-mnbrpw-875[pjnrw] +lxwbdvna-pajmn-snuuhknjw-mnyuxhvnwc-251[nuwah] +vetllbybxw-lvtoxgzxk-angm-xgzbgxxkbgz-865[mknli] +aflwjfslagfsd-jsehsyafy-usfvq-vwkayf-268[fsayj] +xjgjmapg-agjrzm-gvwjmvojmt-291[jgmav] +plolwdub-judgh-iorzhu-dqdobvlv-465[dloub] +htqtwkzq-wfggny-fsfqdxnx-645[wsznf] +fkqbokxqflkxi-zxkav-zlxqfkd-jxohbqfkd-341[kxfqb] +oxjmxdfkd-avb-tlohpelm-653[dlmox] +xtwtelcj-rclop-nsznzwlep-epnsyzwzrj-873[zelnp] +rtqlgevkng-gii-ceswkukvkqp-466[kgeiq] +molgbzqfib-yrkkv-ixyloxqlov-237[lobik] +zbytomdsvo-mrymyvkdo-nocsqx-848[pahef] +szfyrqriuflj-treup-tfrkzex-ivtvzmzex-867[xejut] +upq-tfdsfu-kfmmzcfbo-mphjtujdt-909[fmtud] +ykhknbqh-lhwopey-cnwoo-bejwjyejc-342[hwxgn] +qfkkj-nsznzwlep-nzyeltyxpye-327[vkmwy] +excdklvo-zvkcdsm-qbkcc-psxkxmsxq-900[cvoiz] +dszphfojd-dboez-dpbujoh-xpsltipq-623[zbxem] +udpsdjlqj-iorzhu-ghsorbphqw-517[hdjop] +xcitgcpixdcpa-ide-htrgti-gpqqxi-gthtpgrw-609[gitpc] +cybyjqho-whqtu-uww-tuiywd-348[styfx] +yuxufmdk-sdmpq-nmewqf-oazfmuzyqzf-924[hfsly] +tfejldvi-xiruv-avccpsvre-crsfirkfip-997[rxygp] +wsvsdkbi-qbkno-oqq-wkxkqowoxd-822[koqwb] +qcbgiasf-ufors-tzcksf-sbuwbssfwbu-610[ivjsc] +vkrhzxgbv-wrx-lmhktzx-839[xhkrv] +xmrrq-bwddqtwsf-vwnwdghewfl-242[fpmoq] +kmjezxodgz-nxvqzibzm-cpio-gjbdnodxn-577[isocd] +iutyaskx-mxgjk-kmm-jkyomt-436[kmjtx] +ide-htrgti-snt-rjhidbtg-htgkxrt-531[tghir] +vkppo-uww-bqrehqjeho-764[xmntl] +bdavqofuxq-pkq-ymzmsqyqzf-196[qfmyz] +diozmivodjivg-hvbizodx-zbb-ozxcijgjbt-915[zueag] +cybyjqho-whqtu-hqrryj-bqrehqjeho-374[hqjry] +vcibutulxiom-vohhs-lywycpcha-630[owyks] +chnylhuncihuf-wuhxs-fiacmncwm-786[chnuf] +xekdwvwnzkqo-ywjzu-ykwpejc-wymqeoepekj-264[dmbln] +etyyx-cxd-vnqjrgno-391[hntfq] +pwcvonofrcig-dfcxsqhwzs-qobrm-qighcasf-gsfjwqs-194[scfqg] +xgvnndadzy-ezggtwzvi-nojmvbz-837[vnsth] +dszphfojd-qmbtujd-hsbtt-usbjojoh-467[rskch] +npmhcargjc-aylbw-amyrgle-yaosgqgrgml-886[galmr] +qczcftiz-gqojsbusf-vibh-twbobqwbu-350[bnsiu] +kwvacumz-ozilm-kzgwomvqk-xtiabqk-oziaa-twoqabqka-980[akoqz] +dsxxw-zyqicr-cleglccpgle-418[clegx] +jrncbavmrq-cynfgvp-tenff-ynobengbel-611[nbefc] +hqtyeqsjylu-fbqijys-whqii-tuiywd-322[mitks] +rnqnyfwd-lwfij-wfggny-xmnuunsl-697[tseia] +fhezusjybu-rqiauj-udwyduuhydw-868[ngyzs] +pkl-oaynap-ywjzu-ykwpejc-opknwca-628[pakwy] +nuatmlmdpage-vqxxknqmz-geqd-fqefuzs-508[romxa] +awzwhofm-ufors-qobrm-qcohwbu-hsqvbczcum-948[obchm] +dfcxsqhwzs-rms-fsgsofqv-766[sfqcd] +wlqqp-tyftfcrkv-rercpjzj-711[rcfjp] +clotzlnetgp-awldetn-rcldd-nzyeltyxpye-743[letdn] +lgh-kwujwl-hdsklau-yjskk-vwhsjlewfl-788[lkwhj] +uqtqbizg-ozilm-kivlg-kwibqvo-uizsmbqvo-512[iqbov] +vetllbybxw-lvtoxgzxk-angm-kxlxtkva-683[xlktv] +qyujihctyx-mwupyhayl-bohn-uwkocmcncih-760[chyui] +crwwv-zxkav-obzbfsfkd-237[bfkvw] +qczcftiz-pogysh-igsf-hsghwbu-610[tnjwm] +udpsdjlqj-gbh-hqjlqhhulqj-725[hjqld] +yuxufmdk-sdmpq-nmewqf-emxqe-326[meqdf] +molgbzqfib-ciltbo-ildfpqfzp-653[bfilo] +uwtojhynqj-gfxpjy-ywfnsnsl-151[jnyfs] +qvbmzvibqwvit-jiasmb-camz-bmabqvo-330[bmvai] +xmtjbzidx-xviyt-xjvodib-xpnojhzm-nzmqdxz-603[torgb] +ykjoqian-cnwza-fahhuxawj-qoan-paopejc-628[ajnoc] +gvcskirmg-veffmx-irkmriivmrk-906[imrkv] +njmjubsz-hsbef-dboez-dpbujoh-bdrvjtjujpo-649[astyb] +ovbunmneqbhf-pnaql-pbngvat-jbexfubc-845[yzqwm] +joufsobujpobm-kfmmzcfbo-usbjojoh-571[mkpnw] +lzfmdshb-cxd-lzmzfdldms-287[dlmzf] +froruixo-mhoobehdq-pdunhwlqj-439[ohdqr] +xcitgcpixdcpa-rpcsn-rdpixcv-bpcpvtbtci-193[cpitx] +dfcxsqhwzs-ksodcbwnsr-xszzmpsob-rsgwub-168[sbwzc] +iuruxlar-lruckx-sgtgmksktz-436[krugl] +nbhofujd-dboez-fohjoffsjoh-467[ofhjb] +pejji-tovvilokx-nozvyiwoxd-276[bzkve] +bxaxipgn-vgpst-rpcsn-rdpixcv-rjhidbtg-htgkxrt-583[upjyv] +bkzrrhehdc-bzmcx-bnzshmf-lzqjdshmf-443[hzbmc] +dpssptjwf-gmpxfs-mphjtujdt-571[pjstd] +pdjqhwlf-sodvwlf-judvv-orjlvwlfv-829[tuszv] +mfklstdw-tmffq-wfyafwwjafy-918[wmvan] +joufsobujpobm-ezf-gjobodjoh-779[xwadm] +hafgnoyr-gbc-frperg-rtt-grpuabybtl-481[jcgnd] +joufsobujpobm-fhh-tijqqjoh-233[johbf] +zuv-ykixkz-vrgyzoi-mxgyy-yzuxgmk-150[yzgkx] +ibghopzs-qvcqczohs-qighcasf-gsfjwqs-948[ubrmn] +qfmcusbwq-pwcvonofrcig-foppwh-fsgsofqv-584[focpq] +aczupnetwp-awldetn-rcldd-qtylyntyr-119[tdlny] +dpssptjwf-ezf-sfdfjwjoh-909[znfwy] +qxdwpopgsdjh-ytaanqtpc-pcpanhxh-297[pahcd] +ucynmlgxcb-aylbw-rpyglgle-626[lgybc] +oqnidbshkd-okzrshb-fqzrr-rdquhbdr-573[rdbhq] +frqvxphu-judgh-fdqgb-vhuylfhv-647[hfuvd] +vhehkyne-cxeeruxtg-hixktmbhgl-319[ehxgk] +gsrwyqiv-kvehi-gerhc-gsexmrk-vigimzmrk-412[girek] +ajmrxjlcren-yujbcrl-pajbb-bnaerlnb-719[lvzpq] +zixppfcfba-bdd-bkdfkbbofkd-393[hnmcz] +aflwjfslagfsd-hdsklau-yjskk-ugflsafewfl-918[flsak] +xtwtelcj-rclop-upwwjmply-nzyeltyxpye-847[lpyet] +oaddaeuhq-qss-dqmocgueufuaz-924[qzwti] +tvsnigxmpi-wgezirkiv-lyrx-hitpscqirx-568[irxgp] +ksodcbwnsr-qczcftiz-gqojsbusf-vibh-igsf-hsghwbu-272[sbcfg] +sgmtkzoi-jek-gtgreyoy-410[tqkns] +rzvkjiduzy-kgvnodx-bmvnn-omvdidib-109[fpsxk] +diozmivodjivg-rzvkjiduzy-zbb-adivixdib-447[nayqm] +froruixo-vfdyhqjhu-kxqw-rshudwlrqv-517[rhqud] +dmpuamofuhq-dmnnuf-ymzmsqyqzf-222[mwnak] +mybbycsfo-zvkcdsm-qbkcc-wkbuodsxq-380[bcksd] +tcrjjzwzvu-wcfnvi-vexzevvizex-633[vzeci] +qzoggwtwsr-gqojsbusf-vibh-hsqvbczcum-870[sbgqc] +enzcntvat-cynfgvp-tenff-phfgbzre-freivpr-845[xnfot] +gsvvswmzi-gerhc-gsexmrk-stivexmsrw-984[segmr] +fhezusjybu-vbemuh-iqbui-244[iektm] +oqnidbshkd-idkkxadzm-qdzbpthrhshnm-469[gekyh] +pybgmyargtc-cee-nspafyqgle-574[egyac] +jyddc-gerhc-gsexmrk-vigimzmrk-672[gmrcd] +tipfxvezt-gcrjkzt-xirjj-rercpjzj-399[ldquc] +bdavqofuxq-bxmefuo-sdmee-dqeqmdot-768[hwmck] +fbebmtkr-zktwx-vtgwr-hixktmbhgl-475[tbkgh] +irgyyolokj-igtje-iugzotm-rumoyzoiy-202[mpijw] +fbebmtkr-zktwx-xzz-kxlxtkva-865[yicwo] +tyepcyletzylw-dnlgpyrpc-sfye-nfdezxpc-dpcgtnp-145[badwi] +vrurcjah-pajmn-ljwmh-anbnjalq-849[ajnhl] +rtqlgevkng-ecpfa-fgukip-700[gefkp] +pdjqhwlf-froruixo-udeelw-wudlqlqj-907[kymab] +tinnm-xszzmpsob-qcbhowbasbh-688[nhcdm] +nij-mywlyn-wuhxs-lywycpcha-318[ywchl] +fnjyxwrinm-ouxfna-ldbcxvna-bnaerln-979[naxbf] +ajvyjprwp-bljenwpna-qdwc-anjlzdrbrcrxw-823[jrwan] +diozmivodjivg-wpiit-mzxzdqdib-551[kmhon] +nij-mywlyn-dyffsvyuh-xyjfisgyhn-656[yfnhi] +fhezusjybu-zubboruqd-vydqdsydw-504[dubyq] +ubhatstkwhnl-lvtoxgzxk-angm-kxvxbobgz-579[xbgkt] +xcitgcpixdcpa-rwdrdapit-htgkxrth-557[zastp] +wfintfhynaj-jll-hzxytrjw-xjwanhj-281[jhnwa] +irgyyolokj-vrgyzoi-mxgyy-rumoyzoiy-800[sptbo] +jvyyvzpcl-yhkpvhjapcl-ibuuf-aljouvsvnf-227[vjlpu] +iruzfrtkzmv-treup-kirzezex-841[rzeik] +cxy-bnlanc-ljwmh-ujkxajcxah-979[waqkz] +qzoggwtwsr-foppwh-difqvogwbu-948[wgofp] +qyujihctyx-dyffsvyuh-zchuhwcha-552[hycuf] +yknnkoera-lhwopey-cnwoo-pnwejejc-992[enowc] +zovldbkfz-zxkav-zlxqfkd-xkxivpfp-289[vtcos] +mrxivrexmsrep-glsgspexi-erepcwmw-750[btrnl] +udskkaxawv-kusnwfywj-zmfl-dgyaklauk-866[xeozd] +esyfwlau-tmffq-vwnwdghewfl-632[czoml] +hjgbwuladw-kusnwfywj-zmfl-esfsywewfl-294[xwfie] +hwbba-rncuvke-itcuu-ocpcigogpv-232[cubgi] +vhkkhlbox-vtgwr-xgzbgxxkbgz-631[typnq] +nvrgfezqvu-szfyrqriuflj-vxx-jkfirxv-139[krijl] +iuruxlar-zuv-ykixkz-lruckx-xkykgxin-826[kxuir] +yhwooebeaz-ywjzu-yqopkian-oanreya-966[ynwkb] +iuxxuyobk-pkrrehkgt-xkgiwaoyozout-176[sjwtp] +glrcplyrgmlyj-djmucp-qrmpyec-236[clmpr] +pejji-tovvilokx-bocokbmr-588[obijk] +hplazytkpo-upwwjmply-dpcgtnpd-119[pdltw] +nij-mywlyn-xsy-jolwbumcha-136[yjlmn] +pynffvsvrq-ohaal-fgbentr-923[fanrv] +lgh-kwujwl-kusnwfywj-zmfl-kwjnauwk-736[wkjlu] +dszphfojd-sbccju-mbcpsbupsz-727[sbcpd] +ixeumktoi-lruckx-zkinturume-800[ktsyl] +fmsledevhsyw-tvsnigxmpi-veffmx-viwievgl-412[veifm] +mrxivrexmsrep-fyrrc-qevoixmrk-880[wtmdx] +qmpmxevc-kvehi-wgezirkiv-lyrx-wlmttmrk-620[zyxjd] +zixppfcfba-oxyyfq-qbzeklildv-289[fbilp] +nwlddtqtpo-dnlgpyrpc-sfye-wlmzclezcj-431[jefsy] +tinnm-foppwh-oqeiwgwhwcb-688[fzyjx] +plolwdub-judgh-fdqgb-ghyhorsphqw-413[hystk] +bwx-amkzmb-zijjqb-bmkpvwtwog-460[bmwjk] +qcbgiasf-ufors-pibbm-ghcfous-896[bfscg] +ktwbhtvmbox-vetllbybxw-cxeeruxtg-tgterlbl-215[tmybs] +lqwhuqdwlrqdo-mhoobehdq-vwrudjh-387[dhqow] +lgh-kwujwl-tskcwl-vwhdgqewfl-684[afnbs] +yuxufmdk-sdmpq-rxaiqd-efadmsq-976[mczye] +ftzgxmbv-unggr-kxlxtkva-917[ezfmx] +rmn-qcapcr-aylbw-amyrgle-ylyjwqgq-158[prcqj] +fhezusjybu-rqiauj-husuylydw-582[uyhjs] +apuut-xviyt-xjvodib-yzkvmohzio-525[yomvc] +mybbycsfo-dyz-combod-zvkcdsm-qbkcc-oxqsxoobsxq-848[obcsd] +yhwooebeaz-lhwopey-cnwoo-zalhkuiajp-706[oaehw] +bqxnfdmhb-bzmcx-trdq-sdrshmf-469[zdyht] +dmpuamofuhq-vqxxknqmz-pqbmdfyqzf-924[qmfdp] +kmjezxodgz-ytz-mzvxlpdndodji-889[gefcn] +apuut-xviyt-xjvodib-mznzvmxc-369[vximt] +fodvvlilhg-surmhfwloh-hjj-hqjlqhhulqj-647[hljqf] +tipfxvezt-srjbvk-tljkfdvi-jvimztv-269[vtijf] +ikhcxvmbex-xzz-labiibgz-423[qnzsg] +qzchnzbshud-azrjds-lzmzfdldms-885[xubgy] +eadalsjq-yjsvw-vqw-esjcwlafy-398[ajswe] +oxmeeuruqp-bxmefuo-sdmee-etubbuzs-898[stupo] +frqvxphu-judgh-xqvwdeoh-fdqgb-frdwlqj-zrunvkrs-257[dqrfh] +ltpedcxots-gpbepvxcv-qphzti-igpxcxcv-349[jzdyi] +vhkkhlbox-vtgwr-phkdlahi-969[tmszy] +cvabijtm-jcvvg-lmdmtwxumvb-226[nvfca] +sedikcuh-whqtu-sqdto-qsgkyiyjyed-790[dqsye] +gzefmnxq-bdavqofuxq-rxaiqd-ymzmsqyqzf-690[zklij] +zntargvp-cynfgvp-tenff-qrcyblzrag-351[sqzyh] +xfbqpojafe-dboez-xpsltipq-857[ehgum] +uqtqbizg-ozilm-jcvvg-lmaqov-980[xzwsi] +xjgjmapg-ezggtwzvi-xpnojhzm-nzmqdxz-161[zgjmx] +muqfedyput-vbemuh-fkhsxqiydw-920[udefh] +kzeed-gfxpjy-ywfnsnsl-489[xeoyn] +pynffvsvrq-onfxrg-ynobengbel-741[nfbeg] +froruixo-iorzhu-rshudwlrqv-647[rouhi] +amjmpdsj-qaytclecp-fslr-qyjcq-938[cjqal] +otzkxtgzoutgr-jek-iayzuskx-ykxboik-826[kotxz] +tpspahyf-nyhkl-jhukf-zavyhnl-279[hyafk] +pualyuhapvuhs-ihzrla-ylhjxbpzpapvu-929[lbncu] +odiih-ajkkrc-mnbrpw-355[ikrab] +votubcmf-gmpxfs-bdrvjtjujpo-363[jbfmo] +zgmfyxypbmsq-rmn-qcapcr-bwc-pcacgtgle-704[ztspm] +uqtqbizg-ozilm-nchhg-jiasmb-ivitgaqa-382[snpaf] +willimcpy-jfumncw-alumm-lyuwkocmcncih-734[cmliu] +ibghopzs-qvcqczohs-hsqvbczcum-506[chqsz] +ugjjgkanw-tmffq-vwkayf-216[lfrby] +pynffvsvrq-pnaql-erprvivat-507[vpraf] +aczupnetwp-nlyoj-nzletyr-pyrtyppctyr-197[pytnr] +vkppo-sqdto-seqjydw-bewyijysi-686[sydei] +dpotvnfs-hsbef-ezf-qvsdibtjoh-337[fsbde] +wlqqp-avccpsvre-ivtvzmzex-425[vcepq] +jfifqxov-doxab-gbiivybxk-jxohbqfkd-549[skgzo] +rgndvtcxr-jchipqat-rpcsn-igpxcxcv-713[cprxg] +ykhknbqh-xqjju-wymqeoepekj-576[ejkqh] +pejji-mrymyvkdo-domrxyvyqi-536[ymdij] +wihmogyl-aluxy-xsy-womnigyl-mylpcwy-786[ylmwg] +jlidywncfy-zfiqyl-mbcjjcha-162[cjyfi] +pynffvsvrq-sybjre-grpuabybtl-455[byavk] +uqtqbizg-ozilm-uiovmbqk-akidmvomz-pcvb-bziqvqvo-694[xywnk] +lxaaxbren-ouxfna-ydalqjbrwp-225[mibtg] +joufsobujpobm-kfmmzcfbo-dvtupnfs-tfswjdf-675[ijokq] +crwwv-gbiivybxk-pqloxdb-913[rtmzn] +pkl-oaynap-nwxxep-bejwjyejc-576[jfmel] +wfummczcyx-gcfcnuls-aluxy-wuhxs-wihnuchgyhn-786[giqsn] +htsxzrjw-lwfij-ojqqdgjfs-ijajqturjsy-229[tjxbs] +qczcftiz-foppwh-rsgwub-246[exnyt] +lnkfaypeha-xwogap-naoawnyd-342[zynls] +thnulapj-zjhclunly-obua-thuhnltlua-201[luhan] +vkppo-fbqijys-whqii-bqrehqjeho-504[lkosn] +eqpuwogt-itcfg-ecpfa-qrgtcvkqpu-622[cgpqt] +odkasqzuo-oazegyqd-sdmpq-otaoaxmfq-efadmsq-222[aoqdm] +ide-htrgti-bxaxipgn-vgpst-qjccn-pcpanhxh-453[pcghi] +luxciuwncpy-jfumncw-alumm-xyjulngyhn-552[unclm] +plolwdub-judgh-hjj-zrunvkrs-777[yfulq] +pejji-lexxi-oxqsxoobsxq-458[xoeij] +uzfqdzmfuazmx-pkq-fdmuzuzs-170[npsqv] +bknsykmdsfo-zvkcdsm-qbkcc-cdybkqo-614[fastx] +qfkkj-upwwjmply-qtylyntyr-873[yjklp] +hqcfqwydw-zubboruqd-ijehqwu-218[djvhz] +kmjezxodgz-pinovwgz-zbb-ncdkkdib-473[vimty] +bknsykmdsfo-myvybpev-mkxni-mykdsxq-bocokbmr-562[sdwfr] +eqttqukxg-gii-hkpcpekpi-960[yljdr] +drxevkzt-wcfnvi-cfxzjkztj-607[twoxz] +vkppo-rkddo-ijehqwu-504[dkope] +rgllk-rxaiqd-dqmocgueufuaz-456[mxkzr] +ktiaaqnqml-moo-xczkpiaqvo-122[aoqik] +amjmpdsj-njyqrga-epyqq-pcqcypaf-600[pqajy] +rwcnawjcrxwju-npp-ujkxajcxah-199[jacwx] +fmsledevhsyw-gspsvjyp-gerhc-gsexmrk-ywiv-xiwxmrk-412[segmr] +ajmrxjlcren-kdwwh-anbnjalq-745[myzet] +aoubshwq-tinnm-suu-fsoqeiwgwhwcb-480[wsubh] +rdggdhxkt-rpcsn-hpath-531[tsamh] +pbafhzre-tenqr-pnaql-pbngvat-nanylfvf-715[upmid] +zbytomdsvo-cmkfoxqob-rexd-gybucryz-562[obycd] +bkwzkqsxq-mkxni-ecob-docdsxq-978[ksmtq] +oknkvcta-itcfg-ecpfa-ncdqtcvqta-414[lcwjp] +fydelmwp-clmmte-cpnptgtyr-405[jlgak] +tcorcikpi-ecpfa-gpikpggtkpi-804[picgk] +xtwtelcj-rclop-upwwjmply-hzcvdsza-327[clpwj] +tcfkqcevkxg-ecpfa-eqcvkpi-ncdqtcvqta-752[cqekt] +etaqigpke-tcddkv-uvqtcig-440[tcdeg] +raphhxuxts-qxdwpopgsdjh-rpcsn-rdpixcv-sthxvc-843[tvexn] +atyzghrk-xghhoz-ktmotkkxotm-748[kthog] +fmsledevhsyw-nippcfier-asvowlst-412[zksal] +oaxadrgx-eomhqzsqd-tgzf-eqdhuoqe-846[zfylm] +qcbgiasf-ufors-dzoghwq-ufogg-qcbhowbasbh-194[bgofh] +qvbmzvibqwvit-bwx-amkzmb-jiasmb-xczkpiaqvo-122[bimva] +qfkkj-prr-hzcvdsza-639[dqmts] +jvyyvzpcl-ibuuf-bzly-alzapun-981[mnakf] +dsxxw-cee-pcacgtgle-626[odsgr] +buzahisl-zjhclunly-obua-zlycpjlz-617[rsglh] +gpewwmjmih-tpewxmg-kveww-jmrergmrk-594[mwegr] +aietsrmdih-hci-stivexmsrw-516[hsvof] +ujoon-ytaanqtpc-stepgibtci-219[tacin] +kpvgtpcvkqpcn-fag-ceswkukvkqp-830[cijob] +etaqigpke-uecxgpigt-jwpv-ocpcigogpv-154[gpcei] +eqnqthwn-tcddkv-rwtejcukpi-674[tcdek] +mhi-lxvkxm-ktuubm-nlxk-mxlmbgz-241[mxklb] +avw-zljyla-wshzapj-nyhzz-ylzlhyjo-149[plqkx] +xekdwvwnzkqo-nwxxep-odellejc-862[xyzwn] +pkl-oaynap-bhksan-qoan-paopejc-498[ojduv] +xjinphzm-bmvyz-xjgjmapg-ezggtwzvi-zibdizzmdib-499[zigmb] +bdavqofuxq-rxaiqd-bgdotmeuzs-508[clbmv] +xzwrmkbqtm-jcvvg-ewzsapwx-902[wmvxz] +dmybmsuzs-rxaiqd-xmnadmfadk-846[dmasx] +surmhfwloh-exqqb-vwrudjh-127[hqruw] +gntmfefwitzx-ojqqdgjfs-xytwflj-827[xgtuv] +tbxmlkfwba-zxkav-zlxqfkd-ildfpqfzp-965[jncig] +sbnqbhjoh-tdbwfohfs-ivou-qvsdibtjoh-597[rftxz] +hqcfqwydw-fbqijys-whqii-iqbui-322[iqwbf] +forwcoqhwjs-xszzmpsob-gvwddwbu-324[ftyzu] +zlilocri-oxjmxdfkd-ciltbo-pbosfzbp-991[gjars] +kwzzwaqdm-rmttgjmiv-uizsmbqvo-434[mziqt] +willimcpy-gcfcnuls-aluxy-mwupyhayl-bohn-yhachyylcha-162[kcimx] +uqtqbizg-ozilm-kivlg-uizsmbqvo-954[pifvj] +ugdgjxmd-tskcwl-wfyafwwjafy-762[wfadg] +ajyqqgdgcb-bwc-qyjcq-262[qcbgj] +yknnkoera-oywrajcan-dqjp-wjwhuoeo-602[oajnw] +bqxnfdmhb-qzaahs-rzkdr-963[abdhq] +dwbcjkun-mhn-jwjuhbrb-693[niusd] +wlqqp-wcfnvi-crsfirkfip-373[nrtqs] +guahyncw-wbiwifuny-xymcah-240[wyach] +qfkkj-prr-opgpwzaxpye-613[pkrae] +cqwdujys-tou-tufbeocudj-322[ucdjo] +wfruflnsl-wfggny-ijuqtdrjsy-931[wjznm] +bnqqnrhud-okzrshb-fqzrr-cdrhfm-105[rhqbd] +yhtwhnpun-tpspahyf-nyhkl-jovjvshal-zlycpjlz-487[hlpyj] +iutyaskx-mxgjk-hatte-lotgtiotm-176[shzku] +gntmfefwitzx-kqtbjw-xfqjx-645[nmfsa] +jvsvymbs-jhukf-jbzavtly-zlycpjl-695[frnkz] +dlhwvupglk-zjhclunly-obua-jvuahputlua-825[ulahj] +wyvqljapsl-jhukf-jvhapun-ylzlhyjo-487[jlhya] +ghkmaihex-hucxvm-lmhktzx-267[hmxka] +irgyyolokj-vrgyzoi-mxgyy-xkikobotm-670[ryfvl] +kwzzwaqdm-zijjqb-amzdqkma-564[qzdtv] +rflsjynh-idj-xytwflj-541[jflyd] +emixwvqhml-ntwemz-zmkmqdqvo-200[zmbdq] +kzgwomvqk-rmttgjmiv-abwziom-330[mtnsk] +xjgjmapg-wpiit-vivgtndn-499[weiza] +cebwrpgvyr-pnaql-grpuabybtl-117[xqmjc] +egdytrixat-uadltg-uxcpcrxcv-297[ctxad] +gvaaz-ezf-tfswjdft-623[fatzd] +excdklvo-mkxni-mykdsxq-mecdywob-cobfsmo-692[mocdk] +ovbunmneqbhf-pnaql-bcrengvbaf-351[mtgcw] +nwlddtqtpo-clmmte-nzyeltyxpye-509[ydnsh] +froruixo-udeelw-vwrudjh-309[sxgvu] +hqcfqwydw-sxesebqju-cqhaujydw-660[fghtp] +bpvctixr-rwdrdapit-ldgzhwde-895[sfioq] +ajmrxjlcren-yaxsnlcrun-bljenwpna-qdwc-fxatbqxy-797[fnjis] +lugjuacha-zfiqyl-uhufsmcm-370[uacfh] +houngfgxjuay-pkrrehkgt-iayzuskx-ykxboik-852[kguxy] +gcfcnuls-aluxy-luxciuwncpy-jfumncw-alumm-uhufsmcm-214[zftvs] +oxmeeuruqp-otaoaxmfq-emxqe-794[drzyv] +nvrgfezqvu-upv-tfekrzedvek-867[evfkr] +uwtojhynqj-xhfajsljw-mzsy-zxjw-yjxynsl-801[jyswx] +zixppfcfba-yxphbq-jxohbqfkd-887[zgoyn] +qczcftiz-qvcqczohs-aobousasbh-402[coqsz] +lejkrscv-upv-tfekrzedvek-919[ekvrc] +chnylhuncihuf-zfiqyl-zchuhwcha-604[magtu] +vetllbybxw-lvtoxgzxk-angm-ybgtgvbgz-605[gbltv] +dmpuamofuhq-omzpk-qzsuzqqduzs-820[quzmd] +rdggdhxkt-gpqqxi-rdcipxcbtci-219[yrlha] +tfejldvi-xiruv-wcfnvi-jvimztvj-243[fqclr] +foadouwbu-dzoghwq-ufogg-gvwddwbu-324[dgouw] +tbxmlkfwba-pzxsbkdbo-erkq-bkdfkbbofkd-913[hgans] +gpbepvxcv-rpcsn-itrwcdadvn-453[sbuap] +szfyrqriuflj-srjbvk-ivrthlzjzkzfe-633[sqwil] +jqwpihizlwca-jiasmb-ivitgaqa-122[amzud] +bqvvu-ywjzu-qoan-paopejc-264[ajopq] +mvydjvxodqz-wpiit-gvwjmvojmt-525[oabkn] +ktiaaqnqml-moo-zmikycqaqbqwv-252[qamik] +dpmpsgvm-cbtlfu-sfdfjwjoh-909[pntzm] +nzcczdtgp-nsznzwlep-qtylyntyr-171[nztyc] +htqtwkzq-idj-rfwpjynsl-723[ndmel] +gzefmnxq-nmewqf-eqdhuoqe-300[eqfmn] +qzlozfhmf-cxd-lzqjdshmf-469[fzdhl] +pinovwgz-mvydjvxodqz-xviyt-xjvodib-yzndbi-447[pztyh] +gspsvjyp-gerhc-gsexmrk-vieguymwmxmsr-256[gmser] +ygcrqpkbgf-tcfkqcevkxg-hnqygt-vtckpkpi-102[puovq] +jsehsyafy-tmffq-vwhdgqewfl-112[rnach] +qmpmxevc-kvehi-hci-eguymwmxmsr-204[mechi] +tcfkqcevkxg-tcorcikpi-gii-gpikpggtkpi-544[wytzs] +pbafhzre-tenqr-enzcntvat-onfxrg-ratvarrevat-845[raten] +shoewudys-rqiauj-bqrehqjeho-270[ehqjo] +xjinphzm-bmvyz-ojk-nzxmzo-ezggtwzvi-zibdizzmdib-577[zimbd] +rkpqxyib-bdd-pbosfzbp-939[bpdfi] +vcibutulxiom-vumeyn-omyl-nymncha-786[ziwys] +nvrgfezqvu-upv-ivrthlzjzkzfe-321[vzefr] +krxqjijamxdb-yujbcrl-pajbb-dbna-cnbcrwp-303[bjacr] +zixppfcfba-mixpqfz-doxpp-qbzeklildv-653[zdxgu] +lsyrkjkbnyec-mkxni-gybucryz-640[ykbcn] +qspkfdujmf-kfmmzcfbo-dpoubjonfou-155[fomub] +sno-rdbqds-rbzudmfdq-gtms-cdozqsldms-755[yaubo] +houngfgxjuay-vrgyzoi-mxgyy-ygrky-462[ygoru] +gcfcnuls-aluxy-wifilzof-yaa-omyl-nymncha-266[alycf] +hwdtljsnh-gzssd-xfqjx-463[fajso] +htwwtxnaj-idj-hzxytrjw-xjwanhj-281[hzrnq] +sorozgxe-mxgjk-lruckx-xkgiwaoyozout-176[oxgkr] +ynssr-vtgwr-vhtmbgz-ftgtzxfxgm-475[gtfmr] +rtqlgevkng-lgnnadgcp-yqtmujqr-648[nelzc] +kwtwznct-rmttgjmiv-camz-bmabqvo-460[nmbls] +surmhfwloh-fdqgb-wudlqlqj-959[lqdfh] +iutyaskx-mxgjk-hgyqkz-rumoyzoiy-644[ykgim] +jqwpihizlwca-kivlg-kwibqvo-wxmzibqwva-434[iwqva] +amppmqgtc-djmucp-asqrmkcp-qcptgac-496[cpmaq] +apuut-xjmmjndqz-wpiit-vivgtndn-187[intdj] +ftzgxmbv-vtgwr-wxlbzg-267[gbtvw] +eza-dpncpe-mldvpe-wlmzclezcj-171[eclpz] +rnqnyfwd-lwfij-wfggny-ijuqtdrjsy-827[fjnwy] +aflwjfslagfsd-xdgowj-ghwjslagfk-684[fgajl] +lzfmdshb-eknvdq-rsnqzfd-859[ybjfz] +hqtyeqsjylu-uww-tufbeocudj-582[uejqt] +qfkkj-nsznzwlep-dstaatyr-223[aknst] +ubhatstkwhnl-xzz-kxvxbobgz-267[umogq] +xekdwvwnzkqo-oywrajcan-dqjp-ykjpwejiajp-238[mtbvo] +cebwrpgvyr-sybjre-qrfvta-195[rbevy] +hjgbwuladw-usfvq-esfsywewfl-710[mpiho] +lujbbrornm-kjbtnc-fxatbqxy-823[ywamx] +ugjjgkanw-uzgugdslw-hmjuzskafy-476[stfoh] +fmsledevhsyw-fewoix-pefsvexsvc-724[scznt] +zlkprjbo-doxab-bdd-obzbfsfkd-419[bdofk] +vcibutulxiom-wuhxs-nluchcha-864[uchil] +yhkpvhjapcl-ihzrla-dvyrzovw-305[qyhmr] +hmsdqmzshnmzk-qzlozfhmf-qzaahs-zmzkxrhr-287[zhmqs] +gzefmnxq-dmnnuf-etubbuzs-482[nubef] +ejpanjwpekjwh-ywjzu-ykwpejc-nayaerejc-550[jewap] +cxy-bnlanc-npp-mnyuxhvnwc-433[nvmyt] +jfifqxov-doxab-gbiivybxk-obzbfsfkd-601[epyzn] +pkl-oaynap-xqjju-wjwhuoeo-680[joapu] +jef-iushuj-hqtyeqsjylu-rqiauj-bewyijysi-842[hyzgu] +dfcxsqhwzs-tzcksf-aobousasbh-896[wkqxh] +lahxpnwrl-ljwmh-bjunb-693[jtoyp] +rnqnyfwd-lwfij-gfxpjy-wjhjnansl-931[jnfwl] +buzahisl-jvyyvzpcl-jhukf-jvhapun-klwhyatlua-617[ahluj] +jchipqat-eaphixr-vgphh-bpgztixcv-271[hpiac] +zlkprjbo-doxab-avb-absbilmjbkq-107[wbymr] +eqpuwogt-itcfg-dcumgv-fgxgnqrogpv-362[gcfop] +rdadguja-qjccn-gtrtxkxcv-791[cadgj] +etaqigpke-oknkvcta-itcfg-hnqygt-hkpcpekpi-674[mcoya] +gspsvjyp-hci-wxsveki-386[myuqs] +jef-iushuj-vbemuh-mehaixef-920[ehufi] +encuukhkgf-fag-tgceswkukvkqp-752[kguce] +npmhcargjc-njyqrga-epyqq-kypicrgle-444[cgpqr] +xtwtelcj-rclop-mldvpe-dpcgtnpd-379[pcdlt] +nchhg-kpwkwtibm-mvoqvmmzqvo-252[mvhko] +uqtqbizg-ozilm-jiasmb-uizsmbqvo-122[ktxvs] +nwlddtqtpo-mldvpe-fdpc-epdetyr-509[dpetl] +wfintfhynaj-idj-qfgtwfytwd-229[efudw] +yhwooebeaz-nwilwcejc-ydkykhwpa-owhao-160[skuyi] \ No newline at end of file diff --git a/data/2016/5.txt b/data/2016/5.txt new file mode 100644 index 0000000..d152446 --- /dev/null +++ b/data/2016/5.txt @@ -0,0 +1 @@ +wtnhxymk \ No newline at end of file diff --git a/data/2016/6.txt b/data/2016/6.txt new file mode 100644 index 0000000..6343708 --- /dev/null +++ b/data/2016/6.txt @@ -0,0 +1,546 @@ +bztzdacg +xyjtwqap +arsiwubu +cjwvfwtp +dpdymenf +kbedgnri +gsrrprxn +ojdxafjb +umujtcwg +fcpqbkti +hfhxzhdt +oradqnqo +pjfgpkgz +fagrqjrn +xjkujuks +iisbsyvl +narthccx +sjbnbbxp +ljaemgip +sdlenzfu +zhzlsmgw +sbdndyku +ekcktelc +vxgoapax +bhepszpx +hozlfbdm +fkjgygrj +keutuund +agzrwrzb +mgcucvkn +wiguuvtm +bnyviixq +ybsozbss +cxaqckwv +ulnksnjj +dsrvvmbs +azfnwcdk +hwtwbilm +lieglyxh +vpqfjxcv +sfwxiyqr +hqifjldw +icnsplkz +oxnqizfs +nzfwhwyu +ygaoadfd +dctauvvs +zmtgvtxg +wwzpvoym +cwhcqxvu +rmcvjkzu +yhpwofcb +nulkmdbi +kdppiqlw +awwysfhc +wutwcxvv +haivrowg +mfmsgbsl +fwmphkmm +mjzwenbv +fkvyebad +sprgbbet +mvndpyjx +azwiuvxc +jysrvsaa +dbdhmylh +bgtahasz +rxvnuzdh +abuhtxpr +sicbkalw +ivrdycpj +zhnmrmhl +wauhlrzq +qvdvzigy +exaihdzw +enmyjluj +pzbmvacm +kwiiicwu +caxviljd +fnpjelcd +sekexsoz +yjpdqfte +lbscrmze +hczfunor +hdvlprev +muyeuczq +eyfcvwhv +wnajxlxv +qovjvytl +nrbzwhsf +qgwbxlqh +djvueone +tjbxisce +fwrbhzrk +wesdwdmd +ssumqhxi +kkbxbgyg +ghlmwlkn +nwqprhnc +zothmtwq +xlxhmpvb +wlyckxvt +bmgdhtoc +zkysylxx +paoxzqpo +dpufpfkq +rehmrtqi +zpwyfvdk +kwdpimya +ipnjkoso +mxqxkokf +rsczwsfd +rqrpctlq +geozhplt +ajyatmjk +vkbycpap +pmoftkvg +tzjsvaiy +shoghugz +zbkifgyr +pbkpbmev +mlodbiog +ceemnpgc +rnhmanzi +mkbwwvbx +iwgnsett +utbnohwb +ddxtrdje +mcpjzqws +nrixbssl +tdwjqjgc +pyjyaost +ktslndcw +jseutzlp +aipejffr +iwcjyacs +lshhpbdq +gpenffaf +cukufmfp +ghwjsabp +tmxtxsmw +dhyfbhne +pngepnxe +pojchoea +gtgiogrp +xydkeazh +vqwnnjvx +azjcxxbj +iteaqkgn +nnfhcbhc +oqrlizro +nexqvoak +rglnpjny +ygzhhlqc +mikoaotl +jrhixpef +eikwdvag +wjinncla +ldkfliro +vkmadbkm +loxctpok +iicuxdes +utkriebm +mohvgmkt +fgsaycsy +xmvkgduq +rqhboixq +pgvrtlnh +ztahypot +vmiwyimf +jcgwncls +yiyusdvo +ucqjaxze +bxjgpahy +uginqzlk +nlaxigbi +fpgrsfym +bnanuhpw +uapzqpix +ntebfqhr +defunben +ructvovh +aqhymxge +gdzxxnvd +xauqzcfd +fhrqlybl +erlyajtu +xsqdriep +tjkoykqt +osjeelqi +clofyxny +lhwssjlj +fhaqhrki +cxgocyms +dbfqhwbk +fqpxxtdc +drxiflgp +athtumkv +wpdjptpu +ofqtdaja +fapibvfg +icohxeds +jgmgzzsd +vogagqfx +qelzldjl +qrdlgaqb +woncwuof +sdltdgrl +hwwvgjoz +itrqkyhw +slmehuaw +uxhtcxyc +lsrgmwcr +ligjqlcx +unzkbdhh +vmssbxos +plkfxaqr +zmmeokxo +rgupyiig +psqalimc +zkpdxmny +ctkzxvob +eumydwul +zmzfsjwx +vsdqjfwn +xywlcgzx +yfxinykj +xzfmavcq +uotgqrnu +mhgclvyn +qqetjpeo +bjvmylzy +iruxfcrz +jvldgohm +qvevmjjb +gbobtgrq +iwesuoas +wqkdnzpt +iqhlvjyk +gyqyoolp +wvacvumq +caqzoruh +ftpxpkpr +wvcztqyk +qfqjtgey +croanejb +cbqjdcyz +kxewlwwi +fqarbziw +pepzgqha +cqaeejem +rzezjxhr +ouzyjmdj +sxkmzmqg +txdyoycu +shuzdzke +tyblgetz +troqvtbc +vtkjnqzf +qkzksiui +yvitrrnb +orustrih +dckmcabj +rzkgzwwa +stqdalzw +qlfrvdfx +tbbywjpk +rgmptpyt +oywgrgnf +mczqsszo +bqcllnsw +ryungzti +hsdhzcsq +qlwwnjao +gebhrhss +auelxsel +ooibpinr +hvbwkafc +wyxniwnp +yuniddtp +lkfmtxet +uzvwegaf +mooyfrwz +zbzziowo +udyxjlih +husurpur +oufjezde +dhhqhhvu +ggpiyvdj +pnwosfne +dydoaomg +jigdybwi +jrezqnyp +uqhjltum +mqtfqsez +yebfabmm +vvvvbrta +uvppafsf +sllgpeix +ulgeznra +ifpvbsql +mzdrgkrt +xolsjkcy +azusnhor +hyfnelhw +becqefpj +epyokhod +tqojzdgz +ckjqztth +aweeqxmd +fehhuhve +bjrgsmrc +zmqofcvf +zfjfaomq +bssvmrde +xfdblalt +qhywbzba +mtgsvemd +wvberfyb +mjxkmqul +aytkyusz +sabuotpk +uacviqis +jolhhusp +xbjvogig +gatwogxo +taxbkfxi +fhvejhkr +mlmbhjis +zuezkkhq +cdwcwuvv +jmlprdmv +ydwyooiu +exqatqjs +eunwnucj +hkrnsana +tmfeymay +tcnogxpv +lnlrpnzt +vavbgplk +kjymlakj +tmlseyul +zfowvrum +yzvwvrmw +qntgqett +vwwqkqdt +xlfedyzg +ehxpxwjn +wmijbqgj +idftxkgo +mymigedt +bmouaruq +bxnbmvxz +jqmgqwta +idawdbub +opxennsn +jeotjdhx +sojzqnpa +xouarvap +yjuoninr +vqjogzjl +khzkueji +ndoiuxtm +wifnoizv +afzkeddd +pfyyvihg +pcsrligt +xnsxcyrz +gzququlr +vihfqqdo +lsbsitur +kqrkamdr +peludmha +dfvkfbyu +zscdzqua +lumijqbx +hzkwiitz +yatolkoh +ikbbpwdh +emamjtmc +eqioawcx +bfkrcrfp +ksntxvee +bnslkpji +tblktbpn +gvqfksyi +caplwhtr +jtcllupx +ployzvxi +gygpdyfb +twdijfma +yrzmyoza +gymlehrc +bppycuib +uftzoycx +uxokapsw +jpiwwboy +eciicuyo +hgyuxrfj +hjdhthqg +cexcqher +vsjolhue +odqcfrkk +gkypgguj +xuthrpos +nkzpsbqv +erofbehb +pnxcwqyk +gcwhkxjo +npbnukjp +qmshmgej +txrcdgeo +xttdifgz +vkqihmqf +rlaqduzu +hcjjkhxu +qctdznju +yvekncrn +cajupqki +nccbcgcq +byxxgvjk +zidpfckc +bzeawgwe +omyegefy +ythcjpbj +kcxohucy +wkigkolb +ntvrrpqn +qxcxwtuc +idxsnspd +nvivszfy +tkqlznph +vxnsojrk +kralcfwl +hfkgjwds +wuzgluwn +jwltajll +vpcbpboa +bnrrdjry +uurpkisf +qbjniyrw +einiyjjk +gwmmewnm +erxoycqf +uwdvnnwd +rjqfozcv +nvnjlmum +kuirunnm +moguesgh +luiabxha +xeuaetvy +zcijrciq +dxyawjfe +bxxaytah +firlwpxz +akepeyho +xneohwpu +wrhemsyg +gbafuemn +kzrlkkdd +xsgupnkf +xbqaoosg +dlkuzeqc +hidzsgot +emftjwln +tvwbrngp +habctvij +idzmgcue +flyyevlb +orhdasvb +qwgsvokg +rgpcvtee +jvwyfziw +lzikmdqh +dsyvnfaj +inrlcdst +ehzxjtin +pdnhilac +cvfbcuyz +vtcmfsbh +lnmgmfzw +vovbxstv +opvfvcnx +zlyaoifj +ziumzwqh +phtmspff +jijqudod +jtistrvr +oucmojll +lfjckzhn +fkaodyev +qgspkigk +ypstmrav +kxmxsxrg +egmkleby +ogralaup +klguxwmz +sdpqwdcl +pctkiaws +tvsrfgix +myyrujrq +lzluftpg +rbvscsuk +jfjfdstb +lexiumav +nyvrxexy +jioktbzf +arubkmmm +fnvimawa +dwncnkfi +hyfpywbn +wootqtvb +ktlnzuyh +qpbackvb +reaqetoi +edmnonic +nlpdmqfu +osfsybtk +asnfzlnn +lzsspajo +qanbwzel +lblvbkof +uvurrekd +kshqoiqw +oosxudql +orakdrgn +yotzryse +rpuhmeau +cqchkvbo +ajcaluhy +sabvtxiq +sctoapgf +ihhznfmd +yenlgcmo +dihxrbos +tfusfxad +sdmdfhxa +kodcikxm +cfvvcfum +ynnrmqiw +rbsepvwv +npmdblpf +jgltfwgq +guitdsvy +nfyzuhgv +dgjghspu \ No newline at end of file diff --git a/data/2017/1.txt b/data/2017/1.txt new file mode 100644 index 0000000..ab0d54a --- /dev/null +++ b/data/2017/1.txt @@ -0,0 +1 @@ +818275977931166178424892653779931342156567268946849597948944469863818248114327524824136924486891794739281668741616818614613222585132742386168687517939432911753846817997473555693821316918473474459788714917665794336753628836231159578734813485687247273288926216976992516314415836985611354682821892793983922755395577592859959966574329787693934242233159947846757279523939217844194346599494858459582798326799512571365294673978955928416955127211624234143497546729348687844317864243859238665326784414349618985832259224761857371389133635711819476969854584123589566163491796442167815899539788237118339218699137497532932492226948892362554937381497389469981346971998271644362944839883953967698665427314592438958181697639594631142991156327257413186621923369632466918836951277519421695264986942261781256412377711245825379412978876134267384793694756732246799739464721215446477972737883445615664755923441441781128933369585655925615257548499628878242122434979197969569971961379367756499884537433839217835728263798431874654317137955175565253555735968376115749641527957935691487965161211853476747758982854811367422656321836839326818976668191525884763294465366151349347633968321457954152621175837754723675485348339261288195865348545793575843874731785852718281311481217515834822185477982342271937155479432673815629144664144538221768992733498856934255518875381672342521819499939835919827166318715849161715775427981485233467222586764392783699273452228728667175488552924399518855743923659815483988899924199449721321589476864161778841352853573584489497263216627369841455165476954483715112127465311353411346132671561568444626828453687183385215975319858714144975174516356117245993696521941589168394574287785233685284294357548156487538175462176268162852746996633977948755296869616778577327951858348313582783675149343562362974553976147259225311183729415381527435926224781181987111454447371894645359797229493458443522549386769845742557644349554641538488252581267341635761715674381775778868374988451463624332123361576518411234438681171864923916896987836734129295354684962897616358722633724198278552339794629939574841672355699222747886785616814449297817352118452284785694551841431869545321438468118 \ No newline at end of file diff --git a/data/2017/2.txt b/data/2017/2.txt new file mode 100644 index 0000000..ff3c3da --- /dev/null +++ b/data/2017/2.txt @@ -0,0 +1,16 @@ +116 1259 1045 679 1334 157 277 1217 218 641 1089 136 247 1195 239 834 +269 1751 732 3016 260 6440 5773 4677 306 230 6928 7182 231 2942 2738 3617 +644 128 89 361 530 97 35 604 535 297 599 121 567 106 114 480 +105 408 120 363 430 102 137 283 123 258 19 101 181 477 463 279 +873 116 840 105 285 238 540 22 117 125 699 953 920 106 113 259 +3695 161 186 2188 3611 2802 157 2154 3394 145 2725 1327 3741 2493 3607 4041 +140 1401 110 119 112 1586 125 937 1469 1015 879 1798 122 1151 100 926 +2401 191 219 607 267 2362 932 2283 889 2567 2171 2409 1078 2247 2441 245 +928 1142 957 1155 922 1039 452 285 467 305 506 221 281 59 667 232 +3882 1698 170 5796 2557 173 1228 4630 174 3508 5629 4395 180 5100 2814 2247 +396 311 223 227 340 313 355 469 229 162 107 76 363 132 453 161 +627 1331 1143 1572 966 388 198 2068 201 239 176 1805 1506 1890 1980 1887 +3390 5336 1730 4072 5342 216 3823 85 5408 5774 247 5308 232 256 5214 787 +176 1694 1787 1586 3798 4243 157 4224 3603 2121 3733 851 2493 4136 148 153 +2432 4030 3397 4032 3952 2727 157 3284 3450 3229 4169 3471 4255 155 127 186 +919 615 335 816 138 97 881 790 855 89 451 789 423 108 95 116 \ No newline at end of file diff --git a/data/2017/3.txt b/data/2017/3.txt new file mode 100644 index 0000000..1a744e6 --- /dev/null +++ b/data/2017/3.txt @@ -0,0 +1 @@ +265149 \ No newline at end of file diff --git a/data/2017/4.txt b/data/2017/4.txt new file mode 100644 index 0000000..6d3a137 --- /dev/null +++ b/data/2017/4.txt @@ -0,0 +1,512 @@ +sayndz zfxlkl attjtww cti sokkmty brx fhh suelqbp +xmuf znkhaes pggrlp zia znkhaes znkhaes +nti rxr bogebb zdwrin +sryookh unrudn zrkz jxhrdo gctlyz +bssqn wbmdc rigc zketu ketichh enkixg bmdwc stnsdf jnz mqovwg ixgken +flawt cpott xth ucwgg xce jcubx wvl qsysa nlg +qovcqn zxcz vojsno nqoqvc hnf gqewlkd uevax vuna fxjkbll vfge +qrzf phwuf ligf xgen vkig elptd njdm gvqiu epfzsvk urbltg dqg +sfpku viwihi fje umdkwvi ejzhzj qrbl sfpku sad nawnow ksnku +nzhj mfudick ueaa jnhz kpy pzk +euiin xvl elaoelu wbdd xlv jtm nohtq gfdbgdg gdfggdb edtym +xfmkn wyww woe hwysuh gjw dtk utryasc dela eluk vmmun +nmag qfwe cwslmgd nlhf hpf +ifs sszo iod isf jna +pjptwg wreera leyb hmlbpf qcrbma ylgue +rwlpo jhla rprxvgs quguh pyybwgl qqvcb +rxtcpdy wmpci mpcwi vwvdzdn nfpnj rcsxinl itatg ycy hrctg ron wveju +zmkfn wip pyiz pyiz tnyg dvftf elks ezhotbj wip +sgmtfdd xdl sch sch yaxzh wphgksh knzrixp yaxzh etm czqbaa jldta +gnbr rnpd upe eeb sbq sbq oxc rwvugoj +cshk thcc emfxx emfxx pbtcf jpim vltkqar czy iudkac jhpcc nqs +uzbvx fkiuyk izxdiu yutntvn dixuzi hkyfnud oyz ynutntv +ewl mfns idy fphu yqccb pte unukirt unukirt fdx +lzn tin fgena qbql qycbdw gbtn lctlysx adhjfq blu aiv +ites ites pbxzunl vljzh lqgerta pbxzunl +vmk wjfzvhn pqkidze qfwh +tqprmc exypl caf kwikh mdyyljc pbo hhxxo skna +sqxgejb ejc fvup hpesvs luz fcxqwhr ypxof fxlcp pxyk xiczjri +vjg qcw fsyqaoj mxf jha feclqqr vzdqnk verw mvmvm pvdqtcd xsfu +fwwn ktvdh aecfv acfve yjozxwo cnujw bcgde lphnk knlph bqwlqju +uwwapm dlln uwwapm uwwapm +huupab ewetcte huupab ewetcte +wjs zipivpd klwafr ipcczg wbv uujstsw hykn +mgojdyh hlm xruta lbmaxit pabqrnp vkyigd ptpzr glin gfau pbo +tbwx baqxq vtz jwex tvz tzv +efopwx wfknzb ogaxln tqzrh jne zugd zpxikma +rdjsa arjds hqdldw fjrtl midt qjv jfrlt +dggqohj bidaaty iah lgmug wwmlbc lggmu laonaoq erkqrb tqolnns iygv qnonlst +msc glwn xjfnij itt pka irrafjd euazydj silo +zsyut znsht ldky zsyut dzcdft znsht +iit cyteu pib fgvrs iux ffctql pib zuzp zsbb ieoi +xxtwlu kqfxjhq isj xqjhfkq dohrs haovzc cgfwfrt munqon vuyexz nouqnm +eptpqgi uiflvd acj livzq ejtt bniud cjdh jkrcken lspfy tpxri zibj +zxme dpo fumup gly bkdcwxn lsly eglhe +uoshw ijoyiql rcskaa vjbqv roiinzi fppqdu +xuw vdbxie oypcx khxq xebjt oypcx uitqep vdbxie hoz +lrjv tdksk uebo wktebvx nlapmp udhhxh uliqbm cklyyf jlzw xrmdlvx +fosspck fosspck fosspck qyidyur hxnxmb dkpj +rmrvlms susvos idw hzy idw tjgxbc lhgqxr tjgxbc uuq +etjmbdr hwqe lnfwzni lnfwzni good eisci etjmbdr +yqde bmlcc yuel vpyplss vyvhho kslgiu lllhc jtkijdj uclz hfbqsf +tlohlvv tlohlvv bdqahw tlohlvv qavcqrn penia saafy +lvtzyt qffe eaikhv eaikhv wbnl mdkg mdkg utfrm +luowwk magp luowwk oyao oyao hsb yms +gnxply vsdqum nprf jik axdp ariqjpc hjqcc +izbo nkqkb xpqg pgxq qpxg gpm jxbkvu resj +hsgyxar hvsl ner zzmcn lcpdvqn ern +rfjlhu xkyh hafs cvvk drg vjsk mymc iab ycmlubx kpwemiw +wlci qhhpr vhpr oyrili cnynh sivdso ldjya wilc ioiyrl +cdfwd mbtk sienxui jsmxzo yxbeyl bybtc covxaq yuxn ktbvztl ktbvztl rcekjhk +ptenhqv tzdt phetqvn mfkdz +hmezeak pqvqld amsih jxqacc uferfyh nfqjsz rtuqdzz pohcx qia cpxho hgpqs +iygny dluc uxqz nlujm xkdtlm xbdgepg jwn ohl wpfll +lnqf pcxy cpit enp zpj lqfn oowgw yoxdff ohvcfcf fuvz qkpmb +oydu jlscilm pzxen nmtdngu tslcupx ntdgmun uztpx nlhh jqn llsv +euyx epn gyvg cwtoe ruyap yaurp uryap obbl ovo +pgo irm ksrxe qotuygd afwh qfhzfsr wafh dqjbwce dzfo hew skrxe +dpvel dpvel ipljjxs vrrsob iakey uheuu swxu qmnmn mpjkb jqrwfmv jozj +sempz plzxqe qvyg sempz fejux +cqgqvg zhqir rqzih vyu fmb mfb +uejl kjh ayz dzimg yzafvg dem vlogg +htfkd htfkd hwykmm htfkd +oxvgq wtai rkyyxya ldkecdv +lvlrsu rsullv pptnrwi slvulr vxrk dpzti +gde ixwoz nnsx nhc nzi +dsadkj qtgya wco psyondq jayad crc lswwm purrad pof +nocibgs hxqdejv nlqxdpu dvzd +jfaws aiwnjm tqjpgs fuiobz gwnemv hjevs xkbbgiq sakgv zmwpkuq grjllw +xrr jwhtchs boaqkg wjhdr xrr +vyapct tgw juzgwkz odddvof juzgwkz +unuu kubdd dxr drwg +qpefzz iemo fwa vhdcxx +hseqy copss gytzub lxi mrxtwc hxqqdfx ijt kcy tafjs jit +uevse rrq zmwyjfe xljx lhgnyzt rngvwqd +gfvpyhq xpdhind eocgpiz ebs pcmsgjy swni iwns thspnh yvbzxz fgb +hxr ehw ekfd ncxcs gxjmd oqszdjp fgu gwuoafw zumenf qltbw whzuxov +wfc pawqo pim jxgt dtiwzil hdptivc slkazm htafjih hzheez rkk amy +mgoatiy pkec ddvwyni zuya aqrcjes ubkaeus nuhhad upe qfem bpcc +rmyeg qfq bia lzk fusqfb ltvgry vggr xaxi avwdkbg zhlzt +zkjoeee dyi sxdwfqa irqljmw gek dgdb mrakr ddaznn zlh ajzzacf juv +kmqcy pohbej hujdgao rsxfkn vlu +scnpa hvl cybql lvh lbcyq msw deqqb yjpsndq +ndhjooo dpf ziey jtjlc eesag ldhgoif +tysbae wkpst kjz stpkw sil yetsba +ghvlfq flhvgq tgkjie gqlvfh +oimn vlmsljl ocala vokhrs odyv msn dzly wcky +cfjwmh rpsdor bttnkg jxenm mwdk mer jgsusdz cslf +ialvxk bvc qjfikr caw puhmmfl xpmsx +tyoey egcf dijg vywd enued uxkshz nav bdrn hjugffi iobqwiy +eykhxck shpfjhk vlqg alkenz kuj okxs oeth mqbr nfvqvkv xfvyi mboo +zbw curcajm mel jxqcw mpdscxq rhadty zrddeh wmedc wkcwt yvwm +iee hzeofmh pqlkkb azlam fpj hzeofmh ripi +sawaqek oyoiwtb npq pisadk nnd bzgo wiqme lxnvn +obqx ffiegn obxq for xobq +zwway wwazy aqxg gaxq +ebssilw nuscati mofyc sogyacc yujmdwu ehxsx qcaf udvoo nlcfaz eov +vnbe wtzzjn bczyxt crmvas zujy kukq zujy kukq +gvltk kgltv kglvt zflikic +hby pium gut fjqn sksoqyq kcliapa +tbonrr prf vga jqgw ulze ukfig +zafixw hia omgwoi noeiox fqbket iviidgp bebune kwcuotp slvy wcx +fjq cyecn fhxvj byv kojvj iaqd aaxva rkogp +vqbbt sjmr mxu mxu rlfj yqhtzv cuar yde yrs sjmr +iyxiyp auepgw dtpbyvu thuoai fpsfkpn bemgbsk lni ozy jogp xldyvvx fpsfkpn +jtha ibn ahbkh xzxkei tql mycvmyh ioyw +mpsc pvdiuu wqixxlo cqwmlrw cttoz lad +srl xxlnofu dqf snxd zjlp htxzd +fkv berlbyh kyna wkme qjzgh thpw frup +irhreaj udkpbza qmgp ormlipa lbyuc +empizc apcb ossmtj awk ttsgi bfoymzd ftx jkicph qqjv tywp fwzfe +zaqkd ysn zaluvs rljdk ast fjp amjqr uabrya ufswzjg vcldkxt hzsmrbl +qvy tqgnwj akibr tfjevhv vav +mhe sxg hacoa emh kasf hid jklfy ijk dih +qvwbenk akdctm jztmsx aqvpodu vmknns nck letcrk poba +lhve kkvff iiixid vtsun uvgte mmlxk pgd +gktphd aaoqwz lrvsuw ofcyvmi suvwrl dpqiol wjgj uqigjx +tbp xoc lmz dyzlvp bjleh pxj xjp xbil +gpzgvj tctszm tctszm pnp upqtmm rribg tctszm sllsbr +hpm qvjnd lyqg bybpwn etz pwfigbg uqgrvpg cvniubo +tpowus bdncyxg gmm ebfg zwoue izgkwtx gmtfeg xvudp xgmjp atrvn aqgl +wlrxvo wvonohi owxlvr owhnvoi +knyo aiixyi sjtqb kukhgv qkj qiuefb syhfc aoana okmot tdsmnoj eyzqjn +szhto szhto szhto fxpsavu dtcz hnwqdvk iza +poykme rboczge tuyiw sxr +lpgbp bpmf aiqy exzqt gxdoow yjp fxwdmt eoklc jnps zbnbiwr ppvl +huecy jjhyz pwcea ffofmj tts +ahbmkw brz xdenmw mwexnd ncdxgf gcxnfd +yhfnra vqljz bkyxzt vhtsyde ysaxt qbw +gqhiej rofhmp soeebdp rcuiblb rcuiblb rrnh nses +pxrwe suil iihzf lhcgmfm mqasxh ttpp kqitdyf cuabaa +cxl cwsp qyseogj dimvv igsoxu ncrexla ubrvpp oum usluv +rkmo jqqcdjb mobqcta pbcmoi afjlh mork +nmohoeq fezpxh fezpxh yec +yxlncrt ivi dajo tjpim tjpim +hzhy rcjs uhyvwz tdpxlqw itoiyf +ded apfmhe stfk ugyujv drwks zagqnw mbbzmvc aoupemq +iezre wivdwif xzytxe xwytd vpnol pljx aot phln ztncw +ozblu asda tkxh xqe pvijnl qwwh uvp bdhtgjt uynwtav cdz uqmvp +eukgtsy kdfb bdfk tnv dfkb ewdemb +rsf cxnk cid qsa zwk oetnggn +fpq oim zetbmlk fpq oim xgv cbaj cjrqm +phgldt fhmkc efkztj qidri vsv bvjf lfwfgm wfuoln toamg wfuoln idrs +iuc rrdnk rrdnk asqhnz qxkigmo eeoim mmdtgif akk +rfvsyy kopfhmd tnv ibo demeqm gxrxw hwk ukorln bep +ialo eogif sxlj xfegx nanch egoif eymwt +kttrpjq gbnyiat kptg oarewx vkmt gbnyiat szyokf +tjll xviodi tjll efc rliugl wfbbpq wsqvdli jur tjll bguqyu +uecm yzjhn vqf labnc xyaksj +hjtef zzq ellr wtrodcg drwqo ernt uzx sqiokam +izmh ddutl bdzft jvfthh +ecr xqrp qlxstu kgprd gqvtwni mkughf bulabe bvoxkx +jwsna vjwq swkycg cpp dvmyal xotxviy qkiva ffa eakwp fww yirri +ufnl lpuxw rjki nggh ajdkpvo oeuaemy bjisma vsjzc +ctxu aavlw rap fzxtcp msufn fzxtcp sdlaom vgvdvpc +rftw cyf twyxi orifavd +ogiht ertz wcw jnqdup phvp lbw +tplpyq jeh aobamqe bvaim qptac gssi mkjbaj +nmklyg iitx iczojzr vjspqb uooky uooky hjk +ggnekbb bnebggk sepzjd fvqfgr +wnfwrn yaiogv mbusuy cpbcgs thjea +atndjc dbjgdz guedeay rasa kfhame pusuu dbjgdz +xivzyml xivzyml eqsykxo bshvz xivzyml +nfe ayx gscy ylyp oqyl isatnpx poaelm zsrw dpd eyrdjpq yllk +feqktz mlm jhi yxigeu xzqa qwv yquxw emken jgqsp rojfcu +ruvfcud poubal xswer hfhpyp guf pzgzoq pzgzoq jwgxafi guf kqzzlu apg +rxwcsdc rxwcsdc ywu rxwcsdc +dmgsey xrtx wldwyxz avi +yxnqv ewlx fvif ozfcbxb zqapa yudqksk wlxe mjpvgz +ozoa ozoa hwkbp ozoa +qcv drtqn uqv kcsavgn ybzs tkw +njmloq wapa srm srm ifurca +ezm ccj rub yuaww xhee liikjee kcabgic sbgqx vrpyo pzmesdp ksvv +hycyne raaksm nylsc lcpgn akasrm vxwoaum +zhugs pqquitv bae lyozb fhij pcdcc bae rygsgm pqquitv pizz +oxx bzk grpis qiqljwh svkn +qcq qqc fzgn sqg +lclad motw ukz zghp +glr okzfs zgv ygsvv sauuog glr amxr vvmwmu khy eyh +ukpxpy rgnqyaw ncm coeblf +qdbr ortzo spvnrnq uomtj vffbeva +miwar bidfxp eibo qyee +yldec ghwj mxlemvi imac klkvmg fekxhp kevlzfr fcgnoq fncgqo +hlm vlol qdic rltij nlzxfys rzpoh +krpwspb yrosr hioqla dbpgzgu dvkvvc vvdckv lcjzb qbsbr acbi rtnk +iqtvk jcldzuv smly whmnte mdwlse mkxw mfnkv mkxw kes owkfh +iwcjmkt rnb bjcdjl furhzuu exs +kjwu iuaj ixkujoa jzeau whpn +tvj zrdy fwsbagh zrdy czuzum lxotprx wbohaai +crsyzod jouf osxntw iwzzie bodu scze gjxn vgxvqo gjxn mmthykb +dabjfb vjqz cvr gsymwoe qzpusj twvwhw gyvlqd kdrdkzm bdljp cvr +vmswdz lgjsvxz yjkgqkg tzmjkfp uzbmwxe kuqa dzomt hep jjlibs oxvpvq cix +iqgd btwdjd ncdrovj ltxqc orwhdlo orwhdlo +nxro uxj ovgha elvzl xmlzssr wonimvb urecfx dbfn kope +tbes cgyh fypswue fgxjqtd dxdrfm pzhnaeu kugspa +eouzw qrpokyb fyhpb bcvfvze brdwey gpaa fpqutw pbqkroy axtc egamku gxk +xdrovpt peeww wkcin suir gvrbix +hgsjks juvod jtii iijt +yaw hzifa wpagkd tgvmc iru yyeuy mgcvt fhiza +lsk lks kls edypaxo +tjz qjs mgoyd gomyd ztjbex nprwk vvw rtjsq quvf vuziqtb oygdm +kftodz xua lyxt zfadf fgdwt zfadf xua ehwykd wniahd mqoarg +qgiapb xptk iscyf zfspn qvrpva egufqte zfspn hksw xwxrs dkdruku vegfs +wqifs wfsevg iwnjjpi oajju tkvhpl lemuw +rzbmhso pbvb lfgpq fzjwxxh pqlgf rbhsomz +ufi aiyd gxozgx hygjp dtma uughdc ojumcf yuadt +caami tqzkvor tqzkvor tqzkvor +vhtnvyx myxdywi mwpwq hjxadd qkcj vvytxnh dmbea +jvjtcjg mbiwyad cup xkrfk puz uxpmutf rjxyxyn mfchc +ocrak zprfbgu pjjzl zoehfkm xqn qki uxq tcv emknqjp wvmkas +nxg myr myr vnfzpoy +gwu ezt kbmeouj sxue cxax gcquz ieegnal xecusia vxf +xermi xermi qporwc mzemns ticltnz ddpsstr ddpsstr slgbn +xnujwtw bvzv xjwntuw unxwtjw +tipo akp fkmcls wglmjq fnrtsv +fan dfbya qrp lcvxqqu ldpm gucmeky mrzy fixaph rygneb ocm pjh +ovtrqs ujmbnal geihpe mijhy eewuic toaxbp ipy tvb evlmrtd lbujmna +lsmbwwd hvurk ihbuek hvoyq erzomhn gue lpq dihon dgzvst +fuoshq hfrzeu zfrhue ufqohs +icgwnbi gmhogxu gmguohx toixb hfwj haxlav hbe jdpxeyi xtgfi +vfakk ioil hddqu sdztx hduqd bmiuyr vmas +mcvjjhf sfgt sfgt lambvp dnqc pfecquk +xgr omy bmoadg afbna mar nicpazd iveku zdioyo +rpipon dwg wgd pironp +fkyx wjefuy mfesst ztlf gnnceb rsbvuk ckilt kliqnm iuifcvu +lmgzx oknwr wmttry luipa vcttj nuqdmy +iota efrxkk daqzm certtoi nnvqrwz qrqgza tllwp efrxkk +alde wqmdjy erh txrtqm zuljg hspbnrd pvsnebh bkue pvsnebh txrtqm txtthn +hgggm rswwfpj uctzrv bylqeen dpbnw ostsjwn jtjiyuh ofxu mmmqlg ayhza opbgdrv +qmhkh orbeokv agosach lhujcju jzpp wmxtcy jcxglu iuwmzrv xwkgz sxlzld +dzcdm lwal xpujjm xpujjm lpfojz lqqcon qmqrg +gmwugq ceslt rxcogaq jwkraq +joxr brdy yixlou brdy lnr lnr +wbut pxlsclt igigapq zeacg jxiezn hvws wwz ujpbl fdjtfjw opod kea +tsodswf pufo zqrt zvcpu +nyy mrqmg zkt tslzsf zkt +hxywv lbmogd hhv npyzgjy whfvv mlfqjr ggjz owijo zmesslo gtvizw +xzz dvpzxbd wxwlp cye rcqpgrr gynzo nhy gzpk fpfmb +nhaakbv iazpdc yadqbe kmqm dffq lidnh cegjosw kgd hwivd wijj +cwmdyf huoy awihev qav cwmdyf rdwck hahj pesfyk uoju zrirjdu +qabl vwcwbb phnd xnp huuzwxl rukbp kod sfu ngcvgrt buncnfw +regyd gjzfwf hpuv zmm vphu gwffjz +rdf emo crsoeo bksetj aqfzm pphny +opbmboi iakvj ymjwm vxoq qvox yafk zkch adlusz +qhm jul zasv xhu qnhjwzx +mjmyvd mezfuls upbdpzw awc qxta bzrx tjpjmj dxfyewc zorm +bko kfokm htcpoqc liuvj xhmpcu ccqphot dthvo pfj dtxpmu xoocm cmxoo +kxv eenns qhpfsvo gqoyv jzjho aoscl fetug agxmfea aygpt +javmegf jlmt epdwy egfs hwv uszcqvn foixpz iukh dbuhqgs zgb +zrex zrex xtx ydan maomp hqdhh mfvan broh wvwhqbu +phatsot joipm pmniq arqzmbe vurl bgy iwbwk oyhngcv vnzbzgm bgy +xprufgn vhca nrs abuh zwsxmhk mqrj tyslsij ojkdzom wepxg koodzv ypvyy +vop nnpz mcod mlli ntyhz laqztb kauqkla gmrfte pcuhaci +vrenj lypors prknc djbdkzv amofdx +lgig lojnrw obusoc fkwe ggnv pydcraq bvdivl vev mrojjs rxa +qeg tap jocwlsm vqxa lmjscow +gptlrgq vdasm erdc oparmw +rgbsa nacqhvm pczf anupcp upudwgp +jbnobi ifhzrd ihrkkf osw wos lrnwv +aiuntpl fcxpmz fplacs fplacs tipm gfotkx +fsbnd qoc ozmbi rqv fmbxh tuso kfoxvjn ocja zzs jwplx +muaklvq ghozoxh nwxbh mgoou ufptl ouhh reyuf jougckd dgprag +gwbnqwv dtrd mkzxinl erxl zmfa skuu crxmp wwao wwvdpk nxbn lglzy +qeejk wvnypc yfzyfcr eeqkj +nmcp fmkgfyi grfthau azw +kkallxz rjke ukbt ixkhfb bktu jkre +pxj mnwe djrjde gpsc enqz pdbydx cktfs jjeddr +mgplj yyunujc vis odee ccesa yyg yjcnuyu doo utse +flyy juvxomm vcdcyva lfyy ozxnuzw bmgns +kmsypi zpbyiv rrycnb qos sslwyeo jgbyv njltzt fuwk nwfb ozcf xqnf +sdcvgmy sdcvgmy hzv uyq sdcvgmy +fyox vmgxahj ywaxbmm ugy ruwc mys yrjwr ozsxb vaq +gjpyc sgdn kgm fbvq cziui nzy bwu ezjkkus jrag +kxcr tgjxss xkcr bembjv rbbiw bwbri +dcz rrhvdc zbonfzy ubjt +rvq yjnzswt vatkopb xlj dwxig dqlt qts iva +lylclc jptz rbidu lbt byxk +lwre vwriwh afixsi vwriwh +kmvbflr nfptw fbglxh pyas dxmn hemf segaz zrs +dvbey zmj xfoi bma udtxhb +yryng geiwgz bbrvjp ala +olzicp olzicp qhhslry olzicp +exf xdmwh xdwhm nhjsssn rmlkdb excguia fex +xkwgeso htys sjdk jizciy gjjl phgqdjh wzdb izew zcrumu llxfp +frkohf oifsm aisebkt ijsfkot ukk +koqf xvoior tpe erfpnp npnx +sneysk nsxki wpmhd mdor akrpvgz moicncj sbsj owfhj exw +oqqbvk xztx gtxlms icmo +lfy ltq dlzqlvi ovbrsa gzm nhcjq umbtgm nhcjq +iuopdzq cqaeuu xuzngq kxlx laml slvvr frtml tvioiez vyoomw xickbqh +ckahov mepeku gtaf gtaf +tlto cnnz kzsbkjo kzsbkjo +kqf comkf dvrkyl jdsqi rnwvb vxvd pok +hncq xcx yuykfs egrruvw yqh smcou +tywyq xeq cix yywqt jhzptci hybcoe +zsw zsgot wnu sumd azmuos qawjaz rpf zkxgwdu iom igh +vmxmelt gll ysbbt yboqoyz ykdglk cnypf otn owsz ipn epfeka bkmy +wxjpce etzyavi whb sxzft bfu dgwnbgc nfw sxcteis qqpk +kofv dgoyme vlza oxhbo lrqt uic tvfqiyy iaqm afnk +nsmpg wkibdcz dxbw tlxzm zgwe nqwjji eacbhn blk +shlgws eencr rtufah kjyvqw transt ecsq otbf +obs xsjceex ffqj sob djpq jcda zlskve +rfqtle klarp mtzrx rasr eisqovk rpt vymibt zwrif ilsnd +ldu ffd ldu tizfexr fwpmyan +flxso tzec pzn flxso kzdouon tkvkj +tvd arh qywql uev btvnpm +wtwx kzafvk ybyzmhv mdbrphy vamlvr gbxhod tyulba krcqj ikotmla qfhpa +bnfin ebngj agfdfzu rhjtj aaqzh fsyp nilar uwurjnu hhmso hhmso +uanmesj vshh syosjdt xkormf syosjdt ifvytwl qnw vshh jkg +epyzcn pgdxgye lecnx nebg jzdhvge hfy imiyft +zonbcnv vuvg sxtuty zdhmiow lmud cuegzg +bxgft mxhzrh unqd pqpsnce khykn qlb oujdxpq pxrd jzxjuxr tij +qss mqirowz ijjswjm jjer utwn kuedqxx bxshuok qkfag dmfwcr +jgln zdohd xitfbge xbokj xxeuv wqhvhjo erg cua fhc mhwy +euo ousht ipxt tpzq vnbmlo wvbjpb yjg bwpjbv nzvsea aerhsqv +axhmi bcf zdx vplso xhmai qsk psolv +ydnpmyo pfba zmo nat ykwxvm ydnpmyo rtd uuvqqr hcfccbd rtd +ytp guw ydmyf rww oucmpf gemhpj labc +edpbefn awgg qzpe aat cupig +mmi ghdaoh ibx fbyj gge vmmssen nplt mmqcra omcvm uwa fxypxfc +kjaw mtijne cfmsigd zwcjjd ajxjlqr tbp bnilc +fse ele vcsyiv bfe udny vznrao mgrjfgw +hadl nikvvpf gmdg bkmgt ugj +xkis qmr cgz nresp gms zrii coxkke vfsqiil +wmicbf bkk wcwklfg vpcbeg kfmjab vabc dax tnao tnao fvvzeyq fqm +bct tvj tra soo stqao kqua ikupoy wulcu nauxkkb pvqxy bfu +wpz txdduxq gaehfki kxo lvjzpxu iqon swr eyihl nbbec +fuphnbj bdtz huwu zdtb ilgzpa uyaut vpy viff tuuya +cvusbh bgy apsao qsupha +jtzlbd ljfvh wkjrw xsah sef jygb pqym zbcwok zdmug qpym +hbibuax iorqc dqjrs daeb iorqc qiw sagyt rkc sagyt khbr +shz mgn pqrdbm jvace gfhnq ann zosq wdwzmuf kswsg dzt brlavyo +qiw cdvwds dckpruy pybjra lfvgfn cwj bajtud pojehb rzrzvwe +txfyk zkgeeu zkgeeu zkgeeu wskcv nccoz +eettnxq gbgr uiqonyz wqtgs ozfjbn gbgr +svd thmmr rbbtxn sxkq isxlnhf tamdlbe bqrgvu nmpvlkc spko +qmn rspbjme ikjddkq kdb ugpegi egipgu +ufffijo revqpep zfw kwd pnya blqo rnntzx anpy +piaeyf vbeye uuqd vbeye +hamd hap ekk lgla twto +isniinr crz sjpmfxn uskwj +lzeofk tavbq ijcglqy lvy jliqcyg lwlip +uhyyyw itlrf tdc iabeocv jzwnjh vqxll nefze pyrxmx eispxnm hzlksce +ucuh mlam bhyej rgzkew ctbo iswqnvg +ytmb toppqgp ytmb gqgpr gqgpr vps ebv +eavn atkqltv bjvojs kaskr vqltakt uiktr xglc eyb rkkas fhnf eaorqm +jmfipc ujggeh hdxpfa xtab ydkibi ycxn ujggeh icheh vpznael oprbf +xazqxg khlemu awh uwz vhnixk vdcty hkk +gcl kayi hfozask grpseyn zviy tzoum qywnr wqkhq +ctrrcpw wqfbylp wqfbylp wqfbylp +gtk lqohf hqeaku mdj zrfkmxn bcqgf msing +luhpel kexokpx vojap ldaexs bbbtz +oimnqb esg zyjmbfh dfyhcf khpo zjtgm yelztbs ugj zjtgm mxro xyfxpk +dgtsu vvk wwfugbx aai zlxab beyxcg bpx chc bnxui +irrwbo orwibr lqt qtl tqknh +ihjsg ihjsg powwy pycyqo ihjsg +xdcu outh fnqrc eihkss bdylm sjunib eihkss +jpnw ycimse rffu ismyce uhxl feai +yyodnh dvwshkx vulh pvxj ydhyno hyodny +vuuweg pfguvyu orhei orhei wrm amkr xecja lmnveth +wriwe xgtnvj tdmxf gadtqh bezjvz lifu +euft tchbm xmtlwji tchbm +cfi zudn zludl pwiu axe psed +dbtfwf ajxcudj uaxdjcj dxuajjc zouyy +fmycmej bqhe jyfecmm kkrv kcdvjoy +grtb uzs rkxzt hivhic brtg hwyc lsl iivhch qbcp +ymn xfpka hqm sldz dblvsoe +qrcapma hntgmy difrkpk difrkpk xlsph +flvqh akcw boxrz ywhq boxrz esnxzv boxrz +zrvh jskaw mfs fkj +abveb qxfnlfq abveb kbwiyvd abveb +pgarl nbfrenx rnxgx bdlkix liltdm dzcokeg fubupcg iwp xfayp obfaz nevfw +nuhvaci blyv fcsp adlanka sjy syj ysxl +avwakn dkoya yzuszuk lqrr oqfyd dmgbhd lqrr +pxa mcvtoug nlweso yffqc dtuagcd ovvrkz ggfhw wnlseo bpqbn ohxzs rxzo +djkcl kbgyfir ogquot uoqotg jtmyd ohudvle xrnbt yvsln wykqt hntc xlrhqrb +ykt tkxfmd exas kty +zebstke msbbndq itmli ubexmht vekvd xbmb iajbj wac sta +ptdg oftwo goiulah tfmsrqs jffxvnv ozaluj qlhqjy wyffa +xeq ezmlpw xgno xorvfo yzq vwif wsi +hdove hqbzhu pjrxlj uafuh rizlb advmkca +jzk ddoisdh tfjh yuvikps ixpkf hnu +kixa djx uksr ogxty dxj clda ukrs +xgiy diwbvn vphdbg qnelyz tqptqig lenyzq ecsswj +alx awj fpasmmg zukuh qaanvb too nvskuk too gnria +suo suo brw nazq suo dqv +tan uxiz oqa xyezcd lsaicjr bosiak rmmh +bidpomf dimcj qekero wbrc lewt kmgmlao +bciacj eye lxfpef cbdshd dhdsbc qwnhil iuokc +zduefht lrgfjn nclksm wpjpjr hkeqd oprsjcw +chhdr bram swdfjr yikqra xkzsloc otptp agec hhdrc uofljf toppt wpbyrwo +bwlpb nishr knnrysj bvr ftnb iedskch weo +czo hsfp wblh cru kzalun intt +jvob rppz rkwv hgyhrqg +sgo hued jnygge izf ztan kjgpcn fagff jsi ijcxzoi tgqjjp tgqjjp +ltjq zidjy rfmy yevuaa nlhfyg xytdtle wsqvzzx wfflboo nawhv golhf xhsti +bmtzlml xcbsquq vnfsux voep lkss ioim +ntfffh gcncwu mmymn wkwlswa gcncwu iaeyumz +kcgdm rbaau cwsoya pznnnn xzz zbbdlhw zxuelq xzz pjeq +xrmnuct kwvykx khxr ioua xnmtrcu xrnctum ujq imnt ecee +xjsgx fby fby fby ggtpgdm jqvuj qshewki tkml ymsazcq +sdbyhwg kewtrte novhdcp wbuaoh dtytgtx zez whygbds hpg +tjvaqo yrycda yrycda ldbp yrycda +kloi tmsocmx dza sqtxc wgevs zlevs vtm +ftnx drvdm ryjfdgw nerynh cwfjpa mddvr +wsqjyn svg ncw aesn hvuq vybajti aesn bql atxhp ipu +eye romgxj gumuke jwi jrf dtt kcj wmg waw +ptltud oymklv fgnmbc ete apanovb vpt vyospi +clkguhu rbxs lxtnmy ferdx qbmrpg pvojnj zbcffbp +itngp dvtlq fzxp cxrf gbxxqp aafls pfe bpxgxq +nmikrui ddsq srfilr gnuvghu mwnacz nlbdm zcjm uylgev umzu mftz nmikrui +bow jmnxyen bow hvz +lksibxk lefzh lksibxk nkxsi nkxsi pldvhk +osjlzns pihvr zpeu zxjgjb xplykfk xplykfk +hajmfss cardd kaddjw uicfde taue +rgwdjra sgifh ggt mpzx usghkos oob fvzx ghnyxr sblcif +dtu gnihpry kjdpiny xvax itmluk fxvgaap bei xuq wzcy rhb hailtgo +wwob ueldq ueldq glxc umimwv onu dxhmhis ebottoa lnysfiu +zfbyi eyq etaj idpbkf +qshcfjb ozzqigv raztm ymcv sgivwoc kightf dcaglk udah fdm +jmxr jrcnck enffwfl jycc jmxr cylnigo enffwfl +bkslhv tykqw tykqw mbeqrbt tykqw +vogf nhqltpt nhqltpt vogf kpc +ryayz ddktu rfhkmx xok xninjcm ijcrw fxu +cmezfj zaamjrs whlcuoo mug lcaqhkb ymkdci qexa onhgk pgy +hcrcok qri fki wbiog ptj pmgtdt +xsl mpfxwbz bmzxpwf hrysu bmfxwzp xfja +gybzho ktokndy rzkbr jcnp ahicq weccg pgrodkt che vaglyn omhmpo +vdv bngjox srs faymg xrmf enseu aygfm gvsd +nuzi xodkbag eevovl bfjuv nuzi xmejqn +kcswegw bpa dgil insf insf +stg tklrut poi knurfpf +pcs dgirfie yep lvkfk ype hntt athvad clfybsq ofjhegj epy qwawns +wjtpgd wjtpgd vxnapp mwyfsm vxnapp rvcswcs jksa +ckzslrg wdzeimw cqhp nfgk zgukvd yyt tra erkx wdzeimw +hsww avl vkmzej hsww +mum oczj jfew rag zjoc wjfe yqynjqt cbkcsgo mri +vjhfqdi vjhfqdi npfa pzdmy utlyw bwvbfm nqdv iiap ygpky bwvbfm eocya +ewkqi ckb yviuro mqz vtrdam yzkqzv ppbj lhmj blkafo juxvwke lvewc +ljrewgx sutnb hfsavbu jofr ltml mjzkzz nmjii sutnb eonegt +cxzv nepyrb wmejdo vwqi aeqys +sbx fmne obzdz rdnfb gmb sbx ykcae hbzom ncwju rhpiao obzdz +lsgfun cbmfjwk fya ktzxbwt +ica bpsk bwjwkp obloxdx uwoqdo bnnhjuc tlsx qtaacp bdooxxl jamy ade +psus wmtkg ikvfx fkvesj upqlhfs ueje nyt abxvo +adlbl hzskbrp ooht nps +wtcgnvy nvqtvx tvgnycw ntvcygw kkxcp zyjmpbh +xfxww xsddqe ewvmgw qxqwy wpabtz ppe zuiw zubcc onaqii +kkaeec xhcakul wrrvi dtlqfy ahqdilw bnt gwimw espaivx nam yfv +lxz jtc nkwgz nbgsao olsck emtltf xidwcvm lcjxq +eav dzh hnbp hnbp yeg +egaq yvat kavsige csar zsi sptai +pofijc ibdnoe caoazp azlnjk dqp chik lowll iby gpvjv ohm +ors lexk zcneaj rmesx jman uqkb kvkq zfufmn +qgsyzxd hlm juerg ortfzw hxjzg +fxwy lcoc fyxw pzhynp yfn zdzrz +datmws ckwghgr gbtyf lqrpfgl mbgpd dyjilr fgybt hxpg +mxw facxdnu wxm urltwtf qfo wtpwrj +esa srypq jauwv dpm wdgqq hrke icvudq bdmubb ellhfjh ttpjjd gxmg +gvwvqwj cbzzuvj eckube adqinpa djutlue wcpw vrt ucqwu ekruwsn +fhj fst zmtb yhwk dxlbozs fcb vjvuxin dxlbozs rixdvu +egfoep cvq icd prwj icyg +aojaa ezmcuf udreyi bja cyrtpl wjl +gjeka bsbufp tbqqq vbmnqg sfqtgac odhq xzsxt +yse gujdr ugjdr sye +tax hntqw phf eixjwfh qkylnu nkyuql ugsuj +wyh egum zizhfc jrq htbyug lop dsu +exh vfdoosj ajrna jbiaz lqsgvks xklqgjv abtmdud +juqc ormfa sab tucsfln detqfo feg kifsion juqc ovhra +hvcrh oddhme omzmu vmy she xulvfa fecmgi +ayo gspge nkmy yblsj lrsre nkmy pwocjz gdexqqx ovovm +acy sqcz ijl htt yjsi rly vea bck +bniafe yore xnh rkcfd hxfuzw xlr nkzmmcs ekwggiu kgoboi wfuzxh hwfxuz +weq crkeq cccphe dtozviy kzkkdr yku cephcc ctq zbau dewpi +vfla rzpl bnmx uvggon foivrb fval +ziaove lawkpdn ddwl sxj krroj rqmffxv babb +bdw dsifr kuueet hugddwt piz dwb sjixveg kmsoknq +czl feyxf soyvbj tnmpjn kklwi akx nqepntc +nrmhc tkkn jrxgc jrxgc tkkn +ufzn mrhiapi qrme kjlf qrme xpp qrme loyzizz xqm coli +qvaoye mysv ydfxr iixrw +dql tqarux fxqfn haoinu lyati xml +kyve obatly dgfjt fjz sqrz xlbst lgwlt zovih aepy otrpl oifid +ymawam afgye lcnpkmv feilfws vonseh rxrdco +tqij kuawg dmova slds imdtb sjsafo ffkzzl pxxenva wuakg efbgx +yrwoaos vpw ijjpua jnbxl sev yvgdxzr mpqa vpe lboh sev +krwdtd uglxtcz mljcgdk lqj fgpfle nuui cqk exr nuu oyn +dwd nwt idhclm vgkh rpubq wybhapp +hskhgpy gzvz jztbr jwv vcx vdjmnjr jrsp +ikml ceuhcng biu zoo gra bnnforx abzan hwsmd lmki tsl yvogo +kqfc younaz azvgfz gesajr tmwxvyb vmcdu dclwh rfjwhic slfym +pbrhjml rsacryg jga qvgks neh fcq qmi mwb juezk mjteeg alkb +pcj ujstl fkrqm eeczrle hbkcvm upbo mrb qrspjt +jbq rrk xjl rgokbnx hor ogg szxqu hysy vqj piorq wtrtrdk +bnq ntvhcrf vrm puer kde xaxkja sfxgjf +pgcicus hqeqkkx xqekqhk qqkxhke +puquxi hmeaehh oxe tasipw qzyg hyvy wcmpwe +hvs fxq wvfy zjepsl dvrfxnc xnvg +xle crcuc qkhnv crcuc oedez bjw pmwq +xzzpiy cjwss jwscs apb bpa +ydjhhf yeltadb lwi cjdcb ovaox xrdm vkxub +zax xza admbc lvpzfeh auxn rwasj +kebx eild nrskdr meja jxczomh gcne \ No newline at end of file diff --git a/data/2017/5.txt b/data/2017/5.txt new file mode 100644 index 0000000..ad0a339 --- /dev/null +++ b/data/2017/5.txt @@ -0,0 +1,1092 @@ +2 +1 +1 +2 +0 +-4 +0 +-4 +0 +0 +2 +-9 +-6 +-2 +-11 +-5 +-6 +-9 +-6 +-17 +-9 +-19 +-9 +-10 +-13 +-12 +-21 +-21 +2 +-12 +-22 +-20 +-12 +-21 +-13 +-28 +-9 +-20 +-26 +-21 +-28 +-3 +-21 +-11 +-10 +-32 +-15 +-42 +0 +-31 +-26 +-45 +2 +-49 +-48 +-38 +-52 +-28 +-8 +-29 +-30 +-1 +-17 +-58 +-1 +-16 +-27 +-21 +-34 +0 +-7 +-45 +-13 +-5 +-28 +-11 +-74 +-75 +-10 +-50 +-20 +-31 +-19 +-78 +-80 +-42 +-24 +-50 +-65 +-15 +-29 +-34 +-3 +-67 +-36 +-69 +-95 +-59 +-69 +-3 +-92 +-92 +0 +-78 +1 +-22 +-89 +-25 +-42 +-99 +-65 +0 +-51 +-67 +-38 +-103 +-8 +-69 +-64 +-54 +-27 +-29 +-47 +0 +-123 +-53 +-25 +-62 +2 +-38 +-18 +0 +-94 +-85 +-19 +-19 +-76 +-25 +-49 +-111 +-56 +-103 +-79 +-124 +-107 +-38 +-14 +-69 +-32 +-1 +-113 +-109 +-20 +-73 +-15 +-101 +-132 +0 +-72 +-28 +-91 +-89 +0 +-130 +-32 +-148 +-28 +-166 +-28 +-15 +-57 +-143 +-16 +-88 +-158 +-172 +-126 +-21 +-148 +1 +-10 +-2 +-24 +-174 +-108 +-2 +-150 +-79 +-1 +-72 +-108 +-126 +-158 +-153 +-125 +-47 +-107 +-79 +-168 +-93 +-160 +-140 +-200 +-131 +-188 +-103 +-20 +-122 +-153 +-170 +-122 +-144 +-153 +-176 +-168 +-76 +-163 +2 +-112 +-126 +-7 +-74 +-128 +-144 +-20 +-220 +-102 +-177 +-3 +-172 +-26 +-3 +-78 +-179 +-120 +-20 +-16 +-175 +-78 +-84 +-153 +-154 +-23 +-29 +-161 +-222 +-202 +-31 +-169 +-244 +-242 +-56 +-32 +-62 +-81 +-6 +-178 +-25 +-121 +-122 +-99 +-110 +-86 +-23 +-255 +-6 +-235 +-63 +-1 +-80 +-161 +-71 +-93 +-75 +-16 +-139 +-101 +-94 +-136 +-21 +-254 +-214 +-258 +-56 +-101 +-103 +-124 +-250 +-58 +-136 +-62 +-192 +-232 +-261 +0 +-21 +-255 +-51 +-175 +-222 +-63 +-290 +-134 +-19 +-243 +-272 +-112 +-279 +-110 +-261 +-192 +-44 +-90 +-307 +-106 +-118 +-4 +-27 +-175 +-178 +-309 +-11 +-86 +-124 +-250 +-299 +-284 +-264 +-11 +-136 +-29 +-174 +-3 +-163 +-211 +-226 +-271 +-63 +-283 +-98 +-335 +-299 +2 +-104 +-219 +0 +-329 +-33 +-248 +-268 +-121 +-294 +-41 +-206 +-3 +-115 +-256 +-326 +-168 +-62 +-221 +-51 +-113 +-113 +-286 +-105 +-126 +-8 +-88 +-1 +-344 +-266 +-201 +-175 +-52 +-109 +-192 +-272 +-197 +-45 +-218 +-181 +-329 +-355 +-330 +1 +-57 +-226 +-200 +-213 +-387 +-148 +-28 +-65 +-283 +-145 +-37 +-299 +-189 +-387 +-46 +-290 +-358 +-51 +-89 +-52 +0 +-279 +-342 +-243 +-257 +-244 +-83 +-152 +-218 +-194 +-79 +-130 +-162 +-394 +-280 +-140 +-280 +-95 +-22 +-424 +-204 +-34 +-127 +-384 +-161 +-248 +-7 +-99 +-381 +-173 +-147 +-171 +-9 +-377 +-319 +-248 +-61 +-263 +-343 +-434 +-257 +-297 +-419 +-413 +-387 +-448 +-221 +-248 +-178 +-32 +-50 +-327 +-127 +-388 +-13 +-349 +-312 +-225 +-200 +-374 +-252 +-457 +-165 +-244 +-61 +-125 +-26 +-127 +-59 +-334 +-391 +-20 +-63 +-66 +-111 +-219 +-363 +-354 +-430 +-29 +-485 +-427 +-481 +-466 +-63 +-336 +-85 +-28 +-305 +-346 +-207 +-202 +-291 +-373 +-128 +-421 +-64 +-315 +-160 +-54 +-282 +-63 +-116 +-209 +-332 +-27 +-140 +-492 +-343 +-18 +-84 +-291 +-305 +-429 +-442 +-194 +-447 +-126 +-381 +-328 +-214 +-179 +-93 +2 +-408 +-278 +-381 +-105 +-527 +-213 +-77 +-320 +-191 +-460 +-484 +-184 +-42 +-508 +-316 +-350 +-86 +-310 +-226 +-347 +-365 +-58 +-49 +-167 +-329 +-281 +-68 +-23 +-66 +-532 +-549 +-126 +-510 +-419 +-305 +-47 +-291 +-99 +-96 +-318 +-174 +-199 +-317 +-520 +-194 +-422 +-247 +-539 +-21 +-340 +-545 +-145 +-159 +-145 +-25 +-515 +-559 +-500 +-289 +-75 +-351 +-417 +-564 +-74 +-176 +-476 +-585 +-513 +-590 +-235 +-342 +-403 +-161 +-196 +-197 +-528 +-343 +-385 +-557 +-99 +-514 +-135 +-159 +-101 +-559 +-363 +-155 +-186 +-127 +-532 +-195 +-383 +-554 +-92 +-160 +-142 +-93 +-349 +-180 +-393 +-68 +-575 +-553 +-496 +-173 +-3 +-267 +-382 +-394 +-44 +-65 +-316 +-25 +-390 +-110 +-418 +-315 +-220 +-453 +-428 +-77 +-298 +-44 +-412 +-493 +-588 +-90 +-418 +-296 +-355 +-89 +-176 +-628 +-623 +-352 +-401 +-614 +-318 +-353 +-298 +-256 +-327 +-560 +-347 +-321 +-309 +-232 +-89 +-22 +-522 +-380 +-553 +-568 +-570 +-174 +-278 +-422 +-561 +-223 +-375 +-555 +-184 +-218 +-54 +-135 +-582 +-490 +-122 +-447 +-384 +-285 +-131 +-246 +-222 +-431 +-41 +-340 +-417 +0 +-186 +-346 +-682 +-670 +-616 +-245 +-453 +-282 +-565 +-442 +-135 +-224 +-516 +-534 +-208 +-173 +-413 +-295 +-180 +-595 +-524 +-207 +-500 +-102 +-704 +-705 +-519 +-118 +-523 +-174 +-596 +-115 +-596 +-124 +-530 +-78 +-526 +-72 +-730 +-330 +-722 +-116 +-273 +-19 +-293 +-745 +-269 +-591 +-660 +-445 +-79 +-267 +-182 +-428 +-347 +-448 +-137 +-171 +-350 +-48 +-385 +-641 +-573 +-690 +-729 +-310 +-25 +-555 +-101 +-112 +-578 +-102 +-778 +-374 +-292 +-270 +-128 +-159 +-219 +-703 +-250 +-554 +-778 +-311 +-417 +-645 +-38 +-397 +-21 +-117 +-571 +-27 +-267 +-443 +-93 +-166 +-395 +-631 +-582 +-434 +-21 +-322 +-537 +-624 +-472 +-631 +-34 +-810 +-251 +-558 +-779 +-445 +-519 +-486 +-245 +-332 +-758 +-507 +-264 +-706 +-744 +-334 +-714 +-266 +-478 +-726 +-747 +-782 +-386 +-508 +-471 +-154 +-111 +-401 +-595 +-790 +-501 +-266 +-66 +-257 +-20 +-432 +-22 +-409 +-228 +-671 +-767 +-655 +-368 +-640 +-746 +-714 +-323 +-678 +-137 +-613 +-309 +-566 +-755 +-164 +-461 +-825 +-569 +-282 +-775 +-564 +-215 +-576 +-770 +-103 +-553 +-335 +-153 +-616 +-707 +-243 +-336 +-632 +-399 +-491 +-612 +-864 +-609 +-6 +-215 +-860 +-570 +-605 +-88 +-81 +-161 +-818 +-806 +-793 +-270 +-808 +-754 +-302 +-486 +-433 +-734 +-576 +-762 +-72 +-859 +-719 +-645 +-172 +-853 +-756 +-234 +-58 +-177 +-159 +-756 +-205 +-894 +-904 +-614 +-117 +-642 +-782 +-200 +-853 +-2 +-335 +-36 +-759 +-102 +-716 +-902 +-917 +-101 +-902 +-810 +-384 +-883 +-366 +-20 +-328 +-409 +-97 +-806 +-560 +-386 +-324 +-581 +-582 +-203 +-43 +-757 +-289 +-867 +-835 +-449 +-72 +-677 +-261 +-249 +-658 +-502 +-130 +-575 +-213 +-433 +-77 +-866 +-749 +-267 +-220 +-239 +-705 +-825 +-494 +-980 +-902 +-152 +-843 +-921 +-332 +-880 +-136 +-310 +-245 +-482 +-521 +-773 +-987 +-220 +-96 +-924 +-997 +-645 +-944 +-546 +-665 +-254 +-664 +-631 +-587 +-91 +-115 +-597 +-422 +-65 +-772 +-557 +-113 +-899 +-676 +-17 +-540 +-160 +-824 +-67 +-469 +-493 +-347 +-535 +-768 +-618 +-790 +-943 +-352 +-601 +-869 +-623 +-975 +-368 +-842 +-794 +-827 +-1034 +-438 +-221 +-823 +-655 +-128 +-657 +-22 +-200 +-803 +-307 +-901 +-2 +-861 +-988 +-112 +-215 +0 +-210 +-261 +-1014 +-147 +-485 +-84 +-753 +-674 +-701 +-151 +-883 +-467 +-990 +-777 +-1042 +-509 +-604 +-885 +-1022 +-524 +-736 +-23 +-255 +-581 +-837 +-342 +-852 +-58 +-666 +-455 +-498 +-92 +-1030 \ No newline at end of file diff --git a/data/2018/1.txt b/data/2018/1.txt new file mode 100644 index 0000000..7cf3062 --- /dev/null +++ b/data/2018/1.txt @@ -0,0 +1,994 @@ ++5 +-11 +-1 +-16 ++12 ++9 +-15 ++20 ++4 ++17 +-4 +-14 ++6 +-17 ++6 +-19 +-12 ++17 +-6 +-18 ++1 ++15 +-14 ++10 +-4 +-2 ++5 ++6 ++8 ++3 ++17 +-9 ++18 +-1 ++17 +-15 ++7 +-6 +-17 +-17 ++19 ++19 +-13 ++18 +-15 ++16 ++7 +-10 +-5 ++22 ++8 +-13 ++4 ++3 ++19 ++17 +-19 +-1 +-11 ++2 ++1 +-13 ++1 ++3 +-14 ++16 +-9 ++19 ++13 +-20 ++6 ++22 ++10 ++6 ++15 +-13 +-13 +-8 ++16 ++20 +-5 ++1 ++7 ++11 +-13 ++5 +-16 +-2 +-4 ++25 +-5 +-10 +-12 +-9 ++16 +-2 +-19 +-3 +-12 ++5 ++17 ++16 ++11 ++16 ++10 ++4 ++3 ++11 +-12 ++19 ++3 ++17 ++15 +-6 +-6 +-4 ++3 ++10 ++8 ++15 +-7 ++13 ++3 ++6 ++2 ++16 ++20 ++3 +-11 ++3 +-11 ++12 ++6 ++3 ++11 ++5 ++2 ++12 +-4 +-2 ++4 ++3 +-4 ++20 ++1 ++19 ++14 ++5 +-16 +-15 +-16 +-4 +-10 +-13 +-10 +-18 ++10 +-6 +-7 +-3 +-2 +-14 ++12 +-2 +-6 +-11 +-5 +-6 ++20 +-11 +-1 ++9 +-1 ++5 ++6 ++11 +-19 +-9 +-14 +-4 +-6 +-1 ++2 +-6 +-12 ++20 +-12 +-13 +-9 +-3 +-7 +-17 ++14 +-9 ++20 +-4 +-8 +-1 +-6 ++16 ++6 +-18 +-12 ++6 +-22 +-15 ++10 ++6 ++20 +-16 ++1 +-18 ++4 ++19 ++9 +-17 ++1 ++13 ++21 ++23 +-4 ++7 +-16 ++3 +-4 +-3 +-17 +-20 +-10 +-20 ++16 ++3 ++14 +-11 ++3 +-29 +-1 ++7 +-18 ++5 +-7 +-16 ++6 +-7 +-15 ++9 ++22 +-2 +-21 +-18 ++1 ++10 ++13 ++13 +-24 +-6 +-22 +-10 ++9 ++4 +-8 +-16 ++3 +-5 +-19 +-6 +-11 ++3 +-8 +-16 +-14 +-16 +-15 +-6 ++3 ++13 ++8 +-19 +-18 +-8 ++9 +-15 +-14 +-2 ++18 +-17 ++2 ++18 +-6 +-3 +-19 ++16 +-4 ++6 ++21 +-6 ++7 ++17 +-8 +-4 ++6 ++19 +-2 ++5 ++20 +-3 +-6 ++5 ++5 +-17 +-18 ++16 ++4 ++7 ++6 ++8 ++6 +-1 ++10 +-13 +-4 +-10 ++8 +-14 ++17 ++9 ++2 +-7 +-22 +-16 ++20 +-13 ++8 +-17 ++1 ++19 ++14 ++19 ++11 +-6 ++25 ++18 ++19 ++5 ++20 ++17 ++4 +-10 ++47 ++4 +-1 ++23 ++24 +-8 +-10 ++31 ++19 +-11 +-17 ++8 +-24 ++9 ++32 ++18 +-1 ++4 +-13 ++4 ++17 +-2 ++11 ++11 ++4 +-3 +-3 ++22 ++19 ++14 +-21 ++13 ++9 +-14 +-16 ++20 ++16 +-14 ++5 +-15 ++12 +-11 ++1 ++3 +-24 +-9 +-9 +-22 +-12 +-10 +-7 +-3 ++12 ++13 ++17 +-11 ++35 ++12 +-9 ++16 ++22 +-18 +-18 ++19 +-8 ++23 ++19 ++3 ++8 ++15 +-2 ++11 ++14 ++10 ++15 ++8 +-1 ++13 ++1 ++18 +-11 ++4 ++4 ++11 ++9 +-18 +-9 ++13 +-18 ++10 ++3 +-6 +-5 +-10 +-11 +-14 +-2 +-9 ++3 +-4 +-6 ++13 +-2 +-17 +-4 ++7 ++6 +-12 +-7 ++14 +-6 +-18 ++19 +-18 +-2 +-13 ++6 +-15 ++14 ++7 ++9 +-14 ++9 +-19 ++1 ++13 +-2 +-10 +-11 ++13 +-6 +-6 ++19 ++10 ++17 +-8 +-7 ++19 ++16 +-1 ++7 ++16 +-15 +-17 ++12 ++16 +-2 ++14 +-3 +-16 +-17 +-5 ++16 ++29 +-3 +-2 ++13 +-18 ++15 +-4 +-14 +-12 +-16 +-19 ++39 +-9 ++19 ++3 +-11 ++10 ++12 ++19 +-4 ++12 ++13 ++19 ++3 +-19 ++9 +-16 ++10 ++18 ++12 +-6 +-2 +-11 ++20 ++15 ++15 ++4 ++12 +-38 ++9 ++33 ++24 ++6 ++4 +-36 +-47 +-15 +-13 +-3 ++1 ++12 ++14 ++9 +-32 ++7 +-16 +-5 +-29 ++12 +-2 ++15 +-12 +-11 +-39 +-40 ++3 +-34 +-5 ++78 ++4 ++52 ++1 ++90 ++112 ++152 +-80 ++81800 +-18 ++15 +-9 ++11 ++2 +-5 ++16 +-5 ++15 +-1 ++2 +-14 +-7 ++12 +-10 +-9 ++20 ++14 +-9 ++12 ++9 ++13 ++3 ++11 ++14 +-3 ++10 ++8 ++12 ++5 ++10 ++1 ++14 +-5 ++1 +-4 +-13 ++9 ++18 ++17 ++16 ++9 +-1 +-10 ++13 ++13 ++11 +-18 ++15 +-9 +-13 ++3 ++1 ++11 +-3 +-10 ++19 +-11 ++13 ++12 +-8 +-10 +-6 ++13 ++5 +-13 +-7 +-1 ++18 ++7 ++14 +-2 ++5 ++1 ++16 +-7 ++18 ++13 +-6 ++18 +-1 ++12 +-4 +-10 ++7 +-15 +-9 +-7 +-7 +-6 ++11 +-16 ++7 +-4 ++11 +-4 +-6 +-14 ++1 ++6 +-3 ++2 ++21 ++12 +-16 ++18 +-5 ++17 ++4 ++19 ++6 +-13 ++17 +-3 +-2 +-17 ++7 +-3 +-7 ++14 ++17 ++8 ++7 +-17 ++18 +-15 +-4 ++7 ++2 ++1 +-14 +-1 +-6 ++9 +-10 +-4 ++15 +-14 +-18 +-14 +-9 +-11 ++9 ++3 ++12 ++1 ++3 +-10 +-15 ++7 ++6 ++13 ++9 ++7 +-4 ++9 +-14 ++21 +-9 ++24 ++10 ++6 ++6 +-19 ++22 +-10 +-18 ++10 ++14 +-4 ++3 ++7 ++14 ++11 ++16 +-10 ++11 +-9 +-5 +-6 +-2 +-15 ++3 +-16 ++19 ++8 ++2 +-17 ++3 ++5 ++14 +-16 +-4 +-5 ++1 +-3 ++4 ++6 ++18 ++16 ++4 +-18 ++6 ++10 +-6 ++1 ++6 ++9 ++17 +-8 +-15 +-12 ++1 +-6 ++4 ++12 ++2 ++17 +-9 +-7 ++10 ++12 ++17 ++8 ++15 ++7 +-18 +-1 ++4 ++13 +-3 ++16 ++4 ++2 +-8 +-5 ++14 ++10 ++18 +-15 ++19 +-11 +-4 +-16 ++13 ++16 +-15 ++10 +-20 +-7 +-15 +-10 +-2 +-6 ++19 +-3 +-9 +-18 ++12 +-8 ++3 ++13 ++20 ++18 +-16 ++15 ++12 ++1 +-18 ++10 +-14 +-17 +-7 +-9 +-20 ++8 +-9 ++7 +-11 +-19 ++7 +-14 ++6 ++4 ++14 ++8 +-11 ++2 +-1 +-19 ++16 ++9 +-10 ++20 ++12 ++11 ++13 +-3 +-2 ++3 +-20 ++6 +-17 ++3 +-9 +-6 +-16 ++7 ++7 +-23 +-6 ++14 +-3 +-31 +-18 +-19 +-12 +-26 ++23 ++9 +-7 +-10 ++22 ++17 ++17 +-7 +-8 ++9 ++28 ++5 ++24 +-28 ++36 ++37 ++7 ++12 ++19 ++15 +-3 +-20 ++17 ++18 ++4 +-8 ++9 +-4 +-2 +-19 ++11 +-1 ++3 +-7 ++8 ++9 +-8 ++19 ++9 ++12 +-11 +-5 +-13 ++9 +-6 ++7 ++17 +-13 ++16 ++10 +-5 ++20 ++6 +-1 ++17 +-14 ++10 ++18 +-1 ++3 +-10 +-4 +-10 +-10 +-16 +-2 ++7 ++16 +-12 ++6 ++8 ++22 ++7 +-6 +-13 +-14 ++10 +-1 +-21 +-1 ++8 +-15 ++9 +-17 +-2 +-21 ++4 +-19 +-13 +-8 ++26 ++4 +-27 +-8 ++2 ++30 +-11 +-82484 \ No newline at end of file diff --git a/data/2018/2.txt b/data/2018/2.txt new file mode 100644 index 0000000..e29ef9d --- /dev/null +++ b/data/2018/2.txt @@ -0,0 +1,250 @@ +qysdgimlcaghpfozuwejmhrbvx +qysdtiklcagnpfhzuwbjmhrtvx +qysdtiflcsgnpfozuwejmhruvx +qkshtiklnagnpfozuwejmhrbvx +qysdtnklcagnpmozuwejmhrrvx +qysdttkecagnpfozuwijmhrbvx +qyedtiklcagnvfozuweymhrbvx +qyzdtikzcagnpfozuwejmhqbvx +qysdtiklcagnpfozlwedmhqbvx +qjsdtiklcagnpfozubejmhrbvq +qysdtiklcagnpfozvvejmhrbex +qdsdziklcagnpfouuwejmhrbvx +qysttikqccgnpfozuwejmhrbvx +qysdtiklcagnpbozwwecmhrbvx +qysdtiklcagnpfozuwexmmrjvx +nysdtiklcqgjpfozuwejmhrbvx +cysdoiqlcagnpfozuwejmhrbvx +qysdthxlcagnpfozuwejmcrbvx +qyswtiklcrgnpfozuwejmhrbvf +qysdtiklcagnpfozurejmhvpvx +qysdtiklcegnpfdzuwejghrbvx +qysdtjkluagnpfozuwenmhrbvx +qysdtimlcagnpjwzuwejmhrbvx +qyrdtiklcegnpeozuwejmhrbvx +qysdmiklcagnpfokswejmhrbvx +qysdtizlcagnpiozuwecmhrbvx +qysdtiklcignafxzuwejmhrbvx +qycdjiklcagnpzozuwejmhrbvx +qysdtiklcagnpjozuwepihrbvx +qyedtiklcrgnpfozuvejmhrbvx +mysdtikrcagnpfozwwejmhrbvx +qysdtiklcagnpfozuhcjmhrbsx +qmsdtiklcagnpfozuwehmhrevx +qgsdtiklcagnpfozuwejvhrbvp +lysdtikleagnpfozuwejmhrnvx +qxsdtivlzagnpfozuwejmhrbvx +qysdtiklcoggpfozuwebmhrbvx +wysdtiklcagnpfozuwejmornvx +jysdtiklvagntfozuwejmhrbvx +qmsdtiklcagnpfozuwejmrrbax +qysdttklcagnpfoiuwejmhrbvh +qysdtnklcaenpfozupejmhrbvx +qysdtoklcagnpfozuwexmhrbvq +qysdtiklcagnpuoeuwejmhrjvx +iysdtitncagnpfozuwejmhrbvx +qysdtixrcagnprozuwejmhrbvx +qyfdtiplcagnpfouuwejmhrbvx +qysdtmklcagnpfowuwejmhrbox +qysdtiklcagnxiozuwejphrbvx +fysdtiklcagnptozuwejmhrbvo +qysdqiklcagnplozuwejmhmbvx +qysdtwkacagnpfosuwejmhrbvx +qysdtitlcagnpfozufajmhrbvx +qysdtcklcagopfdzuwejmhrbvx +qmfdtdklcagnpfozuwejmhrbvx +qysztiklcaonpfozuwejmhrbfx +qygdtiklcggnpfozuwejmhrhvx +qysdiiklcagnpfozukejmcrbvx +qysdtrkloagnpfozuwujmhrbvx +qycdtiklcagnpfozywejmhrlvx +qgsdtikdcagnpfozgwejmhrbvx +qyudtikleagvpfozuwejmhrbvx +pysdtiqlcagnpfozuwejmarbvx +qysdtiklcaenpfozuwehahrbvx +qhsttiklcagnpfovuwejmhrbvx +zysdtikqmagnpfozuwejmhrbvx +rysdtikacagnpfozuwevmhrbvx +zysntikllagnpfozuwejmhrbvx +qysttimlcagndfozuwejmhrbvx +qysdtiklcaxopfqzuwejmhrbvx +qysdtislcagnpfozuwejmtrbnx +qysdviklcagnpfozswejmhibvx +qmsdtiklrygnpfozuwejmhrbvx +qysztiklcagnpfozuwejmorbrx +xysdtiklcagnzwozuwejmhrbvx +qysjthklcagnpfozowejmhrbvx +qysdtiklcagnpfofxwemmhrbvx +jysdtiklcagnpfozfwehmhrbvx +qysdtgklaagnpfozhwejmhrbvx +qqsdtiklcaenpfozuwejmhrvvx +qysdtikloajppfozuwejmhrbvx +qysdtiklcagnpwozuwejmhrhsx +qpsdtiklcapnprozuwejmhrbvx +qyzdtiklcagnpcozuwejmhrbvc +qusdhiklcagnpfozuwejmhrbxx +qysdtiklcagnpfozqwejthrvvx +qysvtiklcagnpfoiuwedmhrbvx +qgsdtiklcagvpfozuwejmhrbvf +qysdtikxcawnpfozuwejmarbvx +qyvctiklcaynpfozuwejmhrbvx +qyyltiklnagnpfozuwejmhrbvx +oysdtillcagnpfozuwejmnrbvx +qysdtiklcagnpfozuvmjmhrbzx +qykdtikocagnpfhzuwejmhrbvx +qysdtvkloagnpfozuwejmkrbvx +qysetiklcagnpfozuwejmhrxvh +qysdtiklcavnpfuzuwejmhrbvh +qmndtiklcagnpfojuwejmhrbvx +qysdtialcagnpfozuwejmdrqvx +qysdtiklcagnpfozuwejtzrbvv +qysdtiklxagnpyozufejmhrbvx +qysdtiklcagnpfgzewejahrbvx +qysdtiklcagppsozuwejmhrdvx +qykdtiklcainpfozuwejqhrbvx +qysdtiklcagnpfszxwejmhubvx +qyrdtiklcagkptozuwejmhrbvx +qysdsiklcagnpfozsvejmhrbvx +qypdtiklcagypfozuwejmhrlvx +qssdtiklcagnpfozuwqjmirbvx +qyshtiklcagnpfrzuwyjmhrbvx +qysdtiklcagnpfqzuwenmgrbvx +qysdtiklcagnpfonuwejmhkwvx +qysdhiklcagnpfokuwejmhrfvx +jysrtiklcaenpfozuwejmhrbvx +qysdtiilcagnpfozuwejmhcbvl +qysdtiklcagnheozuwejmhrbvn +qysdtikucagwpfojuwejmhrbvx +qysdtinlctgnpfozuwujmhrbvx +qysdtiklcagnpiozuwejmtrbjx +qysktiklcagqpfozuwcjmhrbvx +qysddiklcagnpfozpwejmhrbvh +wysdtiplcagnpfozuwejyhrbvx +qysdtiklcagnpfjzlwejmhrcvx +qysdtikleagopbozuwejmhrbvx +qysdtqklcwgnpfozuwejmirbvx +qysdtiklcugnpmozuwejmhrbvp +qysdtiklcagnpfozpwejmnrbvz +qysdtiklcagnpcozuwejmhbbmx +uysitiklcagnpfozewejmhrbvx +qykdtiklcasnpfozuwejdhrbvx +qyjdtiklcagnpqozuzejmhrbvx +qysdtiklcagaifozuwejmhrbvh +qysdtiklcagnhfozuwyjrhrbvx +qysetiklcaanpfozuwyjmhrbvx +qyfdtiklcagnphozulejmhrbvx +qysdtikkcrgnpfozuwejmhpbvx +qysdtiklcarnpfdzuwejmhrbvq +qysdtiklcfyrpfozuwejmhrbvx +rysdtitlcagnpfoznwejmhrbvx +qysdtiilcagnffozugejmhrbvx +qysdyifloagnpfozuwejmhrbvx +qysdtiklcegnpfozuwejmlrcvx +qysdtiklcagnpfozuwajmhbbqx +qysptrklcarnpfozuwejmhrbvx +qysdtiklcagnldozuwejmhwbvx +qysdtiklczgqpfozuwejmhobvx +qyxdtiklcagcpfoiuwejmhrbvx +qysatiklczgnpfozawejmhrbvx +qysduiklcagnpfoziwejyhrbvx +qysdtgklqagnpfozujejmhrbvx +qysdtiqlcagnpfozzdejmhrbvx +qysdtiklcngnpfofuwejmzrbvx +qysdtiklcagnyfozuwejrnrbvx +qysdtiplcagnpfozowmjmhrbvx +qyswtiklcagnplozuwedmhrbvx +qyseiiklcagnpfozuwejmhibvx +qysdtiklcagnpfozutusmhrbvx +qysdtimlcagnpfozccejmhrbvx +qnsdniklcagnpfobuwejmhrbvx +qysrtiklcagnpfofuwejmhrbyx +qyzdtiklcagnpfoizwejmhrbvx +qysdtjslcdgnpfozuwejmhrbvx +qysdtiklcagnpxoyuwejmrrbvx +qysdtikllagnpfmzuwbjmhrbvx +qysdtitlcagnkfozuwejwhrbvx +qymdtiklcggnpfozuwejmzrbvx +qysdtiklclfnpfozuhejmhrbvx +qysdtyklcagnpfozuwejmhhbix +qysetiklcagnpfozuwejmhrspx +qysdipklcagnpfozuwejmhrbex +uysgtiklcagnpmozuwejmhrbvx +qysdtiklmagnpfozuwqlmhrbvx +qysdtiklcagnyfozxwejmhrmvx +qysutillcagnpfozuwejmhrbbx +casdtiklcagnpfopuwejmhrbvx +qesdtiklctgnpfmzuwejmhrbvx +qysdtiklcagopfozjwejmdrbvx +jzsdtiklcagnpfozuwejmurbvx +qysdtiklcjgnpfonuwejrhrbvx +qysdtiklcrgnpnozuwejmhqbvx +oyhdtiklcagnpfozuwekmhrbvx +qysstiklcagjpfozuwejmhrbnx +qyudtiklsagnpsozuwejmhrbvx +qysdtiilcagnpfozusejmhrbva +qysdtiklcaknpfozmwejmhgbvx +qysdbiklcpgnpfozuwejmrrbvx +qybdtiklcagvpfokuwejmhrbvx +qysatiklcagnpwofuwejmhrbvx +qysdtiklcadnpfonuwejmcrbvx +qysdtijfcagnpfozuvejmhrbvx +qysdtiklcagnpfhluuejmhrbvx +qysdtiklcagnpfoguwejqhrwvx +qlsdtiklcagnpfojuwehmhrbvx +qyhdtiolcagnpfozuwejmhrzvx +qmsdtiklcagnppozuwpjmhrbvx +qysdtiklvvgnpfvzuwejmhrbvx +qysdtiklcagnpfszuwajmhrcvx +qysdtiklcagnpfmzuwekmhrbyx +qysdtiklcagwpfozumevmhrbvx +qysdtaklcagnpfozuwejvhzbvx +qysotiklcagntffzuwejmhrbvx +qysdtiklcagnpfowuweqmhrivx +qysdtrkloagnxfozuwujmhrbvx +qasdiiklcagnpfozuwegmhrbvx +qysbtiklcagnpfozuwejthrbhx +hysdtikllagnpfozuwejmhrbbx +qyqdtiklcagnpsozuwejmcrbvx +qysdtiklcagnpiqzuwejmhrbux +qnsdtiklcagnpfozdwejmhbbvx +qysjbiklcagzpfozuwejmhrbvx +qysdtiklcagnpfifuwejmhrbvg +qysdtiklcaggpkozunejmhrbvx +qxsdtiklcavnpfozuwfjmhrbvx +qysdtikycabnpfkzuwejmhrbvx +qyswtzklcagnpfozuwejmhrlvx +qysdtikqcagnpfozuwejrhnbvx +qysdtiplaagnpfozuwejmhruvx +qjcdtiklcagnpfozujejmhrbvx +nysdtyklcagnpfozutejmhrbvx +qysrtiklcagnpfnzuwejmhrbdx +zysdtielcagnpfozuwezmhrbvx +qysdtikpvagnpfozuzejmhrbvx +qysdwiklcagnpfozueejmhrlvx +dysdmiklcagnpfozuwejzhrbvx +qysdtiklcjgnpfozuweimhmbvx +qysdtiklciynpyozuwejmhrbvx +qksdtiklcagnpbozubejmhrbvx +qysdtiklkagnpfozuwejmhrjvb +yyxdtiklcagnpfomuwejmhrbvx +qysdtiklcagnfnozuwejmhrbvv +qysdtzklcagnpfozuwejmhrmvb +qysduiklclgnpfozuwejmhrbvn +qyndtmklcavnpfozuwejmhrbvx +qisdkiklcagnpfozuwqjmhrbvx +qysdtrkycagypfozuwejmhrbvx +qhsdtiklcwgnmfozuwejmhrbvx +qysdaiklcannpfozupejmhrbvx +zysdtiklcagnpjozuwejmhrbwx +qysdtikxcagnpfozuwejmcrxvx +qysdtzklcagnpfozewejmhrbvk +qysdwtklcagnhfozuwejmhrbvx +qysdtqklcaenpfozuwejmdrbvx +qysdtiklcagnpfozuoeemhqbvx +nysdtikocagnpfozuwejmhwbvx +qysxtiklcagnpfozqwejmhrbax +qysdtielcasnpfozuwejmhsbvx +qysdtiklcaknpfozuwejcwrbvx +qysytiklcagnpfozdfejmhrbvx +qysdtiklcagmpfozuwejmgrbox +qysdtielcagnpfpzuwejhhrbvx \ No newline at end of file diff --git a/data/2018/3.txt b/data/2018/3.txt new file mode 100644 index 0000000..b8d47dc --- /dev/null +++ b/data/2018/3.txt @@ -0,0 +1,1409 @@ +#1 @ 151,671: 11x15 +#2 @ 887,913: 28x22 +#3 @ 808,917: 17x11 +#4 @ 727,230: 26x26 +#5 @ 638,853: 21x20 +#6 @ 713,106: 17x18 +#7 @ 745,709: 18x15 +#8 @ 550,92: 29x19 +#9 @ 389,659: 26x24 +#10 @ 501,813: 27x29 +#11 @ 568,365: 26x19 +#12 @ 719,695: 19x10 +#13 @ 678,843: 13x11 +#14 @ 157,147: 22x25 +#15 @ 661,901: 14x28 +#16 @ 84,265: 26x22 +#17 @ 258,382: 10x26 +#18 @ 272,458: 18x21 +#19 @ 737,335: 28x22 +#20 @ 273,698: 24x11 +#21 @ 766,190: 24x13 +#22 @ 165,472: 28x24 +#23 @ 411,285: 14x21 +#24 @ 229,280: 21x25 +#25 @ 334,338: 14x12 +#26 @ 826,803: 18x26 +#27 @ 867,508: 16x15 +#28 @ 437,755: 16x20 +#29 @ 361,507: 14x29 +#30 @ 276,667: 23x25 +#31 @ 649,765: 20x20 +#32 @ 347,635: 15x24 +#33 @ 954,333: 23x25 +#34 @ 93,131: 25x19 +#35 @ 454,388: 14x28 +#36 @ 582,39: 24x25 +#37 @ 211,97: 14x13 +#38 @ 481,346: 10x12 +#39 @ 395,917: 14x18 +#40 @ 404,364: 22x16 +#41 @ 275,49: 11x11 +#42 @ 667,904: 19x26 +#43 @ 519,564: 21x23 +#44 @ 65,674: 29x10 +#45 @ 737,610: 8x7 +#46 @ 410,121: 14x27 +#47 @ 257,691: 19x13 +#48 @ 589,362: 15x11 +#49 @ 15,953: 22x29 +#50 @ 160,738: 29x19 +#51 @ 150,758: 10x17 +#52 @ 337,83: 10x20 +#53 @ 368,622: 18x15 +#54 @ 807,420: 21x28 +#55 @ 98,401: 13x15 +#56 @ 488,41: 24x27 +#57 @ 735,111: 11x22 +#58 @ 556,847: 26x28 +#59 @ 590,13: 13x20 +#60 @ 945,694: 27x28 +#61 @ 20,956: 23x11 +#62 @ 587,647: 11x24 +#63 @ 70,744: 20x24 +#64 @ 340,424: 23x22 +#65 @ 496,949: 13x22 +#66 @ 40,238: 11x12 +#67 @ 376,585: 11x23 +#68 @ 244,541: 21x15 +#69 @ 910,404: 19x24 +#70 @ 536,355: 22x21 +#71 @ 476,606: 11x21 +#72 @ 320,601: 29x29 +#73 @ 682,407: 13x28 +#74 @ 434,923: 24x13 +#75 @ 256,708: 16x23 +#76 @ 901,912: 13x16 +#77 @ 237,43: 13x25 +#78 @ 533,655: 18x22 +#79 @ 338,415: 28x11 +#80 @ 138,285: 28x29 +#81 @ 630,329: 16x19 +#82 @ 883,608: 27x15 +#83 @ 110,227: 25x26 +#84 @ 821,741: 24x15 +#85 @ 753,928: 12x18 +#86 @ 719,906: 10x23 +#87 @ 564,134: 19x27 +#88 @ 966,561: 26x27 +#89 @ 54,229: 13x29 +#90 @ 726,494: 23x27 +#91 @ 502,964: 15x16 +#92 @ 84,2: 24x26 +#93 @ 985,793: 4x11 +#94 @ 650,402: 10x16 +#95 @ 46,968: 22x24 +#96 @ 505,44: 26x19 +#97 @ 972,395: 12x27 +#98 @ 32,348: 24x23 +#99 @ 635,596: 21x13 +#100 @ 129,97: 21x23 +#101 @ 621,134: 11x13 +#102 @ 843,412: 27x19 +#103 @ 801,678: 29x11 +#104 @ 870,178: 11x24 +#105 @ 290,730: 15x15 +#106 @ 572,117: 24x26 +#107 @ 120,716: 16x21 +#108 @ 813,426: 21x13 +#109 @ 307,722: 20x19 +#110 @ 682,79: 13x22 +#111 @ 798,874: 10x23 +#112 @ 350,649: 25x16 +#113 @ 296,395: 24x21 +#114 @ 77,276: 21x14 +#115 @ 229,966: 11x19 +#116 @ 231,853: 14x26 +#117 @ 139,928: 23x10 +#118 @ 674,414: 10x11 +#119 @ 47,206: 12x29 +#120 @ 250,271: 18x19 +#121 @ 435,917: 14x17 +#122 @ 980,804: 17x26 +#123 @ 237,245: 16x25 +#124 @ 828,570: 14x12 +#125 @ 869,3: 29x22 +#126 @ 54,700: 26x11 +#127 @ 935,928: 17x18 +#128 @ 749,947: 17x18 +#129 @ 399,463: 20x20 +#130 @ 912,18: 23x19 +#131 @ 26,104: 12x27 +#132 @ 899,57: 22x14 +#133 @ 413,89: 15x25 +#134 @ 975,301: 23x29 +#135 @ 339,362: 27x23 +#136 @ 556,646: 19x10 +#137 @ 291,422: 21x28 +#138 @ 2,758: 13x21 +#139 @ 654,286: 29x19 +#140 @ 412,480: 16x13 +#141 @ 952,133: 15x15 +#142 @ 445,925: 24x27 +#143 @ 174,335: 12x26 +#144 @ 741,370: 14x22 +#145 @ 219,699: 26x19 +#146 @ 468,838: 24x17 +#147 @ 234,630: 26x10 +#148 @ 189,660: 13x29 +#149 @ 724,682: 13x23 +#150 @ 966,202: 15x23 +#151 @ 864,839: 26x22 +#152 @ 326,574: 17x15 +#153 @ 108,713: 21x13 +#154 @ 449,903: 26x24 +#155 @ 971,67: 16x28 +#156 @ 88,366: 10x17 +#157 @ 244,582: 19x11 +#158 @ 348,358: 25x16 +#159 @ 223,834: 10x20 +#160 @ 813,659: 22x17 +#161 @ 780,128: 22x23 +#162 @ 806,867: 23x15 +#163 @ 896,146: 23x22 +#164 @ 875,717: 25x23 +#165 @ 777,22: 16x26 +#166 @ 756,866: 15x25 +#167 @ 103,348: 14x27 +#168 @ 722,726: 27x10 +#169 @ 772,739: 17x15 +#170 @ 392,976: 26x20 +#171 @ 18,486: 25x21 +#172 @ 632,260: 21x28 +#173 @ 901,137: 15x10 +#174 @ 473,723: 11x13 +#175 @ 973,675: 21x24 +#176 @ 610,890: 17x18 +#177 @ 691,584: 11x18 +#178 @ 734,599: 18x23 +#179 @ 671,378: 16x21 +#180 @ 816,195: 28x24 +#181 @ 811,183: 25x27 +#182 @ 436,670: 22x10 +#183 @ 450,560: 17x18 +#184 @ 325,628: 26x19 +#185 @ 126,249: 10x14 +#186 @ 768,451: 29x26 +#187 @ 933,129: 13x27 +#188 @ 91,847: 26x23 +#189 @ 219,317: 11x27 +#190 @ 53,666: 21x19 +#191 @ 443,487: 29x19 +#192 @ 221,757: 22x15 +#193 @ 393,974: 22x12 +#194 @ 208,678: 19x14 +#195 @ 436,566: 11x11 +#196 @ 576,436: 26x11 +#197 @ 376,645: 28x19 +#198 @ 698,483: 10x10 +#199 @ 884,858: 21x21 +#200 @ 758,326: 23x23 +#201 @ 165,127: 22x25 +#202 @ 211,856: 26x29 +#203 @ 552,93: 11x12 +#204 @ 206,240: 22x13 +#205 @ 171,320: 10x10 +#206 @ 765,971: 26x26 +#207 @ 18,605: 20x16 +#208 @ 217,636: 10x26 +#209 @ 590,358: 7x9 +#210 @ 158,266: 29x24 +#211 @ 394,560: 17x24 +#212 @ 714,530: 13x15 +#213 @ 751,95: 7x7 +#214 @ 503,80: 15x18 +#215 @ 387,661: 17x28 +#216 @ 695,157: 21x25 +#217 @ 324,564: 19x20 +#218 @ 546,574: 25x13 +#219 @ 360,735: 10x15 +#220 @ 765,177: 28x28 +#221 @ 629,594: 17x7 +#222 @ 401,359: 26x12 +#223 @ 76,834: 10x19 +#224 @ 82,370: 16x14 +#225 @ 232,620: 20x14 +#226 @ 573,820: 16x29 +#227 @ 416,201: 27x16 +#228 @ 967,577: 27x11 +#229 @ 321,728: 21x27 +#230 @ 537,211: 15x12 +#231 @ 926,247: 12x20 +#232 @ 345,473: 14x26 +#233 @ 307,971: 27x20 +#234 @ 439,541: 26x19 +#235 @ 822,245: 28x15 +#236 @ 770,397: 28x14 +#237 @ 704,526: 17x12 +#238 @ 477,803: 28x22 +#239 @ 293,285: 10x14 +#240 @ 693,690: 10x21 +#241 @ 38,440: 27x18 +#242 @ 593,349: 25x28 +#243 @ 301,721: 11x21 +#244 @ 292,966: 21x29 +#245 @ 208,116: 13x23 +#246 @ 943,494: 21x13 +#247 @ 283,20: 24x18 +#248 @ 759,962: 22x13 +#249 @ 15,555: 13x14 +#250 @ 650,842: 24x12 +#251 @ 908,402: 28x23 +#252 @ 762,533: 18x20 +#253 @ 570,425: 21x14 +#254 @ 412,175: 12x25 +#255 @ 671,861: 16x25 +#256 @ 828,31: 15x27 +#257 @ 227,57: 24x20 +#258 @ 951,798: 13x28 +#259 @ 943,216: 15x10 +#260 @ 125,749: 21x20 +#261 @ 821,96: 15x15 +#262 @ 264,838: 21x25 +#263 @ 366,809: 29x13 +#264 @ 370,974: 26x14 +#265 @ 210,135: 21x16 +#266 @ 347,856: 20x23 +#267 @ 280,846: 23x24 +#268 @ 755,824: 26x19 +#269 @ 149,949: 16x10 +#270 @ 155,582: 18x29 +#271 @ 761,188: 12x10 +#272 @ 918,153: 17x29 +#273 @ 846,637: 4x3 +#274 @ 25,748: 26x26 +#275 @ 735,232: 28x10 +#276 @ 64,63: 16x14 +#277 @ 311,216: 11x27 +#278 @ 331,165: 16x21 +#279 @ 55,953: 22x20 +#280 @ 890,125: 27x25 +#281 @ 121,177: 16x28 +#282 @ 276,222: 21x11 +#283 @ 602,197: 24x19 +#284 @ 493,73: 22x25 +#285 @ 760,953: 12x27 +#286 @ 923,864: 11x29 +#287 @ 517,10: 27x19 +#288 @ 353,502: 13x8 +#289 @ 679,766: 19x29 +#290 @ 577,121: 14x16 +#291 @ 308,176: 12x22 +#292 @ 691,114: 10x20 +#293 @ 760,360: 21x27 +#294 @ 126,698: 29x23 +#295 @ 921,36: 24x12 +#296 @ 547,138: 22x16 +#297 @ 438,567: 17x16 +#298 @ 549,572: 21x11 +#299 @ 380,900: 26x22 +#300 @ 628,604: 11x12 +#301 @ 44,63: 27x25 +#302 @ 933,911: 25x27 +#303 @ 925,640: 13x19 +#304 @ 870,217: 10x23 +#305 @ 27,668: 27x11 +#306 @ 822,85: 28x12 +#307 @ 465,549: 14x27 +#308 @ 398,781: 27x27 +#309 @ 285,702: 6x5 +#310 @ 802,179: 19x19 +#311 @ 608,863: 23x17 +#312 @ 855,644: 12x22 +#313 @ 238,931: 23x27 +#314 @ 400,613: 14x29 +#315 @ 308,590: 20x20 +#316 @ 630,811: 12x25 +#317 @ 11,552: 10x26 +#318 @ 218,598: 13x25 +#319 @ 480,722: 3x3 +#320 @ 216,754: 21x28 +#321 @ 468,559: 7x13 +#322 @ 761,803: 20x26 +#323 @ 378,457: 18x19 +#324 @ 955,346: 15x26 +#325 @ 715,398: 27x15 +#326 @ 889,720: 13x19 +#327 @ 681,773: 12x6 +#328 @ 897,259: 10x10 +#329 @ 102,600: 15x26 +#330 @ 901,267: 23x27 +#331 @ 103,287: 29x13 +#332 @ 727,827: 21x28 +#333 @ 659,512: 28x19 +#334 @ 99,135: 12x6 +#335 @ 584,731: 26x25 +#336 @ 934,936: 27x16 +#337 @ 304,185: 29x20 +#338 @ 780,278: 27x28 +#339 @ 898,757: 24x28 +#340 @ 342,280: 15x11 +#341 @ 402,622: 10x25 +#342 @ 747,378: 14x25 +#343 @ 258,351: 26x29 +#344 @ 587,883: 14x10 +#345 @ 322,180: 22x17 +#346 @ 393,85: 18x12 +#347 @ 934,891: 12x18 +#348 @ 684,169: 10x21 +#349 @ 107,487: 24x11 +#350 @ 586,651: 15x19 +#351 @ 923,691: 10x26 +#352 @ 406,866: 17x21 +#353 @ 232,800: 17x14 +#354 @ 522,189: 16x11 +#355 @ 488,939: 18x27 +#356 @ 954,147: 27x15 +#357 @ 332,401: 19x20 +#358 @ 54,62: 20x10 +#359 @ 82,398: 22x29 +#360 @ 107,622: 19x13 +#361 @ 927,319: 13x14 +#362 @ 274,12: 29x25 +#363 @ 556,768: 22x22 +#364 @ 863,515: 26x23 +#365 @ 450,964: 15x28 +#366 @ 654,791: 17x14 +#367 @ 18,47: 20x18 +#368 @ 282,547: 12x28 +#369 @ 937,502: 25x28 +#370 @ 379,278: 13x21 +#371 @ 337,749: 11x21 +#372 @ 265,746: 26x14 +#373 @ 552,166: 27x26 +#374 @ 123,722: 20x15 +#375 @ 10,654: 13x5 +#376 @ 522,741: 10x16 +#377 @ 927,253: 29x10 +#378 @ 967,188: 27x22 +#379 @ 38,680: 22x22 +#380 @ 629,957: 19x29 +#381 @ 512,500: 27x14 +#382 @ 811,903: 25x23 +#383 @ 458,734: 18x19 +#384 @ 256,848: 29x26 +#385 @ 444,834: 28x12 +#386 @ 295,399: 23x13 +#387 @ 371,296: 19x23 +#388 @ 71,566: 13x26 +#389 @ 844,868: 20x16 +#390 @ 891,172: 28x16 +#391 @ 787,45: 19x16 +#392 @ 136,452: 18x18 +#393 @ 333,482: 14x29 +#394 @ 136,924: 13x17 +#395 @ 721,476: 22x29 +#396 @ 504,510: 15x25 +#397 @ 923,457: 21x16 +#398 @ 856,207: 16x16 +#399 @ 322,499: 19x10 +#400 @ 191,957: 16x17 +#401 @ 315,35: 12x15 +#402 @ 688,362: 15x14 +#403 @ 437,438: 20x28 +#404 @ 701,250: 12x19 +#405 @ 538,644: 15x25 +#406 @ 475,548: 23x22 +#407 @ 324,296: 21x29 +#408 @ 587,668: 27x28 +#409 @ 839,631: 22x27 +#410 @ 563,678: 15x12 +#411 @ 201,759: 22x10 +#412 @ 581,975: 23x12 +#413 @ 357,801: 11x15 +#414 @ 688,497: 10x25 +#415 @ 754,950: 5x10 +#416 @ 148,157: 29x13 +#417 @ 965,652: 20x18 +#418 @ 848,919: 12x11 +#419 @ 887,765: 25x18 +#420 @ 110,7: 13x25 +#421 @ 750,847: 10x25 +#422 @ 805,859: 18x20 +#423 @ 522,312: 21x27 +#424 @ 305,402: 20x26 +#425 @ 92,746: 28x12 +#426 @ 936,579: 11x11 +#427 @ 709,237: 28x18 +#428 @ 559,186: 23x29 +#429 @ 338,407: 8x7 +#430 @ 352,864: 27x29 +#431 @ 379,312: 27x17 +#432 @ 938,118: 14x17 +#433 @ 657,407: 12x27 +#434 @ 534,414: 11x25 +#435 @ 369,569: 29x18 +#436 @ 745,536: 18x24 +#437 @ 780,799: 28x17 +#438 @ 884,856: 18x19 +#439 @ 611,227: 26x29 +#440 @ 165,687: 27x24 +#441 @ 328,82: 17x21 +#442 @ 982,786: 15x21 +#443 @ 848,719: 20x16 +#444 @ 805,918: 21x11 +#445 @ 103,365: 22x21 +#446 @ 231,952: 21x26 +#447 @ 368,907: 29x16 +#448 @ 671,851: 15x11 +#449 @ 879,773: 19x17 +#450 @ 745,921: 22x11 +#451 @ 471,497: 18x25 +#452 @ 411,125: 26x10 +#453 @ 374,791: 11x22 +#454 @ 764,776: 27x15 +#455 @ 828,912: 26x13 +#456 @ 531,119: 12x21 +#457 @ 483,495: 28x15 +#458 @ 83,394: 23x19 +#459 @ 582,5: 18x29 +#460 @ 409,275: 29x28 +#461 @ 939,909: 20x28 +#462 @ 796,116: 28x19 +#463 @ 620,830: 28x17 +#464 @ 311,616: 29x26 +#465 @ 553,912: 19x27 +#466 @ 581,971: 22x20 +#467 @ 449,289: 12x18 +#468 @ 762,788: 14x16 +#469 @ 958,553: 15x22 +#470 @ 449,303: 11x10 +#471 @ 122,768: 16x15 +#472 @ 8,367: 24x26 +#473 @ 770,490: 27x15 +#474 @ 439,432: 16x11 +#475 @ 634,60: 27x15 +#476 @ 418,787: 25x18 +#477 @ 838,5: 10x13 +#478 @ 332,166: 17x12 +#479 @ 343,27: 12x26 +#480 @ 334,811: 11x24 +#481 @ 650,56: 15x26 +#482 @ 257,42: 10x27 +#483 @ 956,411: 17x12 +#484 @ 945,397: 25x25 +#485 @ 706,633: 25x11 +#486 @ 349,489: 21x28 +#487 @ 57,472: 15x20 +#488 @ 783,358: 24x26 +#489 @ 578,437: 14x15 +#490 @ 623,380: 23x15 +#491 @ 409,191: 22x18 +#492 @ 628,635: 16x18 +#493 @ 956,202: 17x27 +#494 @ 363,714: 26x11 +#495 @ 731,749: 18x29 +#496 @ 420,80: 11x22 +#497 @ 683,338: 24x28 +#498 @ 522,290: 24x29 +#499 @ 576,548: 17x25 +#500 @ 655,653: 11x27 +#501 @ 961,824: 13x11 +#502 @ 399,858: 21x23 +#503 @ 232,786: 19x15 +#504 @ 187,402: 27x28 +#505 @ 569,90: 25x20 +#506 @ 521,864: 14x20 +#507 @ 865,502: 18x13 +#508 @ 233,884: 16x14 +#509 @ 602,136: 13x15 +#510 @ 381,68: 28x29 +#511 @ 740,876: 17x25 +#512 @ 505,261: 19x10 +#513 @ 384,556: 25x29 +#514 @ 300,845: 17x27 +#515 @ 564,15: 13x19 +#516 @ 11,948: 22x17 +#517 @ 825,414: 15x14 +#518 @ 972,803: 16x20 +#519 @ 239,642: 15x15 +#520 @ 123,689: 27x19 +#521 @ 845,861: 11x13 +#522 @ 24,730: 25x17 +#523 @ 31,769: 24x19 +#524 @ 192,429: 12x21 +#525 @ 913,697: 24x26 +#526 @ 342,697: 10x29 +#527 @ 770,80: 27x16 +#528 @ 738,858: 11x26 +#529 @ 698,707: 10x29 +#530 @ 491,61: 11x21 +#531 @ 408,85: 11x19 +#532 @ 912,144: 11x17 +#533 @ 395,809: 24x25 +#534 @ 553,504: 16x24 +#535 @ 600,882: 24x11 +#536 @ 384,655: 29x24 +#537 @ 61,806: 18x24 +#538 @ 430,97: 14x21 +#539 @ 128,249: 18x14 +#540 @ 669,790: 17x24 +#541 @ 649,593: 16x19 +#542 @ 629,233: 13x11 +#543 @ 917,257: 21x14 +#544 @ 818,670: 12x14 +#545 @ 822,94: 22x14 +#546 @ 237,910: 26x16 +#547 @ 60,99: 17x17 +#548 @ 286,419: 21x19 +#549 @ 880,43: 10x17 +#550 @ 881,610: 18x14 +#551 @ 158,142: 16x22 +#552 @ 307,142: 27x23 +#553 @ 371,329: 19x21 +#554 @ 371,292: 11x24 +#555 @ 657,184: 12x27 +#556 @ 917,252: 16x22 +#557 @ 869,746: 11x29 +#558 @ 485,34: 17x21 +#559 @ 572,737: 14x14 +#560 @ 709,903: 22x10 +#561 @ 67,59: 10x24 +#562 @ 150,369: 14x15 +#563 @ 665,638: 22x14 +#564 @ 780,485: 27x16 +#565 @ 740,810: 25x22 +#566 @ 933,505: 17x27 +#567 @ 418,488: 28x15 +#568 @ 801,241: 26x23 +#569 @ 30,960: 19x12 +#570 @ 749,328: 20x17 +#571 @ 153,675: 5x6 +#572 @ 768,785: 22x15 +#573 @ 888,124: 28x20 +#574 @ 301,384: 13x24 +#575 @ 496,395: 23x20 +#576 @ 70,306: 17x22 +#577 @ 453,965: 28x11 +#578 @ 651,274: 22x14 +#579 @ 300,687: 21x27 +#580 @ 539,451: 22x13 +#581 @ 800,789: 19x16 +#582 @ 928,647: 19x13 +#583 @ 57,949: 21x17 +#584 @ 584,264: 10x25 +#585 @ 586,779: 29x20 +#586 @ 297,349: 27x14 +#587 @ 154,379: 15x15 +#588 @ 59,650: 27x28 +#589 @ 120,836: 24x16 +#590 @ 397,188: 27x21 +#591 @ 223,617: 12x10 +#592 @ 378,343: 23x23 +#593 @ 257,390: 14x21 +#594 @ 67,690: 24x24 +#595 @ 907,171: 26x28 +#596 @ 9,734: 28x27 +#597 @ 149,688: 11x25 +#598 @ 456,965: 21x22 +#599 @ 940,219: 26x27 +#600 @ 892,231: 20x13 +#601 @ 121,432: 10x17 +#602 @ 915,800: 25x10 +#603 @ 54,968: 14x18 +#604 @ 404,591: 25x18 +#605 @ 477,583: 25x12 +#606 @ 932,814: 22x28 +#607 @ 281,137: 16x15 +#608 @ 138,421: 23x28 +#609 @ 737,605: 21x21 +#610 @ 349,660: 17x25 +#611 @ 786,823: 13x24 +#612 @ 205,482: 28x18 +#613 @ 662,797: 18x19 +#614 @ 286,211: 29x25 +#615 @ 244,301: 24x21 +#616 @ 521,821: 20x12 +#617 @ 104,13: 27x28 +#618 @ 570,645: 24x29 +#619 @ 43,231: 14x22 +#620 @ 175,874: 15x20 +#621 @ 695,476: 22x22 +#622 @ 317,311: 19x15 +#623 @ 829,114: 11x12 +#624 @ 718,747: 20x28 +#625 @ 407,82: 18x23 +#626 @ 920,299: 22x21 +#627 @ 368,603: 11x12 +#628 @ 123,468: 26x26 +#629 @ 887,929: 24x24 +#630 @ 910,462: 17x10 +#631 @ 498,344: 20x18 +#632 @ 388,815: 12x28 +#633 @ 389,112: 25x21 +#634 @ 812,240: 12x29 +#635 @ 596,774: 12x21 +#636 @ 271,747: 21x17 +#637 @ 358,553: 24x10 +#638 @ 135,423: 27x23 +#639 @ 616,439: 18x29 +#640 @ 682,516: 25x26 +#641 @ 857,47: 19x21 +#642 @ 289,741: 12x27 +#643 @ 736,620: 20x16 +#644 @ 534,822: 29x29 +#645 @ 574,287: 16x14 +#646 @ 541,82: 17x16 +#647 @ 214,665: 20x14 +#648 @ 865,60: 17x24 +#649 @ 187,587: 17x16 +#650 @ 832,797: 14x23 +#651 @ 521,652: 25x15 +#652 @ 917,736: 21x15 +#653 @ 380,259: 13x12 +#654 @ 436,103: 15x27 +#655 @ 283,134: 13x13 +#656 @ 205,115: 26x28 +#657 @ 466,211: 28x13 +#658 @ 11,785: 10x14 +#659 @ 669,359: 21x25 +#660 @ 407,578: 14x29 +#661 @ 337,174: 24x14 +#662 @ 801,869: 17x11 +#663 @ 71,564: 26x26 +#664 @ 2,692: 17x21 +#665 @ 248,247: 27x29 +#666 @ 738,685: 15x20 +#667 @ 213,215: 18x25 +#668 @ 122,425: 25x13 +#669 @ 523,425: 13x25 +#670 @ 197,688: 20x13 +#671 @ 745,952: 13x25 +#672 @ 666,852: 18x18 +#673 @ 961,686: 24x24 +#674 @ 960,800: 20x27 +#675 @ 523,100: 29x22 +#676 @ 196,598: 20x15 +#677 @ 741,807: 16x23 +#678 @ 493,332: 10x12 +#679 @ 63,475: 10x16 +#680 @ 304,713: 21x24 +#681 @ 824,897: 11x21 +#682 @ 479,40: 25x24 +#683 @ 591,792: 25x23 +#684 @ 432,430: 29x16 +#685 @ 353,435: 24x10 +#686 @ 917,916: 24x17 +#687 @ 536,803: 29x21 +#688 @ 527,182: 14x15 +#689 @ 70,89: 23x13 +#690 @ 188,968: 28x23 +#691 @ 415,560: 14x15 +#692 @ 646,487: 27x10 +#693 @ 540,307: 16x24 +#694 @ 610,751: 15x25 +#695 @ 265,56: 13x10 +#696 @ 764,16: 16x20 +#697 @ 838,98: 16x17 +#698 @ 431,575: 23x20 +#699 @ 343,728: 15x14 +#700 @ 365,631: 29x11 +#701 @ 794,479: 23x11 +#702 @ 453,494: 22x28 +#703 @ 330,285: 20x24 +#704 @ 358,377: 19x29 +#705 @ 115,179: 17x13 +#706 @ 71,838: 15x14 +#707 @ 369,287: 26x19 +#708 @ 957,135: 10x15 +#709 @ 333,374: 28x27 +#710 @ 449,976: 28x20 +#711 @ 390,117: 29x29 +#712 @ 354,813: 13x22 +#713 @ 974,680: 20x12 +#714 @ 158,900: 27x16 +#715 @ 721,938: 17x18 +#716 @ 63,474: 20x23 +#717 @ 286,689: 13x28 +#718 @ 847,916: 19x11 +#719 @ 336,318: 10x25 +#720 @ 379,14: 27x28 +#721 @ 946,142: 15x27 +#722 @ 245,673: 28x19 +#723 @ 771,64: 13x24 +#724 @ 399,80: 11x10 +#725 @ 326,557: 17x14 +#726 @ 662,549: 17x17 +#727 @ 527,965: 5x17 +#728 @ 61,453: 18x18 +#729 @ 100,863: 15x20 +#730 @ 452,465: 25x28 +#731 @ 574,515: 13x16 +#732 @ 754,352: 14x21 +#733 @ 693,78: 29x10 +#734 @ 497,34: 21x16 +#735 @ 161,271: 10x11 +#736 @ 862,404: 11x26 +#737 @ 146,102: 27x25 +#738 @ 589,762: 26x17 +#739 @ 839,729: 10x21 +#740 @ 519,40: 17x12 +#741 @ 163,323: 13x18 +#742 @ 513,916: 12x13 +#743 @ 700,921: 25x23 +#744 @ 352,399: 21x16 +#745 @ 71,50: 26x18 +#746 @ 421,416: 11x13 +#747 @ 220,955: 16x15 +#748 @ 103,130: 24x28 +#749 @ 948,558: 11x12 +#750 @ 0,367: 13x12 +#751 @ 251,274: 17x11 +#752 @ 129,716: 20x25 +#753 @ 561,568: 21x11 +#754 @ 639,762: 26x24 +#755 @ 367,353: 14x15 +#756 @ 531,818: 23x19 +#757 @ 825,210: 16x23 +#758 @ 732,770: 10x18 +#759 @ 378,302: 29x27 +#760 @ 544,209: 18x15 +#761 @ 782,309: 21x10 +#762 @ 547,839: 25x23 +#763 @ 363,526: 29x22 +#764 @ 316,97: 13x23 +#765 @ 353,702: 28x24 +#766 @ 798,39: 14x10 +#767 @ 475,728: 15x23 +#768 @ 629,122: 12x23 +#769 @ 866,738: 19x18 +#770 @ 403,47: 28x26 +#771 @ 628,426: 23x27 +#772 @ 594,136: 10x16 +#773 @ 796,396: 25x17 +#774 @ 125,804: 19x21 +#775 @ 966,222: 22x13 +#776 @ 867,186: 17x12 +#777 @ 932,494: 26x19 +#778 @ 529,791: 24x27 +#779 @ 959,717: 12x14 +#780 @ 36,44: 13x27 +#781 @ 589,130: 23x19 +#782 @ 489,339: 16x13 +#783 @ 783,180: 29x13 +#784 @ 912,892: 18x16 +#785 @ 125,344: 19x18 +#786 @ 530,246: 18x21 +#787 @ 352,355: 23x11 +#788 @ 123,469: 27x18 +#789 @ 586,660: 28x10 +#790 @ 632,5: 25x19 +#791 @ 168,195: 27x29 +#792 @ 8,651: 21x19 +#793 @ 124,824: 18x22 +#794 @ 48,240: 14x17 +#795 @ 468,592: 14x23 +#796 @ 579,847: 21x16 +#797 @ 675,898: 15x22 +#798 @ 420,563: 16x12 +#799 @ 246,32: 16x17 +#800 @ 388,584: 19x21 +#801 @ 250,220: 19x25 +#802 @ 778,306: 19x10 +#803 @ 475,720: 13x10 +#804 @ 754,801: 28x12 +#805 @ 540,214: 7x4 +#806 @ 129,257: 19x20 +#807 @ 400,768: 10x17 +#808 @ 891,675: 25x26 +#809 @ 800,597: 11x11 +#810 @ 516,18: 13x16 +#811 @ 570,397: 12x23 +#812 @ 37,352: 25x13 +#813 @ 534,764: 10x15 +#814 @ 51,875: 27x27 +#815 @ 586,780: 27x10 +#816 @ 563,643: 27x29 +#817 @ 584,810: 13x15 +#818 @ 373,518: 12x10 +#819 @ 71,169: 23x17 +#820 @ 384,21: 17x16 +#821 @ 654,92: 13x20 +#822 @ 756,740: 16x16 +#823 @ 653,388: 26x20 +#824 @ 51,805: 20x15 +#825 @ 797,591: 25x12 +#826 @ 737,233: 20x11 +#827 @ 88,15: 14x19 +#828 @ 173,583: 10x21 +#829 @ 223,700: 19x16 +#830 @ 627,586: 23x29 +#831 @ 838,634: 17x13 +#832 @ 912,454: 19x27 +#833 @ 233,706: 17x22 +#834 @ 740,392: 11x23 +#835 @ 789,474: 13x24 +#836 @ 394,759: 18x11 +#837 @ 837,750: 29x14 +#838 @ 635,273: 14x8 +#839 @ 434,739: 28x18 +#840 @ 78,355: 12x24 +#841 @ 273,46: 19x21 +#842 @ 508,951: 10x15 +#843 @ 397,984: 21x12 +#844 @ 207,278: 29x13 +#845 @ 205,244: 10x23 +#846 @ 224,575: 10x27 +#847 @ 196,258: 26x27 +#848 @ 567,149: 17x29 +#849 @ 557,290: 22x11 +#850 @ 658,255: 15x20 +#851 @ 363,642: 16x21 +#852 @ 913,26: 13x16 +#853 @ 325,331: 25x13 +#854 @ 957,948: 25x15 +#855 @ 982,788: 11x24 +#856 @ 886,521: 10x28 +#857 @ 657,205: 17x28 +#858 @ 927,589: 14x23 +#859 @ 612,964: 12x12 +#860 @ 531,660: 20x12 +#861 @ 563,465: 22x14 +#862 @ 247,8: 17x25 +#863 @ 977,305: 17x17 +#864 @ 52,757: 20x20 +#865 @ 607,240: 16x19 +#866 @ 287,212: 26x11 +#867 @ 207,590: 22x10 +#868 @ 299,24: 27x24 +#869 @ 226,468: 18x25 +#870 @ 84,166: 14x16 +#871 @ 241,533: 17x23 +#872 @ 192,205: 13x17 +#873 @ 813,3: 29x17 +#874 @ 36,893: 22x13 +#875 @ 235,797: 23x12 +#876 @ 444,379: 21x11 +#877 @ 757,819: 22x4 +#878 @ 456,283: 20x18 +#879 @ 342,50: 22x22 +#880 @ 522,873: 10x23 +#881 @ 669,294: 15x15 +#882 @ 114,720: 15x26 +#883 @ 281,814: 28x17 +#884 @ 583,764: 14x23 +#885 @ 631,339: 11x12 +#886 @ 604,829: 18x15 +#887 @ 642,497: 7x15 +#888 @ 945,850: 17x28 +#889 @ 378,277: 20x24 +#890 @ 376,236: 29x17 +#891 @ 853,482: 19x12 +#892 @ 179,300: 23x21 +#893 @ 820,398: 21x20 +#894 @ 464,503: 20x21 +#895 @ 656,475: 11x19 +#896 @ 228,127: 17x20 +#897 @ 815,878: 14x22 +#898 @ 982,619: 13x18 +#899 @ 98,221: 3x6 +#900 @ 225,538: 28x28 +#901 @ 888,60: 18x28 +#902 @ 721,626: 26x25 +#903 @ 2,221: 22x24 +#904 @ 443,921: 22x19 +#905 @ 825,87: 21x27 +#906 @ 564,390: 13x13 +#907 @ 96,212: 23x27 +#908 @ 6,597: 20x23 +#909 @ 317,576: 21x13 +#910 @ 54,360: 18x15 +#911 @ 698,723: 21x25 +#912 @ 17,228: 22x29 +#913 @ 756,199: 15x23 +#914 @ 684,63: 23x26 +#915 @ 146,920: 17x23 +#916 @ 375,783: 11x19 +#917 @ 905,799: 18x13 +#918 @ 370,788: 16x12 +#919 @ 173,702: 22x22 +#920 @ 626,89: 18x26 +#921 @ 128,199: 26x24 +#922 @ 852,845: 23x25 +#923 @ 892,592: 14x18 +#924 @ 515,753: 28x17 +#925 @ 950,529: 15x25 +#926 @ 925,166: 18x16 +#927 @ 224,813: 20x20 +#928 @ 57,65: 13x17 +#929 @ 461,616: 21x24 +#930 @ 692,726: 15x20 +#931 @ 566,120: 18x18 +#932 @ 815,250: 10x24 +#933 @ 813,792: 19x10 +#934 @ 949,326: 21x20 +#935 @ 452,784: 15x22 +#936 @ 701,294: 12x23 +#937 @ 553,140: 20x14 +#938 @ 532,270: 19x20 +#939 @ 381,758: 22x26 +#940 @ 364,538: 13x28 +#941 @ 361,638: 29x23 +#942 @ 0,244: 24x14 +#943 @ 984,805: 13x19 +#944 @ 355,223: 14x18 +#945 @ 972,619: 16x16 +#946 @ 953,249: 17x26 +#947 @ 400,899: 22x23 +#948 @ 359,854: 17x20 +#949 @ 187,862: 14x22 +#950 @ 130,227: 23x16 +#951 @ 185,619: 25x14 +#952 @ 547,610: 21x14 +#953 @ 118,297: 25x13 +#954 @ 239,346: 23x15 +#955 @ 737,484: 23x17 +#956 @ 470,543: 27x24 +#957 @ 101,633: 10x14 +#958 @ 421,419: 20x18 +#959 @ 157,460: 25x18 +#960 @ 716,765: 18x14 +#961 @ 636,17: 17x12 +#962 @ 528,290: 25x16 +#963 @ 910,871: 26x27 +#964 @ 634,44: 12x25 +#965 @ 610,382: 18x23 +#966 @ 852,613: 20x28 +#967 @ 836,855: 22x28 +#968 @ 805,670: 19x12 +#969 @ 165,698: 22x16 +#970 @ 83,398: 16x22 +#971 @ 316,575: 22x23 +#972 @ 173,523: 17x14 +#973 @ 791,797: 20x20 +#974 @ 357,412: 12x10 +#975 @ 118,391: 12x26 +#976 @ 749,90: 12x17 +#977 @ 700,779: 17x17 +#978 @ 810,554: 28x20 +#979 @ 490,252: 28x25 +#980 @ 344,864: 20x27 +#981 @ 368,268: 14x10 +#982 @ 886,416: 26x22 +#983 @ 129,819: 10x15 +#984 @ 622,376: 12x25 +#985 @ 425,590: 25x12 +#986 @ 788,510: 17x26 +#987 @ 527,351: 28x11 +#988 @ 929,390: 11x29 +#989 @ 913,892: 11x26 +#990 @ 759,385: 14x19 +#991 @ 245,40: 21x12 +#992 @ 587,808: 20x27 +#993 @ 679,102: 24x28 +#994 @ 949,327: 22x18 +#995 @ 42,932: 29x25 +#996 @ 519,958: 19x29 +#997 @ 671,765: 26x29 +#998 @ 125,189: 23x20 +#999 @ 388,314: 23x27 +#1000 @ 241,51: 16x25 +#1001 @ 6,682: 13x21 +#1002 @ 603,954: 10x19 +#1003 @ 84,358: 19x18 +#1004 @ 26,974: 22x22 +#1005 @ 676,651: 15x20 +#1006 @ 296,76: 28x22 +#1007 @ 350,553: 25x21 +#1008 @ 521,473: 14x19 +#1009 @ 213,675: 15x24 +#1010 @ 244,11: 29x16 +#1011 @ 480,326: 11x21 +#1012 @ 894,766: 28x24 +#1013 @ 630,639: 21x29 +#1014 @ 973,329: 16x21 +#1015 @ 145,266: 28x16 +#1016 @ 555,497: 16x16 +#1017 @ 527,168: 11x4 +#1018 @ 632,388: 28x16 +#1019 @ 283,689: 16x22 +#1020 @ 640,488: 16x28 +#1021 @ 619,818: 21x12 +#1022 @ 935,357: 21x15 +#1023 @ 315,483: 26x21 +#1024 @ 395,225: 21x17 +#1025 @ 739,963: 27x28 +#1026 @ 349,330: 13x14 +#1027 @ 511,466: 14x22 +#1028 @ 801,274: 14x10 +#1029 @ 353,501: 22x28 +#1030 @ 749,723: 19x26 +#1031 @ 216,816: 24x27 +#1032 @ 28,433: 27x19 +#1033 @ 605,246: 25x10 +#1034 @ 590,875: 22x18 +#1035 @ 800,354: 20x16 +#1036 @ 524,161: 18x15 +#1037 @ 538,904: 28x24 +#1038 @ 683,483: 27x16 +#1039 @ 817,933: 8x3 +#1040 @ 147,917: 14x28 +#1041 @ 571,532: 11x24 +#1042 @ 175,527: 8x5 +#1043 @ 22,346: 13x28 +#1044 @ 713,401: 19x19 +#1045 @ 107,384: 15x27 +#1046 @ 63,472: 23x14 +#1047 @ 462,441: 27x15 +#1048 @ 194,703: 14x11 +#1049 @ 335,122: 11x12 +#1050 @ 202,331: 29x27 +#1051 @ 204,408: 10x18 +#1052 @ 588,422: 26x25 +#1053 @ 299,288: 22x10 +#1054 @ 735,558: 11x10 +#1055 @ 10,725: 25x14 +#1056 @ 644,530: 18x28 +#1057 @ 504,903: 13x28 +#1058 @ 596,131: 13x21 +#1059 @ 725,676: 21x12 +#1060 @ 829,633: 27x15 +#1061 @ 522,76: 14x20 +#1062 @ 749,491: 19x13 +#1063 @ 676,793: 19x22 +#1064 @ 722,844: 11x10 +#1065 @ 755,940: 14x17 +#1066 @ 218,648: 21x15 +#1067 @ 973,644: 26x14 +#1068 @ 698,596: 26x16 +#1069 @ 395,798: 14x23 +#1070 @ 713,568: 27x20 +#1071 @ 956,221: 13x24 +#1072 @ 895,258: 18x29 +#1073 @ 46,221: 16x22 +#1074 @ 293,845: 25x25 +#1075 @ 50,248: 12x25 +#1076 @ 173,851: 23x20 +#1077 @ 704,292: 20x11 +#1078 @ 607,743: 27x14 +#1079 @ 381,354: 23x10 +#1080 @ 577,468: 12x25 +#1081 @ 887,570: 17x23 +#1082 @ 233,613: 27x23 +#1083 @ 172,158: 15x22 +#1084 @ 139,719: 22x19 +#1085 @ 941,203: 10x18 +#1086 @ 154,350: 20x27 +#1087 @ 603,794: 14x20 +#1088 @ 666,475: 23x29 +#1089 @ 167,256: 24x16 +#1090 @ 773,263: 16x20 +#1091 @ 218,422: 12x28 +#1092 @ 115,719: 20x13 +#1093 @ 750,722: 29x17 +#1094 @ 774,523: 29x12 +#1095 @ 628,391: 22x11 +#1096 @ 308,726: 15x16 +#1097 @ 382,427: 14x15 +#1098 @ 726,488: 18x17 +#1099 @ 934,890: 10x25 +#1100 @ 561,489: 14x19 +#1101 @ 61,242: 11x16 +#1102 @ 929,172: 22x21 +#1103 @ 531,231: 12x16 +#1104 @ 472,845: 28x16 +#1105 @ 14,362: 21x22 +#1106 @ 219,705: 17x26 +#1107 @ 576,12: 16x29 +#1108 @ 783,279: 19x23 +#1109 @ 217,69: 28x16 +#1110 @ 261,567: 16x28 +#1111 @ 91,864: 12x16 +#1112 @ 98,16: 14x13 +#1113 @ 518,563: 10x20 +#1114 @ 865,653: 22x19 +#1115 @ 231,539: 15x15 +#1116 @ 562,876: 28x22 +#1117 @ 843,15: 12x11 +#1118 @ 584,812: 17x13 +#1119 @ 969,647: 15x20 +#1120 @ 840,201: 22x18 +#1121 @ 438,480: 21x19 +#1122 @ 22,117: 10x20 +#1123 @ 231,882: 25x20 +#1124 @ 27,611: 26x16 +#1125 @ 16,61: 22x29 +#1126 @ 768,460: 14x26 +#1127 @ 267,559: 17x19 +#1128 @ 942,921: 14x14 +#1129 @ 168,270: 25x16 +#1130 @ 808,480: 14x21 +#1131 @ 623,809: 16x11 +#1132 @ 501,369: 29x27 +#1133 @ 59,452: 23x25 +#1134 @ 820,605: 25x27 +#1135 @ 591,798: 17x25 +#1136 @ 600,544: 13x25 +#1137 @ 446,664: 12x18 +#1138 @ 41,961: 17x14 +#1139 @ 66,70: 20x28 +#1140 @ 816,664: 25x27 +#1141 @ 348,716: 21x27 +#1142 @ 742,99: 14x16 +#1143 @ 214,228: 25x22 +#1144 @ 292,336: 29x26 +#1145 @ 483,317: 12x25 +#1146 @ 411,301: 19x23 +#1147 @ 851,206: 17x21 +#1148 @ 403,37: 22x23 +#1149 @ 143,270: 21x28 +#1150 @ 68,471: 10x11 +#1151 @ 471,442: 20x15 +#1152 @ 586,793: 10x25 +#1153 @ 362,737: 5x8 +#1154 @ 73,897: 12x19 +#1155 @ 213,108: 22x26 +#1156 @ 755,816: 29x14 +#1157 @ 182,731: 23x21 +#1158 @ 260,224: 21x17 +#1159 @ 408,780: 26x12 +#1160 @ 742,331: 11x29 +#1161 @ 34,445: 20x20 +#1162 @ 706,114: 11x19 +#1163 @ 112,8: 12x11 +#1164 @ 242,573: 18x25 +#1165 @ 142,260: 26x20 +#1166 @ 449,278: 21x10 +#1167 @ 826,5: 13x23 +#1168 @ 589,775: 29x13 +#1169 @ 309,300: 29x10 +#1170 @ 512,262: 21x28 +#1171 @ 962,217: 24x27 +#1172 @ 533,489: 26x10 +#1173 @ 108,635: 27x20 +#1174 @ 629,522: 17x10 +#1175 @ 356,340: 14x23 +#1176 @ 225,867: 17x29 +#1177 @ 578,951: 27x11 +#1178 @ 324,171: 17x21 +#1179 @ 182,637: 15x20 +#1180 @ 912,156: 25x27 +#1181 @ 241,265: 29x16 +#1182 @ 313,594: 28x18 +#1183 @ 842,472: 15x28 +#1184 @ 94,746: 14x18 +#1185 @ 865,240: 28x16 +#1186 @ 653,58: 4x11 +#1187 @ 556,168: 11x14 +#1188 @ 795,258: 25x10 +#1189 @ 55,893: 22x11 +#1190 @ 669,912: 24x24 +#1191 @ 148,111: 10x11 +#1192 @ 794,451: 3x12 +#1193 @ 24,609: 21x14 +#1194 @ 779,739: 20x23 +#1195 @ 261,466: 25x25 +#1196 @ 702,338: 10x18 +#1197 @ 624,441: 16x15 +#1198 @ 8,939: 14x14 +#1199 @ 307,164: 18x21 +#1200 @ 569,625: 28x26 +#1201 @ 97,723: 27x17 +#1202 @ 584,815: 17x12 +#1203 @ 664,121: 15x29 +#1204 @ 794,246: 13x19 +#1205 @ 680,778: 17x26 +#1206 @ 547,765: 17x21 +#1207 @ 749,230: 17x24 +#1208 @ 599,934: 29x27 +#1209 @ 165,729: 29x17 +#1210 @ 627,76: 19x28 +#1211 @ 937,549: 22x18 +#1212 @ 442,476: 14x21 +#1213 @ 274,454: 13x17 +#1214 @ 146,721: 21x24 +#1215 @ 603,744: 12x27 +#1216 @ 801,113: 26x28 +#1217 @ 529,524: 29x21 +#1218 @ 819,51: 21x18 +#1219 @ 605,214: 19x23 +#1220 @ 544,215: 27x16 +#1221 @ 215,221: 29x16 +#1222 @ 331,216: 25x19 +#1223 @ 212,419: 27x16 +#1224 @ 649,91: 28x14 +#1225 @ 419,445: 24x17 +#1226 @ 450,723: 10x23 +#1227 @ 342,810: 17x16 +#1228 @ 239,696: 28x21 +#1229 @ 332,638: 10x26 +#1230 @ 798,410: 21x21 +#1231 @ 578,115: 17x10 +#1232 @ 683,746: 18x25 +#1233 @ 439,753: 11x15 +#1234 @ 427,560: 21x25 +#1235 @ 206,232: 28x23 +#1236 @ 72,449: 25x19 +#1237 @ 176,893: 22x16 +#1238 @ 399,309: 27x17 +#1239 @ 87,158: 10x20 +#1240 @ 656,108: 18x24 +#1241 @ 610,948: 26x22 +#1242 @ 766,834: 24x28 +#1243 @ 423,187: 23x11 +#1244 @ 957,207: 24x11 +#1245 @ 323,107: 26x17 +#1246 @ 139,349: 26x28 +#1247 @ 964,416: 22x14 +#1248 @ 924,460: 27x16 +#1249 @ 359,848: 15x21 +#1250 @ 418,924: 28x13 +#1251 @ 333,311: 14x18 +#1252 @ 647,250: 19x10 +#1253 @ 248,844: 29x20 +#1254 @ 626,242: 28x21 +#1255 @ 814,434: 16x16 +#1256 @ 228,18: 26x16 +#1257 @ 606,542: 11x23 +#1258 @ 728,234: 29x17 +#1259 @ 683,181: 24x22 +#1260 @ 653,551: 16x24 +#1261 @ 554,621: 24x27 +#1262 @ 188,653: 19x10 +#1263 @ 507,78: 19x26 +#1264 @ 754,238: 16x26 +#1265 @ 467,735: 13x11 +#1266 @ 75,890: 13x13 +#1267 @ 653,601: 21x12 +#1268 @ 165,143: 19x16 +#1269 @ 16,880: 14x22 +#1270 @ 733,499: 21x25 +#1271 @ 825,232: 12x28 +#1272 @ 106,297: 20x10 +#1273 @ 956,674: 24x13 +#1274 @ 686,171: 4x10 +#1275 @ 764,447: 21x19 +#1276 @ 417,878: 23x21 +#1277 @ 645,428: 12x23 +#1278 @ 386,868: 27x21 +#1279 @ 533,203: 16x24 +#1280 @ 726,728: 13x12 +#1281 @ 35,488: 25x15 +#1282 @ 948,830: 15x21 +#1283 @ 25,868: 29x27 +#1284 @ 309,401: 23x25 +#1285 @ 725,559: 11x28 +#1286 @ 352,885: 16x19 +#1287 @ 70,283: 10x29 +#1288 @ 688,790: 21x24 +#1289 @ 733,364: 13x10 +#1290 @ 576,54: 18x23 +#1291 @ 818,113: 26x28 +#1292 @ 77,838: 15x24 +#1293 @ 585,356: 23x19 +#1294 @ 547,575: 17x14 +#1295 @ 687,353: 13x16 +#1296 @ 948,936: 25x24 +#1297 @ 276,567: 10x10 +#1298 @ 230,792: 27x27 +#1299 @ 271,729: 27x23 +#1300 @ 842,333: 16x10 +#1301 @ 149,738: 18x12 +#1302 @ 521,722: 11x21 +#1303 @ 144,770: 13x29 +#1304 @ 430,193: 17x19 +#1305 @ 2,220: 19x24 +#1306 @ 68,884: 21x25 +#1307 @ 639,244: 23x26 +#1308 @ 701,555: 18x21 +#1309 @ 941,465: 21x18 +#1310 @ 323,629: 10x26 +#1311 @ 747,326: 12x24 +#1312 @ 40,231: 15x10 +#1313 @ 452,496: 13x29 +#1314 @ 204,627: 13x18 +#1315 @ 146,448: 22x22 +#1316 @ 980,640: 12x16 +#1317 @ 986,454: 11x17 +#1318 @ 424,73: 23x28 +#1319 @ 184,550: 19x18 +#1320 @ 906,687: 27x19 +#1321 @ 851,414: 26x19 +#1322 @ 395,827: 18x19 +#1323 @ 678,786: 17x17 +#1324 @ 324,173: 26x29 +#1325 @ 19,345: 20x18 +#1326 @ 137,342: 20x28 +#1327 @ 282,756: 11x11 +#1328 @ 461,195: 17x29 +#1329 @ 233,282: 27x13 +#1330 @ 625,403: 10x22 +#1331 @ 149,113: 21x14 +#1332 @ 965,470: 25x15 +#1333 @ 209,417: 27x26 +#1334 @ 249,392: 27x17 +#1335 @ 234,644: 26x22 +#1336 @ 178,872: 12x26 +#1337 @ 629,513: 22x24 +#1338 @ 257,369: 19x16 +#1339 @ 205,150: 17x13 +#1340 @ 940,461: 16x25 +#1341 @ 411,278: 19x29 +#1342 @ 794,411: 17x12 +#1343 @ 439,562: 13x15 +#1344 @ 483,842: 11x12 +#1345 @ 278,826: 14x12 +#1346 @ 494,466: 20x18 +#1347 @ 105,484: 26x19 +#1348 @ 328,178: 11x23 +#1349 @ 221,56: 11x16 +#1350 @ 14,774: 13x27 +#1351 @ 817,870: 18x21 +#1352 @ 961,94: 22x13 +#1353 @ 892,936: 15x3 +#1354 @ 148,958: 26x11 +#1355 @ 383,325: 23x19 +#1356 @ 156,606: 10x28 +#1357 @ 869,860: 25x17 +#1358 @ 802,673: 27x10 +#1359 @ 203,825: 28x11 +#1360 @ 586,245: 11x25 +#1361 @ 456,770: 27x17 +#1362 @ 814,893: 26x11 +#1363 @ 546,679: 26x16 +#1364 @ 606,761: 11x23 +#1365 @ 602,356: 11x20 +#1366 @ 927,32: 26x18 +#1367 @ 299,432: 12x29 +#1368 @ 57,670: 15x25 +#1369 @ 744,336: 14x23 +#1370 @ 790,445: 11x23 +#1371 @ 923,183: 20x16 +#1372 @ 865,426: 27x15 +#1373 @ 620,398: 22x14 +#1374 @ 65,144: 24x26 +#1375 @ 45,232: 24x18 +#1376 @ 538,459: 23x11 +#1377 @ 36,462: 22x12 +#1378 @ 215,896: 23x26 +#1379 @ 651,253: 17x28 +#1380 @ 213,809: 14x20 +#1381 @ 310,589: 15x24 +#1382 @ 680,83: 14x28 +#1383 @ 407,369: 14x17 +#1384 @ 168,584: 17x12 +#1385 @ 612,761: 21x19 +#1386 @ 451,547: 25x15 +#1387 @ 360,454: 28x15 +#1388 @ 836,336: 11x13 +#1389 @ 190,547: 19x16 +#1390 @ 917,749: 21x17 +#1391 @ 515,95: 12x25 +#1392 @ 262,691: 10x21 +#1393 @ 203,82: 12x22 +#1394 @ 325,157: 11x18 +#1395 @ 636,801: 19x24 +#1396 @ 75,763: 20x22 +#1397 @ 24,759: 21x25 +#1398 @ 215,609: 24x11 +#1399 @ 564,530: 21x13 +#1400 @ 873,28: 11x27 +#1401 @ 193,688: 16x13 +#1402 @ 328,680: 23x27 +#1403 @ 100,143: 10x12 +#1404 @ 807,925: 22x17 +#1405 @ 257,697: 27x22 +#1406 @ 886,0: 29x26 +#1407 @ 657,674: 29x12 +#1408 @ 208,741: 14x17 +#1409 @ 285,437: 10x26 \ No newline at end of file diff --git a/data/2018/4.txt b/data/2018/4.txt new file mode 100644 index 0000000..5b3ddee --- /dev/null +++ b/data/2018/4.txt @@ -0,0 +1,905 @@ +[1518-09-16 23:57] Guard #1889 begins shift +[1518-04-16 00:03] Guard #2897 begins shift +[1518-04-29 23:57] Guard #1663 begins shift +[1518-05-27 00:47] wakes up +[1518-04-27 23:50] Guard #661 begins shift +[1518-08-29 00:58] wakes up +[1518-09-26 00:48] falls asleep +[1518-07-16 00:43] wakes up +[1518-08-17 00:26] falls asleep +[1518-08-17 00:53] wakes up +[1518-09-02 00:55] falls asleep +[1518-10-25 00:02] Guard #661 begins shift +[1518-08-07 00:00] Guard #61 begins shift +[1518-11-06 00:52] wakes up +[1518-08-24 00:33] falls asleep +[1518-09-12 00:32] wakes up +[1518-08-29 00:46] wakes up +[1518-09-01 00:45] wakes up +[1518-09-16 00:01] Guard #1291 begins shift +[1518-06-13 23:46] Guard #3307 begins shift +[1518-05-01 00:49] wakes up +[1518-09-29 00:05] falls asleep +[1518-11-04 23:54] Guard #1433 begins shift +[1518-09-19 00:03] falls asleep +[1518-10-31 23:54] Guard #409 begins shift +[1518-08-02 00:53] wakes up +[1518-05-23 00:08] falls asleep +[1518-10-04 00:43] falls asleep +[1518-08-26 00:43] falls asleep +[1518-04-14 00:31] wakes up +[1518-04-11 23:58] Guard #1471 begins shift +[1518-05-11 00:04] falls asleep +[1518-06-14 00:04] falls asleep +[1518-07-24 00:54] falls asleep +[1518-08-23 00:04] falls asleep +[1518-09-02 00:01] Guard #1433 begins shift +[1518-04-10 00:49] wakes up +[1518-08-09 00:20] wakes up +[1518-05-28 00:41] wakes up +[1518-05-24 00:02] Guard #2633 begins shift +[1518-09-14 00:00] Guard #3121 begins shift +[1518-08-11 00:17] falls asleep +[1518-05-12 00:47] falls asleep +[1518-06-27 00:47] wakes up +[1518-11-13 00:20] falls asleep +[1518-06-24 23:59] Guard #3121 begins shift +[1518-09-14 00:56] wakes up +[1518-11-19 00:58] wakes up +[1518-11-21 00:38] falls asleep +[1518-06-15 00:02] Guard #409 begins shift +[1518-11-17 00:31] falls asleep +[1518-04-06 00:40] wakes up +[1518-09-06 00:42] falls asleep +[1518-11-11 00:37] falls asleep +[1518-06-19 23:49] Guard #2819 begins shift +[1518-07-12 23:53] Guard #3037 begins shift +[1518-10-11 00:50] wakes up +[1518-11-13 00:40] wakes up +[1518-10-15 00:52] wakes up +[1518-06-14 00:07] wakes up +[1518-10-25 00:54] falls asleep +[1518-05-25 00:59] wakes up +[1518-05-17 00:33] falls asleep +[1518-08-03 23:54] Guard #2459 begins shift +[1518-10-03 00:17] falls asleep +[1518-09-22 00:34] falls asleep +[1518-05-23 00:29] falls asleep +[1518-05-08 00:14] falls asleep +[1518-07-15 00:19] falls asleep +[1518-06-26 00:48] wakes up +[1518-09-12 00:30] falls asleep +[1518-07-11 00:38] wakes up +[1518-10-11 00:43] falls asleep +[1518-09-30 00:07] falls asleep +[1518-10-15 00:20] falls asleep +[1518-10-27 00:50] falls asleep +[1518-08-11 00:02] Guard #1931 begins shift +[1518-06-25 00:58] wakes up +[1518-11-13 00:02] Guard #2447 begins shift +[1518-10-27 00:41] wakes up +[1518-04-24 00:05] falls asleep +[1518-06-30 00:00] falls asleep +[1518-04-23 00:58] wakes up +[1518-11-19 00:42] falls asleep +[1518-07-18 00:52] wakes up +[1518-08-22 23:46] Guard #61 begins shift +[1518-07-05 23:50] Guard #1889 begins shift +[1518-05-20 00:04] falls asleep +[1518-07-12 00:30] wakes up +[1518-10-21 00:10] falls asleep +[1518-10-12 00:02] Guard #947 begins shift +[1518-06-28 00:35] falls asleep +[1518-11-09 00:33] wakes up +[1518-11-17 00:00] Guard #409 begins shift +[1518-11-07 00:12] falls asleep +[1518-06-04 00:59] wakes up +[1518-06-30 00:33] falls asleep +[1518-09-02 00:22] falls asleep +[1518-11-06 23:59] Guard #2459 begins shift +[1518-09-27 23:52] Guard #947 begins shift +[1518-10-27 00:35] falls asleep +[1518-07-22 00:00] Guard #1889 begins shift +[1518-06-21 00:53] wakes up +[1518-05-06 00:50] wakes up +[1518-06-11 23:58] Guard #1931 begins shift +[1518-10-08 00:00] Guard #1433 begins shift +[1518-09-09 00:25] wakes up +[1518-04-23 23:47] Guard #1291 begins shift +[1518-04-09 23:59] Guard #61 begins shift +[1518-10-02 00:38] wakes up +[1518-06-30 00:14] wakes up +[1518-06-14 00:44] falls asleep +[1518-07-19 00:04] Guard #1283 begins shift +[1518-09-08 00:02] Guard #467 begins shift +[1518-06-19 00:56] falls asleep +[1518-08-08 00:10] falls asleep +[1518-11-19 00:36] wakes up +[1518-11-02 00:42] falls asleep +[1518-05-24 00:40] wakes up +[1518-06-08 00:43] wakes up +[1518-04-23 00:57] falls asleep +[1518-08-26 00:33] falls asleep +[1518-10-06 00:36] falls asleep +[1518-05-02 00:59] wakes up +[1518-07-29 00:49] wakes up +[1518-08-24 00:39] wakes up +[1518-05-07 00:02] Guard #947 begins shift +[1518-11-11 00:12] falls asleep +[1518-11-17 00:32] wakes up +[1518-10-09 00:19] falls asleep +[1518-08-13 00:48] wakes up +[1518-09-02 23:56] Guard #947 begins shift +[1518-09-20 00:02] Guard #3121 begins shift +[1518-10-12 00:47] falls asleep +[1518-08-01 00:10] falls asleep +[1518-10-01 00:47] wakes up +[1518-05-11 00:05] wakes up +[1518-09-13 00:16] wakes up +[1518-08-24 00:59] wakes up +[1518-08-26 00:47] wakes up +[1518-08-29 00:30] falls asleep +[1518-08-15 00:04] Guard #2447 begins shift +[1518-05-04 00:56] wakes up +[1518-09-07 00:55] wakes up +[1518-07-11 23:53] Guard #409 begins shift +[1518-11-20 00:31] falls asleep +[1518-05-07 00:18] falls asleep +[1518-05-04 00:30] wakes up +[1518-09-24 00:42] wakes up +[1518-05-18 00:21] falls asleep +[1518-07-18 00:02] Guard #1663 begins shift +[1518-04-16 00:35] wakes up +[1518-10-19 00:46] falls asleep +[1518-06-21 00:05] falls asleep +[1518-08-30 00:34] falls asleep +[1518-09-23 00:45] falls asleep +[1518-06-04 00:53] falls asleep +[1518-11-07 00:34] wakes up +[1518-09-07 00:45] wakes up +[1518-07-01 00:48] falls asleep +[1518-10-10 00:47] wakes up +[1518-05-02 00:46] wakes up +[1518-06-14 00:52] wakes up +[1518-07-17 00:31] falls asleep +[1518-05-19 23:53] Guard #3307 begins shift +[1518-09-13 00:03] falls asleep +[1518-07-02 00:54] wakes up +[1518-05-22 00:29] falls asleep +[1518-10-19 23:56] Guard #2447 begins shift +[1518-09-26 00:56] wakes up +[1518-04-10 00:11] falls asleep +[1518-09-28 23:52] Guard #2819 begins shift +[1518-08-08 23:48] Guard #1663 begins shift +[1518-05-04 00:37] falls asleep +[1518-10-21 23:58] Guard #3491 begins shift +[1518-09-15 00:42] falls asleep +[1518-06-24 00:40] falls asleep +[1518-09-22 00:53] wakes up +[1518-04-08 00:01] falls asleep +[1518-06-01 00:36] wakes up +[1518-05-15 00:04] Guard #2633 begins shift +[1518-07-03 00:11] falls asleep +[1518-07-20 00:30] falls asleep +[1518-09-09 00:53] wakes up +[1518-04-12 00:57] falls asleep +[1518-10-19 00:00] Guard #2633 begins shift +[1518-11-05 00:53] wakes up +[1518-10-26 00:19] falls asleep +[1518-07-07 00:04] falls asleep +[1518-05-25 00:39] falls asleep +[1518-04-11 00:59] wakes up +[1518-07-27 00:04] Guard #2459 begins shift +[1518-08-17 00:40] wakes up +[1518-09-04 00:32] falls asleep +[1518-04-25 00:00] Guard #1889 begins shift +[1518-11-02 00:51] wakes up +[1518-05-22 00:30] wakes up +[1518-04-19 00:56] wakes up +[1518-09-16 00:39] falls asleep +[1518-09-03 00:44] falls asleep +[1518-07-08 23:56] Guard #661 begins shift +[1518-10-02 00:58] wakes up +[1518-04-12 23:59] Guard #2633 begins shift +[1518-09-26 23:56] Guard #2633 begins shift +[1518-08-26 00:40] wakes up +[1518-08-21 00:01] falls asleep +[1518-10-27 00:56] wakes up +[1518-06-22 00:01] Guard #467 begins shift +[1518-06-17 00:59] wakes up +[1518-09-17 00:36] falls asleep +[1518-04-24 00:21] wakes up +[1518-09-04 00:45] wakes up +[1518-06-07 00:48] wakes up +[1518-10-16 00:57] wakes up +[1518-06-09 00:11] falls asleep +[1518-05-06 00:03] Guard #1283 begins shift +[1518-09-11 23:58] Guard #409 begins shift +[1518-09-10 00:04] falls asleep +[1518-10-02 00:50] falls asleep +[1518-05-23 00:54] wakes up +[1518-08-21 00:54] wakes up +[1518-10-12 23:56] Guard #61 begins shift +[1518-07-13 00:42] wakes up +[1518-06-08 23:59] Guard #2633 begins shift +[1518-08-03 00:25] wakes up +[1518-04-26 00:32] falls asleep +[1518-04-09 00:39] wakes up +[1518-07-11 00:20] falls asleep +[1518-07-01 00:21] falls asleep +[1518-07-17 00:04] Guard #3121 begins shift +[1518-05-10 23:51] Guard #2459 begins shift +[1518-11-17 00:55] wakes up +[1518-05-23 00:25] wakes up +[1518-09-12 00:23] wakes up +[1518-06-26 00:00] Guard #2897 begins shift +[1518-08-26 00:03] Guard #1433 begins shift +[1518-10-07 00:32] wakes up +[1518-11-22 00:37] falls asleep +[1518-06-08 00:15] falls asleep +[1518-04-26 23:58] Guard #1291 begins shift +[1518-05-24 00:50] wakes up +[1518-10-19 00:56] falls asleep +[1518-08-19 00:26] falls asleep +[1518-04-30 23:56] Guard #1471 begins shift +[1518-06-16 00:07] falls asleep +[1518-06-04 00:00] Guard #3307 begins shift +[1518-04-21 00:00] Guard #1283 begins shift +[1518-10-29 00:14] falls asleep +[1518-07-05 00:06] falls asleep +[1518-07-09 00:28] wakes up +[1518-06-20 23:50] Guard #3307 begins shift +[1518-04-19 00:04] Guard #2897 begins shift +[1518-07-08 00:26] wakes up +[1518-07-23 00:24] falls asleep +[1518-05-16 00:55] wakes up +[1518-07-19 00:51] wakes up +[1518-10-13 23:49] Guard #61 begins shift +[1518-06-28 00:29] falls asleep +[1518-11-12 00:17] wakes up +[1518-07-03 00:43] wakes up +[1518-05-17 00:05] falls asleep +[1518-09-10 00:48] falls asleep +[1518-06-11 00:18] falls asleep +[1518-04-09 00:01] falls asleep +[1518-09-12 00:13] falls asleep +[1518-06-11 00:01] Guard #1471 begins shift +[1518-06-17 00:00] Guard #3307 begins shift +[1518-06-19 00:40] falls asleep +[1518-10-01 00:43] falls asleep +[1518-04-30 00:19] falls asleep +[1518-04-22 00:53] wakes up +[1518-11-15 00:03] Guard #419 begins shift +[1518-08-07 00:54] falls asleep +[1518-06-13 00:53] falls asleep +[1518-11-08 00:34] falls asleep +[1518-06-13 00:58] wakes up +[1518-10-26 00:47] wakes up +[1518-04-20 00:33] wakes up +[1518-07-24 00:01] Guard #1291 begins shift +[1518-04-12 00:50] wakes up +[1518-11-02 00:23] falls asleep +[1518-09-25 00:50] falls asleep +[1518-09-24 00:46] falls asleep +[1518-05-04 23:58] Guard #661 begins shift +[1518-05-27 00:07] falls asleep +[1518-09-17 00:23] wakes up +[1518-10-11 00:55] wakes up +[1518-09-15 00:27] falls asleep +[1518-10-30 23:52] Guard #1291 begins shift +[1518-10-23 00:39] wakes up +[1518-09-20 00:48] wakes up +[1518-04-07 00:04] falls asleep +[1518-05-03 00:39] falls asleep +[1518-07-26 00:57] wakes up +[1518-06-23 00:00] Guard #947 begins shift +[1518-06-18 00:33] falls asleep +[1518-08-29 23:58] Guard #2633 begins shift +[1518-06-08 00:33] falls asleep +[1518-05-25 00:57] falls asleep +[1518-05-09 00:37] wakes up +[1518-11-21 00:40] wakes up +[1518-09-30 00:56] falls asleep +[1518-08-01 00:00] Guard #61 begins shift +[1518-06-05 00:54] falls asleep +[1518-09-28 00:03] falls asleep +[1518-05-09 00:09] falls asleep +[1518-05-24 00:21] falls asleep +[1518-06-07 00:04] falls asleep +[1518-07-25 00:07] wakes up +[1518-06-26 00:25] falls asleep +[1518-11-17 00:47] falls asleep +[1518-09-25 00:40] wakes up +[1518-05-21 00:35] falls asleep +[1518-07-28 00:34] falls asleep +[1518-09-04 00:01] Guard #2633 begins shift +[1518-06-12 23:56] Guard #2897 begins shift +[1518-11-11 00:45] wakes up +[1518-09-02 00:56] wakes up +[1518-06-14 00:18] wakes up +[1518-11-13 23:57] Guard #2459 begins shift +[1518-06-21 00:47] falls asleep +[1518-05-25 23:48] Guard #2633 begins shift +[1518-07-01 00:56] wakes up +[1518-04-06 00:18] falls asleep +[1518-07-08 00:12] falls asleep +[1518-08-04 23:56] Guard #947 begins shift +[1518-07-06 23:49] Guard #1663 begins shift +[1518-09-08 23:51] Guard #3307 begins shift +[1518-07-13 00:01] falls asleep +[1518-07-24 00:30] wakes up +[1518-05-10 00:38] wakes up +[1518-04-06 23:54] Guard #3121 begins shift +[1518-10-05 00:01] Guard #3121 begins shift +[1518-06-01 00:04] Guard #3307 begins shift +[1518-10-02 00:12] falls asleep +[1518-09-01 00:40] falls asleep +[1518-05-01 00:31] falls asleep +[1518-10-10 00:55] falls asleep +[1518-09-11 00:02] Guard #2819 begins shift +[1518-04-28 00:16] wakes up +[1518-11-20 00:48] wakes up +[1518-05-14 00:45] falls asleep +[1518-04-11 00:15] falls asleep +[1518-10-06 00:49] wakes up +[1518-04-15 00:46] wakes up +[1518-07-08 00:03] Guard #2633 begins shift +[1518-05-03 00:56] wakes up +[1518-08-28 23:57] Guard #1433 begins shift +[1518-10-23 00:42] falls asleep +[1518-05-30 23:48] Guard #409 begins shift +[1518-06-04 00:31] falls asleep +[1518-11-08 00:04] Guard #61 begins shift +[1518-04-26 00:42] wakes up +[1518-06-15 00:47] falls asleep +[1518-09-01 00:24] falls asleep +[1518-10-06 00:26] wakes up +[1518-05-23 00:58] wakes up +[1518-08-12 00:07] falls asleep +[1518-04-29 00:19] falls asleep +[1518-09-26 00:04] Guard #409 begins shift +[1518-09-05 00:22] falls asleep +[1518-10-02 00:02] Guard #3037 begins shift +[1518-07-30 00:38] falls asleep +[1518-05-19 00:19] falls asleep +[1518-06-02 00:49] wakes up +[1518-07-01 00:42] wakes up +[1518-07-05 00:50] falls asleep +[1518-06-12 00:23] falls asleep +[1518-05-20 23:57] Guard #2897 begins shift +[1518-06-17 23:59] Guard #1931 begins shift +[1518-05-27 00:20] wakes up +[1518-06-28 00:00] Guard #1889 begins shift +[1518-09-21 00:02] falls asleep +[1518-10-06 23:57] Guard #3037 begins shift +[1518-08-25 00:41] wakes up +[1518-04-19 00:55] falls asleep +[1518-08-16 00:21] falls asleep +[1518-08-09 00:01] falls asleep +[1518-10-21 00:00] Guard #3307 begins shift +[1518-08-24 00:56] falls asleep +[1518-05-27 00:03] Guard #61 begins shift +[1518-05-21 00:13] falls asleep +[1518-09-30 00:02] Guard #1291 begins shift +[1518-11-10 00:28] wakes up +[1518-06-02 23:57] Guard #2819 begins shift +[1518-05-29 00:57] wakes up +[1518-10-19 00:39] wakes up +[1518-04-21 00:43] wakes up +[1518-08-31 00:02] Guard #3037 begins shift +[1518-05-05 00:58] wakes up +[1518-04-25 00:40] wakes up +[1518-11-20 00:59] wakes up +[1518-09-02 00:52] wakes up +[1518-05-17 00:47] wakes up +[1518-09-22 23:56] Guard #1283 begins shift +[1518-07-01 23:53] Guard #467 begins shift +[1518-05-02 00:41] falls asleep +[1518-08-01 23:59] Guard #1433 begins shift +[1518-10-27 23:50] Guard #3121 begins shift +[1518-07-29 00:00] Guard #2447 begins shift +[1518-05-21 00:52] wakes up +[1518-04-15 00:00] Guard #467 begins shift +[1518-09-17 00:41] wakes up +[1518-10-13 00:14] falls asleep +[1518-09-08 00:53] falls asleep +[1518-04-17 00:28] falls asleep +[1518-11-06 00:02] Guard #3307 begins shift +[1518-09-07 00:49] falls asleep +[1518-05-15 00:24] falls asleep +[1518-05-13 00:23] falls asleep +[1518-10-04 00:24] wakes up +[1518-06-30 23:58] Guard #1291 begins shift +[1518-07-10 23:51] Guard #1889 begins shift +[1518-04-13 00:23] falls asleep +[1518-08-25 00:01] Guard #467 begins shift +[1518-04-16 00:59] wakes up +[1518-10-24 00:04] Guard #167 begins shift +[1518-06-22 00:09] falls asleep +[1518-11-12 00:51] wakes up +[1518-08-01 00:42] wakes up +[1518-06-04 00:32] wakes up +[1518-10-06 00:00] Guard #3037 begins shift +[1518-11-06 00:22] falls asleep +[1518-08-17 00:44] wakes up +[1518-10-13 00:44] wakes up +[1518-05-31 00:56] wakes up +[1518-10-06 00:13] falls asleep +[1518-08-16 00:58] wakes up +[1518-05-12 00:49] wakes up +[1518-06-18 00:52] falls asleep +[1518-11-02 00:35] wakes up +[1518-05-28 00:38] falls asleep +[1518-06-29 23:54] Guard #1283 begins shift +[1518-05-28 00:45] falls asleep +[1518-04-22 00:27] wakes up +[1518-10-30 00:44] wakes up +[1518-06-12 00:58] wakes up +[1518-07-05 00:28] wakes up +[1518-09-01 00:03] Guard #1471 begins shift +[1518-04-18 00:34] wakes up +[1518-09-08 00:45] wakes up +[1518-08-25 00:39] falls asleep +[1518-04-12 00:24] falls asleep +[1518-07-25 23:50] Guard #1291 begins shift +[1518-07-24 23:57] Guard #3121 begins shift +[1518-06-05 00:21] wakes up +[1518-08-21 00:30] falls asleep +[1518-06-04 00:54] wakes up +[1518-11-10 00:02] Guard #2897 begins shift +[1518-04-30 00:55] wakes up +[1518-09-14 00:31] wakes up +[1518-05-26 00:00] falls asleep +[1518-09-25 00:57] wakes up +[1518-05-14 00:53] wakes up +[1518-07-21 00:29] falls asleep +[1518-07-16 00:38] falls asleep +[1518-07-04 00:37] falls asleep +[1518-04-21 00:28] wakes up +[1518-04-08 00:13] wakes up +[1518-04-22 00:01] Guard #947 begins shift +[1518-09-24 23:50] Guard #1931 begins shift +[1518-09-22 00:09] falls asleep +[1518-10-17 00:52] wakes up +[1518-10-26 23:58] Guard #2897 begins shift +[1518-06-03 00:55] wakes up +[1518-04-25 23:46] Guard #409 begins shift +[1518-04-20 00:01] Guard #2459 begins shift +[1518-10-01 00:17] falls asleep +[1518-07-21 00:12] falls asleep +[1518-06-19 00:03] Guard #3121 begins shift +[1518-09-15 00:01] Guard #2447 begins shift +[1518-09-29 00:30] wakes up +[1518-07-15 00:01] Guard #947 begins shift +[1518-08-03 00:04] Guard #1433 begins shift +[1518-06-05 00:17] falls asleep +[1518-08-24 00:04] Guard #1291 begins shift +[1518-05-18 00:03] Guard #409 begins shift +[1518-08-05 00:45] wakes up +[1518-08-08 00:39] wakes up +[1518-09-16 00:54] wakes up +[1518-08-31 00:39] wakes up +[1518-08-13 00:00] Guard #947 begins shift +[1518-07-08 00:57] falls asleep +[1518-05-29 00:33] wakes up +[1518-08-06 00:42] falls asleep +[1518-08-31 00:24] falls asleep +[1518-07-06 00:04] falls asleep +[1518-07-29 00:26] falls asleep +[1518-04-05 00:02] Guard #2459 begins shift +[1518-05-18 23:56] Guard #2633 begins shift +[1518-04-05 00:26] falls asleep +[1518-09-22 00:02] Guard #1663 begins shift +[1518-09-13 00:48] wakes up +[1518-06-05 00:57] wakes up +[1518-04-29 00:49] wakes up +[1518-11-19 00:53] falls asleep +[1518-10-23 00:57] wakes up +[1518-08-07 00:29] falls asleep +[1518-10-11 00:24] wakes up +[1518-08-28 00:27] wakes up +[1518-05-07 00:41] falls asleep +[1518-05-03 23:59] Guard #2633 begins shift +[1518-08-15 23:59] Guard #2459 begins shift +[1518-09-06 00:49] wakes up +[1518-10-23 00:34] falls asleep +[1518-05-12 00:00] Guard #2819 begins shift +[1518-08-04 00:52] wakes up +[1518-11-18 23:56] Guard #3121 begins shift +[1518-08-14 00:43] wakes up +[1518-07-30 00:01] Guard #3307 begins shift +[1518-10-31 00:11] wakes up +[1518-10-04 00:03] Guard #947 begins shift +[1518-09-27 00:56] wakes up +[1518-07-05 00:20] wakes up +[1518-05-16 00:00] Guard #1931 begins shift +[1518-05-28 23:58] Guard #947 begins shift +[1518-08-04 00:02] falls asleep +[1518-05-08 23:57] Guard #2633 begins shift +[1518-08-02 00:40] falls asleep +[1518-08-07 00:59] wakes up +[1518-10-09 00:56] wakes up +[1518-05-24 00:31] wakes up +[1518-09-06 00:36] wakes up +[1518-04-10 23:58] Guard #1931 begins shift +[1518-08-07 00:12] falls asleep +[1518-08-20 00:57] wakes up +[1518-11-11 23:58] Guard #2819 begins shift +[1518-08-07 00:17] wakes up +[1518-08-11 23:58] Guard #661 begins shift +[1518-11-03 00:53] falls asleep +[1518-08-18 23:57] Guard #467 begins shift +[1518-04-13 00:35] wakes up +[1518-09-20 23:53] Guard #2447 begins shift +[1518-07-27 00:10] falls asleep +[1518-08-19 00:38] wakes up +[1518-08-27 00:01] Guard #947 begins shift +[1518-10-16 23:56] Guard #3307 begins shift +[1518-06-23 00:50] wakes up +[1518-10-19 00:47] wakes up +[1518-09-21 00:52] wakes up +[1518-06-06 00:46] wakes up +[1518-06-20 00:44] wakes up +[1518-08-06 00:02] Guard #947 begins shift +[1518-08-28 00:21] falls asleep +[1518-08-27 00:25] wakes up +[1518-10-18 00:54] wakes up +[1518-06-22 00:45] wakes up +[1518-06-13 00:47] wakes up +[1518-05-09 00:47] wakes up +[1518-06-09 23:57] Guard #2633 begins shift +[1518-11-21 23:58] Guard #467 begins shift +[1518-05-08 00:02] Guard #2447 begins shift +[1518-05-22 00:01] Guard #409 begins shift +[1518-09-09 23:48] Guard #1931 begins shift +[1518-05-28 00:01] Guard #1291 begins shift +[1518-08-27 00:15] falls asleep +[1518-07-07 00:26] falls asleep +[1518-11-10 00:39] falls asleep +[1518-10-19 00:08] falls asleep +[1518-06-20 00:01] falls asleep +[1518-09-24 00:31] falls asleep +[1518-11-10 00:47] wakes up +[1518-10-23 00:11] falls asleep +[1518-07-04 00:04] Guard #1889 begins shift +[1518-09-05 00:41] wakes up +[1518-06-01 00:11] falls asleep +[1518-05-20 00:44] wakes up +[1518-10-31 00:00] falls asleep +[1518-09-05 00:04] Guard #409 begins shift +[1518-05-22 00:19] falls asleep +[1518-07-12 00:00] falls asleep +[1518-10-25 00:55] wakes up +[1518-09-08 00:57] wakes up +[1518-08-07 00:41] wakes up +[1518-07-22 00:11] falls asleep +[1518-06-28 23:58] Guard #419 begins shift +[1518-09-07 00:03] Guard #409 begins shift +[1518-04-29 00:01] Guard #661 begins shift +[1518-10-01 00:33] wakes up +[1518-10-05 00:35] wakes up +[1518-06-06 00:04] Guard #1663 begins shift +[1518-10-17 00:35] falls asleep +[1518-04-27 00:15] falls asleep +[1518-06-16 00:54] wakes up +[1518-08-17 00:04] Guard #1283 begins shift +[1518-07-23 00:57] wakes up +[1518-05-03 00:26] falls asleep +[1518-06-23 00:28] falls asleep +[1518-08-16 00:48] falls asleep +[1518-07-27 00:56] wakes up +[1518-05-25 00:28] wakes up +[1518-09-05 23:59] Guard #1283 begins shift +[1518-05-24 23:58] Guard #661 begins shift +[1518-10-09 00:38] wakes up +[1518-11-12 00:11] falls asleep +[1518-11-20 00:54] falls asleep +[1518-11-16 00:00] Guard #1663 begins shift +[1518-05-28 00:34] wakes up +[1518-10-28 00:04] falls asleep +[1518-07-14 00:59] wakes up +[1518-05-16 00:51] falls asleep +[1518-10-20 00:42] wakes up +[1518-04-07 00:27] falls asleep +[1518-07-08 00:38] falls asleep +[1518-07-07 00:10] wakes up +[1518-10-15 00:00] Guard #947 begins shift +[1518-07-21 00:49] falls asleep +[1518-08-03 00:06] falls asleep +[1518-09-18 00:31] falls asleep +[1518-10-05 00:17] falls asleep +[1518-08-28 00:45] wakes up +[1518-11-14 00:58] wakes up +[1518-11-05 00:03] falls asleep +[1518-05-22 00:22] wakes up +[1518-06-10 00:29] falls asleep +[1518-08-16 00:38] wakes up +[1518-05-02 00:49] falls asleep +[1518-08-28 00:37] falls asleep +[1518-05-31 00:05] falls asleep +[1518-08-06 00:49] wakes up +[1518-04-05 23:56] Guard #2633 begins shift +[1518-08-20 00:03] falls asleep +[1518-05-29 00:47] falls asleep +[1518-05-09 00:57] wakes up +[1518-05-17 00:58] wakes up +[1518-09-18 00:04] Guard #2459 begins shift +[1518-08-14 00:29] falls asleep +[1518-05-23 00:48] falls asleep +[1518-07-24 00:08] falls asleep +[1518-04-20 00:30] falls asleep +[1518-07-30 00:54] wakes up +[1518-10-28 00:53] wakes up +[1518-07-02 00:00] falls asleep +[1518-08-21 00:13] wakes up +[1518-05-26 00:56] wakes up +[1518-11-16 00:19] falls asleep +[1518-08-15 00:41] falls asleep +[1518-11-01 00:01] falls asleep +[1518-08-07 00:51] wakes up +[1518-10-08 00:48] falls asleep +[1518-09-09 00:03] falls asleep +[1518-05-25 00:41] wakes up +[1518-07-19 00:40] wakes up +[1518-05-17 00:57] falls asleep +[1518-05-23 00:44] wakes up +[1518-11-01 00:48] wakes up +[1518-05-16 23:54] Guard #1471 begins shift +[1518-06-02 00:03] Guard #1931 begins shift +[1518-05-10 00:35] falls asleep +[1518-05-13 00:04] Guard #2633 begins shift +[1518-04-25 00:38] falls asleep +[1518-04-22 00:44] falls asleep +[1518-05-24 00:36] falls asleep +[1518-07-25 00:06] falls asleep +[1518-05-31 00:50] falls asleep +[1518-10-21 00:44] wakes up +[1518-05-23 00:57] falls asleep +[1518-10-01 00:03] Guard #61 begins shift +[1518-09-22 00:10] wakes up +[1518-10-29 00:33] wakes up +[1518-06-19 00:58] wakes up +[1518-06-30 00:57] wakes up +[1518-05-21 00:48] falls asleep +[1518-06-06 23:47] Guard #3307 begins shift +[1518-08-09 00:39] falls asleep +[1518-07-14 00:11] falls asleep +[1518-07-28 00:57] wakes up +[1518-07-05 00:53] wakes up +[1518-09-13 00:25] falls asleep +[1518-11-11 00:24] wakes up +[1518-09-20 00:08] falls asleep +[1518-09-15 00:35] wakes up +[1518-11-03 00:57] wakes up +[1518-06-08 00:48] falls asleep +[1518-11-19 00:49] wakes up +[1518-10-08 00:50] wakes up +[1518-07-15 00:52] wakes up +[1518-07-24 00:55] wakes up +[1518-08-17 00:50] falls asleep +[1518-07-14 00:00] Guard #1889 begins shift +[1518-10-12 00:53] wakes up +[1518-10-14 00:54] wakes up +[1518-09-18 00:46] wakes up +[1518-08-05 00:40] falls asleep +[1518-05-30 00:57] wakes up +[1518-07-20 00:00] Guard #467 begins shift +[1518-11-08 23:58] Guard #3121 begins shift +[1518-05-30 00:24] falls asleep +[1518-06-15 00:51] wakes up +[1518-04-11 00:57] falls asleep +[1518-05-08 00:40] wakes up +[1518-04-07 00:06] wakes up +[1518-04-26 00:03] falls asleep +[1518-05-07 00:47] wakes up +[1518-05-26 00:40] wakes up +[1518-06-13 00:31] falls asleep +[1518-06-08 00:28] wakes up +[1518-05-27 00:37] falls asleep +[1518-06-28 00:58] wakes up +[1518-09-10 00:58] wakes up +[1518-09-19 00:56] wakes up +[1518-11-18 00:04] Guard #467 begins shift +[1518-11-22 00:50] wakes up +[1518-07-11 00:07] wakes up +[1518-05-26 00:44] falls asleep +[1518-09-06 00:15] falls asleep +[1518-07-08 00:43] wakes up +[1518-07-10 00:03] Guard #3491 begins shift +[1518-05-07 00:29] wakes up +[1518-11-03 00:49] wakes up +[1518-06-11 00:44] wakes up +[1518-10-11 00:04] Guard #661 begins shift +[1518-06-15 23:56] Guard #61 begins shift +[1518-07-06 00:22] wakes up +[1518-11-08 00:43] wakes up +[1518-10-11 00:19] falls asleep +[1518-10-10 00:02] Guard #3037 begins shift +[1518-06-17 00:37] falls asleep +[1518-08-13 00:43] falls asleep +[1518-09-24 00:47] wakes up +[1518-10-23 00:01] Guard #409 begins shift +[1518-05-30 00:04] Guard #3307 begins shift +[1518-05-21 00:18] wakes up +[1518-09-15 00:55] wakes up +[1518-06-14 00:13] falls asleep +[1518-05-13 00:41] wakes up +[1518-06-02 00:20] falls asleep +[1518-04-16 00:48] falls asleep +[1518-08-24 00:20] falls asleep +[1518-07-31 00:03] Guard #3491 begins shift +[1518-06-27 00:42] falls asleep +[1518-09-28 00:44] falls asleep +[1518-10-09 00:01] Guard #2897 begins shift +[1518-10-16 00:13] falls asleep +[1518-04-22 23:56] Guard #409 begins shift +[1518-10-30 00:10] falls asleep +[1518-11-11 00:04] Guard #2819 begins shift +[1518-04-12 00:58] wakes up +[1518-05-03 00:33] wakes up +[1518-11-03 00:44] falls asleep +[1518-11-03 23:48] Guard #1433 begins shift +[1518-05-23 00:04] Guard #661 begins shift +[1518-05-24 00:49] falls asleep +[1518-06-04 23:58] Guard #467 begins shift +[1518-11-23 00:19] falls asleep +[1518-06-27 00:04] Guard #947 begins shift +[1518-08-29 00:51] falls asleep +[1518-10-04 00:09] falls asleep +[1518-05-18 00:48] wakes up +[1518-05-25 00:08] falls asleep +[1518-11-23 00:56] wakes up +[1518-08-23 00:26] wakes up +[1518-11-16 00:46] wakes up +[1518-07-20 00:40] wakes up +[1518-06-06 00:41] falls asleep +[1518-05-28 00:47] wakes up +[1518-06-25 00:31] falls asleep +[1518-04-11 00:54] wakes up +[1518-10-11 00:53] falls asleep +[1518-11-19 23:58] Guard #1471 begins shift +[1518-08-07 00:50] falls asleep +[1518-07-21 00:55] wakes up +[1518-08-17 00:43] falls asleep +[1518-08-07 23:56] Guard #1283 begins shift +[1518-04-21 00:13] falls asleep +[1518-08-18 00:01] Guard #419 begins shift +[1518-07-21 00:24] wakes up +[1518-05-04 00:21] falls asleep +[1518-10-03 00:31] wakes up +[1518-08-09 00:42] wakes up +[1518-07-27 23:59] Guard #947 begins shift +[1518-09-10 00:20] wakes up +[1518-04-26 00:22] wakes up +[1518-04-13 23:58] Guard #661 begins shift +[1518-09-30 00:52] wakes up +[1518-06-10 00:59] wakes up +[1518-10-14 00:00] falls asleep +[1518-09-14 00:21] falls asleep +[1518-10-04 00:46] wakes up +[1518-05-31 00:37] wakes up +[1518-10-20 00:14] falls asleep +[1518-11-09 00:29] falls asleep +[1518-06-18 00:55] wakes up +[1518-09-18 23:51] Guard #2819 begins shift +[1518-08-30 00:56] wakes up +[1518-06-21 00:36] wakes up +[1518-10-10 00:32] falls asleep +[1518-08-20 23:51] Guard #409 begins shift +[1518-04-05 00:33] wakes up +[1518-10-29 00:00] Guard #3121 begins shift +[1518-11-23 00:04] Guard #1663 begins shift +[1518-05-15 00:43] wakes up +[1518-09-03 00:50] wakes up +[1518-05-09 00:46] falls asleep +[1518-07-19 00:09] falls asleep +[1518-05-10 00:02] Guard #409 begins shift +[1518-07-04 23:56] Guard #1931 begins shift +[1518-08-24 00:23] wakes up +[1518-09-25 00:01] falls asleep +[1518-09-27 00:17] falls asleep +[1518-07-02 23:58] Guard #1931 begins shift +[1518-09-23 00:53] wakes up +[1518-07-04 00:46] wakes up +[1518-05-17 00:17] wakes up +[1518-05-09 00:50] falls asleep +[1518-10-19 00:59] wakes up +[1518-10-18 00:36] falls asleep +[1518-11-04 00:05] falls asleep +[1518-07-18 00:16] falls asleep +[1518-08-12 00:27] wakes up +[1518-08-28 00:03] Guard #3121 begins shift +[1518-06-24 00:03] Guard #1291 begins shift +[1518-06-08 00:50] wakes up +[1518-08-22 00:00] Guard #3491 begins shift +[1518-07-07 00:45] wakes up +[1518-04-17 00:04] Guard #947 begins shift +[1518-07-26 00:00] falls asleep +[1518-08-19 23:46] Guard #3307 begins shift +[1518-11-13 00:58] wakes up +[1518-08-10 00:02] Guard #1663 begins shift +[1518-05-21 00:36] wakes up +[1518-11-18 00:44] falls asleep +[1518-11-08 00:10] wakes up +[1518-10-15 23:56] Guard #2447 begins shift +[1518-04-07 23:50] Guard #2897 begins shift +[1518-11-04 00:16] wakes up +[1518-11-14 00:28] falls asleep +[1518-09-11 00:36] wakes up +[1518-06-28 00:31] wakes up +[1518-11-10 00:10] falls asleep +[1518-04-15 00:31] falls asleep +[1518-05-29 00:11] falls asleep +[1518-06-24 00:44] wakes up +[1518-07-21 00:44] wakes up +[1518-09-14 00:38] falls asleep +[1518-04-05 00:40] falls asleep +[1518-08-10 00:49] wakes up +[1518-07-16 00:02] Guard #2447 begins shift +[1518-10-02 23:58] Guard #409 begins shift +[1518-07-17 00:53] wakes up +[1518-06-07 23:59] Guard #61 begins shift +[1518-08-15 00:56] wakes up +[1518-04-18 00:02] Guard #3037 begins shift +[1518-06-04 00:57] falls asleep +[1518-06-19 00:44] wakes up +[1518-05-14 00:04] Guard #1433 begins shift +[1518-04-22 00:18] falls asleep +[1518-10-07 00:09] falls asleep +[1518-10-23 00:16] wakes up +[1518-05-06 00:37] falls asleep +[1518-06-09 00:34] wakes up +[1518-04-27 00:47] wakes up +[1518-04-08 23:47] Guard #1291 begins shift +[1518-04-05 00:41] wakes up +[1518-07-11 00:04] falls asleep +[1518-11-12 00:22] falls asleep +[1518-08-11 00:44] wakes up +[1518-09-09 00:35] falls asleep +[1518-06-03 00:48] falls asleep +[1518-10-18 00:01] Guard #947 begins shift +[1518-04-21 00:41] falls asleep +[1518-05-19 00:34] wakes up +[1518-10-09 00:47] falls asleep +[1518-09-28 00:52] wakes up +[1518-07-08 00:59] wakes up +[1518-09-12 23:49] Guard #61 begins shift +[1518-10-10 00:56] wakes up +[1518-08-10 00:33] falls asleep +[1518-09-07 00:09] falls asleep +[1518-10-26 00:02] Guard #61 begins shift +[1518-09-08 00:14] falls asleep +[1518-05-01 23:58] Guard #947 begins shift +[1518-10-29 23:58] Guard #2459 begins shift +[1518-11-13 00:57] falls asleep +[1518-09-30 00:58] wakes up +[1518-05-28 00:24] falls asleep +[1518-07-05 00:25] falls asleep +[1518-06-18 00:45] wakes up +[1518-11-18 00:54] wakes up +[1518-09-23 23:59] Guard #1291 begins shift +[1518-07-22 23:59] Guard #61 begins shift +[1518-09-17 00:12] falls asleep +[1518-09-11 00:21] falls asleep +[1518-05-05 00:27] falls asleep +[1518-11-21 00:00] Guard #1471 begins shift +[1518-09-28 00:12] wakes up +[1518-07-09 00:22] falls asleep +[1518-05-03 00:02] Guard #947 begins shift +[1518-09-01 00:36] wakes up +[1518-07-20 23:56] Guard #2633 begins shift +[1518-07-19 00:43] falls asleep +[1518-09-21 00:31] wakes up +[1518-11-19 00:27] falls asleep +[1518-04-18 00:23] falls asleep +[1518-04-28 00:03] falls asleep +[1518-11-02 23:57] Guard #947 begins shift +[1518-04-16 00:34] falls asleep +[1518-04-14 00:28] falls asleep +[1518-11-01 23:57] Guard #2459 begins shift +[1518-07-22 00:57] wakes up +[1518-04-17 00:58] wakes up +[1518-09-21 00:43] falls asleep +[1518-04-07 00:58] wakes up +[1518-08-13 23:56] Guard #1291 begins shift +[1518-11-08 00:08] falls asleep \ No newline at end of file diff --git a/data/2018/5.txt b/data/2018/5.txt new file mode 100644 index 0000000..2c3ce6a --- /dev/null +++ b/data/2018/5.txt @@ -0,0 +1 @@ +HhrbBNnJjMDPpQqdmRKfFklVvLQmMqCcIzZdDiTtTtdBbQqDEWqQwrRBbbBelLlTtfFBbGDdJeEjgLtTYyjZzKABbayYdrRDkAaJeSsEFtdDTfFfRrAaxXRvVPpzZORrylLlLYZzornNzijWwJvVeEmSsMmlLMBbIBbxxaADLlZzdyYTtEeXigGfFKMmdDZzKkPpkSIiaAsXIiMhHmJjWwkyYKiIxIINnCcCcpCcyYwNnnNFZzaAfWwWDdEEeePVxXqQTZztssSSvPpPqQiVvIpRrsSiAlLaoOgGAEeanNYEeEexXEesSIiBboVvhHyYOHYyiIhiPpIjJyXKtTkMRrmnNgwsSBbWoOIZziAlLzTtrRZaRmUuPpMOoEefcCfFQqFCcrzVvBbZDtTdTtprRsxVvXSLluUjJzZtTBbZTtzLlPGqrohHOFQqfkKuWwUxXRQJXxgGssSSJjjzZWZVvrRzxXfFfFwIXxyYNnKkiXxHhrRHhfFxXrRqLlZzQUuuvVUQqZxQqhHNnpIiOoGPpgPXuUzrvVbVvBfFKkTtjJiIpkKnKkNGbBdDTzSNnsVkBbKvbBZrRHmMaAhtgmMtTfLlKkFfCcXxqQFXfGgBfLlFbCbBRsSrXxsSaAdDxXkKGgkjJUuKccCNbBnFYwWqQRCcqQEpPeryUuYyrRbBNnZzYyRrCcuUVvTtcCoOLlNnoOXRCcrjJxXxJjyYWJzCcZjQqwmMWSsMnNmMmLlNnndDVvMmToOtYzZvVyNwpPUlyiCcIYbBLueECcYyVvAamMbBCcViImMIdDrRiZzkGgkKdDiIKOoZzDxgGKkkKnNbBBbIibHhBvjJoOCcVeEaAhPplLmUuMWwiIiIBbedDoPpmMxfFXpPtNTgGtnTMKkmAtdDTdYyXxxXUIiudDpPDsSsEhHfRnNrzZOoFVmMvAtTGgaQqeSTtOoeERpPhiIHJjaAtTBblLFpPcChTtEeHEehmMFffFiBbVjvVJvIibBmzZCcMIoOHDdpPMQqvObkKBouUVmgGgGtTFdDOwWwZzfLlFrRaAErReWKOokQBbqVvqQzUuFffyYmMFfFEkKeXuUxJxXjZofzZlpPLhHkKaWwbAbBaBAiFfgGIxXHfFHhWwFfhEedhHZzDzaAZZiZLlzIDdzwWoZkKzAaAVvaAevVbBrjJRGgXxEvVYYQqynFAafNnNRrmTtMyFfqQaEejJKkGggGLVvQqGLlgRrlBbpPOYELaAQqWwWwleUuzZrRFaAfynrkKpCNncDZzlLdFfPiIRlkDdKmMNnrRLsrgGRjJSNfnNTZeEzZxXfFEevVXxbBXHhowhHWOxYyZMmzVvGXWwWwLsqlLQGHhfFHhwWglLCcXxOoFfpAqQaCcPXxYkKyGwWgsoOSStygGKkYbBJjXxKkKkTtTrGEegRiIgGOoswZzWSOoneENNnQqJPpjjfDdFSSssMmoOiIGXmMxFzZTtfvVSXxsSsgJLLzZlwWOvVpUuWwdDrRPuUopPaASgGsmMvVmiWAaLlwIEeOoUXxHBbTthuMnNbQqBbBqQZntDdTtTNUuKkDdzaRHhGgrAkUuQqdlLzZDWwhHvRZzrVpYySsnNPpPKFMiImfHhEqQPcCIiHhvVpeRrizUiakeEKNnAIBlwWqQLZzcFfCtDdRrTYERreyjJHhkiFxXfNnIHAgZzGOoAaahRkKfFrAeWwEoOLlaAEevVniIanNnNJjeEAslLSNxXEXxeVAozZqQOoJjOvHhVDPpdavzUuZamMukQGgqKjJXXxxXxxXerPpRiIzZXxEcCVSsvTtkKkKhjJpPHUufFiIFVvKvVkGBSNnskKbgNnJjfYiYoOEejWwzZJyDMmaghHPpUTQqvVvVAaOolLtQquUuGdCqQcpPjhnNJjHJlvUumMIiVLldYyDhHLZUuzBjJOsSUuojJbzZeEDlLkKLYyUunGgcCNvVlEsSeZpANnaVviIPkKePpEtTavRGepmMPEglLNAkKaFfEenAaidDLlAuyYUaIrDeeEEqQdEfFeNnExXeRrwzdDZNmMEeSsvVAoOeELlalqQWQlLqwMmLnEeWpPCuUxXcVXkKxVvJjWIMmRsSriTtWGpPgwwqtLlTQWDMmdsuUVMmbBdDvuULlbBLlDdnNCgGciALrTtUuwWRlvVdDapkKjJawJjWlYyLAEnUuNeCcaAuUPPpIIiRrsSVvGgGzZgxsSLeEvCCccVbEeBrRJjlHhMmykKJGMmvVgFLlGgEezZfkLlKjxUVvkKuXjJrRGgZKkziIKklLlLxXiIYmMdpHdDhPDEWwfFAaaAxXruEeqFfQURBpuUPbBHhunEvVeNUbfFrLlQlLqnRrlJjLsvVSnaAIXxitThYyHVvUudSsDzQqoAaOZMmEekSsvVwWXxKvyYbBpALlVCRUuCclLCcrkHhKkKWwmCBbcDdZztTFfffFFLlNFSslqQUUuuQqLoOlLZeEzfFfDdnEeVvJfIiFjaAMdmMXxDdIiIWwVMmlLvlLSsPpOJjoBbvVrHhMmqQvlLYyVTjJUuKkKXxkulLUxcCCciIXegGhRrHiafFtXxTtKkTlLdzXhHxZVvDZhHiITthHoOAacCjbBJLOoOooLlRrOXxlyYWwWGYymMMmgVvjIiJzZPpXfFuUxZzzZGgDjJdWBbwyYiIeEVvrRwrCcDdmPpMfFrrRrRRRHhrrRqKTtQqkcxXHhCjmMJNJjrRtAaTtTPWwpvxXVSFKkpcPpXaWwHhRrNnKRrkAhHxqyYQsSiInxXQtTqMmMmEMmedLlDZzuUNUubiqQLIilIZzBpPYGgNnyCEemDdOoVpzZPdDWwsSvcCRrKknNLljIbRrSsBovVmMOAaYywWQqOojZzfFoOJiRrsfFFkKfSYyDdSrlYyLlXFfEJjeQqxCcuUwWLRhHwWIiRCcrAaTthwooOijFfTtfFyYluULBbxXkcIibBvVCKIiYDdIikKysShHCTNntcJVvCpPPuUprRvVERrKkesSSKkslLAYygGoVveEVvOaWxKFfgoIiOraARGdCcsSDSaAyYsbsSBZVvzQeDdGasaASUuAVvwBbgGyrnzYyZPptTNRnNogyYGBbOdDoOoiIDsSdbJjmoUuOwWMBTtaAuUHFfMeKkSsEOsSOoJjirDddxXJXxAajqQJKkpgGHsShJjTDdZztTtZnYFfyTtwWeLlsSSsJjPpEeEMmKDdkzpPyYZFSRrsAnoOvtTVNxXaEeVvogFfGOAbdBbDqQzZBNHhpOVvoPpTAaxXOCcoEekKtQqnEeLlOoNreXxEaJjAmMGIiHhFfIiVvgEdDejWwJkKuUiIcxXCsSEejjJBbhAabiFfWwIBqQVvWwXzZgGxKdTtDkbBqTtQXTttTxdHhtTfWwFyYBbDtTgGHJXxRQqpZzPbyYyBvoTpPZztBbUuOSWwfrYyRFasSsJjBSsbSYyVvaQqAyhHYsSaANnaFfiJjpPIyYBiIbiAaIlwWLSsqQAyyYTtYcCeWwxjJCzZcbJjBPrRpzZYGcbJjGkKgBiFqQfLEelsSjJSsIzVvHnQJvVjqYFfUuySsNQqAFcCJtgXxGpPgGPfSsFYyHbBhbBiIpnNnsSNSsTFfxXjfFlLaARrNbBnyjJYmMmMOyjJYoOBbAaofSqQsUuqUGguLlkeEKQHfzZMmFatTFfHspPSuUobrRbBBOZzoUqQukKOhgGWtTALvVlqQaIkKinjEeJqQLvVllKnaQwWyYSsWwqAdDkKhWwHLlHcChTtDrRdLlCcNUnNumMkYyWSswiEeikKIyYwxXwXxuUWhfMBbmHhlLCcgrNnHhZhHHhzKkeEyVvYwRQDdfHhesSKpPploOLJjXKkxPLXKkxWgUuYyZzSQVEevHhqQIiqraARshHgFfddSsDDKvVkKkEeyjBbJUqQyNnvyYvVzZVxXPpVFfKkvxbBMmXGgIuUwmMWHDdhicCZbBzXxwWKkVgGvklNnLzZaApPRYyrKiFvVwWfWKfFkPpwYOoyIEeYQYDdyqSspucCURroOVvffFFPDsSCWwVvcSslLeEiKkINuUvDdNdDnoOVQVvQqqJjwWnsSHhduUQqMmoOIuprjJLlLlNnRDdGtTrRxqQXVvMqQGcCLlrSpIVvfJjypPYGLyYlPcmMCpPphVRaAVvDdrYPHhpyAavVMZzmvoPXxpOcNnCbNnByYVcCvOsSVvBbQqBKkbNnbBOgkKGXoOHhIiQnNqsSQqxcCECcJjfeEFevVJJjjnNWwzZExevVYyxXhHaAvVJjXEeMDkKdfOohHwWbBtTSscaAKkrRrREGglXvTtVxtTVvLGgKNnRrDIidIDjJjJNnfFdjJilEnNeLruUROnNIQqAaiCcoVvkGgmpPUuydWwVvRryqQuUYxXgGDaZrTJjMmEenQqQTfFrWwYyVvqfmMaWwzrRZAJjFbBsSsJjSzZVvcpPDdpPgGAxXaVbUuqcCQygGYxXvpPJMmjdDVvJjvQqUuVVkKtMfFmTRrBRduUuUJjHhDFfPYyLlOoYvVVvyeEgGUOoAFfaulSsULHhlyrRYbBJAREeraLpPljSsWwJoOjPpuejEeEVveJPHhpzGmNnMpPqQwDdEeYEeZfFoOzytuoOUTMmVoqSspRrwTMGgdDeEoOCcGAaNngEPcvulLFeEtTtvRrVOlLxdYyDVvgGPpENneeEXoLlHhOouUxXxlLXyWAtSsTRoOqQefNnUPDdQxXrSstTXxcCYyrDMmdRnAaLlMmNaAcnNCJhHjnNoVvvVOhHlLbBMmgksSTteEKkkSsKfCcUugGnNCeEcLluUJKkjFKXBUXxuDCcjMmkKkYyQqKYwWywwiTtIGOoPaKkxUuXAMmparYyRXxTtscCShFfHtPpTgGrkKooOoODHhdOvVXxjKkJhHAasgvVGUgSscelLETtCJOTtowWQqLlaAKhHyasSAoMmMmqQpPOcZzCZzNzZcCsVsSfFvSuUNbBndTtDqQoNvVKkScFvVoOvCGgclLnBbuUPpEHTJjtheNIiQoOuUqjkrECcpPepnVvNgGyYhHvRrVPpYhHgGyPSseEmMPpvVYZzQeEqpPXUuzAUuaZsSVfxXoLlOiIIinNiIKkWqQpPRAarpPGgeEgTtbBGGgIQsZzoObBPZFdlLwWDnSsNqNnQeJzZzWwZCkxXqQICciIHhQqHpPHhSslSbUuBgGSseEdDsSYmMkKywWwWgGGaARrMPpgGwUubBDdZzdDMmVFDdfDqQLldMGgmDdIiHkKVvmMaAlLmWkKwWsSwMhmrKkAEeaBAaxhHKkwPpWpENncCeYDdynLlXEVvehdDnNHEeWwwWxmCzZcMsiiIIrRJYyjFgGyYgGUtTuCcqGgQmMaANnemAaMEfAROoRrrZTtzaSxXstTYrRqQDReCnNcRruFfUErCBbSsKBbkaAnGgNBbAFeEbBfCcnNFHhFfQWzZwifRrFjJTAatIqEeJjOoQqfRrjJSoOhHHyYrJjmRryYLlSHhQqmeEhHMsXEenNxRSsaAfjJDdRrFlUuLdPpLlZzqQDcTXIixbOoPpDtTlwIiWeELYjJyZzbBdPAapFzZnNcCHXHhxMFfzfDdFZiFvlNnNaAnEOoaABbeNnbBBbNPpjwWJnwWNhHMmcCBAQqaCcboBMmnctTjoOWwQIzZiuUAaqUugGkKJjeEJzZCgoOyaUuHhAEedDJfFRrpyYsSPVxDdXmMGgxgGUuXDPpFfhkKHkKiIOoTtyYdYyMnNdDGgnNtTGgmeiZFfNSsFzZLldDRrdsSpbBcCVvRrPKkDpHAaynNHhYUfFDdCakKAmWDdhHBnNbVvNGgZiIzZUulWWjJGgzEeCctoOTMwWmZuOosSvEeVRrChHqqQQfSsFcCkKcpPfFOoGpPsSgUsSoQOIiWeEwxsSGgXUuqMmzZQpPCTtclLJhfFbBCcVvVzZvnoObBHhaXxANGlkgGKwWXplLBbyYPyYxjkKlLZoWwaAJIzgGgOoBGoOsSwDIKAavLlTMmAayYtnNLEeEeaATtJTtkJjuUOoKlLcEewLOWwxEenwWWtTpPwSsiIERyYGgFffFFSsdooOxXTtqQGMmaAJosSJjOjnNbBJNnjDgpPxXLlGPYyPItTLKkFflaAWzZpBbsfGgFQsfFcCOcIiCoyYFfcXNnxpPFfTtCCIPpxXiwWGgVvYyeoOSdDszZEhHhHHhtHhTIiBblLPpcHUuVvrRGgenNBZoOoXkOsqQSonHhNGWAsSaRrJjwhbBRBbpPrvVHmJwWpPjJjMQrbBAaJjrRRfFqBXxNzZnbJjrRwHhHhGNRiIrcCkLwWhHAaKdDtkFeQqEfcCvlLQkKvVRSWCQpVeUJYpPYyhIBbqQWwreEqKtEeTkQkVvQqKbnNSsIiBTtsyYQqmhpsSsSzZhHPHlLvXuJCcjDdBbKgGAaklLbBhHdDFfgBKkbiaAIvjJJjrRsYaARrySHARraVvAaSxdDxXXSyYTtsZiIDdGgTnNsSPpnwoYlLmMlwWLmMJjjJxdDBbXPpmvMmMmVaAtNnJjTMqEHMmJaAjNnziIjuzZUwWpMmpBbhoOjJHrkKjJXxuFKkpVvPMmQqMmtHVvRrhKkFLlAoOZzeSsEaWJZzjwfHhjQNnhHnzZkKLWwlNzIyTuaiIgGlLJjAUTtZVvQEkLLzZllKeNZEthHTepPuUdDGgRreEeEIyYinNCctTrZAaiIfFvjJelDdTtjJQqySQqxXsWwnNjJTtwWZzNnyYTSNnuUEexXjJCcxXjDdJKkscyeEdFfDYHhEenNCcOwWoWwKkrYyYDdJjgGlznkKvVtGgvWwVTYmMqFfQhUUJjVcIidDRzoOZRyYrAGVvzqQFfrRZudYwWyVDRrOodvrRYPPppyDFfBbUMmdDKkpPWscCSjJwWwjJFYyEeZzJCcjOoHyYhKkxmaAMgGOozGghvvyYVPpbBvVPpXjJjaAJVvSPtTZlLzpTDoOPdaADLlqHhQCuLlAgGrSsmMRaUoDdOeZzXRFfrxpVveEPjJBbNnMJjzZmGgFpPIQqijJQsSqfqQoOQqxXTtTAgHhlLGovVWEpaAPBpfFSsINIiLXxlFJhHjffFtEeTqQWiIUBbugGWwlcCPpLIUuEeegCkKcXgGmHxOcCowRrvOtOsSoaATwKkWoduUDrXxsSRTUuycLOxaAxWjuUVvJnJjNwXxydDYxUuLlaAXAmmMMBsSbeEagGGGgnpPLlfiIFmfCcYzbBULNnYcDlLdCxwWwWrRXKSpPmJjLlCfFcMKkPpAqQaoOrCccXxWwYymkRrKkxXNnKMuUhWUVvVvPWwLlpQqgRrgQYyyYqIixXZzKPpCcVvkeEeEaAUuanNaAkKNneEAaaoOGgAAddDDKkmMIVvicIiOoXacCopPlLOoOnNQqQqzZPrRpNnPpijEeJceEUjJuSwrSsRszZoOGBbGgcChHgSXxmMWQqvWwVwtTqQWwxXsSEqyeqQEmMYeSoOsWwEQqhNLSslnHLlGpQqPKluULjJlLxMQqIPTtwWppPubJXZzcCtPpTrHYCRVNnTZztvBfbJaAdqeEQjMmUuALlaguUBJXcCxjboOHhTdtIiPMmpaJjAFfTOIiogYyRrXbBfFqQyOoBCcbsISsPplLQpzZPSsqikKyLlYgeEuUOobnNYAaFfakKEIiEHrDdRFrcCRDPpGwWxXDdgRrdEEeQqxTDzRNnLlnNAeEaNnJvVwWFfjrNntrRMmKkTAEeuIiUkKzzwWZjFfJwzZdPpLGDLldYGGAVOaEeAzfFtTytTvoIiONEenLLluztTrRfFnKkzZDlLgGdAadcCLcUuiIGgviWObBubBkrnUFfMmASEesdDNnauNRkzZKsSKjvVJVOHhOooMmUudDRhHTtrWxYmoOFfSsMsKkGgSSsncCqQAAOomnogGONaAiRrHiiIIhFfLWzGgZczmKkpPMGgdHhXoOSsxoOrrMmRbByYNnDsLlJwqqQkKhSzAaZJjGqeEQgXxRULXSzoOEWrRFfpPRrweQDBuUkKPpcCJhHjlSsYyPpLruIySsYiohHWOYydDBnBboOdgGTfFtPprpPHhQqRQqOoYyuZzUiRrUwWkaAGCcpXxPsGgLlSgGQqHhhVvHzZUuWwGOozZdDeEgyeJjquUvzZHhlrnNIiuURivGgKwTtQvVMmqDdWKGgBgKDdvQqVtIiTsSHhgGjcCtlZacOonOoNCVvMFfjJVvPpmOoNnvVAOOhzZnNDdsStTmMORroqCcpPMjJdDnNDdOovykKujJUuUfQqFVvVNngFfkKGJRPprjJeQsSdDIidVvRBSxXPSlLiIfoOoOfxXYyBtTiIbSWwsRrDdeENnaAjBbbBgGyYFfcCPLXHfYqQyNlLXxnJjPbBiImMpqQdpPAaDPADbKkDboOSsSsiIUuBdlbSstoOTjJnNgGVOodDoacCmuUdDMAMmOOxhHdfFsSQpPFkkKHAOpbBPosSQqxZzrRpPxXWNcCmMnBtTbKktRrtaAYxecSsCrYcCJjyrybBYWwDzbBYyDdZzZPpzCsSsHZFgLNELYyleYqQsKprRPpGgPpmcKkCjJqQyGAagsStpfFtWwpPTPRrKnNOoKkkvVnNiCHPphcZkKzbBQUGgCsSlLdDrJSsuNnpPzhHLlEenNQEeqlLuUglLGxrRXfFQqmMQJnjJNjBgGbnnNFfjkLlgGlLKbSnuiIUNIisanMjfFJeETYAhHlLaBRrFfatiIKiIkFfpPavqQVmMdDgGAqQjaFaAfAFUuLwTtTtWJoOeEFffGCGZTtpPyYrkdBXxbDOueEIOovMmUpPulLKuUkoOzZRlLypPNnMmzZLlpEVvRgGrepZVvyYzkfFKPTtJkKjPAEiEeIuUZzeaBIyeEYoOibByJjsHhgGSYziebBEBbKksPpdDAdDUfwWYyCRgGrIiyYiIUumMDIixXiIMmrdDLlRdDxgGxXBYLljJFLlDWwdSsdDfVcRrRuUrmMCwWlgTtGBUuhLlUMmIiOoqwWjJjJeEHUuHmkQqBCcbOoKzZkKqjJqQWwCcOoQJOAaoIQApfxMmwgGtxcCgGzPpPaefFJlLdZzlfFLSYGguUycCsDjRuUAarRrEhHOoNoOnfFqpSTtPBbTtpmwYyWMmmcCNeEnMjJNfFlKLlUxXIaCchHlsSLTOosSnwWzdKkDZFMfFGgmbBLlqQbvVbBICTZJjiIaoOAzOobBLlvtjUuJiPpgIdPpDiyYBbGhHInwlbHhZzlJjLuNuRrgGIiyyDdYQqiIQqQDdxmMXUuokGgyYhHUuOoyGgpCGgbBczZhHWSLsQqFqDfFMmiZWwWwOoXIixUuXNnAyZzYCcuGgrROAxWaOFfoAaGgAUdDBqQDdwWHhPlQqDdcCYyYyCaGgeerRNhHJynuYygGUNYkdyYYpPyrRfFDdiIIiphHbBFnNBbrbswXxtTWpPmEeUwMQKfUuPJbBKkuUQqUtjJTkAaKrRiDdIwusBbUuJBoOAFfVdDQqGgvZgrRwWNnsXxSaPpdsSlLDAcdiIvjJVDYEyYevOoVPpyoOozzBerxXZztmMXxIQqHhisEeSSsYIskKSEiwWIhHXhHxmxnbbBBMmnNaAnzpPRrRFoOpxXbBRUuFfcZdKkVvbBDFBblLbxXjJJjJjlLXTtiIzZxXYyazsSJjZxXAGgRhHsSuPpUTDdxXBoIiZoiILlAarjJRekKEOzZzvFfVOvTpDdnKFdaAxXDUwWtsSeETUuTtXxQdeeEEqcCQqQHhajaVvAUdIisSDuYyJYstTMWFBdDEebrXxZzvVhWwHFfRfcYxXyCwdDOoSstbBTLmvCcVMmwJEejBbWMGnNKkikXxXKeEkxKqQIUugaACcGiIzZQfVNnzZMgGRTQFxkKbBYyuUoDdWaAwZzgVvLjJgWwlVjJfDdlLdKkDDHhdtTFUCrHEAaiCXxcIDqOoWWwwRWwrRcPpCeKDYydkEpevZjJzVNoOnRlLLZuVNYAayYgGyJIxLOoZzlqETteMMmmZqPpQDuUdOyCcYdDlYSsyoYgGwdGgDTttcCTWvtTAajJWwnNvaAOiIeozZGBDdXxSsfhHFsefFCcYyKkNnajJiIvVqDtTGgaoBdGSsYZKIikSzddjfFfFZzJoPOomcQQqquGgUFfkBqJjQmRrpPtTVvcCaAeeEEcCgiuUMQAMmaqWwJjMMKkwpPPpKRCQqhoOfFYhJVEgGeRpPrbhtTHSXxYysCcpyvVEPpeumMUYAPpMmaPGtTgBLlDdvGgRrzZmMVvjnNjJACcagGBJtOgGuYmMnNNgGnHhFfKkVzZdQqnRyCcUuwWlLiPsSZDdTtzyYIiTgGzhHZipPIuUrNnRjuUKkeEeEmMJVNFEekKTttbBYycfWUuRrRBUubfdDFrxQqXxXwXOmMhHZzprpoAaruUKkDdlwWLlyqQVjJaAGUzZnaAJjpBbYyzZUufoOFbBJjnUuDZzdDtvsSPpVmZMRrcCcCIiJaArbBRcrNSsSsyxpPfFMxXmuXTtfrwWVvIiZvVtTzlLdDMjJeEmjnjQqJDXZTtpTtPpPFfCjJcRWwrTAWwOoPpHHpnNWwduDdmMHYXxWShHeEQLlCcrRgNnxcCXeElLSnvVuUdDVPeOoEKyYkPUupFfqPIzZqQKkiizaSsXxjxiIMeErhfFSLltiqQoOeEIAaBMmbWcCwdSsDWbBxXiIwIXxiIkKVVIpPOomNhLlUuHhHeEtTnZZVvzpjJyszxXfFZOoCcCKkEecCchHqQzZhHhNngGHSRrmNVvmMnmMCcUuCLJjlWwcGgpPnNrRmMAXxJjKkJRoOtpQqRrkXxKookvZzmInHnNzGIigTtZRXxdfDpifFOoIGQqBxoOXOTqQbEeaWwAgGpFfHhPcxXtdDrRPlLpTPptTCQmMtTPptTLnzZTtoOSsNlFfUuYyFSsEqmMQlLgxXvVVvDvFflLTtEMmeKkVpPMmeEQqdYytEeTgGUuBbVjwZLlHFGhPpHxQhmMwWwjJdDWHqgGffFSDdsUPpSsRSLhHlsGFaAfMORrsHhScCOoYEedRrDyaANncoOSsiXxTtIbIilrRLmMAIJwTtWZRrNBsSzRrsSkaAkpPcCFBbiCNdDniahHuUCcAMSEzGgmUupwWPjwWJeqQxdDpPSvVsDOPpomSqQsugsqdnNuUDOMIlZzLmMfFFEdMBbmYyLIFfilCsSoBYyvVbOdYcCyDHcZzWwCHgPpXxODiIBmHquUQbBhOoPtsSTZzpAatTneuUkBbKeEMJARrapPjCSVvUegGEudDOkNowDlFfLAmSsLlnDycCYcClNbBZzdDPpSYyBcjsSqQgiTwsSQdDqlJqNxvNSiIsnjzZHyWwZzEeHOoKzaFfgGjbBQIiKkJjjJFfqLeEuQqoOrROovViIlLLYyGvZzVgCcWwWwCcrRXxFfFfrRTtllLfFIilLJjlLPljNZrOeEPyYhHrayrRrZirKkCBUuwWbNnGTrUuwYiIBpXxGgFiIfEWmcoOuUCbBMwNnYyqHaAhsSQHxXsShfFfFwPVzWMmzXZgzxXZRrWwTsueEqQOohHWwNnqxCCcPpVLlvbBmDdLlPeEvfoOFiIdDOXxGgoUuHuKWwESsEeCFXvARlLrRJoTHhiQDHXxcCLiIpPlfFiwWrRLsQqEemyYVtkKnJxXtYymMTPeEanNYyiIKXxKkOZzqqQoOoMaoOAWlLQvenNEHLlhbiWwIBwWZzoOcCuUSspwfLlsQOQOUuurcCPyXxYpgOQlLhoOABbajfVvOoDsSdRrDpkKPJTtjWbBOKkoRrqYyEepdEeTFfQqQzQqZtTYDIcCiPpJUKkusoHhVvjWNnmMmgGZFfEEeoNnOcmuPPZzqQNsVvgyYbiIBGYgGRTUvVWNBzZTzSsZXCyymMGRLzMqbwUuZtTzMSMBbmMBbBiaAyYSRrsIyYsSdDbcuQqGgUpPRrCjJDdrRcRreEELlenPoLIYysPYvVmMkKyrRHhsSKkOpPWwiImMCutSOosTrePrsfFSAauUcCYSsDsSdyoOzdDZuUtNnnNoIiORYyYyrmMdDLrVaADdvGJVLPpKHQBGgNnNzZsTRrfFtSTyxWwXyYAkzfBbtRpPtIdDaAqKbSXxdAabBrbBsSRgGADdYzZyCcDdauUQqPUGgucCrOoNicCHhiIUKkuVvVvDQqYbByBbEemMXpPtjJTxuLlUXzOoeEKRrnNkoOdCWrRSsmMlWNiILlmjJMQqgGBbdOoqQlLgGwrIFfzZoOfxXsSFcaACaKkWuUXxaAqQFKsSUuVWwTZzgkKPpGRTtJjrNrCcRnhtXxTrRHYyJymIYyiMnNYchIJaAkKQqTtgMzrIGgCPqQPjcCSfFuUhHIGgCcibBTXHhsSxGgzsSZvmUuZzMbkVGgzZsStCoEhHiIeauUifwQugMmUuKksZyjOGgobMWBRrKkUuXxkKzCYyxkqIiNWwkxCPIiCcpgyYxXLbBsKvvVFfvfUyYsSuolYYTPptMmyVvJCQJIijcCqQqcVyBbiIYvIiwpPQqWVvjhZzGgHtUuToOdDQqlUufFichwWPppPjtTJjHhJYXVpPeXxEnQqlOwWoLHhsSmxXMJebQqBgKcCqpOoPbBYygDduUzgXxVvGqQJxfkQSsnYyCcgPcufbBHhziIWwfFPfXxzVvXxZBbjiYDaAqQDdDTjyYIiIeHxgGLjJNnaAXJxXjxDbCcxwWOoJJVUjYqyiIYFnWCcrXtyYTufzssbPppPjNnGgUuJfFnNgEyYaAijJuoOykKkKsSkFfvLllLdDXtaATdLUurRgsEyarlJsShbBRgGrGFfFMmcDdloYyQBbqbfFZueEUGgkKjJzynwTtRrWLlGEemCgyYPDazJfQqpPzZMmNngCcrLqQlRcfuUdDSmIStSbBcIFfUuLVESsJjiufFAfckKMmJjuoOwWdhDVbdDBxWwQaIILDtOoCbNnBIMDXxfFuUAaqXxQomMpPOdReKdDoLlzWwNTtZcCGrRhfFuUYMmMmIiyvVBSsqSsCcDdsoKkOiIBdDuUWwjJDdwWJqdhkLCcyYlgGKqQqHdDhkKOoOCcoiSsIqQvVvkKXxJjVkKRrbIiMmMnNmAalAaLLlVFfGezsSEeSsqufFUufFTtHPpPpdnNmRrpPMCLlTtPxzDbcOkFfsSWDdBlPNCcssrGgRSeicCoSZzsoGgOuZrsfsSJjFSQvNbBLeVCZzqoOtQSsqkcCWwoOxXwEeWTtBbKeCcbFUgGMmuLlfhXWwUMoOXxmWiPDLfNnFldZziwWOiQqqXGnNgvVnEeOoNTtxfFQXxCTtcCuKsSDGgdlLxzZFoWwlCcjJGBLlbDdRrKXxwyxdIiDcqQPAcCsoiIuMmHjJMmhjNBbnJuSOosUtlLxXQXgCFrRggGGuUSsMmgZafMFLUoOFftTTtEektTfFRFfHsnxXPpoMmHhOJkKCKkdDWwHgAwgyYKkeEwDdVPFtTqkatHqjJQEetTLCDlLdaBbdZzAaLlDmiIMqsyYbzZwWBiIFfFfPpoOBLlWwyBXExGqVvmMpPTAaVDdvkGvVgGgKTtsqUuQyYStwbJBLjJYyASssVrmDhlLHbpOzZoJjAsSVLlvycwqlHPcYyDRjdZlLhDdMleEaDPpMmsSdTpuegrmHUuyYzZhKkTMjmsSMxXJoqdDaWPsSpVtOoEeJSbBmMDdZaAgGGiIpHpmSPpszkCcRrKRnDdnTtNYFWwXDmvxXtJjThLeEwQLlaAXlUtFfPrRpkKTtHhnNXxQqQcyYCqTtoOtdyyYYvVvWgGsOmZzAaMwslLDoOGgXxcgcQNnZzAaubIrdMfFOTtoKJMmjkmNmorIixeECFfccCvVnqbBQVvCnNWsSiecBbSsCxyYwWXuINVHlWPpwLwYPlLVcsSgujcHhCJLyYQqwWlNnVvJjJjltTLqTpjjjWRrFfKkRrWwEebVvCcBTAiIXjJAwNBbpetTEcCmqLlwmrRMWNeBVvcCbrRywlLcCHQUDEejJvVeYYynRKWwkhHMTHlLkKhFJhHjhHfYTHhinKkeEYhHidBbZDdZYnjyyYBbaWwkLlCgGuAaJISsUuqQKkzswqQQOFfDdFfCcpPQqRXxMMUuVsSGpPgCHhDdiuUIhRLlkGgCvVNdRuUQqCcVvUVvuKkYgGyFAjjhzCcZrRWwWZzYyLlwRrXxFmOoxXeEjYCCctYGQqEyYegycwxiIDnCnNcNNDtBVvbFflsSJMIOvXEvVvVkkoOeEKSXxGgwlLHhbBNnNvOpUOipnGQnzaAZoOpQqbBeaASsQqZDdEFZzYynYyNrqFhXzZOqQvVHDdQqbVjrxXaAEJHEeWwfXcRNnrKkGbAaNjJOOoVvmMfFXwWxGuUmSOoCDJQqVvLlLMmeEaUJMmEYDrEeHiRrXqQxeEkLlIiBnNNnbLlVvUqQRrXxFaAfCcvAaXiIuMmUlLxyRUuOeEfFnNzJwKkkKQBUsLlHhoOCcnYgGptTiiPdDvXxlwWAnNaEKkGzZjJhHfFfMmFagGNlukkKKUuKqkMmKsSzZWZzNmqQMKknKYWwvNYynPEepMmAaFaAvVEefvsWwSUgUjJnCVmMveEGQgsSGQqpPyYqKksSdmzsZzUbHhHhNnhHlUPpCcuLkKsYyVUMceFPpfWQXoGnwWNgWdmOoMMmMgGwWlLzORrxXkrzoIiOlLWYygFUAaZzSsvVufFoOCPiIpkKcfGgklUuDTtdsSLTtyYPUANniGgIhHTAZzaxXBZYylLpLWwMuJjUnjknNKujQUFfkKuqWHeErnNSsNnwVGgUIOLDdbpqQLxhKFIifAHhlLFxIiuPpnEeNUMGiGlLtTMmpPuUmMkKbBSsWKWyYQZzKSXxIqMmQMjyoOvVRrYYwWItTRVQqGgAcCKrRkYSfcCeEVvFgGoOLrlLRnfLyXncqKkAaQjJCNbdDhHBeEyRSsgGGgrYlLwmMuHZQuUUvVuMmqIyGgAaROAaYJjHhZOwWbBSiaFfNnWOcCEetAwdDWaHFfyeEnNvtTVYqLugGUlQjJrSnmTteEevVIibWhKMmeEkmMigPpxYuUyMRxwGVvEMmUuBHhCZiTytTdLxXAvtTvVZzoSsfkuUKzqQZLlKkAdDHaAWweEzZKGmeEKkUNQCvVcpjJsOsrRSqJjuwWsSwqwWfBHurRFfUaqdDIiHpTtsGgSsiIQqSzZGYpPyvsaASNnfnDdgHhgAaGXgMmyzZyYsuUSYGHKVuYyKkUCFjJfcSCiIcsBDdaAZRDDrRjshHryYdqcCQDRfFBNnWjJwEhHvVehHJjLNnmMYyYkKYznieeEilLEDnKDXzAkKaSjJOolLbBZzFjJiItwWePRrpzZARYxXzZzRwTjPEXnNPuPpVKkvzSsPzLlZtTgOoqQGZzpZHhEuUUYyusNQqnPpObBObtoUuqyYyYFDdBbffAuUJyYyeLYbuvVUIqOshcoZIglQqYyeEVvLGwWeEtMmErSEMPTdDaQWwJFfjWwyTCmzGgZrbkllijJnVIivNQiIRHhdiYiItTtiIxXEeKkTDdsfvVDguCKAvVBzgwWjJpuUbvHhVvVLvVWYfFywljJZpKkyYWUuwPgeTtEkKQDLEeZztKFeEULLllkKNaqQfBFRBofjJjJRkKrIIiiZzHdDhjOoqDdIBPWvVPmMnNNnOgGojzGIzRgGFnNkYZzxYKksSyiIEeZZzSXqQYdDywcCjkhSBkbxXulLUBGgdsSpexsTkKtulXdyIPBGggNnBtTcpPSwbBeWwEeEygDouUAoOlKkPbBFLlEefJoEgGYmMMwWoDlAnNqDNnqgUwLltepPRrFAMmyYIlLnBZtXxyJLljWwhuUiIRrnmsLPplpPozTtDdwWxVdTUubZqHhQVyYLyYzZoOlggoMmRACFgGfceEdDahHkKxggdDZBZzsVvSbGgzqQyYBRbBRrWLeEmanNmrrRRknVvqQRrSOcCoTtKFfcWwCTtqVvQzZrnNqQROUYycOoUtSsdDeZbVvBeEBbmSuyJjTGggrvlLHrRWYyDdgGLlKkwvfFEeVoiIveEJQPmiIMXaAIFfiMdKkBJqBvVvFbyzWlNNnRXdbBDKerRwWNtJjkjJKTJRHtThfFqmWEexXCcnoOdrigpMcCfylLYjJrRztkKuxAaIwMMmgFgkkCcDcCTeEtARfGgFHtsUaADxXdxCzRIuUsSaMXxmmMTrRtTthHbBeEuGIjJZTtziGeSdyYxTtAaWgTqtTtpIiZvSsjgbOoBkKGpaRtTCcbBbjJBrIiAYyKkPJVpPrRvbzZXQVQqWwtFWwfTbQqMmBHdDGgdIGaAuUnNNNnINXxMmerRDbltKkpaAmiJXxChMmHIiHhpNRrlCcLiIfEeAaKqjJnNcCJiIGgGtSsTIiDdpLnNDPDPBbqffFFqRrQpPXxfgGHhnRATjJtHbBhuUHnygeEYyjJTZlLnNEelLztZXHQqhxoflLJJdDkKHPphBALtPMuUVvVvGgmBbiInVvgGtCfMOocCkiIiPJjfFfFpoWBadDVvLsSrjktdAaHhDCUucwgGDdFfbMsTUjAaJjTtyzZbBMmlZBntlLrROFfoUAItsSOHFVvfSsSTtSsSdxXGVAawQqLhHAsjJFiISSssfFCYcOocnUuNUjJpPBbugzZGoOuUaaDdAZdFfdDDpwWPalCXkmFlTtJcNOjoOJzZMAgGHhkrvCcrCcMmUuyYJjyYoAaBbLhHUpPuJDdGhaAHgGJOXWSrEtrehxXiSXxhHeToOXtLlZzyYfXxBbkmiubowWLNnlVvcVvPpcMNnmMoOdwxXMSTrEPpIiVfbBRxXhJjHrkTtOTtKRUurEbBhHnlLGgbpXxhHQqiyYsSzyYJyYLpFsImhHMjfrRVhHfeTnvEecCRHtTthHmvnCJveExpNTFSsvDdWGgwVMDvVdmxAaMpTtJjdDdmBbCNnvVsKpPiHMTIiFzZftmciSRrcKhHkCpPlOoggLvKkIiGgVlGojcWXxzYMmorROFyYTXGgYhDdBbHmdoCcODVwFZzRrJEeNxlLsSsSHKkTtKfwGGezZEgNwEFaATIsSithHZaAUuzBFfbaDozkPpKFfElLeofFfFYALlgGakKwWSOkHhuGPppCsMmjJaqQEeGLlgzwwXaSswrpPwTeEtWaAcCRaAOeEYyhFJjVvCdsWwSDsSXCZzuUPeGtnNmMHLlhQqaeFfaWwTWHZCcFISsqnNMmhuUYzZrRKupnNPFuGtSsTgaTtTyGgFBPJvXxhjWUdVvrRbGgBeErRvoGWPpxEKkAmNnTQNnvuUVeEQHKZgYdpFnQqtMqQmMzCcYbFvcCuHhlMmuQkKPUupsfFZnrHHwWSsnNsSbBbBbdvwWaTUutJNZTtQeEJVCdDoFfuzOjXlaALlKkLNnAgHFXxFRbBtVvxXxXxXcEeADTQZvvmMccRrwtuUTthHfCcYyQEeIiFZkjOFtTEeEbzZYylLrRVgIfsLlwqQWCqQcsSbxXtfUZnNcSteHhEmKbBOTkLlycCorCqEeAaEeAsMRrnHGHnPpQUucjTZztEehHJBNnbDyshTmJjaAMKkqJxRrvVjVvFfpLEsSaAeeEebiBbNnIBEkKBbQYbDxOoXOwBYOoyxMmaAnTaycCVvHhatQMGNVvJhtTZzsWwTIiteEeEHhkjJcpnHJatMWYSNepPEywgaosdkzZKWMmRrsgGBbSCuUEUuLvfFFLEGDbBIXCDkYGveEVXVzqQHmMbaABSiaAJjTwWPpXxIrZAQwfcCjJoIiBfgGNnFlBFjJcCyYffVvWCTIibBsSdWIWJqhAaZvQqVdNKeENvhDXxowkKAVXYPnZKLlzZjCwIOoiHhwHhWdEUoOulLslLqaAGgXxQUuYnNzDYsxFYyfeVDUzAaNHhgxXGRQWwqHhCzgcMmcCXvMQIilndoOSzZskKmNmMQqrRQWwJpPUuTtcZzCKXAGghHayJCcaiEYLlGgVvmbBZzhHBbbxawYyWAGktFfTKpHhPclJryXHhwceAakULcCjcCONnxZzIyYjzPAHhVbCnfAaFPjJpEiEWwEnLlrRoVikoLlOzvTTtqVbygGGIceArbBLfFnHmMClCpPTteQlLfbDGqSsQgbVKgGPbBUoOubzacCAUBQMmZYqozZDHbBvBIiJjaAdsYmMyPJTtwcCWlNKknLrROLzgGgGgtTGnoOqKHmaULlcAMmKhhEebHhBQITjJBbJypFgGTgGhghNkKYPCDNGFoAaQwwjpPcCJYIxJcObBjSfaeEGgwWBMhNNnKnpPNGuUMpnNbByGeEgxnNuUchidQqDIPEgtTMjTtCqkiIAkKLQLlqtsphnaRbgfFWdDpPqZWauJjBoXxGgOSsLbqgFsSYMzZnNkWwKnpJjRTJjJEAfFaQJkKQeEGXxgSXtsSTxSUqCqQfMTvuEPIiZZIGAaaiIWwIPfFWwFEeTrtRTtrTRYGhHJJnNvVmSskKXxTSmMsZzhAXFLlscoOoOCSWtUkLWwXXjVzwwEhNnolvVxCnNLBbRzGgkcCZawStfFTtxcoIMmjJiAsBvYQqtTLCnNsLNHhMVlLVvOoGjRquQqUKkSotMZzmdqQkbBsSyYrReKkEKOlLTQuZzTEetqQOoSsTtQEWIkKjKeEKkNpPnqESsEvbGgPpIAoFDdiPGLxgGXlDuBbUIMTkKtJkWTHAKkaBbANQMOoRUBfFbuEcTvVtXTtcCxrfxWRroiIxXJjUuWccCbBtiFfXmCcMtaZsccwLBOkxHXxrGVvrRiIQshkKnNHPJJZnNMmqQfFWwEmMHrZzptzIEeuONKDddSyYssDfhrrRIiRPqQKlLhHaAyYJjnTtSbvoOnNVkKEojxRcrTZlDLBPpAFHETtpPjJAUuMmiRruUsSuUdcjJCnSCsREettTgMhHADdYyyXcbBuHgvVHntTZzpPoAQqaOBbNnbBhZzIUpCcPsSuWXXvOQqJbmmNnMYdRSdDHhBbfFbOoiVtTznAaNnNScmMgCEelEQmthyVzvgOoZSmOofYyoOFAYPpeEdprRdoHSsANIodljJgGBPpIibLcCDNTqQJMmiiRkKPcCZrRzwWakadjHhzGUGgtTYyuJjlLRrevcCQOoPXxpqVvsKkarRUHhRqMWUucCWwlAgGzOFfoWSGgwVRBbdDVvwWrpaclLCNzxXVIvckKyFfKkUuypEdhqdAEdBOoLSfFhLlpSqbRXibBIJgcUunNSsuSWYcCuXJjCJjDHhdoSvNnWwDhHvVwvDbGLOofFiNnmMIhWwqCcIitlZfCcIijJFhHcTtFeEkWwAqQMmEXxjUuEepciyYVVluUvlLsCcTdDtczgrRGAaIimEUvVIOgOoGOjIipjLHbIiqQeEzWwcCwWQqZBhtKksBshQGlyYLGaSxhZsSNnzjJjIyhYBSxGSiIVvzZVvhNFDfhqYnSUlFpOokiJVvyYRuUhZPthsGgTbpPCeEvCckPQqJSsiDhHGwUeEIisSQqiXCalJjtveEZAaUBbtxYdvwWoOJezZzFsSDdrReoOzwjJWZlKaYdDyOmuUMoDbVvvVRgVvGlmoODDqdLlDcrvVbJEjJAqtWoZAazpoYQiNwWpPtTnnNxjxAaTypPCcYvViItXZzFfAoOhnNHOwKiTtLgYpPETtBfCcZzuLlaNxXntuNRgGGgrHhHhnCNDJWjJmWwMcCkKCUunNcAOLlkKtQGqdJZpVsNdSslxYRqSsxPpXfjJFDJhHCjxXuRCxpPkjLlKkzLlZurHPlLHtcCmpPmYqIJrxXeZbBKOojunNVvgGSsOEkKbptSsVKoOIiivVIFlMyVFpHwmFldfFHhnrfFTKcCkVvLlTthHtQXxqeNDZzWPWgWemfFaAMxXvVDvKKLiYQoOsSGmujeNUuxXnqcaAWwChkKHuTgMmlZgGnNUpPuNhEezZoOUualLoOSEeisqQSFlKkLfNnljjwhPQCyPIiSdDThHuVzeYiIpwAatTfxxksSixHhldDysspPGgYymiJwmvMIfFgwFfTtdtWwbBuwvBRAQoiIOTMLBYIeqQtmXxYDekzZVdDLluiIUcWSsxKkVvryYcVtNvRkujcCvVGbgiJrRBjdRiqzZnBNyYlYySsWDdBbqCLocCORrVWWpPxXsboOZunvVEeedDluUfsSCzWwZGgccCrlEYBPprvVvsSMmkfFMfnKkzKKkQwqnNkKQeWwIwWbKkXxguUGBLlindvVnTmMcCHKkgGsBNjSQsFfRHhvVraMmnFfLlrRcYyDNMmFfVplmtdDTQUFOpsSPBKkZYmMOoywRAmMfjJFzgGtTCceEqTtFhHfQHWZVQhHaAqvpPzbBmMZiQkOoZCtLLbtTGDdRXpmiJxquUsbBSdqzXmMxqRSJsAvVVNGAgClQqLgVvzVIiveOOKHPhJmCyDtTlLDddoRUBbayYeEbBApwWmtTMoIFQnIiNzrDFwGwsOCcePCBbKkjJBPuPpAYrTIDmMkKcWIWwcQcCHdzOyYoSnNwWiyYIsyYzZqczVFfxqZNYySggVxkKpEMoZnuyYhHYvVxXyEezOoZmJjiDiIluqQfjBbJFzZULywWYdIjJKkbplXbHhBxiWwIRlLefeEnzZbJeEiIsSjWdDTtvVhHmKRmRboVLlFfQOPplWwkKDbUayCcYPSSXpoZoOXwWdccCkzdPppxxTkIcYYnOKkPTsyxXTryUsSPuyWxXmfjoOJagbBxXHhXxGrnNRwOxdEhHXGSGrwoxjmMgGJALUuljJUMjJmujTTtskAaiIfmyYuUMRLOMtTJjyYTqMvCcJxmMaSsYjuQnuUVabBxJjXJqYpQBbROoEjrRwczAagGDKkfJjhFjCSlUQwGgmoOIvUSvUuMmtflkzloOOXxjWjyYLlHhndmyPmZznrRNEeGSsabLXxlBAtGLvVlyswHIVBMmvVNjOgzifFYiInlAOOZPFVHhvSSsrCIiIRrczZPpkKxXCMLlmyOTWwaAMNnpsZQZQqfbEPEavVAwhAsSrRNnSLwWlGyKfMPUqLHpWkkufFIJjiVDdvzZvVVuvGkIodAWwaQqWoJjPprRRtTKKHzZbpPQqZBVfFcWOTXxhSyeHNHDbBdLlOrOYyTtilvVGKojJudDUlLvYZzRmMMBbjOiWqQCuUzBQZROoemLHhlMBVvBIisDdGgqQSLfCcPphhprcYyCdaRrAZzSwkqoZzgfFUulLGqwuwWSsUqQBtZxWeEKkZTjJtbBFfTLloKKMUWNGFxXYAaEevLJidcGQqpnGgmYuKwWrfBTtKkLUuGgdWTnnxSsXAaxfEenNFNnXsSISYipXiIGcCuUVIcIPKcCbFoGWvVjJyYIVcCRQqrvmVQGfAaDdxXJNpqUuJQqjOJLlNtTvpPkiliIkidTkKIdDzZBbGVvgikXnNtcLRZqaMESVxXJnvmjJTtczZCMACkXecCXxroORMgVJPHtmMeEriZzEenswBqDzrzZAfdFyDmMdZBbExHxZXxzmaQVOotTOgGyYoggJpxppjvPQqwWpwQqndGgFfNtTXGCWeEZOopgBbGauUKUuulLzZLKXMmBZzkkoZIuNDdLlIiLlJtRrWxsnGUaTtQlWwZfQqFWazkNnBqkxXKxyIiyXmgGqbmBIoGwMmWEWUugtTwnrRFqvWbJaagSsnNfdDDYyVvAadCaTpKkvMmOoVPbBMGgyAoOaDHEEfjJjfvIisrRCcOLlLlMaUDwzEexgmQjojJOJqprRJdUuXpRQqMlLmrgDmLPzkKZAaPnOoVBCSsByYVvfCcFVnYHhyZQtTqigMmGPpowTGdDgtHhHpPBKkNWMtenNRaZRbTtunymgGlLaJjAVZJIuULlSZKkzHzZasNnKJiZDjMtcSsCgGQKAakqTeEmVvbghHsSfFIcPdsNAapKQwXaYYyazofWfvVPdyYrPSbccagIiZIpPmMizaTWBRgzzagDYnkKnNLeElzwPYvzZbBFKDdMmKMIiWzZDqtOAafFlLdtTzIaAYQqywbVviIjYvVyHXeAFAasSfdaAvVuuUUwWWVrReDtmMRzwymiIdDKsPPIlLKkirkKRwWUCctTqQDdUikxXhOoXoOuCxvFfMCcvVmSsVxQjzZsSTwVUekJjuUNVvLPpGwpPMOZoASiDdEnuIiUVcpuUPYqRXtcdDgpmeEQqrRIiHhdgGRKkWwrzrRAtqQCcTwWXeExyYVkbvaZbPDvXOoxVFfttGgffVvFPpSRrXBhHbxcCjpZxREtQqGKkconNlawWaJFfQqueLJMVTqMKkmFmMOkvptShHzMmaUuLjJxYyHNVvVktdDTqQCchQhHqHucNsMeEmaSssCcSBbRNcWbtoOTapPDtakhHmMRrjmMRrcFUGtTZzsJECcTtUuJjJEDdejepboUuOYUuVOKnAjhxxXXaunLlXxcsSvVpuLosSzWiKCzQHxPNsBRcQJYIiIDduSszGLUvsSVulHqQnDGgdrErQqRYUuhtZBSWFMIiEwRwiMVFNJSTTttufjQwcCGvJvVkXcDdeEzJalLlliIZzaOoONZLUuUCzBZGlLsdDSENnBlZiIWPpwzZGcIWAalLZaAMmQYyxdrRCmMtBEbkCKRJdhHWhkHEeYBbNnyhjmLirJANnPcCEaAwxZzFsIJjivKGjZzATGgtLlNxiOKkowXjStTmCcFcTylptTPXzbytCcsUOmMoQqMUuSJjagqQNDrbBBsGfFgSbNVrNnptTxInutjrzyidDYoOyjKVvTKkFynNYfCRrwIIogcCxhWjJjowWtXxWBbBHGgmMhWWwbBSOOoyYontkaPTtpAwOKIpdDPiDiPkKpQqpRQZEeWGCPNgGHjEeJuHhkvdDVGgXofkZaAzoONQqzZBdHtlUpgcOoQqOdkeEXbUuBjJxTXxuNngEINrrqQREeSSADdsVUbYFRqwMsLlSlLAsaAuWbBChHLjNaXXxeWwjbBKCckxzBrLlOXxLulLUUuvxXCCiIcfTfFHhNpbBPpBbPnFFPBlslMmMrRmOcCGoOaAlOduWmjJXTOotonNOBbtEnxXVcZLPfcrRvVCFRrCSxHMhPyYyYyNcHilrMuGgXxZyYTofsYyuUpBsnrdfVvRTjaNnzIbsuAjcyhHJPUumMEWufXmoHhOhzltREQgOmMmTebmzRsvUlDNDdbaAUuxbaABXhsShHETnlcoSjUuxdyUODGKijcaIWwhRJhTtmCFYySsfTtcMHejJAbKhuoOMzwOoWujpPSsYbnNvjJjgGWwZzfBgiWwxXIPTtpcYyVvXxUjJuLHhApBCcHhlLbPpoViNWGjrPmSogLUDdeEujxsSJXjElXJWMsFADJfmgxXsSUiUdeUukZzZzJTiIQqruOrZLloUKOcCoxXBFfcaSsAJVvrRjhtTuWQqSswrbBPpbUhxoOFhGYCcWVJMipRKEesPntOoKXsnNfFSIZzFfzZYxXBmMOodjJJjEeUuPTOWwoKkgzIjrRtZnqxgGXIBbIuUkqaAqbBjmMGtTgYyPHKkzZCchHhjJOoEEevgmUbBuThBoOaZclLztTXYyPpxZvOIkSeFfJpPKkjXIijHoOhJxhHEnFTGAlHSDdVgPVvSswZzVNETfZpOotGZpPjasSKpfzkXGoIiOKXxbiIrRrHhRdMTfVFtwWTffqWmMwQFNMmsAIHqQhHEhnNQoYYWwzdQYyZprRDUitDrolsrHLkeQbBYzIwdVjOAJjakKoIEreZzufgNDqDoAaFfhHOoOSsozZOdUYPKAVxXvuoZgtWNlLnFfyYsRbQNnwOvuGgGgnNeyZzfEetTJPpCcGmMgYLPlLOZahEnysSeQiIJjvGgYyyYryTSsSdWlxECctTRDNpdghCbjJBNqtZjSbddDDBszplLMmMmHhfImcCmZbuUftTGWVvcLaACmqQqQIinJWVvbBIpPZzOHOuXPtxbYMmyzTfXKVuKAaAePpGbBgZzFsSQqnwYyPzNofFTXDRrFfJiITwYrTtsqnhCceeEozomAaCiIcCdDIlaCcADeARrHhaElNuIiaTQwEoLlOrWwUWwusSOoRWCZzTjzkccChHlBKpIidXtTxDJjtPZzcCMqMYmCiuiIJjgDiiFsZKxXkzUuXpOogHhGbOelPiWRrwVpPUdDdDBZBlkxAITHsNgGXxQJhgGHVvzZFfaxOLzZDRwvVLXxlqQWOPiXnGgavtGbLImMHhiEecpPaADdEcCyYJdLKZfbCcjpRrZbBKkLlMmPwyJLVujAdQqDqODdiWaIiJjAweSAaXVvpyQhCFfPpchTpeSsYyKTtWwgpjJjhqQFpymJjbBHtqQTAkjLlRILliuUdDrSLuUeowWOElkKDQyYqkKfFWwNrUexClLZzpPYczhfVvwgliVDsYiIydjJGJoOFFfqJjQXjRJAcCdvfFeLLDdcCPPxPQqpXxLGUGkaANNmMRyYNWbBwjJehjzZkKXoONcMDFkYdxenLlTvVRiIrRjcCKscCSVYyvzcLIFfIFmbRrxXNxXxjJoHJdBzZbRrScUuiswWpPZjknNaMJAanOoyFVvQsYVYelJHVvePAwlMQMUvSsMmhHKkHhQqOwUuWoiuqnOoZzNSUVvHVyYvkKhaAxXSLaADHibBtTupPRYQqJfFfFxXEeMmWZTtSsFuUfPAJgXuUjZeKrabkKBAOcNsNnNqtVvJOotEenEeNjUuyjGgoOEWsxXBMgGczzZYyykHPbBYLRrHhjNesIZVHhvEZETyPpRruOoSstyqbURHhAAIzZCcrpPnqxXwEUZgUujCcoiUueNuUvVHRmMmBbMEHhuUzokfoMZtgGTzDhHNfyFzVhsSHqsfFiyhflLFuUtaoOAMmTGmMgVygRrGYXxhcMnNwaUKrckfjJFeEKCmMxXRxPpXuAWmCLlHLlvHYISQvZfYFndBbRrXxpPmOFvOxXwWoVxXKOZerhnEIOZzJmCcTcCkKcCtMjOwWoMmJzZdDGzuegGGgWVvQwWNRCcOoiaaXxruBKkQYTUYtvEFfeVezeztVvTiSEnJlSsylLBbphWsSQqwiIKYoOZCmbSweJOozZYpPJhHTjTQnSnCoRkFfEzJxUuGjapNnWwzOowjyrpPUIhdDoOdlsOousQbBUrRIqUuSsyYdDQVumqmqQLdDMmWapEhFfjLOPpuUDdRroEyvySqjJLlGgRrfYNRmMrjmAMmKkXxpPKJzSIdDaAhHZzPMmpCCcsoODhHjTthOXLlnNnrRrRBMfiilCZkJrpzZPPptNEXDCcyKfdmCnhHxJHEWwnIBZzbiOornnKJSsjgYyMmuggGloOXxXpuyYUpKkOolOolTtFfEVHhDgGzZBbanNjrJpPxgGfrRkKjgDSdvmMILGWFHZCycfFwWXEugGRnPpdFflLsXxOoJKAIQqiaanNVvAahMjJYPfDdHJPGkEPtHHhHMmqVOovYPxVvsEIcCTtoqQQSsaJwTVvtWUvljYWpVvzPkKJCqQcBFzklpPDjeCiIiIldDBgTKkVANxIpocCaArhHFfRrdIiloXrRcCAjdvVDJjqOonShtiYyaXKLbzbuvIpLEyYoBPxSfIIdGUIcMymQjJmiIpTJjJjgGPdDkbLWwhHCKZJHdDiIhtcweEeWEeqtFfAyYIiJjEPpeUnLIiMmdLicLjSsJlMYyOZOEJVvjHNQJjSRyJjWsStjlLLldxSstOnZsSpWNfEsSTtakbBUvkxFtZBXThDdHJjpxUohoidDGgwjNJjMclCwxaAdDKkXgFBzZzNnjJEeMMiFPZJTtzTQncHGDPndrVveXLwDeEkKstYXxRhHRrYyFdoODfVqEYNeHAzopNnlyRrjFlLCcVvYEUVoWqPplFaAfdDRrLBrSwTGzMmOUakKkWwpyutTrRTUuNntQduUnGFUEgGtTRelLiJvDWEerRihFfofFOHZyqYyErRhuMmUHKlhRSdDLORdTIAuUaukKdPzqDZyyoLlOOqHehiazZSnvFtmOFfaAoNnDBkgxKZFPkAqQEeNnJrRjzZJNnzgcCZzTPCcjJzFtuUenvjJWZzYyiIQPpSsAabBqpYyGvtTshLagjJtfNsKioVhHCzAoYyOAabHtMGVephCcHNnJRrQQKiEeKkEeiQNzYNnyTJiZGoOkKtpDrRbLlyIiRzZWdDwFfrtTXxiqmMsSQpYHhyPxkTXxNpSkkKqXnzZNxltFfTLQrPImMmjRrXxGgvwQqygHRrfXHuBHhRUHSDdxXMmsJjCcCbdDkuOzRwWGgoURtjKEgFfGWIiwDuIvVuxXGMJjFTtjdafSmwjxLeJlLxjXtTfFLlAaJSslGOsbBrRIiMpEeRJgwncCIvOPaWwlpPoOCIZOzZoNgGnziGbFJVJjtTBlLyDdSMmDUudsUuTtJMmUWGpPgHhwZJjmUHkBjJaJjEUujEerHiACJIkgdobBuUXxuzFBbfZYDXJsEeOCLGgsSNteHLlPXxpBYyndLuVSrZSsMBcCEFftLBtTblMoGqyYerTLeEhHZYgGyHMwWKkxVvFUlLweXxpjYCJaUSfPpFCceEqoOQBiZAJiItpPrbBFaADRNSBbbPVlLvSFdDOtMmzCcBbUSsUuWwmRLIhCnYtpPEeTpVvPpqQwWquUQHnNmhXscaAZzVvplGgqQmMzHhCvNeQqTxMSswWwWwUDopuUPgGLEegmMWwoLSLbpffFfXxtnNFcVlqQoWwRdDbnnNNZrrRRXKJjkJaAExAnJKklcCsScJjJjPpcCwUSQyYqamWQrfyBuoOvSCcrRassRnieGUukKUdoODtBbKUBbuDwWoCGPuoOLcCThDbzZnKFOxKjJtbZzBTUhnxXpcgOowzqrJBpSsPbjNlLnIiyYPIDdOoWwQqCcdkoWjJGYXxygKTNsaAwZzrRrRNnbVvwTOJwIiHXGWwkKOiAaiWcvVOotwWkJmMuNnUIYZRJTUNPpiXPRvnRkKdgGnGAsWwUumuSTYBZbzZBxLYtCfMsJxJjvVWImMiIXgGnznVvNZxXabBJgJjkVSfpsSPXWepajRIXeExlxXMJYuUynBbNKFfHXzZxoOwKkDjrvVkcKkjJKBebwWNnaATWwchRrHVvDkKXHhqzdDCkKcCcwJjivVCgzLbNnegzZzbZculznoAJjLLAFfsSjZCxKjVgGgWqoOJFUsjnfvmTtIWrWemfwsuUrRoOFsSfbzTVvHyeRDqQdkKBbOoNhfaArRFgZUmMrRgGkKnNiytTjyYqCrTYytbSnpXhqpPxiIXZckIwZdDOGgllLsyaAYSTteEhHgGUPrmMRCNUAHJaNkKkYPpyoTtWwJjNnvWwyBPEpPejvVSgNnufCltTLJDdfFKATWwdJjjpPJBbABwCnnNCcrASnCUKvnhHyYhXAalXgGlLWwxAhHZLlsTPVKNnofQtHhveEmjlwWEUrMmRjuuUUAAOoaAqWwQLBaAbJjOCQqgnNeETEeerpzZPHhkKXzPJnNcCsFTTdpewWEQzZqBqQcCzAbEeBVBKvrzZRaZxXDXxqQMncCNvpPVPGCTsSxrQyeECvdDusSxQqoOXUZzEqQPpehHNeIsaOzoWwmWgTtlXxnYIiyFfcCKETtQqNnuvWKktJqXXcUVFfvxHiIKIuJjdDoupPRrfoOFUOupPppAaEeSkMYBbWZrTdEUuOKhHkovwDaJduUDjExhJTtBWiuRXxrUZkRrKIhEeHiKLlkDtToTsSQdzZwZzmdDkkmMfVOopPyzZpWjJZNyQqdGZzAZZGrWwbwtAOoGACCBHQqhspRDpFwFUuOZAyNnAEexFCcfWqkPnMmSDpXSJLljFeEfsSPpsxqQCifFGBNnfFxXJdzIdDjkSSsAhsijzvfFlLMYNcCUByYrzAriIETmwnxiIXbhGMmghHWOIzNviKkIbcoObvXxHhLlNAapplMdGEeLlPdDxTtDjtaATPMtTGXZWdnNuYyLlAmBboPpSVFJFaAOJjUuoeehdYHhxXmtAcTtiIxHhXFGiYyIAAdDjBwVHrREehQfQuUqNWGnNEXxJjewegOibMtTnsSNBiIQcNnCOyYoMdDxYGgYXQbKxXEeZnNfFAwQqzLBbqXxAueEgQqNSXlLwTjVvYSsyOoUunUizOKKbxkgGlUkAPzDdfFwcgqQxnDNvVeRrEWVJPPXPjgGnVvNGGvgGqAMiBbKkBbINaAnXhXbBezYfDFtTaRZiIGgdQbWSNaAIfFnNRfLleEFThpjBbvPpAaGmjJSsExKBxXbcuUaVNjvSssemjJqpPQAQnNzrlCTGEegDdxKtDIKdDLWwIKVVBbpPOovnKELlSsekTtKFfkjoQPnjFgqgGLlvMzZuUiQPpqGgmrRMkKSswpPMmjJgOfBkpgGiCiviIgAaxPIysiTtNNiItwDkKlbFRkUyMoZzONPgUuCDIjlVFfyflLSsgnwumkkOwWsStzwXzTbvVWQOQQqKnNWsDJjRPHHFlYybbEXxrzqbMmjJZcwzZyiIYIqQoJmrybBVOkgLIogsSGRohnUuhcCEYsHtKkowCvbzBhkkrPXxpODdJjwDOpPiKgVUvUheEiIHBbKKkKwGgPhlQupmFkYFfdcLlCDgBbUuWwsaHWHhgGetEeKkTpeBFzZQqzqUulxWwXLzSPmWTtUuwLlHhrZFhHfRrzRtoYvAaVhHEeibCJjcBcRrKkRwZzWsRrfpzooaLGhHgNWwyIZlLGoJnbviTtwWhWSYgTgKDdkMpXxQbUTYytuBuUqYMzZKkAazWumMUwZDNJgGwJoLZKLFTVsuViMklLKWquwWiILscJfHFqQdZCWsSJeUurqPlLyvjJVQnIiIiNjAjJvDdVvRrNqUKlLkJykKAqQXjVmQvVtrRKkmoAalHhZlLzrFKSGgbYygHhGBtJXIeEixVuUvPpVpPTDdgGtSsEevaXOWqQRCcjJgeEskKgxerTtcCRDXoWrmMRAFMEewYUpuYRiItYStCgGcpuUoNyyGgCiKtXXPDZTPptKCDxoOWaAwzOPxssQqpHhyfFYAuUcCzZuBZzVvdxXVvjJLoqvJjOBJYyjrMrkGgMBbbBwTtVvBbJuUvOoVjWwBNFExXqfFQLJjlrLPBEqQeMZzUNIizOTtmePXvGGsnSmGgMszQXvZCeEQZDhqCiwCIiditxXROooORrOonJRrjLlNRryaUweECcWXxxFfXpbuUcpEoSCcWgZzaAWfYyCcdRPpZqfiFfOYHhyPuwWpafSsFnNAcCPrOWwYcGgMpbBPxXjHphkooOoEfFZGgGIicGoOagnvaSjsSsrCcHKkhVvQfFZJjDRrdCctTQDhHpPoOWRbBrmMwQdDXzZjINnqQUSWwOgGosuoOTtMSsPxrgBlldDiITcvVCczKqIzCcFzZfwhKWwOokZarWzbopPfuqExZuUVvzEeXeMHhLHhPvdDnZzVvdKkCbBNJjAJjJjSqsJnLlCcbiISIihoOJjtNDSsNEWqkZaANFmKsSVRNnbyLlmMeZzLRCcAaFWwLEcClLxXlLNUOXxozdDBSwAYyawvaAlzjJbBiIZVEMmevcQwhHLnbNQZzIrDJbJjuXWwxUjIGBsSgJUKrVPplLnTvCuURgGXwHhYyCAavnFfNnNKEddDanNAdDySFfsZzaAJjMTSsEiyKkblmtTtcCqarbVTuUtvEdDeVWUTYyDIUpZOozPrRuiFfZzWZzGimVMWjIMFfSVdDvhHSYNnUuDvVdwWLXIKXXFEDdDdevVaAWPyEZvUtspYcqpHWJJwmMWLIsHhMmAHWwQqnzLGtKcCkUjxXJhHQBbEHnqQNhPpJJjxXUMgBbRwWrqfFyadDAIlkmMkVdEaAwGwhTYjJytHlLpwdnNnEtTRNDSsLfxXMvVWhPNnfvkLlZzfFiIKWwYUumtTkKLfNnkvnkKuUNTPBXxeMmoOoNnUJkzERYMmymMQqjiQyNnMfDdFMThphUuRUJKrRXcNnrUJUuctPpTjqQwWdDJVvjdKkQWwuUryXLDnSTNntvPSszjDIiQHhgqTorRaMmwjFfGgdIsSincNjzZJnyYUTUuMmAUFbeHhyGCcqQlITtkWoUuQqRraJBbnzZNXEsSgkvVKGeIqyOPOTtwTiILlQaUuejBRCkyYKQiOoGgIddMLxXrBdAkLcCzZEuUBbfZERrjJjqBbQHExXzZnNehVDyXTbBuzVEXxeTLAcxIwWuWVqtTQJjvgQqdDOofZqQzFaAMmdIbBjpKoOVcBtGgSakKkKAHDDddTpEezdDHrjIaZzSsAxCcXKjJPfLutTsNyQHUubBFdPpfpPnHVviyYRqQrIsgXsbEeGgyHnNYiJHwWWwXsAPNnFfpgcQMmqCgXUzZulLKmMkxxOoXqxXHSbFfhHgGSTljJJPIiJooUKkuidDueEAhHaeMZxXCzZUuSrRRrcCnNVuLlUwWLvvArBblLRaICPJeFKkfMmalLKfDdNnCpLlfNpPWwjJbBnFPzLTtTeEbBQrRCcHJjHhiIlgsSdDBIidViIiIWdVAasOcSsXxoOxXxUywsUZzhHCiIGmMarRAaLlAjvVhHxMmrBQsPHkKslUuwWWCcwtTbDeaDQHDeSsPYYCdDBbViiHhIvZnFfBbAaAPeEFftTvEeWswxXZaLwmQWYyiIwRrzZruUGguASTtVEGgpVXxvPgHhZJKkUuXprRPJfFjxDAjzbBZJKAoOpwimiIMIWdDbBLlGQqgSsnNrMmIIjtndfFaAlLDOinahODPvVDyaMAJjSsaszHhGVZfFrRaAvHhYvVHlLtTfFRHhrIiTMSsqJjHhDdoOezZLcGCsOoSsnNZGgmRrnXxNbFfBMvIBsrDyMBjfFoVxxwrRiHNnoOvVNhGhUfFCtTxYamvVGTmMqQQqrScRIaAirbBBbUusUoOuNmMDAaIfDdYyFaehHhfabBbldLztRCrXqLlQJOeOhHoZzBLlsNXxLllLkpHbBFdmTtMSDknoUiZZzTSsPRhlLyYezxvVZzCcXjWEeweEjpSkKqNnNbBngNnRhXKrOoRokKEebuUlWXxdDPpCLlIiCSTtzATTtxITCwOgGwXFzZRCOoerTtUumMmqERrenaYaAOoyhtfFXCcxHhwWwJjvVKjXxKkmikKdgpIuUfOaiBVeOzZolXWwxLNnxiIXeQkBbJiwerSsRqSsiIUqtHhoDTOsQrTnNtJTtRuUrgzZvmkKXxmflLFeEMHQqhmMnlSclyVbSaBbIiTuURrWwQqjJfIiFYytuUORrCaAXWwqQGgOoTsxXhHfFWAzKZrmMFflYycXCcQQkCcKpPfFBbqqeGgvVEZzgZOoztTGXxvVfFqQLOHeuUWWZOogGjkKJvJxxlKuSsTwfnNxhHBMZSszmbatTHtMlLuUjjgyteENlLnwUuWfpitTAxXgizzpeUVtmFtTRBbrcQJjusFfszZqjwOomMWOMmoqQwWSsqAaeGJjghHjFfyYtFpZzPfrPlvVLJiIjKkNUumyfPVvpRrGQBlOiIoKkBsSbbUAwzQwGlLBrhHANHPSTlaKQJjcfLlFJmCcGepHCGgNnUuXYAaPoOmgkyYkoOKsSOopPnHmbAFspMmPSsJbtTBoaACjXiDdYyKkIASsaqQUuoOiTtyYyWWqbBWwOfgnEedUunNcpzZynHTtGbfFmMBrhHRHtzZTtSsfFfyRrYOoqQqRrQwgGWPYjKHhkZzeEtiqHiIHkaCuEeAjCcJMsSGghYUuykQmMlLNuUZlojpnkKaANZtTzSFQqfDlLbPpVhVBbvMmdOQyaAzqbtTdDRyeEYrtTZzueEZJjBAapjXxJkUugGvEeBYydBFqxXEcLchNlRaiIEySsIiCcYCfPpFigYnNBXxvUuQteoOqyYWTtmMwDtFfFfTdQEVZVvKIvBbONOoemMsSNneIlLeNchHBvXxapZJeEiKkXoJlJjuKECWxYRBFfbjuUFRJaAtTFfjrfqQlLWwLCtTQqVvgYeEyXfFBFfFiICcfbBRrMyeIqQAjpAaPYZzxkjqnKkHhMlLVvDwWNLqmrRVfFxCqQGZcrnZusOoSwWTtdvEXSAaydlgGLZyWwcCSeDwWWcJBbkzNtTpwWyOoxvaEepPWeEOWwdvVkrRRrKoOcCzKkzZZWQqwMmMmHVnknTtDyEeYzJjHrRQjJjwiwDYytcVveEwFCcbiIUuLbPrRGgXxpfFlLvVOfFFtTWqanNzRitIEehHsiIkKhZvxgaAybBKVvdcxidgelfVVvlaAeaAevVENmMncKkwDSOAGXxWYFfnsIiKAakaAywmTAjhNPGqQgLlCKsSaqQuUANnSHjfFnbfFKkmuUJjMaQqAJjBSsOogMmmVveEqTAYATttNXbWoLlvVxXdDdUkKuByqhHlJjKkDdPJXjQrRtHSrRYdCuUUuQqqNhvVlLghNeEZzmSsSqQahNnHVvvVnNQcROYKiUuPxXxXpNwWniILUuRjJrlItqQomMkvVdDMMmVXxvUuTUusCcCCcCcMmcCnNzuEeXxFIiTBeECcSFiNnGwWkKvRyYrebBdDEYfPpFyBefHhoJKzfGgqgGFLlTWjJCCVVzqtOGgokKlLdYNnyaeEfxXbBFkKwWChHVLlZzvSSssbBTrffhFfBbjJGanNxJosSZUnNOcbBvazZAjqznjJoOjWwEEeeqgGQDdaAXxAVDBgGtThhRLlBbNzSQqqUpPLUVfByZCcmTNfiICcFfPDSsiIUuyGzkXxhqOoQqsxXmYnuQqUNyMrRyYUuQrRuUqSwWqtmMMaKBbkescCSQqXwwWgNbBnOVDeEuwJHmMVjJjpbrRfYtgGEeqQAUuIxXiUfUJjrRFfkyKkHQifyYRLlrzqQIitTAakKhSswwWtAEAWbBwTeEPpgEpcxQqlLcwWSsDdnNftTHoKpPkWAxWWZNnCcoVdhHDvOfFkKAKkScTtPPpuRVvaArUNnvVvDxMmXpPddDYyHhbBuUVgULlQUuNnKbBQqwCcWosyXxOZOLldAfMmwWeWiInZDdzAaVvgWFGgfLlFQqkSshXqtTQdDnjfWoOCcvQuVvUqjJPpMyvVxtDdfyZGgwWwuLlUCJAaOGLcCwWKksrRIOoChIkSWweEBbhHcdDMDPvVmWwMSsVfFvRreEmXfFsMMmmSWwfoMqQFfmONepPSsLlmMEnNHhntnPXVjclCcLNVRrMkKThyYrVNtEFeEvFrRJdDAwKkWgZIizjJGaiWWwJjwSfPljZIPBSsNekTGgtoKNnesSEHhFveAaRteiIEsCcRsSrDdxXyYmWDOomCCOGrRgBKkUIAaxXKkMKFTxtEsDdHdDAIiaPpwaAWhEeIHkKptTPEnNRTeaARssSwxojwWgIijlsSzZYyXxOGgRVvZzajJARaAcCrYyVRKbqbBkKbBQPDdpBamNnonBbBbCjXxVvJjJjLfLlMKxcLHhAYyzASsCCXxycwfFVvxXUuWfdDBlLbgGSaAzZaQqlWvJjgXxdDDsKkUubDdBDLldshoTwWZziaWLlLlwOoKkuTNbfFzLvVsSYJuLltSvVmBkKWTcIiCKJrRRMmlkDdgcCGEeKpPAbwOIKmFxXXxFVQLlEeLlqvXCcyYxfcTVvNnNpTFfAoOaUCculabAakKKkjjgGFZhHzrRmKkMOZzgCcGzoOGYNvVhmMDkzZKdGgqmMTtQarNqQJjyYfFFQpdUuhHpdlPgjQubBUfFkFfFUunPcjIDJjdMoONdAaSsDnPRiIrTLDdBeERFoOfrTtdmuUMEnVviZzgGwWngiDMmhsSvqxBVpPtTzPvVTwWTtQNSsnGgtnNQqGweKkEXwWGPpDBbdWIiwgkKsSDsdDEggUAuJjUirGgZPpcXSsDduSThhHiIAarvVJjapPdKKGfGuUmWiXUPpTNnhHWwZnNGgVvjJPpdDFwWjJzeEZmPGIRDdYyDgGNUuTtwKkMQbBfFrTtjUnNuzKkKkZuUnERrkxrnIlLiFfNnpPLwZYBMmjJfEefFVTREertbQkKjbdqQDDmnNxoLlOpqjrRVxXOhVRFfoOGEetYUYyuUsMzpPVvdDEJfFMmjTBbuCuoyYkKoOksXxNKnNMnNAdDMrRKklwrbGrRGXrOGGZzfQqFvzRnNdDQAaqTtrXxBfFtwWDdDvXZOShHoOMNvVKkHYTfFzbNiHhyYafETksSKWmeEMZzfBbCcFFnvVNDdoOfmMunNGlLIiyYQiIqhHQdQsSwWaAawWLdLlNnOmyMmSseIiOjtTpNlLnxKLlkCcXLaOdGiIMmhHYzZqAUuabBQLlgEtTeGWnNsChHbGbpDdiYDxeELtTNnUSAaXHhcCEyYPDKbtTsnNgGqQIiHnZzNKRrJjhHJjJfFmMWxszYyXqQyKfrpxpPpPXPUuBZzbBbZcnNoOCijJgZJIeEirwWRTncCNtaEeAOopwpbiQRrJYyFObrfDdbFAPpieEInVvufkJjTVvldqQqGzNnBAaPGZbqQaKkkcUvVRrPpGdFSyIDrqMmIsSLAaLwWKBNnvVRtTiIBbMctYqAXxFftmMLlJiIjptTmjJesReTfFcCiqQDdEehHrRzOgGCeEqaAFfQHVvStTzZDdoQMmiBylEYHhjaFrRaAQdDvVOTBEeooLlGlLVvgSXxjPpJeUprRryYRKkxJjetTWwGgpJbBtJkKUutgHhCcGKkTJjjGoOgWrzZZdVvDpPzZkKeEyraEZznNaAThHfsZxvCcVXxdkNEedeIGgEupPUINnNZywbBWyoOlJjJMhHpPnNfFmjbvVfFhkKRrLlHStrcCRTJRrfFddrzUuPpbvkyYhoOxGNFpuUPVqQBbgjyYJIiPDdcBfFbfFCIirHhkKJjROohEeQAhWwsSbFQdDzZtTWtTUZzJjQBjJboSesLlSEkKPqnZzmMuOiIomMMgkXxhaQqFqQOVpPGgAaeEalDYtIzcbeoKkOgWXrgGmmMMmXGIHwxXBEGgMrRjJJjjJUlLuUAQqHhauRrDdNaAsZzRHWwhYyYEeyhToBbwJjZzxsSyYxXdDcCskKSXEejJJjAIaTzZtAsaRruUAozyorYyBNnbYiUuAazhUWrRHhTDNndPZzptCcXxiIujRrRrmMJUxYlFNlsyapVvPTtvpPrisSywWEerQqRJmBbiyYEeWwskFfvVvVCcMmqiIJHhjCcLkKOorRlFfwkwVkKvEetViIvTgIgwHhWmXNoOnfZzakHFfXlKcCkPnNBJjcQqCVvloiuGuUgFOoVvfpPvWKkYyvVRuUhiIRrwJZbBTtSszUJOofFNmlPzmtTMPUupbxXttTaUuupQqsPpAaNAanSXxUusSZzyewWEbBGiIgkkKbBKbByYmMYKGwZRKoZmKkDEewOxMmXxFfqwyYEnNpPfFXxUQqDKkduQqlLCmuvxhMmTtHVvXAYybBaSTtBsScCZBbzuUuSZMjJDIiKkgCccZzNuoOGuVYyPGYygphHuULlhHyMmYgwWGhHVaAQqyiIklLwQksSCcULSsnATtVvgKkeLVpIFsUuSAafIPyiINjJSubMmqaAWjZYyornNYVvVuEhHtTTIiAatIieKeEIhRdyejJjJjJNnjuArRFCcNnfTtmMlqQjXxPpYydcFfsAaMfFDdHhgOoonBgEYyeeEdDFPpfTtCxFhjemMeERJcfFCZZNnzzNnvBhoOoIixHfiISsQtLgrRnNGlTkKyDdTtYXzZxkKAaRfKkcCezEPsSsSNqYygaAQqNVaAvPIoucCPoVnWnXxNsKexVopPitTmzZxXPpjLTiIdoKkOndzZyYXWuUTEeWwtCyYPsSpTcAaAyYayJKkFfcCMfRrxXHQjJqAaeEJbBJmMafFfOotTjJuuUUrDnyYmhHMUuoOcdDUuFyYfWwKYyrHaAHhuUcvptTPzZmmroeEqWSUuZuUXxvViHhjUsgGVvSWlLwcMmpPKAAaYaSsSpBXsSyYxbPqQsAuUJNqQylFBbfLzzDIyNITttaAwWyqQkKHhthHmMmruUfFjJeEYyNUnkKoONuyEdWwuURrulLqcChWYEDdNnnLRrlQMPVvnWasSxatXmMxvVKuSsVvhSsAaHUkZzwJJJPVvpPtQUGCsSvURruOopAayXxCccCbBWhvwSsWQqniUETtIwOocsSNCcXOoROMVvnDPpxXcCTtRiJjBRJjrUPpqXxCGCFfkKdSWWwWwpPtTYtTyoSpPyxXLlPpYGgGgwCcVmMxXvVDlLToOEZzefFAaEcCvVGgeihXxHlLITtEeTuLxqCXxcTtnNWlryYJRwWrLljGgRHVDdsdDSLlMkKBZYhHxXyzbdtTxMmfgPpzCcZKkTteWwEGnNcbBcCQqCyNriIZMPhxXPrRgKkzsaAnNjTpPUuvQqwAQOmuUtQqMRGEUPtAAaLmHgpHhPOoGzDJrdCpPphinNIGgLQWCUpPueEPpYaPBGgdMyYRvdDSvjJValLRrCcllLbjJjBGbBCcgMmXuUuUDdDdgPpGxwWZzmMWQqQPpgXIiexsSyYoObBtTFfXxbYyYbFfdDXxRrRaArSQAKOokDdclhTAKQfpEejcCVvJvoOZzWDdGjxXJWLlLlHhaGhQqcjWwNSbBrRhrjDcCdLYysSDdlMDdmJUuNnKuBblJkKjwWHhfmcCFAOozVvGfcGxrRWwfcCFqIzZAaiTUGjJCcHhgwWOcCSatTpCrRXFfYWFfkgPpKkLvVKoOwWqaAQkOubBKkUpPfcCXoOfFkzZUcIfFlLoItToUufFOpQqxXIkKAawupPeELlWxXCcoOwxHzCcZBMMmSsmpPObBMmoAaETQwWcrRvElnVqhHVCcjJvRjJtTziIGgUOFfIlvVmMLzZEYySPpsShtzZTuUHnNwWkKnpMmLbwKuOoMmzZUoOoCMtTmBdZXvVpcBbDiDdIQgGqFOoRfqqQQcCdDFrRrfHNnhbBsAaBbSAahNnUKkhHTtkKmMQZvVLlDfFdBbEciICgEevBrRcCllLLBsSIibQgFfGHyYdFfHHhhGgfFDgGaAKKkkDQQqjbbBbPpBSQbvVYypPLlHLlSsgoVvOznZOfFkErcCRrmicTdliiALCclqXfFLlhHmMvnDdNEenNdHtTzmIiMgBbGHTttYyThgGeceECEvVZPpDdDTtUCcCNnaAFcCaxXUIbgGBEGgeWwevliCsTsiMtTsFTtCxXyYEqEeQsSeGlLFfvOzZaFfAoVFjZrRTtRiIrcCaAVvrEeRAdiIIipGcMIigNYvaFfAVwWBuUOLdDCGgfguUJJjjqQmMHjaAIiLRAYfHhFeIiVvmPpMSzZukKcCUGtTlhHDvVQqxEeVdDmAamMMKPpTtsSkKzZQMmqYSLeElvVsUIdDJjVvelLtTGBSSYyZcCeEFUxRwNfFfQnNyMKkmJgDdGnNuvjjnoDcCdOrRyYpPNXBRrdiIsSlYFfcCjJBbyXhiIECcimMvVsSJTttdAaQqXXxLlWwfFxdybBiIWwkTtcCWwKIJbBfFNnvVPpFpvVNnJFfjZSsRrFxXUpHhPCpGNqfFXcCQqxYyxZzXdDjGgJAaAaKFXjZjJcCnlLNGqQMmQkGEjtTAaNvxXxyHRrCxXZeEzhXxTtRrHUpPuzZRruUIUwWrRuLnkKNIiVFfvIIiqQKkpPiyNnHhLHhOTlpPLtNtTSsQqPpGgnFVVknNeESOoRrRrlWwGEeSjJsxXcXQqKnQKXYycZzZuUbwmBJfFYzFrRfSGUqWEeRrHhFIAOcTvZzoOKBAaqiIQiIVthHeEQqsLlJWwppciRJjZRrmGvVtDdTjiVvHCjIiWwtFFfbPphHBdDfvyTtLlNnYWwkmMfwAMmonNTtEeRsSrOVvwlLezZbBELnNrRKklWchHKkvVLmMlCAWwaPSspiRfFWqcCQDnwsbBSvVwWYyLKkwctTDykKYZiIxdInRpAxlLhHXaDgIiGbjmXtTxMXxJKkMmBbBsBWwlLkLlXxQiTriIjzZVvJDdXxrRTtvVTrRFZIipPKaZVvzYaAtCctTFfnNKknbqtThjJklbBvjjJKqQkLlRKkzZryYgvVKkRKHhklPpgGTuUaAVXxeSsEPpvZGgzTMmtRpERmMpmMPUcVsSvnNDYYyHQjJqhhkKHydosSLlpSiHhwWltEeTjJfFmMRrOmkKMpTtNeMXxmCxzNnZXiItTcyYEgGCyAaGggGYsSDdBOobmgGxWwXbBsuYyEeUmTtqQRrWZzBQvVmZlMmrsFfSgYYcxtbfFnwlLuIhHiTthHtRrrySnpSspUMCXxjSpPsvVJfFHuDdQqUtThNneqaAQKRrksSzreEdDRMoXxOwJpPjJOSkKjPpdydDqtDPXSsgGxUAauQAawMmdFgGUuJgkKGnNrRHqoGrRIMudDUnxjJXNmiVBbgGvRUoUuqoOfFogGqjJSgGFDrRdWnNPVsSqAakCxXcKGgwNnZzUucCFfbBDHIiiIhdZzmOQokSsAzKkZIiDdKkGgmMUuyYpjNTQqVUuvvMfFnNSVvlIqQhdQqzZqbaABIuUtOjvVyYraVnNXxDdFfxfceLlhHkUhzZfFVpMiINncuUXQUwWWwyYSOeEosStfFGgvqQViICwWQDdqvVcygGAaYGpcCPzxZPpwMmZvpBuUeERrbIizMmZPVvpWhHeLuUlPpfFPAaBbWwbKkyOoWiIZsCcSzfFQqiIRAatrRfFgDdjJMmcRAaIzReEIiYsSARyCcYXxlLbkKBxXpozZRznJLivVIxXpltTYyiHhJjBbkKIDdLUlJAIiPpZkhiIYhJVsSGgAadDXnLlMmpPQjLWtbvVIisScCnNBIPpGJpPCDdzgGTtZbKksuUJvVxXjnLtTdNWwWsSlLwMadmIiMWPpgGOpPFfhhHHfFOoFfnpPOoKoyYUulLdDsMdDOomcmqQkKENXxHeEhMbdoGheEdDhZzsSczZDuUNnfRriVvcCIFJjIhHiefQqPpiNnPpXueEUgWwGcCMwWmxJjsSmlLsSoMmSRrsQSDdGUqkKQlLMDdTtdhHpPXEvVMoOZXCjvVRrJcGgEeNlLnqQqQxesEemIjbBxNnXJcIIifKoOKZbnYrRvVysSEemMzjIidIiDvVnEeNnNqOoWwUuQixXlLGgapPeEBCbBuUqAaQomrBbRgeEruFgGjJXMfFmgYvVnNyfhjJzWJvHzZtRrTcChyYynNIpPiYVvEeGefqxZwWzXcaAXxCBtRrkKoOobzZgiVWoOSQqhHswvHyYhIPlLdFDdPpDrhNigGMcCVKIRzZriOOPFfGFfyYgTrjuxXSsUamMMqQEeiIYlxXLPKkSspPlLyYzNqQlLnrRMivvXoOxgGTtYyiJjUuJjQqTdtTDsyYJjnNEeHiIOcCKkodDRYyGgSsZqQzJlLXxjYyGgmdDXJAZjJwWIpQMmpvUfFuNmMsGqswyrREehvdDVyYUDPCclLhhcWwmohHhDdzZHNnrROMaVvAslLSdhHNnvgGHhDdrRBbhHVlLGgDjJSsSsiIyYCatmMuUzFfSsxWJjJjrRwdNuUFfbBOoJcCaAiIRFxUcCcDdCXYnRSsCkkKgGKNnjAvwkKWCcpPVtIiTnNgGVeEDQBBbbqdTbBEetvamsSzizXxPWwtTpZgGPzwWWwBbZpaMmArmUuMRIMeEXxtGrRgQqTTdlLNcCVvnNuUPNHhugkKvzZSsuUwWuUcCYLROPBbRPRxTtXjpPWwXxSsNnJroDdbBNnxFigGIoOCzZTyYSstTxXfnqQMmvtkyYKpLltqTOvVoIYrtTNDvWYywyUoqQTjbRruUmdDMMmkKXzZxHBbUuyCaAlqQLcAYyaBDdwWbHhjJVvHcOorkWlLmoOmmIGdLlDZVvhjJmQqMHaAzyLlYMboOCcKbBCUuhHwCcvVscCSWMpgGODDZszCcIizZGgJDdjVvyqQRrgDbhHwWOAAavSdDsvVVdxMmRrXzZbBKOokQAuiIUdHTSsthDkKPKkMfFcUuCBqQbmoOsSpxXpPtTGgHhYyESLgsSUdDuGllLbgcCuUUuULqlLQaATtIYyiluOHSshhHEWRrSswWwoVSsLFfZqQzbBlVyOLTtozQXiKkjnvUzMmlrEJprRPjPrQdJjeGghRwuUWeEcINXxnisSTtuLlwWvLGWwcClIiKbhHBkfFaAGOcCtTXMTtmyYfoOvVqdDtbBqQrDxXdmPpwOoWhHvcCFcXxCeEqxXSsgldoODXxmSVvyAWFfweQvVquiIUIQqzZigGnNEPpDNnzYLlyxXZqukKfvYyVOokNPttTVbtrxBRrwWmMfCcaAaAzlsSLCMHhmrPfriIZNcCNXqQMeqGgQijDdcCCcJJjleEZzZzsoNnnNwSsWDdHhQsSqZzOiISLyTRJXxjEbwWybBYZZOzVdkKDvZGgNnBdDVvbCGzASsaabjSyYEeUWwkzZKGgWnNrRuJjcCjtToOeEpFkUyYuqwCcWmUuWvVEegGwWuMxXSzZsSBbDdWwQiIqIiBRflLPDKaAtTVvyIiYyYAaaAacCSsxXAwWjOomewWEMKkCcnXxPUupDdZzPHhpECcyJFfLlEejYEdDzZuUAstTSlLcLpXxUubQqBbUuuhHzZFfwXaNBSsbnoXfFxUabBxapPGEegFqQNzZWwnfADdIPpiNnaAzHhImMtTdQfSlsdDwPYKIiZzOqlLFfYfFUnUzZswMmtTWSbBBbBiPpIcXxCLqdDLlQWeENiITchVvHwWyYzZrRKkCPpPpGgowWOYyUfFuVrUAzZaFwWBbvVfuUuqQRWwtciBBrRbfQzZqKkBbirRInNUZzujJNtZzAiyYYymMukERreBbLnsYySMsPxaAQqbBXQVvKkbBADdpZXMCciFfImTgEAaelLyvVYPpYtTyaAQqsXxiISGfuUqQFvVWXmOoMccCCCcFPLlAaaqBbijMhxXRFfarRATtrhQulPpLHbLTtMmvytTEebXLlyYdiIcBbFuafxXFUuSIkKdDZwnMmNtTiIWbdDYrwWtrRTxXPpVrgGRiUomMaAoOlLKrbBSXxsRCcoMtToOmCRrVvcNnFyeEYfEeqQNnOoOaGgfFqArRaQWCcwnNAiIRzgcgFVvjlfRTOocCtrJTAbKkyvVtAjJpPQqamkKUuNAoEeOtqQTiIBEeJfFvEdDerRKAlLapPkrRLlVTtNuUqHMmgGhZUjRcaAuaAqITYasSvVAwWMwWkKEeQqoOHhoOaeDdEAwhHWPkeESjJqeEQGgSsynlGWwfzhSYycaAZdRSfFPSsWwCKkcpMmshHIiRERraAIiXyTcCTAwWauSsUwXXxGjAaJgahbBKrRfEkPpKeqkKDXuUbBooMmBbCaAQQqqctTOvBLBOHhodgkrRKGXxaKkaBEegGbONnoAyLlmMmAaGgMtsSTYNCcBbnpcCRroOYyFYyhyYxmzZMgzZGlpYyEeJSPpsKiqQILlPpPpkWwFyYFEWzZwevVBbfzZQcCqFfFcCspsbrDhHdDqbBEMmIiMmjvYkKVTxXtmQkKPpUcCuLLllWwHcCVcCvTtQqoqQoEeEVvezLHhaOZzoAaRraAcCyYUuATJWLlwkGbkkKkAacCVIvVPpXVvxLVbLlBuvVsxqQXSUqQQAaERrmMwWuDdUYgKBbuUuIoODNwWoOobBObySsYoSswOFTUutlzZkKLfURGgjGXxgJdDdDdVhAVwWIQqiEeWwvaUuGgZzXxHNnoOvdDUukXbBxFEefKtTDbmMeGgNnEJjGgdDdqqeXxEeEBbyTYyKktFfYQFWBbjBbJwDdmJjAaMfCktTKKkcAacJjCZsnVvAaNHhxbBBbqkKQluraAistTgGmMLlSeEIUucSsCsEeCchpyYPHHhHQWMmjSdXxQqRTTttfFDXxZCGbBgEJjVvegGbBbBqQaTtAwLlwWlnNOomMtTIlLDdnRrdDNJjMMaAmnNaaRrNbBaMmAhHoOyYyMmsSXwvuAGgadDRrbBxaAXuYyUUcCFfSstTHhpPOoioXAaxTtPphHuqRrQUPtTpRPprNnHhOmOCqQcoMIUolxXLcCDrFflLRdwGgIwWrRhlLHevVJKkjEgeEZzjJkKGVCoUWwuOcCHlLZzYyhGglDRkKrVviiIkKINIiZxXiIbBUSZzSssalCcLAlYykKVZezZErRuUPpRTtyDdYDdNnYyrUUuuzYjetTBbEBsUuSbJZovhHagoBbOgTtCcylRrDhHKkGnNgdLKwWkNngvVPpfFlDYykKvjJJjozZOTtaASsgGvVToOtvEeVVzZEeJPKkpjWWLlwZpPaZdtUuXePcCpDdaAwoOWfhaAcCFHhfejBbJFfehHAyszZSEAaeUuBqQYQRGgxXrKkqHhyZyYzlLxXEFfqFLlfJlLnNjPpPfFaApAaOoQosSOCcdDNOonecCGSANnaYxUuSQqOonNsgGcGgXxChHCctTOomMBbBbwWGDhHtGxXJPpcCPpDQNrRnqiIjBVvxXFbaAPprZWwRrYCcybwAaWtQqCcTBQhHqzAaTtfFCccyuUYyhqQRRrYypPkKIiuFfYyUaAxjhtTwWujJUHBUiyYmKuUkyYXEuUeoOkMmgqQQeWwWLleEvVJjscCJMmBbrRjSsPjJnNzWwZpCpPZzIAxCpPPdfFDpGtTEerdDRGhHwWEeGgxJjXtTgGFfAaXxuvVwAZzaHhoOOoHLBbjJEelCJjDdRtjJLJAkKajkKkDOodImMiKLlLJjllTkKHhskqdDQqQewWEbBlpDSsNkKnJjKkGgddDPLWwJjzZcCylGguCcZyfFoOFhPpfFZzCcHMNgMmDdGgZnNzeEnOoNXXTtYrRyjXdDxJpPlLEeodDDXxdNqQnxxXXCclDdCqQbBYEeHuUoOlLhtGgVGgWqQaFfAXqQhMxgGVvRrTeEtGGgtXJbBFFDdAaYyTtfvVfjxTHhCcEiQqMmfDdFlQqLVhHvwEeVWwvFfAXxdDayLZzlwWYqQniPCjxXJcZzpPTtbJjcCqQewKkUuOatTYytEsSJjqQAaRrsScxXeELgkKGZzpPllLzEeZUfSsFuTtpeuUEYgHhkKGydtTtBbftTEeFsOoRriIKksVvSsSAaxVUuHtTZXmMfIGqQgigGpPaFpPnNWwfFfYyAOoXxPpfFKkPpCUucEfuVvUFnNKknthHBbTNEeehHgarCvuSsulLHqQyNaATtHpPhCcZjJOKkXUuxoLysSAadIipllLLPXxDNGHvVhgnjJZzbAaSsEIieBRCSaAIispPGgGgGgGgRrKkDdVGgJjZzvkKnNlUWwdDuOgGJjoJHhkKjLtPIipEeJjHSsifFeEIhYTXxoOaAAyYaAatLEVPNnOopNuZMmZzzUiIAmManzaARqQVvzJEeEejnjJmMqoOzcCtLlRrpeEFfPYizpPZkKOWwozWsSwdduUDDEejJZfnBbNFZcCLzZlOodDZzqCcilUuLHhITtJdDzZTAafFZHhzhMmHfeEGgUNLlaAvVnonTtNVvOCcvvVVjJRPiIpxxXXkKPwWPuUJZAakKheOCcoQmMUDmMAaduCcgdDGCcyiuUITtOWHWwWwhsShHNtzHLlaAhUujfFJIbaABiIiHDPpSssSdhsAFfaiIYyhTaJJjjvVAtIieEGvVNnxsSXpPOoUxgGWwVoOlThHtWwLMmMAaSFfbBRiGgJjHyjuEEevPqcKkmMcCwsrqVKUuTGgkDCcdGSsgpWwMmPRrlxXnNKlLlEeNnFfLwGdDgWngWEeWwkTtBbKbBDAvVIijJtTgGIitThHxXqQbtTBezZJoOVvuUzZjaAtOotuUTTPpEsSqQdDadmMPpMmgvVKxOkKvVAatTUMmuzbETtWwwWhEeHdDvVWpPwhSsSqYyeESPwBbiwWppbcCFfBlLtTdfFgNzZjJnNnODOHhokKxXfrRXTtqQxIiykKjJYpPJiIjrerRHnNhmMfFaANqDdQhHAMmvVuUzZaXoJoCcRrOjlWhHuUhHmMVvCKkYytTvVjCcBbEeKkluMmUZaAzVkKVvkilLIXoOxiNXxnJjdrUuRJjNWwuUrRnOoCNneEJjcAaWEerRgGgqqQQbGduUKkDZxoWwbBOGLlsSgXMmoOjJizZjOBbzDgGaAdJLgpGgPGAGRrhHgOoNnagPkKpHQoOqwQqxXWtTjWwgZzGXxosAUuaSJjqDdOgGcCxXvcZoOqQzCVvVjJbBjmMrdDRJWtTJaAjwweEWySsrRLtTlYwwLIcCtTjJMmizLldkGgoAtJjTalLnNOJUujSsFfEeKyYDzZnwbBTQqtCcMcJjBbFfuHIGgihhPFfgHhGYypPgGfnoZzOHSOopPYyTtsjJaAhJjzIVvEvjYGQqNzbBVvGUuoSRrkKsOTtwWCcgZbOnLkKCcwWrRVEefpPSYysaACcCcHhInoONmhfFfTtVoRrOouUpqQPOvcCuUxMmvVXIiBtdDgGEyYeCJjAoOaiZzIeUawWAnNuEbuUBXxrMRZzhPlLpOoGgZsSiImMzsYyozGgZBbKkIiOaQHPpnNwWhtTqVmMviIcHAxSsXahYFfydyNjJUunxXTcJjmMCtFZzQqoOfmMkKSkKNPnVvpPrRRkqUTtuVuUIivcCQjJKGgkcCKsSrhHNLlXSsvVbMmeJXxjEAaRMlLGHUbBukKpPhyYgKBbOoIifFkvWmgUusSsNLlfFYPpyTtnuUUuFfoOFfNnLhiKvfFVfFcnjJzZNjHFfZzhHjhHFfJhEJrRMmjXxfzraARwKkxvVTtbaCcATtbBzVvZzuUrpPRZBXWphHSqtTBbNnIMmiBbPpiwtTFxgsVvRrVvSGTtjPpJyHhiIpPEeRpPKrXxzZqMmkKHhQRsSJKkSYysVfCXxDdAAaMmftTFaZmMzFfuUNnbxXXxBbBeEDdNntTtTTttxXtTEeTtTsyYnnNOMmoiIdDeEbBOUuSJYyjsykIizZTzZtEyYeKYMmnFfYkNnjqQINnTtiFfGgGScCDdqQUMmlPpfFvVMmoOLwWIiGguIiszZutTbtTyYsSBTtSqkKQRUvVuAgFtwWTfxXEeWHpPhWmMRbBnNXxrchHCwGgWIiuUJaAdbDdxbBFfEGgeToJjOERmMreCchHtNnhBbHGGgRWgGwqaApyMmYuoOFErqQacCRrwoOYtTTOtTodnNDmMfUQqVLlcCULlmMLluqQCpyYxkKHhDMmvVQxXQqqdwWpoOPXesSGgRrcCmBbtYygGWWwqQPQOOowWSsspPSvzsSZsSMmWgZypPsSxXGgwWecCoOfFQqEPpYEmFfoWwTtJjsSwWOMnNVVPpvvcCLcCpysyYSCcDdYDdiIEerLlvmSsMYyCeEUCWwcuJjsfLgGlFSBbcHhClVvaALbBFfbSssSBeVvjRrjJJEQhFbBxXaAKkmMhTtQpPcfFLlCqKkhHlLHcCfXxYyuFsNnSfAaUXxvSshHVHDdTtRtTtaoOFfAJjqamVvMiIANvhKkHVtTqQtTzZdDNVGgvnXxtRDdzMmAXzOoZxYqoOQYyTtMBbOotTeCFmIzZixEIAaiDmMoOdRrXemqQgCcGMDdXxdDmbBLlMCcqUujJQaCwWcBpPbwpPWACcCcWZzDdoeuUEOwaSyYsAooHgSsqmMtvgUeEuiIGmMVRrlkKbBLTyYGgQqFfQFJjCfFXSNhHAansfXxFlLxjJqQZzaAWwsoOSqQjzpPZJsSciwWHhqrRQEUuePsBbvVRdaAakKOoDstTSdAXKkxMmfFTtXxbjkKJdDtTBNnKAakSeEWzZJjwtTsIixXRrIiUZzuDbHlLKkhWFfwRrTtQqRHhrBgnNEemQrRqXxcCPpbBglqKkQLMmaAPUJjZzCVkKvcfZzFirrkyYKRRMmVvPpufFQEeqQUuqLlyYYJjGTZzRraAtkKGiIwidDIWiIWwwRrqVvQxTQqWwtWVvUuwXlzZBbBkKkKbkmMEPtTplLzZFrFfRxKkXqrWRmSscMmCMahHAQqcCvDdpPVDdHhGFfFKKkxmxXbBYnNYYywWnkKNjJycCWwYIFaAcCoOHhFfBbfOKkoiZzyvPkKpVZgGEekKzMmjBbIiNnTbBtJgGcCyQqmMoOQKkqkKRFQCcqKnNkdDbBUufrxXgGMXfxXFWwavvVzZVSsAcCWsSZzwLlXYyxBbLtiIaAiSsITWwluUklLiIHhqAaQiCcIuUHWEFfiIiHhfFIeIqbwWAaBQLNwSnNtTslLkJjjJKjJAlLjJCkKDDdWwdchndDNLEeGgeCcElahcCHhQqNgGoOgGnZusSUuUCLzZlKkcKktTCgZzOoyLlqQkKoOoODgGdKkkoOKFSsBbZzwWfcBbCqQgGkKlRrLGguUdDXKAqQajJTtkfFvVzZaAEoOGTtgAseyYSsECcwWeWwGgEVSsbYuUVcCBbWwvmMVvDdXxgGDAadwhHWaAfFccCZzuUCNnNncCKkBIikVlLvSsKeERcCrEaAesBbTvVEetDdxoOXBtTeEbOosSCeEcUUaHhAZzNGgnuiIhAaHuSzZsSGgWDeEdMmwnSsNzZvVVvPyaAYvVuUoOnTcCtAaaAafNrROozCcfGOogFEeMsSjdDJmgkXxUuKGtqQThmMHiIPsSxXQGgxaAXqjYyDwJjJeLlRrNnEjVBbSsvWOoeERyEeYIlLoEemXyYxWfFwWwhxXuDORroHzZhdjMmJUlLIiEeaAsSOCuUcYjiIqQOBboJbBlLWSsLlgEZzNnGWwtTMmgJDNnBbdjnNNnMmqwWLRIirjcCxcCXOoJjJUusrOoRqQtpPoOJjLlTSDQqCcdlmMoOskKSkaAXnNXxwxXKamMAIMmiQqyyYYojJOkcJVvvVryYVNnvRjAuUrRarqaAZziIQyYDuUdKkSWwsRIOWCcHfkKHhFRrsaQqAJRpPrMrhXxNOonCcHIXdDxEeiqQRFLmMliISGgsOofHhPGgAafcCSsjeEfFiSsIJsPpTRFfHhGgrClLcmMtUuVvnAaHIaAYyvVbBihFyYfEeRGgrqlLfFQmMvVMmtTvVPpQIiRuNnUzHhAjJsSMmJhHjwWjJLSspPlGgUFuMmoOUiIfTtkSsZJjzfnNFKNeQqdMmjJDlLeEEnMIimUuuEeSsUWTyYtwuIXEexEkKmzZgGquUQMdhHJjDtRiDSscAaYyeiOvVAaoXxIEFfVvvWwKkUuaAfFvVwTtLlqQWxXaaAzZXyALlaFfJjzhHZmMGgYxsSYyPpPSsSsgSsCciIAasSsSGxBbXVzJjZTtKivmMVIkSFfQqsWwNkKRPpgiKkIxtTXwWyYGroONDdRZVvzZzCLltTQOVVvvoqdDYqQyrRlLcLSslDcCdhHNnZLlGgmMzrRBbeXxqQvVMDdmaAXfFjDdJUuSsAaAacuUzuuUUZYKDdkyaACbBwfFWSwAzudDVvDdTAatrRhHoOwWQqxXaAUAoOadTtDUuGfFmMzmMZgogGOPXxpcCbBAwWLlwWaTWRrRrQqwjoOJtlLSyYsTvVmyYMtbaAoOyYBIXxiAgGnWwRrbBAaNUxeAxXaEJjXjJuFXxzZQqfkKDlSsSaAVvsLEeAahHdKSskWoOuUwBbBQqbQqMmHFfOohdIrxXuURRbBryYCeEwWsScyfFPkpXxFvEQrRqeKkVfjmMEeJjyYEkKgGeLWwVvHBbhlpnsSNPUuzZceECBbiQXxqOAaPpXxuiIadDAXxXDdbOoBkKaAxTtUoGFfNnBwpPpPWwWWwHNnhIibopPsShHEeOxeEXgXpPxrRrRwWjsSJIotTUuOkKsSeEOozlLOowpPcCfFfFWqQDzYyZHnNhdBbgGZCcSyWxXwYsZzBbIWwiXxIrhIiHRZmMhHziAaKqQcrRCnXNnIiHhxNQmNnrRMmgGbjJBIDdiGpPCcgImMAaNnEeELleiYDdyPpxXAabBuLlUMLlsSaWXxwgGkCSscKJjNnLloOhHStTszZJjAqDdHhKkbBgGkNncCzWZzwrLlRZsaASNnIiHhGLlUuwWwWrRuUxXrYyQOYyoqnNRVQqvkgGlLeECsScKIiJjqkKoOQgJavVrRvWkeEKwYkoOCDOodpPcKyjJNnQqVYrRyLljmMJceECArSsRJLljsSoOPSfFwWRNnrdSPpsDspeQqEUuyYLlPsScCWwqLluUQdDfFpiiaAuUMfFmIpElLCcRreGgPgGkKATtcCJEetTWwEhdDHeYyeEjaIfFGLlgiYyIGPpDdgIjJiUUwWuqmMREerQOQqoANnaHhUudnNlwrRLlUuTtWLCcDnCcNIqQixXKHhbotbBTVpPvOuZZzKPpvVoOkIigeLlEMmGaAfkKrRAaFIDnNUKkvVudRrUulQyYiIpPwWhEeHtwWTNnhHWWwXxwuEaAegGUjJxXrddDZzDRiLlwJjWRryYIpvVPqMmLxXQqkKllLaAlbBaALOoyYmoOfFmMMKklaWwAVvTtxBWsSwbsSgiIjmMQqpPalUuLAJzZSZJBnnNzZCcPpNUPpwWyYuUubjzXxPpFfawqQWfTtFAVLlqQvYkKyIisovVxXOsCcFfSpPkKBbGPpPpgcCsNqQIicyYrRCXxtmMTnWwyaAYZIizLlSvVzZDdyfFlLYAaEelLFSsCcfOoztwWhHkkKKFiInNyYfWwUuXQrZzRqCcXJjxQJjqlFpPfNIinLlLccwWCdDnRrNZzmMKkNnzxXXuhHUxAfsSFcfFCaSsimMIZIUuiYJjsSJjyWwTtNzuUWwgGBHhfLlFbvVFfjbBJgGZzZtTWCcwTtyYygGYZzKknlLtTEbYHhyuURrBeTtiQoOqpPIexXEOoCflHhLPpoOZuUzFMfFzvVZmolLOJjwWKAnNAaMIJjiNnmaIGgeEeEikXRZzryYKQqEekxOsSOojNnJJdifFIBVvbhHFfZzDYyYZzytTLqQNnHXxaUGguAhwgGWljQqiIdDeEnBbWGgwNYynNAaPryNnYZzIivVRaAbBpuUrRPpGgmNnMobBxraOopPVvkKZzuUtTaANNnLrReEskKSlZzHhdLlvUuVZzTWwtDmVvwWMWgwWGwrQqRzZnGEeyYVvgOLjJlEyYheEzpPZQqNnBbOHhoDdwWIjJixkKTtXRrHyYHYyeBbjJGgENoOfFFfnXFfKOofFkoOjAamGgWwMYyYaAyopmMMmPjJOMKuUkFfXxxXZzmMmJhHdXxuUGghHvpPiTEetIDAadBbviIVBbpMxXfhHHhFSsvVYySsmPpPSsxdDTGgYYyJjyFfIiCcrRIgGixuUTtCcYyKkzZgGJjuwWTwWtoOnNUXfFQqaZzAEeXxqHbBRrOoOtTopnNipPIAkKXNnVcCOowWaAvxSsbBaPhQhHrszZSRpPtMKkiGgEeiIICgtTtTfFGcLlOdDohHXxCsLLtTllxXSoOcxXmMAamrBbEeRvVYKkLzZVvlAaHhxXheERrTvVwWyYMcizZdDICmtAJjlLaHGgwWyydDUuvDdexXXxEVUPpNnmBbMTtuUZrRzumaAMrQqSaAsRIiwOoWDdDZzlLAadeIiRmMrEkKYHUhHHhuhYyeqQExXbDdBEegsSGwWZzQqORGgroGgwWmTtMmMfFIuUzPpZNjJfFnQqiIiPxXjYyJysuUSovVBfFbdDTtIikFfPpcTtmAaBbMBOobCuUcCKtTPrxXRfdDWwpuUDuUdPFpJjOYMmFQqDdIipwWBlXRrxLbzZuUKjLlGgJkFvzCcZxiIXGgTtVrReNnECYyOoHhcWwvVpvVyYPHhfPRNntTrfUmMpgGPFgrrRRGZzYyfueaApPPpAauUJjCcRjJrEIKkiZzwWIiMmRZlqMmQqKyoOYkpPLlRrQwWJLljRMmoKkOrL \ No newline at end of file diff --git a/data/2019/1.txt b/data/2019/1.txt new file mode 100644 index 0000000..f46b7f9 --- /dev/null +++ b/data/2019/1.txt @@ -0,0 +1,100 @@ +127117 +121199 +80494 +83466 +125933 +80813 +137787 +122687 +123256 +128013 +90525 +116909 +95227 +86368 +96748 +131600 +101434 +98226 +88614 +76871 +65553 +141639 +55075 +133494 +149211 +51775 +139337 +94542 +76351 +100791 +107426 +91462 +78691 +70162 +95006 +101280 +59398 +77396 +66276 +100207 +67200 +58985 +64763 +125001 +149661 +129085 +114919 +77844 +108209 +121125 +54662 +103292 +112164 +121118 +71847 +130912 +81068 +137253 +56703 +107683 +108181 +142507 +112673 +97242 +50195 +123852 +130090 +144719 +133862 +73461 +81374 +56574 +147026 +140613 +148938 +123768 +64967 +106133 +123961 +87190 +71348 +148830 +87261 +58942 +132417 +101993 +94510 +138358 +72539 +80356 +74249 +103109 +135176 +128635 +116062 +82975 +135814 +62702 +80696 +95607 \ No newline at end of file diff --git a/data/2019/2.txt b/data/2019/2.txt new file mode 100644 index 0000000..432f8db --- /dev/null +++ b/data/2019/2.txt @@ -0,0 +1 @@ +1,0,0,3,1,1,2,3,1,3,4,3,1,5,0,3,2,1,9,19,1,19,5,23,2,6,23,27,1,6,27,31,2,31,9,35,1,35,6,39,1,10,39,43,2,9,43,47,1,5,47,51,2,51,6,55,1,5,55,59,2,13,59,63,1,63,5,67,2,67,13,71,1,71,9,75,1,75,6,79,2,79,6,83,1,83,5,87,2,87,9,91,2,9,91,95,1,5,95,99,2,99,13,103,1,103,5,107,1,2,107,111,1,111,5,0,99,2,14,0,0 \ No newline at end of file diff --git a/data/2019/3.txt b/data/2019/3.txt new file mode 100644 index 0000000..81e0841 --- /dev/null +++ b/data/2019/3.txt @@ -0,0 +1,2 @@ +R1003,U756,L776,U308,R718,D577,R902,D776,R760,U638,R289,D70,L885,U161,R807,D842,R175,D955,R643,U380,R329,U573,L944,D2,L807,D886,L549,U592,R152,D884,L761,D915,L726,D677,L417,D651,L108,D377,L699,D938,R555,D222,L689,D196,L454,U309,L470,D234,R198,U689,L996,U117,R208,D310,R572,D562,L207,U244,L769,U186,R153,D756,R97,D625,R686,U244,R348,U586,L385,D466,R483,U718,L892,D39,R692,U756,L724,U148,R70,U224,L837,D370,L309,U235,R382,D579,R404,D146,R6,U584,L840,D863,R942,U646,R146,D618,L12,U210,R126,U163,R931,D661,L710,D883,L686,D688,L148,D19,R703,U530,R889,U186,R779,D503,R417,U272,R541,U21,L562,D10,L349,U998,R69,D65,R560,D585,L949,D372,L110,D865,R212,U56,L936,U957,L88,U612,R927,U642,R416,U348,L541,D416,L808,D759,R449,D6,L517,D4,R494,D143,L536,U341,R394,U179,L22,D680,L138,U249,L285,U879,L717,U756,L313,U222,R823,D208,L134,U984,R282,U635,R207,D63,L416,U511,L179,D582,L651,U932,R646,U378,R263,U138,L920,U523,L859,D556,L277,D518,R489,U561,L457,D297,R72,U920,L583,U23,L395,D844,R776,D552,L55,D500,R111,U409,R685,D427,R275,U739,R181,U333,L215,U808,R341,D537,R336,U230,R247,U748,R846,U404,R850,D493,R891,U176,L744,U585,L987,D849,R271,D848,L555,U801,R316,U753,L390,U97,L128,U45,R706,U35,L928,U913,R537,D512,R152,D410,R76,D209,R183,U941,R289,U632,L923,D190,R488,D934,R442,D303,R178,D250,R204,U247,R707,U77,R428,D701,R386,U110,R641,U925,R703,D387,L946,U415,R461,D123,L214,U236,L959,U517,R957,D524,R812,D668,R369,U340,L606,D503,R755,U390,R142,D921,L976,D36,L965,D450,L722,D224,L303,U705,L584 +L993,U810,L931,D139,R114,D77,L75,U715,R540,D994,L866,U461,R340,D179,R314,D423,R629,D8,L692,U446,L88,D132,L128,U934,L465,D58,L696,D883,L955,D565,R424,U286,R403,U57,L627,D930,R887,D941,L306,D951,R918,U587,R939,U821,L65,D18,L987,D707,L360,D54,L932,U366,R625,U609,R173,D637,R661,U888,L68,U962,R270,U369,R780,U845,L813,U481,R66,D182,R420,U605,R880,D276,L6,D529,R883,U189,R380,D472,R30,U35,L510,D844,L146,U875,R152,U545,R274,U920,R432,U814,R583,D559,L820,U135,L353,U975,L103,U615,R401,U692,L676,D781,R551,D985,L317,U836,R115,D216,L967,U286,R681,U144,L354,U678,L893,D487,R664,D185,R787,D909,L582,D283,L519,D893,L56,U768,L345,D992,L248,U439,R573,D98,L390,D43,L470,D435,R176,U468,R688,U388,L377,U800,R187,U641,L268,U857,L716,D179,R212,U196,L342,U731,R261,D92,R183,D623,L589,D215,L966,U878,L784,U740,R823,D99,L167,D992,R414,U22,L27,U390,R286,D744,L360,U554,L756,U715,R939,D806,R279,U292,L960,U633,L428,U949,R90,D321,R749,U395,L392,U348,L33,D757,R289,D367,L562,D668,L79,D193,L991,D705,L562,U25,R146,D34,R325,U203,R403,D714,R607,U72,L444,D76,R267,U924,R289,U962,L159,U726,L57,D540,R299,U343,R936,U90,L311,U243,L415,D426,L936,D570,L539,D731,R367,D374,L56,D251,L265,U65,L14,D882,L956,U88,R688,D34,R866,U777,R342,D270,L344,D953,L438,D855,L587,U320,L953,D945,L473,U559,L487,D602,R255,U871,L854,U45,R705,D247,R955,U885,R657,D664,L360,D764,L549,D676,R85,U189,L951,D922,R511,D429,R37,U11,R821,U984,R825,U874,R753,D524,L537,U618,L919,D597,L364,D231,L258,U818,R406,D208,R214,U530,R261 \ No newline at end of file diff --git a/data/2019/4.txt b/data/2019/4.txt new file mode 100644 index 0000000..bd53563 --- /dev/null +++ b/data/2019/4.txt @@ -0,0 +1 @@ +124075-580769 \ No newline at end of file diff --git a/data/2019/5.txt b/data/2019/5.txt new file mode 100644 index 0000000..1e31480 --- /dev/null +++ b/data/2019/5.txt @@ -0,0 +1 @@ +3,225,1,225,6,6,1100,1,238,225,104,0,1101,40,71,224,1001,224,-111,224,4,224,1002,223,8,223,101,7,224,224,1,224,223,223,1102,66,6,225,1102,22,54,225,1,65,35,224,1001,224,-86,224,4,224,102,8,223,223,101,6,224,224,1,224,223,223,1102,20,80,225,101,92,148,224,101,-162,224,224,4,224,1002,223,8,223,101,5,224,224,1,224,223,223,1102,63,60,225,1101,32,48,225,2,173,95,224,1001,224,-448,224,4,224,102,8,223,223,1001,224,4,224,1,224,223,223,1001,91,16,224,101,-79,224,224,4,224,1002,223,8,223,101,3,224,224,1,224,223,223,1101,13,29,225,1101,71,70,225,1002,39,56,224,1001,224,-1232,224,4,224,102,8,223,223,101,4,224,224,1,223,224,223,1101,14,59,225,102,38,143,224,1001,224,-494,224,4,224,102,8,223,223,101,3,224,224,1,224,223,223,1102,30,28,224,1001,224,-840,224,4,224,1002,223,8,223,101,4,224,224,1,223,224,223,4,223,99,0,0,0,677,0,0,0,0,0,0,0,0,0,0,0,1105,0,99999,1105,227,247,1105,1,99999,1005,227,99999,1005,0,256,1105,1,99999,1106,227,99999,1106,0,265,1105,1,99999,1006,0,99999,1006,227,274,1105,1,99999,1105,1,280,1105,1,99999,1,225,225,225,1101,294,0,0,105,1,0,1105,1,99999,1106,0,300,1105,1,99999,1,225,225,225,1101,314,0,0,106,0,0,1105,1,99999,107,677,226,224,1002,223,2,223,1005,224,329,1001,223,1,223,8,226,226,224,102,2,223,223,1006,224,344,101,1,223,223,7,226,677,224,1002,223,2,223,1005,224,359,101,1,223,223,1007,677,226,224,1002,223,2,223,1005,224,374,1001,223,1,223,1007,677,677,224,1002,223,2,223,1006,224,389,101,1,223,223,1008,226,226,224,1002,223,2,223,1005,224,404,1001,223,1,223,108,677,226,224,1002,223,2,223,1006,224,419,1001,223,1,223,1108,677,226,224,102,2,223,223,1006,224,434,1001,223,1,223,108,226,226,224,1002,223,2,223,1005,224,449,101,1,223,223,7,677,677,224,1002,223,2,223,1006,224,464,1001,223,1,223,8,226,677,224,1002,223,2,223,1005,224,479,1001,223,1,223,107,226,226,224,102,2,223,223,1006,224,494,101,1,223,223,1007,226,226,224,1002,223,2,223,1005,224,509,1001,223,1,223,1107,226,677,224,102,2,223,223,1005,224,524,1001,223,1,223,108,677,677,224,1002,223,2,223,1005,224,539,101,1,223,223,1107,677,226,224,102,2,223,223,1005,224,554,1001,223,1,223,107,677,677,224,1002,223,2,223,1005,224,569,101,1,223,223,8,677,226,224,102,2,223,223,1005,224,584,1001,223,1,223,7,677,226,224,102,2,223,223,1006,224,599,101,1,223,223,1008,677,677,224,1002,223,2,223,1005,224,614,101,1,223,223,1008,677,226,224,102,2,223,223,1006,224,629,1001,223,1,223,1108,677,677,224,102,2,223,223,1006,224,644,101,1,223,223,1108,226,677,224,1002,223,2,223,1005,224,659,1001,223,1,223,1107,226,226,224,102,2,223,223,1006,224,674,1001,223,1,223,4,223,99,226 \ No newline at end of file diff --git a/data/2019/6.txt b/data/2019/6.txt new file mode 100644 index 0000000..4fcd3e1 --- /dev/null +++ b/data/2019/6.txt @@ -0,0 +1,1315 @@ +NKB)PZS +KBG)9JH +PZS)KZD +8J1)GT7 +7HT)9ZM +RV2)14G +RM1)YG7 +36C)BPH +BY7)5RG +PYW)RWT +VHV)DCN +8GP)3DJ +PWQ)KNW +WRQ)R4M +PYK)WQ7 +C47)RSZ +KVF)879 +M8B)TRX +RL1)N46 +H7D)5CD +FZM)T6P +99X)DN8 +1M7)ZWZ +2XZ)C9G +K9Q)CLK +KVF)WGY +S2F)3XK +LRC)DHQ +3VV)549 +XFJ)YV2 +764)7PZ +RV2)2G9 +CGP)CZ5 +PZP)WLC +NKB)ZLV +6YS)WHG +547)HYD +CPP)GNM +LNZ)T4D +WLC)55F +GNP)5XG +RT1)TP3 +223)51G +GDY)2DF +CDN)9CS +JVW)N4N +4C4)FYN +C27)3NK +R1Z)ZD9 +2RV)4GR +YR3)H8J +67C)46J +RQP)35J +T3G)FTR +QHT)8JG +JML)H46 +74P)KTH +SC9)CDN +633)WRD +6WJ)NZQ +JQS)QHT +FHW)QL9 +347)XLW +H25)5QX +M6Y)MTC +F1D)XZN +NJ6)D26 +NHJ)B87 +8H5)FF9 +DNL)9K9 +JM7)GNN +BRD)JGW +WGH)VM1 +T4F)33Y +MC6)7M9 +LKQ)N5L +WGY)Q4F +XL4)SD8 +N7W)J59 +TDX)8N3 +M9S)64V +NNT)WPY +C9G)RSM +J8M)WDS +5X4)346 +KGG)TZR +4LY)JST +5MM)MCX +PG8)6S4 +G4R)NNT +FYY)SFS +Q1B)MLQ +N9F)B7F +B5F)452 +57Y)TQ3 +NCC)2ZZ +XQ2)18R +G7V)7SQ +93T)SR1 +T1X)9WB +46W)GDY +Q74)RP1 +B1F)GV4 +KR9)Q1J +ZZZ)4NL +7PZ)NSK +G5Q)KCQ +6K7)2W6 +GRL)VTL +RWY)G7B +LB4)DT4 +QZW)51L +NV5)D8H +49G)4NQ +XZC)4RB +Y9S)7XV +4GT)N9M +39K)7X1 +W83)JQR +547)KLC +4GT)2LM +S4F)RN9 +BBL)47N +JYJ)W2D +F16)3H9 +K5F)1XC +JPY)6RY +9TW)5X1 +9QS)P5L +CZ7)PZ6 +R3X)M6Y +JQ6)CN3 +R3M)PTR +X6Y)8RW +YB8)X6L +HZQ)GRL +P5J)DNS +7C1)SX8 +JF5)72W +MYG)XZC +BRD)5XK +QJV)P4N +SKC)7BF +67C)PXD +LCC)7R1 +BMC)BCT +WW3)145 +W4D)VT3 +8L2)W4W +M85)GQ4 +P77)HZ2 +DN1)1P2 +493)6R8 +2K4)NZL +NZ5)NV5 +SBZ)W7Q +SMT)DP7 +L5H)BMC +W7Q)K7X +3QT)GPV +ZDQ)KQ6 +8LG)PNS +3XG)3XT +KFQ)X3K +3QT)D9X +PL5)WH6 +PYX)HNG +D7G)VC5 +NM2)39K +RRN)LZ5 +342)V9B +1F5)S8L +WHG)LS5 +3D3)XSD +1J9)MNR +LNH)LBK +MZR)L5P +M3T)333 +X4N)7VX +SCH)VJP +5XJ)CMS +CBY)DQD +PWQ)VZB +1H9)8H5 +MFN)C29 +PLY)VQ3 +GQP)T85 +K7X)891 +JZD)HLQ +FMM)D9Z +P85)T1Y +NWJ)764 +L5P)VWM +MVS)9TW +VQ6)P3D +CXV)L2K +46J)3PL +SDY)VQ6 +8LT)77D +8GR)XBF +17Z)NRH +T9T)3KD +D9Z)49G +BFV)HMX +XBF)L28 +BDT)LWN +6R8)B8J +G1V)9VK +V9B)VSQ +WKG)4GD +879)ZHH +SFS)VR7 +B2H)88T +8HB)XMH +YSN)Z5G +G8R)HP2 +KHT)57D +RS2)74P +4Q9)KG8 +G85)33L +FJH)CSD +5Z8)JQS +WPX)6XQ +LNZ)5GG +PVS)Y28 +253)5Z8 +KMP)8ZL +16H)GXP +47N)JQ6 +SX8)PHF +WM1)JPY +TRS)8KG +W7Q)S83 +QWL)ZXH +SQ4)KJ7 +J2S)5ZY +51G)CGP +HZ2)VL2 +5PL)WGR +QTY)LYQ +8TJ)2BP +MJK)RW8 +P4N)F7R +KPS)JJJ +KYX)7S3 +VTL)4QW +2LM)BS2 +YDH)M1H +VL2)5MH +99P)B3C +33Y)QG3 +RWT)K4F +M4J)8FL +QL5)RT3 +8QT)RV2 +R6Y)MFN +ZFT)KSJ +CSD)W8J +WH6)PZP +7S3)KZX +5LK)QC5 +VT3)9XG +6H4)F6S +VR7)W4D +43J)4X6 +638)389 +PVT)QWL +GG4)BFL +D87)SC9 +KVS)NN1 +81W)NP7 +Z4K)RM1 +5XK)KND +CZ5)GXC +WCZ)NHP +ZBC)5PL +RSM)DQG +L9Q)4LY +QQY)5BK +1Z6)JKF +6XQ)ZPT +T57)HHX +DB4)8L2 +DNS)M85 +T4V)XD4 +VY3)9NQ +59V)F1D +PZ6)HXZ +P5L)F49 +XMF)LNH +472)FBN +8G2)372 +959)93T +97T)H13 +2W6)4R9 +D26)LKQ +34D)F6Q +NZ5)THG +D36)HX3 +Z9P)QKJ +G1X)V8D +7WF)MVS +N6J)Z1L +Y3Q)JZY +VJP)9PF +ZNV)BZ6 +V8D)DKJ +R7K)GHD +6D7)GNP +BHN)F24 +Y32)YSW +MJD)T4Z +54M)H8Y +NWJ)5XT +LQ2)99P +LR8)D2R +JZD)ZWG +LDC)R9L +FF9)CMM +NWL)Q5R +11B)Q2Q +Q1J)V81 +YSW)JDJ +KYX)S5R +6SK)6Y4 +S8L)1H9 +DCB)142 +6RW)995 +777)J13 +QN7)83F +5NL)SC3 +DTY)15Z +Q85)R3T +XZN)YH4 +XB9)6RB +GV4)5RV +6F3)V9P +CN3)TLT +2BP)9CW +Q8R)SYP +Z5V)GX4 +7ND)2XZ +8PS)7D7 +1R9)T4F +ZWZ)QL4 +KPM)Z32 +3XK)1F5 +87K)FNM +TFQ)L5J +9QQ)K5F +KCQ)717 +KQV)16H +PJ9)MW1 +35J)ZMQ +LFD)CR6 +XGK)9QQ +ZWG)K2F +DXR)31S +46R)XZM +C29)T57 +8J2)66C +83F)SSF +ZHN)JKT +N46)ZNV +7SQ)P2N +XK3)839 +ZH8)7LG +D45)PMJ +QNN)QGN +NSJ)54M +F8H)KJD +COM)1Z6 +3T1)H1Z +31D)XGK +3R5)3CF +YB2)KPS +JJJ)57Y +RPZ)W43 +VV1)M8D +7WF)5XR +BG5)GBM +RT3)C18 +TSX)31B +46C)RRN +J3X)PFZ +2FG)MPX +W4W)2V1 +JWZ)Q8R +8CF)DN1 +MLQ)81P +DMN)SM7 +D1D)8TJ +XVW)RWY +KQ6)Y91 +M3P)HY7 +VDR)1ZS +SXD)J9M +Q51)7C4 +Z1X)3N1 +PXD)QVX +T81)942 +7C4)2Y3 +DMN)6YS +KMD)T28 +15H)KSF +2DF)FJH +86S)R8G +WRD)YB8 +G58)7C1 +6WR)C23 +BK9)LMM +HP2)2BY +FZ3)H2C +TJC)BBL +9YQ)L9N +4VR)DZ4 +PP1)P65 +YG7)BZH +QKJ)QB7 +R3G)FZ3 +XF7)D45 +47N)PL5 +PVT)KHT +HXZ)X6Y +LK2)QBF +6WJ)7ND +7D5)KLK +346)R24 +551)Z4K +CZN)QN7 +BGP)FBY +4X6)LCX +31B)DQF +N9M)S2S +DP7)8M2 +4TC)GJT +GJZ)JHD +QHB)W8V +88T)N47 +452)S8Q +V2B)SCH +VYJ)N75 +4VJ)XRS +VM9)1VD +HX3)D78 +SZ4)Q74 +TLQ)G8R +29Y)YSN +NGK)14N +B4J)XF2 +NWY)F8H +47X)D1D +QF5)QYX +K2F)G81 +31S)MF8 +L19)SJN +KTH)LLF +FMT)JF5 +XW3)Y32 +ZB7)CW4 +5BF)RCX +WF8)756 +ZXK)36C +3KD)VRR +MJB)HRY +F8T)7LQ +5XG)9SV +T34)H3W +1WQ)BZ7 +TS8)8BC +8LF)69Q +615)R9C +SB8)W8P +612)BGP +9SV)M1T +SFS)PJ9 +FYN)66G +1LF)YQ5 +WLV)JM7 +6XL)Z84 +CT9)SZ4 +2V1)V2B +8PS)6K7 +9ZM)3VM +JYP)6TT +MPX)ZB7 +9BM)M9S +CMM)KNC +X27)DMN +SR1)ZSF +59V)ZSD +JKF)DB4 +B3V)X6K +RG4)DMB +9Z5)TZ8 +T28)BS7 +T8M)KGD +CQR)JZD +5QD)2M3 +K8F)L19 +XF2)GNL +MP5)12X +MFK)MJD +BGR)HCD +GPV)F32 +2Y3)RBD +GQ4)F2S +342)G5Q +2BR)81W +6S4)46W +ZLV)TRS +WSD)9ZN +1TS)9MZ +VW9)YOU +XWM)M7F +VRR)G68 +JFZ)X27 +32L)HSW +D5V)M3T +HQF)G8W +N5L)MFK +27Z)NWL +H2C)M8B +HVP)B5F +DN8)P85 +RP1)C5Y +8KG)75C +3M4)XL4 +3B2)WCZ +X8Z)Y9D +NZQ)HCV +142)Y3Q +14G)3GJ +X8L)SKC +RTJ)JX8 +ZFD)G8P +G8W)3T5 +F7K)SL3 +9VK)BFV +PHF)55C +RND)TVX +WSS)4GT +MHR)G35 +8KQ)1Q8 +JMF)G85 +R24)H67 +CZ7)65P +NDQ)Z93 +QG3)L4J +QC5)GVX +711)2ZQ +Z32)BY7 +T1Y)547 +WK8)RFD +KGZ)2FG +51G)551 +H8Y)GNW +GT7)XMF +JLZ)G9H +RZH)QBB +TZX)X54 +6HT)N4W +FNM)FFD +PCG)SZD +4GN)SBT +BBL)F6Z +CWC)XJ9 +W9D)NZ5 +KNW)SSV +D2R)KWC +3H9)FCY +145)B8Z +TYT)3FH +6W9)BGR +5MH)L9Q +2CD)VYJ +6V2)JZ2 +QBF)J4X +XH1)X8R +NN1)ZNF +ZX9)DHP +M7F)V12 +TVX)NJC +4LQ)YY7 +3VM)R7K +KCP)MYG +YH4)8LF +TP3)4MC +CN9)MRC +PJ9)NK2 +RBW)VP8 +XLW)T68 +QL9)QNN +DQF)LW6 +GHD)MRY +S53)638 +839)X8L +7WG)KV4 +33L)ZBC +LTY)HPV +T4D)PVT +WMQ)WRQ +DJ3)347 +3RJ)1KL +QVX)SXD +LQW)JLZ +6YQ)XB9 +L2K)Y9K +TH1)9PW +ZMB)6HF +15K)9YQ +1JD)4TJ +35P)PG8 +H63)1HW +TGV)6QV +TZR)6D7 +VM1)6MW +7LG)WVQ +8LX)MDS +4L5)DCB +Q5R)1LR +G8P)RPZ +8FX)ZQ2 +WST)NMF +452)L6D +SL3)Z5V +BFK)K3W +KGD)PLY +8M2)DXW +JKZ)47X +VV5)HLF +8MM)QQ2 +XSD)CZN +7XV)D8Q +MRD)HZQ +N29)DP8 +MS4)35L +G8H)RD3 +QL6)7Z8 +SZ6)RH5 +9HW)H9D +SJN)LLP +KSR)27Z +H46)G7V +K9L)P46 +QDL)633 +66C)2Z9 +PP1)PYW +W8V)RYK +HL5)NGK +18R)Y9S +DL9)RJK +LWN)KYX +HJT)RL1 +BLY)342 +6TP)LJ2 +ZG8)SKB +25Y)KHV +K8X)Y95 +1L5)3D3 +DWW)T3G +1P2)BMB +XRS)NJ6 +K4F)M4J +P2N)KRT +4N8)57V +WLS)3R5 +RCX)9HW +7K8)T34 +D9X)MZR +9ZN)4X7 +RZ4)LQ2 +JKT)JGF +LW4)7HT +D8Q)281 +8BC)ZDQ +SJN)BRD +5NL)RX9 +3G7)D87 +9K9)BR9 +7X1)T4V +65P)V3M +845)1L5 +8P7)XPF +G8H)WLS +SRB)2P2 +QB7)G8H +DKJ)LB4 +3DJ)D36 +8JG)ZX9 +RMX)SLV +RQC)QZW +58D)JYJ +THG)GG4 +5CD)YQN +Y28)FWP +78H)8LP +XDF)KMD +LYT)CFR +281)2M2 +2N1)W9D +6R7)6SK +42D)8NV +KRT)6YQ +RP8)W83 +SBT)DNL +MMY)TLQ +GNM)R3M +8PV)YDH +6PL)5Y8 +8RW)11B +HG2)Q1B +XYR)GGV +K4J)35X +RSZ)Z56 +56R)P9X +P9X)96H +H63)4QK +XMH)WMQ +3VP)6R7 +F32)MP5 +ZMB)PLP +B7H)26Y +TLT)KFQ +VJ5)223 +5ZP)8KQ +GXP)T8M +6TT)LH9 +XSW)LFD +RBD)612 +KQW)V3W +MNR)9FZ +W8J)ZHS +4PT)ZHN +MHG)8YQ +J9M)B25 +KGG)845 +Y81)SAN +3NK)RDX +7Z8)SG7 +4NQ)PP1 +RYK)5LK +VWM)7SC +KXZ)1J9 +KSY)YJM +KSJ)Q51 +ZQ2)8LG +F24)6WJ +Q4F)KQX +BPH)C27 +2M2)JML +6QV)QTY +F3Z)2NF +JRS)TH1 +RH5)34D +GNV)493 +QMY)Y5G +2NF)R34 +N4N)JWZ +LH9)TSX +SJG)8Z2 +NRH)H63 +YGZ)6L9 +NP7)7L6 +RY7)MS4 +55F)HW4 +GCP)8LT +YQH)QJV +GH5)T76 +RVC)R3X +PRG)B1F +8N3)631 +J59)WFN +JLH)15H +QNN)6H4 +2K9)LK2 +S8Q)T81 +DHP)SBZ +69Q)SW1 +J7G)KGG +GBM)D4T +35X)GWC +LQW)5ZP +9PW)QMY +YY7)VV1 +SD8)XDF +TNH)9YX +3CF)X8J +1S8)Q85 +YJM)LQW +SVZ)2JH +FFD)D9L +CN9)M3P +KG8)JLH +YTC)F17 +JHD)LCC +372)LR8 +PZP)8J2 +5Y8)HL5 +DCN)MJK +HNG)QNX +NHP)SB9 +4DQ)GYD +84T)3G5 +5RV)LT2 +GXC)ZG8 +8ZL)G4R +Q82)XN5 +HQ8)KMF +F2S)777 +L9Q)K4J +N7Y)KCP +M6Y)JVW +7LM)Y99 +418)5MM +12X)LYT +1KL)J8M +JQR)3V7 +VQ3)K11 +TQ3)TZP +2M3)G1P +C23)DWW +2G9)RVC +GJT)KW6 +Z32)BLY +K11)J9Y +Z84)4Z4 +V3M)G1V +BMT)5NL +DQF)78C +6R7)WSS +LLF)QF5 +9HP)X4N +P46)J12 +FRL)YV3 +KND)L5H +SSF)WLV +M8B)1S8 +YDZ)RT8 +B87)TJC +WQ7)PYX +CW3)87K +45Q)MQ5 +VH4)3JY +TFB)S53 +KQX)GFM +H3W)BNH +KGD)MJB +995)8GR +ZSD)B2H +75C)XF7 +W29)3VP +2GY)GTN +SY3)XRB +Y5G)VYP +JGW)R7Y +DP2)PVS +999)6W9 +XD4)7GJ +TSW)C1Y +R34)MMY +5BK)9SL +51L)G1X +VC5)9P5 +8J1)K9L +WFD)15K +LCX)NSJ +ZD9)Y1J +38S)3VV +4HD)NPY +79C)1M7 +5LK)8G2 +D9L)LCZ +QD5)84Z +RL1)VY3 +BBH)6QK +BGD)XYR +N47)KBG +S83)DJ3 +4CC)NKB +BPX)TZX +HLF)8GW +3KB)KMP +LJ2)LPV +3H3)RQC +KGT)615 +KMF)DP2 +BZ7)JYP +GX4)MD5 +GJZ)WKG +MTC)TSW +7D7)P5J +HGR)ZZZ +4MC)86S +RJW)35P +W8P)XH1 +VZB)G1J +JRC)YTC +6MW)KSR +QMY)45Q +F6S)3VZ +631)YB2 +VWN)MC6 +YV3)B8K +Q76)1HB +PN4)XW3 +NJC)ZFT +4XQ)KSY +MRY)9KV +S8L)BL8 +BR9)711 +R8G)J1S +57V)4HD +68Q)W6C +HHL)CRM +RWV)VH4 +9KC)NHG +F6Q)3KB +NN4)C9K +5X1)FHW +6Y4)171 +7M9)9RW +5RG)N29 +LYQ)5X4 +PFZ)QDL +V3W)2F6 +YQ5)ZH8 +9FM)L64 +H8J)BLH +1Q8)7K8 +7SC)6TS +Y29)F8T +RFD)VM9 +N75)2K4 +CW4)51C +524)MRD +WFN)Y29 +LMM)JRC +8NV)YNF +R7Y)XVW +HRY)DNT +C6Z)RS2 +7S3)D3M +T6P)XFJ +SC3)Q7P +JGF)H82 +SB8)9MF +8LD)6HT +KNC)XQ2 +GTN)G9M +PCD)6XS +MZR)RG4 +GDY)FXJ +KHV)BG5 +5XT)CZ7 +SBL)GJB +X3K)YDZ +77D)7CB +2JH)VP3 +4FC)SGM +PG2)HDH +H25)Z3K +9XG)GJZ +891)DR5 +BR8)22Y +XPF)L83 +NK2)JMF +717)7CL +B3C)PCG +R4M)HHL +BLH)KVF +4GR)K8X +DXW)58D +4R9)84T +LS5)6F3 +Z56)WM1 +J9M)LRC +P3D)DXR +NZQ)4XQ +549)TYT +2BY)68Q +ZXH)S9G +BS2)WPX +4JP)JG9 +RDX)WW3 +LRC)199 +QZW)8P7 +RLP)DQV +JLZ)8GP +FXJ)S9H +N4W)524 +9WB)S64 +142)PN4 +R34)FZM +L9N)9Z5 +D1W)S5B +C9K)SZ6 +B25)C47 +9PF)RND +FZM)Z9P +L64)8QT +4Z4)CBY +XFL)Y5Y +W2D)VW9 +V6D)N9F +SYP)5TW +S5R)KPM +QYX)T1X +MW1)2RV +DZ4)6TP +P64)P73 +PZ6)JRN +JRC)CNR +RYF)Z2Z +MF8)FDB +2ZZ)XL3 +LBK)B7H +15Z)17Z +3W8)K8F +BZ6)RJW +G1J)CBR +2N9)SVF +NSK)253 +78X)1MZ +3TH)BGD +15K)2K9 +BS7)CGB +BGR)XSW +4GD)CPP +RX9)WK8 +RJK)VWN +9RW)N6J +J4X)4C4 +35L)1WQ +HZ2)QL6 +RND)VJ5 +2Z9)76C +Z2Z)YB4 +JNP)8MM +Z1L)SRB +3VZ)NHJ +8GW)56R +C1Y)8LX +4QW)XK3 +G68)SQ4 +Y9D)HQF +T85)38S +Y9K)9FM +RD3)RWV +F17)B8P +HMG)1JD +T8M)46C +JC8)HJT +D8H)F6K +55C)3BM +TZ8)VDR +FBY)BDT +CNR)4JP +GMJ)CW3 +G9M)TGV +G81)ZSQ +C5Y)MHR +6RB)99X +9JH)F16 +G5F)VFV +T1L)2N1 +L6D)9QS +LT2)97T +CGB)RS9 +HW4)WSD +22Y)7LM +PKQ)CN9 +LPV)H25 +LLP)SJ1 +LCZ)SB8 +CR6)DFJ +VV1)RLP +S9G)PWQ +9FZ)3TH +X9R)4R4 +6TS)RFG +GNL)RZ4 +HCV)8CF +KZD)3W8 +DR5)F3Z +1R2)8FX +G5W)MHG +TL3)TDX +HPV)1R9 +NMF)67C +LW6)N7W +LB9)KQV +DMB)25Y +9MF)B9K +DP8)43J +ZHS)1LW +Q51)HQ8 +H9D)SJG +RW8)PKQ +6XS)FYY +YV2)WGH +KLK)9BM +TZP)PYK +M41)4TC +GFM)418 +CW4)HGF +K3W)T9T +H1Z)GBK +VFV)XXH +Q7R)6V2 +L5J)TL3 +LYT)29Y +HLQ)HG2 +9YX)HMG +NJ6)X1P +CRM)RYF +8GW)D1W +6L9)G58 +DT4)ZMB +QWL)BMT +9SV)WST +ZPT)LB9 +3G5)W92 +199)F7K +WGR)794 +F6Z)HGR +NW9)ZFD +V4S)Y81 +XRB)BFK +5XR)TS8 +6HT)B4J +6XQ)SY3 +6HF)PRG +78C)D5V +4X7)FRL +GYD)JNP +2F6)QD5 +T68)GH5 +Z93)P64 +G35)4Q9 +5ZY)32L +M8D)46R +WVQ)J7G +8FL)Q82 +KWC)K9Q +1ZS)WF8 +84Z)T1L +ZSQ)MMQ +MC6)78H +C6Z)J3X +Y91)RBW +WPY)Q7R +GVX)VHV +CW3)W29 +TRX)KL8 +1LR)3B2 +XL4)LNZ +FDB)79C +X6K)S4F +HDH)S2F +Y1J)CQR +5ZP)GMJ +QQ2)7WF +YJM)GQP +DQV)RQP +KLC)Z1X +Q7P)R1Z +PLP)2GY +7VX)7WG +G1X)VV5 +H3G)KQW +FCY)RY7 +333)QHB +VV5)8PS +X6L)TNH +QGN)NW9 +YNF)QL5 +XDF)CXV +F6K)9KC +G7B)YKY +Y99)4CC +J1S)SMT +4R4)NCC +Z3K)BHN +CBR)4VJ +L4J)N2C +1L5)G5W +3JY)KGT +1LW)4L5 +XZM)5XJ +MQ5)M41 +7BF)3QT +756)9HP +GNW)1LF +CLK)JC8 +SGM)V4S +BCT)XFL +B8Z)1T4 +2V1)BK9 +FWP)PP8 +L83)4C5 +C18)KH1 +HHX)KGZ +1XC)6XL +QBB)SBL +GHD)LTY +5XJ)2TJ +4CC)BPX +6YQ)4LQ +HGF)3RJ +6QK)QQY +VP8)31D +V9B)GNV +YR3)472 +4C5)YGZ +389)ZXK +3BM)QWB +WH7)JKZ +9NQ)42D +S2S)X8Z +S9H)4N8 +R9L)T9D +3T1)JRS +W92)4DQ +8K7)2N9 +8LP)8LD +5GG)3T1 +M1T)WH7 +GBK)8PV +X54)3H3 +7C1)QZ8 +KQ6)KVS +7L6)NWJ +51L)R3G +DHQ)3M4 +DNT)YQH +HCD)6PL +3N1)3G7 +YKY)3XG +B8J)J2S +P73)278 +9P5)TFQ +Z5G)PCD +3PL)B3V +X8R)NWY +S5B)YR3 +CFR)LMD +SKB)DK6 +BFL)78X +CWQ)NDQ +9LQ)N7Y +JST)6RW +RN9)RZH +V9P)V6D +4TJ)8J1 +9KC)NM2 +9CW)CWC +KTH)1R2 +WDS)4PT +JZ2)RTJ +1HW)4VR +942)LDC +278)FMT +794)KR9 +84T)H7D +CMS)G5F +V81)1TS +V12)2BR +TRS)BBH +8Z2)8K7 +JRN)CT9 +B8P)SVZ +KSF)RP8 +QNX)SDY +LMD)DTY +9MZ)BR8 +4RB)8HB +X8J)5BF +KZX)9LQ +JX8)DL9 +2P2)H3G +H67)C6Z +66G)59V +KL8)HVP +D3M)TFB +HY7)FMM +SW1)RMX +GJB)NN4 +B7F)4GN +XXH)ZCP +XJ9)XWM +9QQ)X9R +RS9)2CD +G1P)4FC +QL4)RT1 +7LM)CWQ +5TW)Q76 +9LQ)P77 +3XT)2T6 +RFG)PYJ +JZY)D7G +KJ7)LW4 +VSQ)999 +SVF)WFD +51C)959 +NZL)JFZ +81P)27W +P64)6WR +D9Z)KXZ +X1P)TXH +ZSF)5QD +HYD)R6Y +ZNF)7D5 +J12)PG2 +BL8)GCP \ No newline at end of file diff --git a/data/2020/1.txt b/data/2020/1.txt new file mode 100644 index 0000000..1460d98 --- /dev/null +++ b/data/2020/1.txt @@ -0,0 +1,200 @@ +1977 +1515 +1857 +1800 +1737 +1778 +1505 +1958 +1982 +1941 +1417 +1232 +1234 +2005 +1637 +1956 +1252 +1457 +1494 +1317 +1388 +1630 +1207 +1536 +1225 +1369 +1343 +1502 +1616 +1744 +1950 +1280 +1647 +1780 +1435 +1915 +1365 +1707 +1795 +1554 +1652 +539 +1892 +1546 +1908 +1629 +1836 +1805 +1395 +1360 +1487 +1739 +1884 +1427 +1615 +1470 +1922 +1753 +1632 +1968 +1429 +2008 +1124 +1441 +1384 +1955 +1815 +1741 +1331 +1442 +1988 +1788 +1585 +1794 +1217 +1434 +1751 +1240 +1284 +1883 +1711 +1376 +1638 +1932 +1979 +1769 +1597 +896 +1691 +1379 +1386 +1658 +2009 +1885 +1721 +1619 +1825 +1688 +1544 +1934 +1484 +1720 +1215 +1371 +1752 +1692 +1745 +1911 +1453 +1723 +1856 +1270 +1397 +812 +1610 +1712 +1829 +1524 +1541 +1338 +1383 +1592 +2006 +1823 +1410 +1422 +1394 +1933 +1572 +1697 +1736 +2003 +1301 +1817 +1902 +1389 +1490 +1705 +1329 +1458 +1510 +1625 +1676 +1443 +1539 +1710 +24 +1586 +1948 +1994 +1975 +1974 +1237 +1419 +1748 +1589 +1821 +1462 +1792 +1381 +1400 +1222 +1602 +2001 +1976 +1700 +1626 +1966 +1548 +1593 +2010 +1149 +1372 +1224 +1675 +1271 +1896 +1983 +1299 +1528 +1631 +1804 +1562 +1754 +1566 +1473 +1980 +465 +1868 +1304 +1279 +1963 +1582 +1713 +1330 +1758 +1551 +1241 +1469 +1888 \ No newline at end of file diff --git a/data/2020/10.txt b/data/2020/10.txt new file mode 100644 index 0000000..b0281ff --- /dev/null +++ b/data/2020/10.txt @@ -0,0 +1,101 @@ +99 +104 +120 +108 +67 +136 +80 +44 +129 +113 +158 +157 +89 +60 +138 +63 +35 +57 +61 +153 +116 +54 +7 +22 +133 +130 +5 +72 +2 +28 +131 +123 +55 +145 +151 +42 +98 +34 +140 +146 +100 +79 +117 +154 +9 +83 +132 +45 +43 +107 +91 +163 +86 +115 +39 +76 +36 +82 +162 +6 +27 +101 +150 +30 +110 +139 +109 +1 +64 +56 +161 +92 +62 +69 +144 +21 +147 +12 +114 +18 +137 +75 +164 +33 +152 +23 +68 +51 +8 +95 +90 +48 +29 +26 +165 +81 +13 +126 +14 +143 +15 \ No newline at end of file diff --git a/data/2020/2.txt b/data/2020/2.txt new file mode 100644 index 0000000..bf9a990 --- /dev/null +++ b/data/2020/2.txt @@ -0,0 +1,1000 @@ +16-18 h: hhhhhhhhhhhhhhhhhh +17-18 d: ddddddddddddddddzn +15-18 c: cccccccccccccczcczc +3-9 r: pplzctdrc +4-14 d: lxdmddfddddddd +8-14 v: pvxlknfvplgktv +11-13 h: hphhhhhhhfhshhhhh +1-4 l: hbljb +1-2 x: wxqzlvt +1-5 g: dxggdggb +5-13 f: lfgdplfffxffswck +6-7 z: zzzzgzzzz +1-7 c: cccclcchrkctfhc +3-7 c: ccjccqzcc +15-16 x: rxxchpvgxxhxkxxw +3-5 h: hbxjg +3-7 q: sffnxxqvdfsnqlhqpq +8-11 h: hhhhhhhlhhh +7-8 w: bxwzdlwr +4-5 x: xxxxp +4-7 x: xxxxxxxx +2-18 l: lllllllllllllllllrll +6-10 n: nnnnnngnznn +12-13 c: ccccccccccchc +2-6 g: ggqngxgbggc +4-5 k: xdztx +4-9 m: txskmsnxvqjhlp +9-11 w: wwtxmsjwjwlw +12-16 g: cgggpkhggqkgrjcbx +9-11 s: sxsssmssvszs +17-18 c: cccccccccclccsccchcc +7-8 z: stpgzwlqm +9-19 q: qqqqqqqqqqqqqqqqqqqq +4-5 p: hpvtpfgwp +8-9 m: mmmmmmqmm +11-12 s: ssswsssssspts +2-4 j: jjdr +17-18 k: kvkkmlkkkkkkfklkkkkk +1-4 b: bbbwb +2-12 c: cccccccccccccc +14-15 l: llllllllllplllllllll +7-10 c: czcccsvnrbccc +11-12 d: nfmvdlxbfwzq +8-10 t: tvtttttzts +5-6 g: wggghg +11-16 d: ztfdkggclvzmvsxd +16-17 v: vvvvvvbvvpvxvvvhv +3-7 w: vrswklnfnjzkm +1-18 s: bsssssssssssssssshss +8-10 g: vdzldttzgm +19-20 n: nnnnnnnnnnnnnnnnnnrb +1-4 x: xxxqxxxxx +11-13 m: xmmxmmmmgmwmmm +4-5 j: pzfjjsjjmcm +1-7 j: jsjsmjj +7-8 j: nqkkljhbj +4-5 w: wmsbqhmwdjns +4-7 j: jbjjcjcf +2-7 f: jhsxldwf +3-4 f: vmff +5-7 z: fscmzjqs +2-10 g: ggtfwzpbkgqqlzwmbm +5-6 j: jjwbdjj +13-15 b: bbbbbbbbkbbbvbbbb +4-6 t: qdthtt +1-8 m: kmmmmmmvmmmmm +4-8 g: gbgqgtcglvgggcg +3-4 h: ghjn +3-8 b: mgbzbjvbkbpbd +11-17 k: kkkktskgkkkfgzkkk +1-6 f: ftnvfgtrlcs +3-13 r: hrrzrfrfpvdlrnrcrcs +3-8 l: gzljpllvl +3-11 h: hchjhhnhhnhvhhhhx +9-16 s: srssssssssskpldsqss +4-10 n: nnbnnnwnnwnnnxnn +3-4 n: nnnp +11-19 z: nznpcdnxkwznzlpvcwzj +4-7 w: wwwrwtwncwvwwwwx +3-4 s: bkgs +2-16 z: nzlcmlvqdcmmcnphb +1-15 z: zzzzzzzzzzzzzzzzzz +9-10 t: tmgttdtqtttttwbgttt +1-2 h: hhhhhmhmkgxhnhw +4-5 h: hlhhh +9-15 h: xhhhhhchhhznphh +5-8 w: jwphwwwj +4-5 z: lztsz +10-11 c: mhtdcdhggccgfck +3-8 t: ccttgcktz +1-12 m: smmmmxmmmgmx +1-12 r: srrrrrrrrrrlrrrrr +2-5 h: khhzhrqr +3-4 m: mmztmm +2-5 f: fbffqf +1-11 p: zpppppppnphppx +5-12 z: pqrzlwztvzjfzbt +8-12 b: bbbbbbbdbbbcb +3-4 g: ghqg +7-10 m: mmmmmmmmmmmm +5-14 q: jblkqbqpmqwsqt +6-8 r: rrrtrlzltfrrrgrr +9-14 r: rrrrrzrrjrrrgmr +9-10 m: tmshdggksmv +10-17 d: dddddddddcddddddf +6-7 f: ffffffx +9-19 j: jfjljzjcjjzjjjfjpjj +2-6 h: jhxmhh +1-7 g: wgggggzggxmggg +5-6 n: nlgnlx +4-7 t: thzttttt +4-6 x: xhnxjx +14-16 p: ppppppppppppppppp +2-4 s: ssps +7-15 k: bzfljhskslxlznwvphg +6-7 j: dkjjsgk +9-11 p: ppppppppkpmpp +5-8 t: tzcttttttt +8-11 d: dddddddgddld +3-9 w: dwwhwbwwwwwzwtwxw +2-3 x: xxwxmw +1-5 g: gdlvg +4-6 c: cccmcrccccccc +1-11 f: ffffffffffnff +10-11 l: lgqgnwlhgdlvdlv +3-7 v: cjvvvvnvjvjvgvkx +4-5 v: vvvsv +13-15 t: tttttrtttttttth +11-12 q: nccsqqhqqqqqlqqqqq +2-7 p: pspppppppp +4-6 g: gglggg +17-18 p: hwpkcxvppzxxvpjzpp +1-3 b: dlfz +11-12 p: ppppppppppfpdppp +1-2 s: ssszdss +2-15 b: nbsblthmngvbqvbh +1-6 q: sqqqqbqq +4-11 q: tgmtqqrxfsvrzhc +8-13 q: qqqqzqqqqqqmqqqjqq +9-17 n: nnnnnnnnnnnnnnnnpnnn +6-9 h: rmhrlkhskbhhq +5-6 n: qnnjnn +4-6 l: lxlllkvdltgcfl +12-15 f: fflffffpfvftffwff +13-16 t: fpwmwmvtqbvxtvtt +7-8 w: kwwwjgwmwbw +1-2 x: xxnvmbcmxhnkkgfrr +3-7 f: rpcnzvjgh +13-15 r: rrwrkrrrrrrrdrbr +11-13 h: ghnzvhhhhwhchmh +7-8 h: hhhhhhnv +5-6 l: kgllll +1-4 k: kqsjblck +6-8 c: crxxccccgc +2-13 g: fvmhpbqkgvbwqvbldb +4-7 g: ggglggmgggkggg +6-7 n: znnrnpnn +12-15 j: jjqjzjjchjmjzsgppss +4-5 k: kkkkk +12-16 r: rrrrrrrrrrrcrrznrz +10-12 w: hdwsvqpwzvtx +9-11 b: brbtbwbbjbbbbbb +6-8 q: nqkvkqdqrq +3-5 n: pjcnd +9-11 q: qqqqqqqqpqqqq +6-7 b: zdbbfpqbvbbgbnq +11-14 g: dxvgpggnpngpqgn +8-11 z: zzzzzzzczzq +8-18 z: nzczzlkcchpzdkrpvzrd +2-4 d: fwdhl +12-13 m: mmmqllmmmmhnf +6-8 b: bmbbcbbbznnbd +18-19 z: zkzzzzzzzzzzzzzzzzz +4-10 m: smkkrpqznmnfdprq +7-8 j: jjjjjjhsj +10-15 t: trpttgcttttttbtt +6-7 t: tttttltttttttt +7-13 x: bxxcxxvxknqcxsx +6-10 j: zjrrtjwxfjhhtcsktslf +3-5 m: zjmms +11-14 v: vvvvvvvkvvvvvvv +1-2 c: ccch +13-14 v: vvvsvvvvvvvvvv +9-12 g: fgkgxgggcjdg +4-6 t: ttpxtgntzwtx +10-12 g: gggggggggkgbg +1-3 l: llllw +7-12 d: nddvldndjcdpdddz +2-5 w: wwtlwwvdww +6-11 c: fcccccccdcc +12-19 s: sjsssssssssssshssss +19-20 t: ttttttttttttttttttkf +7-11 z: zpfgzczcxzmclzzz +2-7 d: sddlpvdqzzlqfkjkbb +2-7 k: dkmlkckm +4-8 w: wwwwwwswww +1-3 d: pddd +1-9 r: chrrrrrrr +17-19 t: ttttttttttttttttptvt +17-18 v: xvvvkvvvvxvsvhbvvv +6-11 j: njjjjcpjjjbjhqj +1-3 s: ssss +15-16 k: kkkckkqgkkxkkkrp +6-7 b: mgzhbbb +9-12 w: wjwxwwpxxtwvwwjnnw +2-5 x: xxlwcpzfx +4-11 j: jjjxjjjjjjcj +6-17 c: qcccsvvzfpccccfchcc +3-4 c: scbjdmjhtlcdvbq +8-9 b: fngpbvfsctl +15-16 r: rrrrrrrqrrrrrrdlt +5-10 v: tvqlvvvtrvlfkwsvlvn +6-8 q: qqsqfqqqq +8-9 m: mmmmmmmms +8-12 r: rxrrprvcrrjd +19-20 c: cncccqwnbsvccclcjkcc +2-4 b: mmjg +12-13 l: slwjlqlslllll +2-8 m: fmmppmmmmtmzmmmm +4-13 l: llllmllllllllltz +6-11 f: ffffffhtffff +1-6 g: gngfzbgx +1-5 f: fwfmfrfxf +16-17 t: ttttttttttttttttt +2-7 w: twsdwvj +6-13 m: mmksmfnmdxtmhmmxm +1-6 b: bbbjbbnbzwgrb +13-15 c: ccccccccccccccsccc +7-8 k: kskkkgkkk +6-7 g: gggmgbzg +17-18 k: mckjkfkdfqkxgtrcrch +4-5 g: xglggggs +2-4 d: ddddddd +5-7 s: nlpzsss +5-12 w: ngwpwprvlftr +15-17 p: psgjvphpbppzpprpp +1-5 m: lljdr +6-8 h: hnzhhqxh +4-7 g: mmccqwfvlqrks +12-14 l: lllllllllllllll +2-3 c: cqfc +15-16 z: zzzzzzzzzzzzzzzz +6-7 v: gkzxvvvdbvnp +7-8 z: zzzjzzvc +13-18 v: vvvvvvvvvvvvkvvvvlv +1-12 p: pppppppkppppppp +10-12 v: vvvvvvvvvtvvv +5-6 s: qkpsqz +5-6 t: tgthtlt +1-5 z: zzzzzz +6-7 j: jjjjjjhj +4-5 b: lbbqdfrbbv +4-6 n: jvmxtfwnqpdhn +2-5 r: mcmrf +8-10 s: sssssssggsss +6-9 f: ffbflgzsfftxqg +1-18 p: pppppppppppppppppp +3-13 b: bbbbdfbbbbbnbbbblcb +5-6 d: drddpk +4-5 h: jhhhdh +12-18 x: wxtsqsrxtsxxxvhxfxx +5-6 q: qmxdnz +6-16 q: qqwqfqqqzqqqqfqqq +4-10 x: xxxgxxxznx +2-3 x: xndnnb +4-5 g: hcgff +5-6 s: wsgjpgssssssdssssss +16-18 k: kkkkkkkkkkkkkkkkkk +5-6 k: kkkkpqkk +13-19 r: rrrrrrrrgrkrrrrrrrr +10-11 s: vgnbshssjcpss +3-5 f: qfhjmjkcgv +3-4 q: nrtnvbsmbwpq +8-18 j: jjjrjjdtjmjjkjwzjjk +4-14 t: tttgtttttttbtxt +5-6 q: qqqqtj +14-17 b: bbbbbhjffbbtbbbbb +9-18 x: rxxxwxxxxxxxxxxxxc +3-9 f: hgjjfkvlflhbtxpb +7-19 n: nnmndnknnlnjnnnnnnz +5-8 m: mbmlmmfpgmwmm +7-8 j: jjjjjsdkjg +3-8 p: hlpjkpjjvbrgpw +10-11 t: tttttttttptt +6-10 b: bbbbbthbbd +3-11 l: xvlknhhglhcgvk +7-17 j: mpxjmcwwqqjtprwgjj +14-17 v: vvvvvvvvsvvvvhvvvv +16-17 p: pppppppdpwpppppppp +3-4 h: hhdr +8-9 v: bvvvvvvfs +6-12 p: pdpppbppnqpxp +3-6 w: jlwwjvcwwhwjrgwzjkqw +3-4 c: zqkzcc +2-7 h: hzhhhhv +1-9 g: mgjlggdznj +3-6 x: nxjxxkxhfx +7-11 m: pmpmmmmmmmmmtmm +9-11 t: tttttttttttt +3-4 n: nnnpqnbfnnnzn +10-17 b: bbqbbbjbbhbbgbthxb +2-8 n: qfqnjhhjsvcvcnnjnnhn +3-6 n: jsgnnn +1-2 n: nntknsnsp +5-7 s: ssssssss +8-9 l: kllllllllh +4-9 k: vkkkkkkkkk +3-8 x: hxdxbxnmxx +5-8 f: pfmvlbffff +13-18 n: rnncfnnntnrgxnnsnn +1-2 d: jxdd +3-5 p: bcfdp +2-4 k: hklkk +13-17 w: wwwwxwwwwldwwwwwm +4-5 z: gzzzgczz +14-15 g: gggggggggggggqg +9-10 x: jzwnmqhgqkxhxb +3-4 z: fszz +13-14 l: nlllllllllrlflllx +1-3 r: rrrr +15-16 c: ccccccckcccccccccl +1-6 h: hhhhhhhphhhhjfhhwjh +5-7 r: gvcprfrrgtqjkgsbcb +12-14 v: vvvhvvvvvvvvvvvvv +18-19 l: llllllrllllllllllpgd +13-14 x: xxxxxxxxxxxxxxx +7-13 d: pcgbdmkhnnxqdhb +9-11 c: ccccccccjcf +14-17 m: mmmmmmmmmmmsmmmkmkm +7-16 p: jblsmjhskpmcflvzqbb +1-3 p: pqpzfpw +6-8 h: whhtglkhshhzhh +1-9 x: xxjxxxxxxxx +2-3 d: ddgwh +3-4 z: rzzz +12-13 p: ppppppppppppppkp +2-6 f: fbffjbxz +4-7 f: dmkrhsfnffg +4-6 p: ppppppppp +17-19 d: ddnwdddddddnddddndgd +4-8 n: bxchqdknggfjqzcvdwzv +3-19 z: zzzzzzzzzzzzzzzzzzpz +2-11 h: hhthvhrhpkhfrljhf +7-8 s: sssssgsg +1-3 p: hpsp +4-5 d: wdkdd +2-4 j: fjpd +2-8 l: dsvhdlpl +11-15 b: bkbbqpbqbbbbbbfbr +4-9 j: vffrxjvglzq +17-19 q: qqqqqqqqqqqqqqqqqqqq +2-9 g: sbpcvnmsghrm +3-6 r: kxwwnfbqv +9-12 w: qxwwwwdwwcww +4-8 t: tttztttxt +5-6 k: sklmkk +1-15 t: qttstmlgtxjfwthj +12-15 s: sssssssssssssssss +1-8 d: ddtddbddj +7-14 m: rmmhmmmmzvmmmkxmmmdm +5-6 n: nnnnnwn +7-8 m: mmmmmmghmm +1-3 q: qpqqgkc +3-10 q: qqqqqzqqqqqqb +1-7 p: ppppppqp +3-5 c: nbkfmcccpkjccv +14-15 q: qqqqxqqqqqqqqqq +8-9 p: plgpblsfp +10-13 w: wwtwwwwwwwwvwww +8-15 k: kkwjkkkknkdkkkkk +6-7 l: lllllmkl +8-9 l: lllllllxgl +10-12 p: gpmpppppppvpvpqpx +4-7 x: rxbxxxzqx +1-10 h: dhhhhhhhhxh +12-18 v: vnwvgvprbfgvvgnvvv +4-17 n: xbdnmnrrcfmczhjxndr +8-9 k: kkkkkckqskkk +9-12 l: rblxmkxmlfflnfpg +6-11 q: vqlqqqqqqqqqqqqnq +8-10 j: lxpjjjjjwjglcjhjjj +4-6 x: xtxxjx +1-2 w: wwwww +5-8 h: hhhhkhjhhwh +7-10 s: stjsssdssdl +2-12 p: xwnzxpzwnxzc +4-5 v: vkvvvvk +1-6 k: ksgmxkkdcfqgxcxm +16-17 g: ggggggggggggggggg +9-10 g: ggggggggmcg +9-12 m: mmmmjzmpmmmx +2-3 r: lrrlrtmbcl +2-3 s: sqss +9-11 k: kkkkkkkkdknkdpkbkkk +13-15 t: tttttttttttttttt +3-5 p: ppkfkn +4-5 d: dddtk +9-13 b: hbmtbzspcqtwqfkbbbdb +5-7 d: dddtddhdddddddmddddd +6-7 q: qqqqqsl +8-9 k: kkkkkkkkk +3-7 d: gdcwjglkw +6-8 s: srtgjdsn +8-9 r: fxrgqrsrs +5-10 x: xxxxlqxxxxxxxxx +2-3 s: ssskpmzhqpp +2-10 q: qqqqqqqqqqq +5-12 r: srnqrrhkgrjr +1-3 s: fsmsssss +1-2 f: ptbtfm +9-10 b: lbbgrbqhnhbcnmb +1-3 x: xxnx +1-3 w: gjfh +3-8 q: qwqtdvqql +3-5 f: zfmcgpdlp +6-8 h: vhhhhhbh +4-12 c: lkbcvnztjnpxvlcf +4-6 w: wwwwwwwpwwd +10-15 v: vvwvvvdvvzslhvz +4-7 c: jpvmlffcgdkmcl +6-7 l: llllwlll +8-9 m: mmlmlmmnmmm +14-15 m: mmmmmmmmmjnmmmmkz +3-6 t: thttttt +3-14 t: kvltjtmkbvhtbt +6-7 j: jjjjvjjj +5-6 m: dmnmmmknqwmmmkm +8-12 s: ssksssssssssr +2-6 r: srvrqrdwxnprrvpqhd +6-11 l: lhllkdxlllln +2-4 t: qmmd +3-12 s: sssssssssssrs +17-18 t: ttttttttttttttttqf +2-5 r: qcbrr +14-16 h: hhghppchchfhhhlhm +15-17 g: nprhksgfwwjgggkkc +7-8 g: gggggggn +5-15 g: drgkscpgchvzmjs +1-3 l: fsztllllll +4-5 p: ptftp +5-6 j: jjjjjj +1-4 f: ffjfhz +9-10 q: qqtqwslqqg +6-20 h: hgklqhcmhfmxvcnxvxch +7-8 c: jcwbrvcc +8-10 m: mwmmmmmsmvmsf +8-9 v: cfvrvbvzvvvgvpk +14-17 s: srkhgbthtssxszqvsbsx +4-7 b: sbpffpbxv +9-11 z: zzzzzzzzzzzfztz +9-12 v: hmvvvvvvgvhkvvcvvvb +1-6 c: fkcjcwqccs +13-15 r: rrrrrrrrrrrrrrrrrnr +3-4 g: ghgg +6-7 b: wbbbbbbbbbb +7-8 t: trttdtttjbktt +3-4 t: wtttct +2-4 c: xccc +5-7 s: ssspvlrslxn +1-3 s: lsss +4-6 h: hjhjhghh +11-17 s: ssjrsscslskssqssn +1-4 j: rzjjjv +7-8 f: tvssgbrkqdtc +5-8 w: wrjklbblzwdclwnwjwx +4-8 r: srrrrrrr +1-7 g: ggggggg +7-9 m: msmcmmmbwgxkmmnmm +7-10 w: wrwwwvwwww +7-11 g: rgkzgdgpldgc +11-16 p: pppdpzvzpppqrwppv +3-5 n: hnnnnn +10-12 n: nnnnqnnnnmnwnn +6-9 k: spdbkgkxzlqkkkkk +2-5 j: jjjjjjjj +2-4 n: njnzn +7-8 c: cclmcchjcbc +13-16 k: jkrxkmtxfkxfccdklk +8-9 f: fffffffjkfffnpffvfff +8-10 x: xgmdzfxxsc +7-12 k: fknkjrklsrkkkhqknkv +10-12 l: lslzlpllblllll +3-4 f: fffvfff +16-19 j: jjfjjjjjjhjjjjjjjjj +1-3 h: hhhhhhhhhhhhhhw +8-11 n: nnntnpdnvkqt +9-10 n: nnnmnnnnnnnnnn +3-5 c: qbcccchvccf +8-9 s: sssssjsmqj +4-5 w: zwwrxwwfwpwwz +7-9 m: mmmmmmvmf +5-9 w: wwwvtwwwm +11-13 j: zjjjjjjjjjjljjjcjjj +2-9 c: zblcmvmcfc +16-17 g: gggggggggggggggqk +12-15 p: pfcpppsgppxbjvqppppp +4-6 l: ssldtlc +5-8 h: shtphhdhhhhm +17-20 n: nnnnnnnnmnnnnnhnsnnp +12-17 s: sscsrsssdsssssrssss +2-9 j: tjlffpwkjmnj +1-6 p: cpxfpdvjb +10-14 b: bbbbbbbbbhbnbbsbb +3-4 h: hhhnh +1-3 j: rkgjvqkgs +16-17 w: wjwzdwwwwwsxbtlfs +9-11 r: rrrrrrrrrrrr +1-5 d: dtzqdd +5-7 p: pprpppp +6-7 n: nnnnnnn +1-10 k: kkgcklpqzkk +2-4 n: lvxnntjnpwhrsxlnhn +3-6 h: hlhhhxhzh +6-7 c: zccccccc +1-4 z: ztczzzzzzzznzztnlkjz +5-6 c: cccnccshkcpgjhn +3-4 h: hhbh +1-4 m: gmtm +13-18 d: tldhjsdhdthhldzfgjxg +4-5 d: dddddd +1-3 r: rrrr +7-8 b: bbbbbbbt +12-14 z: zzqzbhzzzzzzzz +5-7 v: vqblwrw +8-9 c: tccccdcrccccqc +9-11 m: mmhmmmnmqmtm +3-10 n: dnwzhrfnqt +3-4 t: xnkfpcqtcqkctxrrm +2-7 l: lllllllll +2-7 g: rdnskwgwcgnrzncqtnp +11-13 s: ssssssssssqsw +10-12 m: mmmmmmmmmcmqqmmpmm +4-8 n: gnqnptxnhgpnnnn +6-7 t: tttttcct +2-3 s: sssssss +9-10 h: hhhhhphrms +3-6 d: vdxdddddd +8-15 k: kkkbkkckkkkkkzgkkk +4-10 n: ncntnnnnnnn +3-9 r: snrkcrrcvrx +7-11 s: sssssgwsshks +1-4 h: hfch +10-18 l: llllxllllflllfllsnll +13-16 x: xpwcxpxxxxfqxnxx +2-3 m: mvmmm +3-5 l: ljlzs +8-13 t: tgttttmmrfthttwt +2-9 t: vttjddjxtfrlw +3-5 r: frrrr +4-5 s: pssnm +4-5 h: jcphhsnrm +2-3 d: pjdd +2-3 g: gdgk +10-13 v: svtvvvvvxwvvwv +4-5 l: lqlll +13-14 s: sffbffsmssscss +2-3 j: fkkfmzqjnfvdjr +16-18 z: zmqzzgzkzzzglhzzlzj +3-4 h: hhfh +11-13 s: sssssnsspshswhsssss +7-9 g: gvgggrmgzr +1-5 p: hppxnlkgcpppppppp +1-13 q: qqqqqqqqqlgqqqqqn +3-5 x: xxzxpx +3-15 x: xcndrhtnpbqwgsxtzqn +9-13 d: nrhbddvslmwbs +8-10 g: grggggxggxgg +10-11 h: hrfprqnhbhh +2-3 r: rpzr +14-15 d: ddddddddrdddddd +7-8 b: zbbbbgbbbbpbbv +12-18 v: vvvvvvvvvvvfvvvvvvv +7-13 r: snkkjtnkrntjfd +1-7 g: ngdndgg +1-10 h: hhzhhhhrhhhhhhhh +6-7 x: dxrxxzs +6-7 x: xxxxxxxxxx +8-11 v: vcvvvvxvvkcvlvvvvvv +3-4 n: nrzh +8-12 x: xxxpvxxttxxfmnx +9-10 r: rrrrgrrrzr +2-8 v: lbtvvvzqvzsg +3-5 d: dkfbwlrg +13-14 k: kkkkkkkkkkkkkk +6-8 x: xqgbwxxxppgxz +1-4 n: pnnr +6-9 l: hglpllcnl +1-4 x: xxxx +3-5 n: lnzwmhjnndjdmknnqtnc +8-13 t: tttttttnttttjttt +7-11 s: ssssssssssvbn +1-5 l: lllllll +2-6 v: rvvzvvzcgv +6-8 c: tccckcrc +2-3 q: wnqq +2-3 p: pplpp +3-4 f: kxfwcfsk +1-6 m: mmmmmm +3-4 n: zgnnprvnns +17-18 z: zzzzzzzzzzzzzzzzwhz +3-11 w: wflwwwvwwhrgwwrwwwww +9-13 g: ggggggggpggggg +2-6 r: trvcwrr +5-7 p: prtjptws +7-10 b: bfbjwjlkbsbbwgk +3-5 z: zzzzzzzzwhzzzdznz +4-7 p: lphppppppp +4-5 n: nvnnnsnn +7-9 b: znbhbtgbw +1-11 w: jwwwwwwwwwgw +10-13 w: lwwwwwbwmwwfqwwr +5-12 p: ppppqppppppt +1-10 j: jjpjjjjjjjjjjjjjjj +6-9 g: gxgfgjmggggg +7-12 c: cdccccgcccgc +7-15 m: mmmmmmmmmmmmmmmmmmv +4-7 n: ndwjpvgnh +5-9 s: cszftmnqmssfqs +1-11 m: zmmmcdcmfmdbmltmf +16-17 s: zrshsssxssssssxfs +6-17 m: kphrlmrcmpskjcmmmg +3-4 j: jxjj +2-3 f: ffbfs +4-7 v: vvvvvvvv +1-7 f: fffffffff +1-17 d: dtdftddsdddddddsdd +8-10 c: ccrccccccsc +2-8 m: hqmmmmmpm +2-5 j: jjnjjjj +7-8 s: vsszssssss +3-18 g: ngpggmgggggggggggfgg +14-16 r: rrrkrqrlrrrjrrrpwtr +2-3 h: hshs +10-16 r: mrxdnzxmvrplhmrr +6-7 q: hwqmqqqqqql +3-6 z: rgtqkw +1-13 k: lkkkkkkkkkkkckkk +3-5 t: ttxtt +3-9 s: ljsvzbfwshssrc +6-7 z: zbwzjgw +1-11 n: ptnqltlkrxv +8-9 l: lsllllllhl +2-8 v: vvvvvvvzvvv +5-8 s: ssslnsssssssssl +7-8 k: kpkkkkkchlk +15-18 v: vtvvvvwvvvvvvmvvvb +11-13 m: mqmpjsmmlkvnmnfmwqmq +14-15 k: kkkkkkkkkkkkkljk +13-14 t: tffbtznjgtcnts +5-6 z: kkkpzzctq +4-5 h: jhbhzr +5-7 v: vqvvgxv +6-10 d: dddddpdddtdd +11-12 g: ggggggggggvggg +13-18 f: ffvfffxhrfhrcffpgnff +6-10 x: nsxgwsjxfthhxxgxg +2-5 w: wfvpmwtwg +9-10 l: lljwlllfxcll +2-5 b: rbbbmbbbbbbbbbvbbb +5-13 p: jjffpmbpppmtpf +1-5 r: rrzrrrrkrr +1-2 m: mmmmmgmm +16-18 z: zzzzzzzzzzzgzdzqzz +6-7 l: llwfxll +6-9 j: jjzhjjjjjjj +4-7 k: hwskvkk +2-3 d: dddddq +4-6 b: bbbbbbhbbbbbbbbbbbbb +7-14 l: lnhmlwzxlsldlx +2-4 m: msmmh +4-10 z: vhkrzzcbzzrzdcq +4-7 p: dnppppwp +5-7 z: mzzzzzzz +5-7 b: bbbbbbb +1-5 t: rrbtt +7-11 x: bjxqxtxzlfxpmkpqtnd +7-9 k: kkkkkkkkkk +8-9 d: dhfddpndbhqdtdwdtn +18-19 k: tnkzkdkkkgkkbckkkkk +8-11 f: cfnqkzffgxf +2-4 x: xxwxxsx +8-11 m: mmmkmpcmmvgxmmmcmm +13-14 z: wfzlzzzzzrdxzlzz +2-4 n: frns +4-5 q: qhqqqq +12-18 w: fwwwwdxxzvzzgwpwlk +12-13 n: nnjnnnnnwnnxgnn +8-11 c: tcjcbcwctkccr +4-6 m: jvmhtq +1-2 b: bbbbb +11-12 q: vqfqvqdnsxqq +7-9 m: mgmjmtmmzmmhrm +9-10 t: ktvnttttxl +8-10 r: rcrrdrrdgsrr +7-8 m: bvlmhxfxnlmfbz +3-5 c: bhczc +1-3 w: nwwnwwxww +3-5 l: jcllld +1-10 b: bbtbqbtbbbbtbbbbbbb +5-7 x: vsxxxxxx +3-4 k: gdkv +8-10 k: kpkkwzkrkjkkkm +3-6 l: hhlmll +16-17 x: xxxxxxxxxxxxxtxmx +1-4 w: wrkw +1-4 t: gzpkttttt +2-3 z: zzzq +13-14 q: qqqqqqqqqqqqqq +2-19 d: vdwfzsfqtqbglgrfdvd +4-6 x: dxtnxzx +3-5 g: ggggg +6-7 m: mmmmmjj +15-16 t: tvtttttvbttttttt +5-6 k: kdztgkx +1-3 d: dddd +5-14 h: hhptkkcpqphhdgw +13-14 j: hvmrjdcjhjjfgbmw +10-14 h: hhbhchhhhwhhnhhhthh +2-3 f: jcstlgbdf +3-4 w: kwww +2-12 b: bbbbbbbbbbbfbbbbbbbb +2-4 x: xxxs +10-11 c: qmrtcpztvcc +7-12 l: llptfltlllllzllzl +14-16 m: mmmmmmmmqmmmmtmr +10-18 m: mgmmmnmmbbvmmmmmmgmm +4-18 q: kqlrkhrqljbgwpmpnq +3-4 c: czcdc +2-13 k: jnmzxwvgfldnz +11-12 b: bbbbbbrbbbbb +6-11 p: psfpzrpfpqkzpvppt +9-11 p: mpspjjxcpqpdppppph +4-17 t: tdtftttttttlttdtttwq +12-15 r: krrrrrmrrrrdrrmp +2-3 x: xczx +1-7 j: mjjgjjdjj +2-8 x: jmlxxxxxxxrxxxx +6-7 l: qntxbml +7-12 k: kkkkkkvkkkkfkk +2-7 z: nsgtlfdrsp +7-9 m: mvmmgmjmm +3-7 t: ttttttt +2-9 b: gbczjbbbblbbb +8-12 j: jjjjjjjljjjsj +9-11 h: dmrjmzdwhhhqz +6-10 j: jjjjjjvvjfcp +1-6 t: tqsznxwnnrnmjt +5-8 f: rpffhjnlkxplffhm +8-9 d: fddddddddddcdndddrdd +4-5 k: jkkfckkk +3-5 l: llglkqllll +3-5 k: zkzknkkk +5-7 d: nddddnq +9-10 j: vjgjlfcjjjfxjjmjrzwk +2-4 m: fdxm +5-7 c: cvqgkhvtbccc +7-20 j: rscsdsjzflbldrwqvkjj +4-5 p: pbxpppp +3-4 h: vnhhvlbtbqshhcsxhs +4-12 k: hkdkfxkknkkkkck +4-5 g: gggvq +4-5 h: zhtch +8-12 m: tpmmxzmgmmln +9-15 c: ccckfccjznpclnccxc +9-12 p: pppppppptcpfpppppppp +15-17 g: ttdlnvrknskcgvrgnm +7-12 r: rrrrtrtrrrrjlrrr +4-5 c: rccclxc +3-5 d: hbgzddt +4-5 x: cxxxx +3-4 k: kkpc +8-9 j: jjjjjjjrhv +5-6 p: ppcppp +14-15 h: hqhhhhhghhhhhlrhh +5-10 z: zzzzzzzzzzzzz +6-7 m: mhdmmzpmmmp +1-2 j: knjj +2-7 m: mmqnmjmtkz +2-3 j: jzjjjjj +12-15 g: gggggggggggngggg +6-9 h: hrtllxbqgcrf +3-4 c: ccccc +7-11 g: jclgcjgngkzggg +6-9 s: qwnvpsvbsmwqpqrst +17-18 k: kpdkzkkkkkkkkkfkksk +1-3 v: svnv +4-6 k: kkndkkkkk +12-15 z: zzzzzzzzzzzdzzzz +3-9 z: zzzzzzzzr +7-10 w: vgwwwcwwww +10-15 n: vgxnnnqnnnhwsbnxpnnk +2-4 v: fxhvh +11-12 h: hhjhhhnchhhhhhhh +3-9 z: vzzczzzkzbh +5-8 k: kskkkkktkk +3-7 s: sswssxt +4-7 g: rggdggg +4-7 c: zccpcccc +6-11 z: mzlrssckpzvzslcwzzzz +8-9 v: vvvvvvvvvvvvvv +1-4 f: fffffffffffffffff +8-10 f: tjfffmgrfl +3-5 k: kfwnp +6-7 t: pvtstmq +3-7 x: cvxkwxxgpjxskkvsxp +1-7 c: cctcckccccxc +1-3 g: vfxvfxmhpgg +13-16 m: fmjplfbgzzkrmcmv +3-6 l: llmllc +17-19 j: hjzjrbpjzjdjjvbzjjv +7-12 q: qqqqqqqqqqqq +9-13 n: nnnnnnnnqnnnxnnv +17-18 n: nnnnnnnnnnnnsnnnzh +6-15 f: rswffffffkfffkxfjf +3-6 v: vvvvvvv +9-11 d: ddddddddmdf +19-20 k: kkkkkkkkkkkkhkkkkktg +9-11 f: ffffqfffnfl +6-9 r: rrrrvrrrr +5-6 g: kgdfggggng +17-18 w: wwwwwwwwwwwwwwwwrm +5-14 t: tttttttttttttqtt +13-15 n: nnnbnnnnnnnntnn +4-13 g: rlhgcffsgshcg +4-12 z: mbfztgsbkscpqwl +18-20 p: mmflppmwzscjcgsxdddd +1-6 k: kkkkkkkk +18-19 n: qxkljbmdgsfsnknfhjb +1-2 h: nxnhh +2-11 f: fxffffffffxffffkffff +4-11 k: mqvktsksvkkwjbtvg +13-14 m: kmtmzqmmjmmmmmmwkm +3-5 t: ttswxtt +11-12 b: bbbbbbhbbblbbbb +9-10 w: lkhccgmwvd +2-3 t: thttl +12-13 b: bbbbbbbbbbblb +8-9 w: wdwwjbwblwww +4-5 h: hqphz +9-14 h: hhhhhxhhzhhhhht +9-10 x: xxxxxxxxxxx +4-7 m: dgltmmrdvmfmd +9-10 h: vltrhtgblsmlmnbvml +6-10 p: gkpppbppspp +8-9 c: scjdvbpwn +4-15 f: fpfnffffffffffhn +10-14 s: sssscswsssssss +4-10 j: jxdjfscnmgj +6-12 w: ksjdxwckwwwwwfzwsgz +1-8 j: jjjjjjjtj +1-3 d: kgpvfv +2-12 w: wwwtwwwvwwwwrwwwwww +4-6 f: fkbdftxqtxjwfvf +7-8 p: pppppppk +12-14 g: gmgvgffnggjkgggg +3-4 x: wxkgxxxx +3-7 n: nnnddmcjcrtnnfhnx +4-5 k: kkbmxkk +12-13 b: bbbkxbbbbbnbbtbbgb +9-11 h: hhhhhhhhhhhh +4-6 q: lmgvsfqxmqhvzqqt +13-15 t: ttttvtttttttfhm +1-3 x: hxlw +9-14 v: gjrvgrmvvvdcvv +5-15 z: zzzzczzzzzzzzzzzz +1-8 s: tssssssss +10-15 h: vhvhxthvhhhchhshfh +1-9 l: lllpllqklmlk +12-14 z: zjzzzzzzzhzkzz +3-8 w: wlzzflnmflwdnp +5-7 s: sgsdssss +5-13 h: hnhshhnklhqbhh +4-6 b: xsbbbxbbpbbbbb +14-16 c: cccjgccccccccmvc +5-11 r: nrrrrrrsdjrrk +6-12 s: gssjtjssfhjsssssss +5-6 j: jjjjrs +14-15 d: dddddddddddddddd +10-11 z: zczzzzzzzzzczzzzzz +2-4 q: qqqj +7-13 f: fffffhfffffff +13-14 q: qqqqqqqqqqqqjfqqq +8-9 w: wwwtcwqjw +5-6 x: xcrfxx +13-19 r: rdwfrghfrcnjcdjxtrmr +6-9 h: hhdhhhmlg +7-11 p: ppgpppgppdq +5-6 m: msmrtxm +14-15 j: kjkzrslzdzgrfjjjj +14-15 f: fqjfffwsffzhmff +15-16 d: ddddddddddddddvmdd +10-11 w: wslwwcwkzrvkg +1-3 v: kvvvv +6-12 q: qqqqqbqqqqqzqqqqqq +15-17 m: mmmmmmmmbmmmmmfmxd +1-10 t: sttttttttvt +8-9 q: qqqqqbqwq +14-15 t: ftgtttgftxttwtt +5-9 p: bzkpxnfnj +2-9 h: hhngqknrhd +10-11 h: hhhhbhvhqhhhh +5-8 v: dvstzxwtp +3-5 q: qmzpbmmwsqwzr +7-8 r: rrcrrrrr +3-4 w: wwwt +1-2 l: pzzl +4-13 h: trpbbrhnxnkbrkmgdk +4-5 v: fgxmv +5-11 d: dddgddxrdbmsddj +7-8 s: ssssssss +5-7 m: dfmksgsdmcbjrmk +4-7 s: tsqcssrzs +4-5 j: jjjjjjl +6-10 s: vkwshtpqjxslssxm +3-4 z: zzdfzz +1-5 m: fkhmw +6-11 f: twtfbvwbbsfff +2-9 f: fzwfjljxfxfkjfl +1-2 d: ssddd +5-9 k: kkzkscklbqtkkk +6-16 v: vjfbmnplzwtkxlvdqwn +5-8 g: ggnlkgdh +11-12 s: qbswtxnplqss +3-6 r: rrrrrr +10-11 w: wmhwswwwwfwww +3-9 c: tcncldghxp +3-8 q: wqtqgbpz +17-20 b: bbhblqlbggtsqcbcbbkt +7-15 f: fftffcxgfzttffmbrff +11-12 v: vvvlvrvvwvvqskvvxv +9-11 h: hdjcxnkhxhkqhh +5-12 l: llllqllllllnl +17-18 z: zbzzbzzzzzzzzzzptc +2-6 c: cgmrpjdhkcp +4-10 x: xxxjxtxvxxvx +11-15 s: sspsvsjsssskzbsss +2-4 z: rsfd +4-16 r: rrrrrrlkrrrrrrrrr +10-11 x: xxxxxxxxxpxxxxx +1-10 j: tjjsvjmxcb +4-5 t: tttbbtvttptttsthw +7-11 m: xmxzrnmksbm +2-6 t: vxdspsgtftlptvqft +6-10 k: kkkkmmdkkl +3-5 l: sssglkvfvdskkghdhkxs +4-6 m: mljkmwmnmm +4-7 l: lllllrh +5-11 x: bsmxjxxcmcxxx +1-2 t: tttt +9-11 p: xpppppppcppd +15-16 w: wxzxtwzjrmvkwzdwjt +13-15 l: pnhkxsqfrldsltltcf +4-10 v: vvvrvvvvvvv +6-11 m: qpbmsmbsxpmzg +1-7 m: tmmmlmcmmm +10-14 s: ssshsssscxssszs +1-7 q: tdqxmqkxgkt +2-4 m: bcmq +3-4 d: ddjd +13-17 r: rrrrrrrrvprrrrsrx +3-8 p: fjwbkcdt +1-6 k: gskwbl +7-8 z: wzgzhlzs +5-6 v: xvvvlmvvsvbsv +1-18 f: ffjcfbvrtftffxvfff +3-8 l: lbtjlllqc +4-7 v: vnvvdsvl +15-18 d: ddddpdddddddddcgdrdd +3-9 f: fffffffff +1-5 v: svvjvvlpvwmvvgc +13-14 z: zzzzzzzzzzzzmz +6-8 p: zcwptpgppfpppc +8-14 j: cjrzvhjjmdpzjjqs +16-19 s: sszsssssssssssssssss +7-9 r: rrrkrrrrrnrrmj +2-4 l: ldln +3-5 p: pppvprp +1-5 k: kkkkkk +1-4 g: ggxz +2-4 x: xwsgv +15-16 v: vvvvjvqvfsktgvlvvvv +17-19 x: xxxxxxxxxxxxxxxxcxx +1-8 m: mmmmmhmpmms +2-6 f: lffzdfsf +2-3 p: jphqlvzfmpnmt +2-11 g: ggrjthgdmggkgssq +5-6 r: rwgrrr +4-7 t: tttptmlthlfst +5-7 v: bhhdvhhv +8-11 n: nnnnnnnmnnnnn +7-20 r: rxrqlrwrnrsrrvbvtrrm +9-13 s: pfslddbsshsssrsrssls +3-10 q: vwbwhvdfqqvghjzf +9-14 b: bbbbbbbbbbbbbvb +2-3 f: pfff +3-9 r: trhrrrrrgrrn +7-11 z: zzzzzzzzzzzz +4-6 s: xwssttdqtc +7-9 t: ttzmqqdtqtt +6-19 g: gggggggggggggggggggg \ No newline at end of file diff --git a/data/2020/3.txt b/data/2020/3.txt new file mode 100644 index 0000000..5ad0204 --- /dev/null +++ b/data/2020/3.txt @@ -0,0 +1,323 @@ +....#..#.................#..#.. +#..#.#.#..#.###.#..#...#..#.... +.#....#......#.#.#..##...#...#. +.............#.#..#........#.#. +............##.#..#...##.###... +.....#..#......#......##....... +........##........#...........# +..................#..#......... +......#..#...#..#......###..#.. +.#....#...........#.....#.##... +..#..#.#........###..#....#...# +..#..##..#..#....#..#......#... +......#....................#... +.........#..#.................. +..#.#.....#......#.#....#...#.. +..#..........##.......##.##.... +#.......#.##.....#...#....#.... +####..............###.#....#... +....#........#.#..###..#...#..# +#.#......#...#.##....#.....#... +.......#......#.....#........#. +.##.........#...#.........#.... +............#....#.#........#.. +#..##..#....#...#.#....#....#.. +.....#....##..#................ +.#...........#....#..#.....#... +......#.#...#..###............. +#...#...........#..###.#..#..#. +...................#..#....#..# +....#...#...#.#.....#....#.##.. +.......#.......#.#.........#... +#..#.......#...#..#.#......#... +..##...........#....#..#....... +.#...............#...##........ +.....#..........#............#. +..#.......#.#.#...........#..#. +........#..#.#.#........#.#.##. +.###..............#.#.......... +.#....###.....#......#....#.... +............#.#......#..#....#. +.#.#.............#........##... +.....#..###....##.....#....#..# +.##....#...#.#.........#......# +....##.......#...............## +..........##.##.......#........ +......#....##.........##.#.#.#. +..............#....#..#......#. +......##.........#.........#... +.#...##...##....##..#..#.....#. +.#......#.###.#....#...#......# +.##.......................#..#. +....#......#.##..........#.###. +.#.....##..........#.#......... +....#.#.........#...#.......... +.#..##.#....##.......#.......#. +.........#.......#............# +###..........#.....##.#....#... +.......###.#....#........#...## +..#..#....#.......#.#.......... +.#..#..........#......#...#.... +.....###.#..#.....#...#..#..... +........#.#.#..........#.#..#.. +........#...##................. +...#.............#.#..#......## +......#......##......#...#.#..# +.#..#...##..........#...##..... +..#.#....####..#...#....##....# +.#..##.........#..##......#.... +#....#.#.........#............. +....###..............#....#.... +....#..#..#...###..#.#..#.#.... +....#.....#...........###..#... +....#.#.....#...#.....#.......# +..#.......#..................#. +#...................##......... +....#.#.#.#.#.....#.....#...... +...............##..#..##.#...## +..#.....#.....##.........#..#.. +...#...#.....#..##..##....#..## +..#.................#....#...#. +#....##...............##..#.... +..#.....#.....##.........##...# +..#.###..............#...#..... +.......................#....... +#...#..#.....##...#...#........ +..........#......#.###....#...# +..#.....#.##.#..#.#.......#.... +#.##...#............#.......... +#........#.#.#..#...#..#.....## +#............#.#............... +.#..#.......#.#.....#.#......## +.#.#....#........#..##......... +..#....#......#.#...##...#..... +##.....#......................# +...#.......#..##.....#........# +......##..#...............##... +.....#...#......##....#.#...... +.#...#....#.#.#........#...#.#. +.......#...#...##...#.......... +.##..#..##........##....###.#.. +..##........#........##........ +............#....#......#...... +.......#...........#.......#... +#.#......##.#...#....#.#.....#. +..#.#.#......##........#....#.. +#.#.####.#..#..........#....... +......................#.#...... +...#.......#.....#......#..#.#. +...#....#....##..........#..##. +......#......#....#.........#.. +.........#....#...#.#.........# +.....#...##.#.#.#......#.....#. +........#...#......#.#....#.... +.....#.........#.............#. +.#...........#.#....##.......#. +.#..#......#....#....#....#.... +#.......#.#.#.#..#.......#..... +..#...#...#......#............. +.....#.......#..#.........##..# +#..##...........#.#.........#.. +#..#..........#....#......#...# +#...#............#....##..#.##. +....#.#..#....#.........##..##. +.........#..........#.......##. +#...#........................#. +....#....#..#...........##...#. +.....###.###.#....#.....#.....# +.#..###..#...##..........#..... +#..#.....#...#........#........ +.#..##..#......#.....#......##. +#.....##........#.#..#....#.#.. +.#....#...#..#...............#. +..........#.#........#.....#... +..#.#.....#....#........#.###.. +...#..#...#.##.....#..........# +..#......##.................... +.....#...#....#..#....#.......# +......#............#....#...#.. +.#..#....#.....#........##..... +...#..#.......#...............# +##.#..#...............#.#..##.. +..#.........#.####.####........ +.........#...#.#........#..###. +..###.....#.........##........# +#..##.....##.#..........#....## +.#..#....###..#.....##..#...... +#...#..#........#.............# +#.#....#........#.........#.### +.....#....#.###.......#........ +...........#............#..#... +..........#.#..##......###....# +..##....#...........#....#....# +..#...##.#.......#.##.......#.. +.......#......#..........#....# +.........#..#..............#### +#.#...#...#......#...#..#...#.# +.#.#...#.....#.......#.#..##.#. +......##..##...#............... +....#....#...##.......#.#...... +.............................#. +..##...#.......#......#.......# +.#.##.##....#......##.......#.. +.......##..#....#.##.#.#....... +....#.............#......#..#.. +...#.........#....#..#.....#.#. +......#......#......#.........# +........#..#.#.....#.....#...#. +.#.......#.........#...#....... +#.#.##.....#...#............... +..#.......##.....#............# +.................##.#..#.....## +........#.###....#.......##.#.. +....#.#..#..#.......#.#....#..# +.#..#..#..#...##....#..#.....#. +...#..#...#..........#........# +...........##....#...##.#...### +.##..#.......##.....##....#.... +...#.#..#..#..##..#.....##..... +.#.....#..........#...#........ +.....#..#.#..#................. +..#.......#..#.....##.......#.. +............##.##.....#...#.... +#......#......................# +...#..........#...#...#..#..... +......##..............##.##.... +................##......#.###.. +.###...#..........#...........# +#....#...#.........##......#... +.............#...............#. +.###.....#......#...#.......#.. +......##..#.#.#.....#........#. +..#.#..........#.#......##..... +.#.#...#.#.....#.#..#.....#.... +.......#....#.#....##.......... +#.........#........####.#...... +...#..#.....#..............#.#. +...#..........................# +..##....#..#..........#....#... +..##.##.#.#.#......#..#........ +...#..#.#.#..#........#.......# +.....#.....#..#...#........##.. +..#..#...........#...##..##..#. +#.....#.....#..#..##........#.. +...#..............#......#..#.. +...#.#...........###...#.#..... +..........................#.#.. +....#........#..#..........#.#. +.#..#..........#.#..........#.. +....#.........#......#.#....#.. +..#........#.................#. +...#......#............#....... +...#.#...#..##....#........#... +......##.#....#.#......#....... +........#..........#........#.. +###..#.....#...#......#...###.. +..##...#..###............#...#. +#.......#..#..#............##.. +#........####......#........... +#..#..#...........#.......####. +......#..##................#... +.....#..##......#.#...#..#..... +......#.....##.....#.###....... +.#.....#.........#.......#.#..# +.##...........###...#....#...#. +.#....#..#....#.##...#......... +.................##............ +......#......#.............#... +.........##.#........#....#...# +..##....#.......#....##.#...... +.......#.#.#.....##..#.#....... +......#.#.#.#......#...#....... +....##...#.....#..#......#..... +..............#......#.##...... +#.##..###........#.##........## +#..#.........#.#......#.#...... +.#..###.......#................ +..............#...#..##.#.#.... +.....#..#........#...##.#...#.. +.#...##.....#........#..###.#.. +....#.....#...#........#....... +....#.##.....#....#............ +#.#..#....#....#............#.. +....#....#...#.#...#...######.. +.##.........#..#.....#.....#... +..##...............#........... +........##...#........#..#..... +...#................###.##..##. +.#..#..#..#...#.............#.. +#.....#..##.#....#.#......#..#. +...#...#...#.....#...#...#..... +..##.###..#..#...##...........# +.#.......##........#.#..#..#... +..#.......#.###................ +..#...#........##...#..#......# +...#...#............#.#......#. +..#...#.....#.#.#.#........#... +.#........#......##....##...#.. +...#..##....#.........#....#.#. +....#........##...............# +.###.....#...#..#.#.....#.....# +..#...#..................#...## +#..#....###.................... +...........#...#...........#... +........#.....#................ +#........#...........#........# +........#..#....#...#....#..#.. +#.#....#......#.......##....... +.#.....##..#...#......#.#.#.... +..#..##.#.....#...#.#......#.#. +.##....#...#....#......##...... +.#..#..#...##.##..#.#..#....... +.....#.#...........#.#........# +.#...#....#..................#. +...........#...#.........#..... +.#..###........##......#..#...# +.............###..##.....#.#..# +.#..#..........#......#........ +..#........#.#...#.......##.#.. +....#...........##......#...#.. +...........#....#.....#...#.#.. +...#...........#.....#.#..#..#. +......#.......#................ +##.......#.....#............#.# +.##.....#.#.#.................. +..........#.....##..#.#.#...... +.###.#.....##...#..#.#........# +#....#........##..#..#......... +.............#.........##..#... +......##.#...#.#.#....##....... +.#.......###.#.###..##........# +..##.....#..#.............#..#. +.#...#......#.#.............#.. +..##.#...#.........##....#...#. +...........#......#.#.......... +.....#..#...##.....#....#..#... +#...................##...#..... +..#.................#.....#.... +..............#..#.#...###..... +.......#........#...#.....#.... +.............#.......#...##..#. +.#...#..#...#..#.....#......#.# +....#..#..#...#...........#.... +.....#..#......##.##....#..#... +...#......#..#.#...#.....#..... +.......##..#.#.......#..#....## +#.#..#....##.##.#.#..........#. +..........#..........#....##.#. +....#.................#...#..#. +...#.....#..#...#.#...#..#..... +....#.#..###....#.............# +#....#..#.#..........#..#..#... +...#..#......#...#...#...#...#. +##....#.......#..........#..... +#......#.........#...#......... +##...##.#....#....#..#..#.#.... +....#..#.....#.##.#.......#.#.. +..##....##....#...#..####...#.# +..##..........#.............#.. +..#......#..............#...... +...#......#..#.#...#.......#... +.#............#....#...##.##..# +..##..........#...........#..#. +..#..##..#....#..#.#..#..#..#.. diff --git a/data/2020/4.txt b/data/2020/4.txt new file mode 100644 index 0000000..75b3941 --- /dev/null +++ b/data/2020/4.txt @@ -0,0 +1,1031 @@ +byr:1937 +eyr:2030 pid:154364481 +hgt:158cm iyr:2015 ecl:brn hcl:#c0946f cid:155 + +cid:279 +eyr:2029 +pid:675014709 ecl:amb +byr:1985 hgt:179in hcl:z iyr:2025 + +iyr:2011 hgt:181cm hcl:#341e13 pid:282499883 byr:1953 +eyr:2023 +ecl:brn + +eyr:2040 iyr:1984 pid:2371396209 byr:1951 cid:283 hgt:164cm +hcl:#623a2f + +iyr:2014 byr:1966 hgt:153cm pid:900693718 eyr:2020 ecl:gry hcl:#866857 + +eyr:2020 hgt:162cm +byr:1939 pid:900852891 iyr:2020 +ecl:oth hcl:#b6652a + +iyr:1956 +hcl:2385ac +hgt:167in +ecl:#9b82e8 +eyr:2003 +cid:214 byr:2012 pid:483285062 + +cid:146 byr:1938 hcl:#c0946f pid:136823471 +hgt:180cm iyr:2011 +eyr:2020 ecl:gry + +cid:100 hgt:187cm +byr:1973 ecl:blu +iyr:2020 +hcl:#888785 eyr:2030 +pid:386799181 + +ecl:#dbba4f +hcl:z iyr:2028 pid:193cm +byr:2029 +eyr:1962 hgt:113 + +cid:269 byr:1928 pid:604152679 +iyr:2017 eyr:2027 +hcl:#c0946f +hgt:189cm +ecl:blu + +pid:653548437 hcl:z cid:166 iyr:2011 eyr:1967 +hgt:162 ecl:xry byr:2019 + +byr:1979 ecl:hzl iyr:2018 hcl:#7d3b0c +eyr:2026 +pid:981366150 hgt:151cm + +pid:055334062 cid:272 eyr:2025 ecl:grn iyr:2016 hgt:159cm hcl:#a97842 byr:1989 + +eyr:2033 +hgt:170cm ecl:brn pid:#299cf2 hcl:#602927 byr:2004 iyr:2023 + +iyr:2020 cid:273 +pid:038972962 +hcl:#c0946f hgt:152cm +eyr:2021 ecl:blu byr:1986 + +pid:015622106 hgt:154cm iyr:2012 byr:1922 +eyr:2028 hcl:#9dc667 ecl:blu + +iyr:2017 eyr:2025 hgt:179cm cid:324 +pid:579870519 byr:1934 + +hcl:#6b5442 eyr:2021 +pid:104071480 ecl:brn +hgt:162cm cid:89 byr:1949 +iyr:2017 + +pid:388871409 cid:163 hgt:190cm ecl:amb eyr:2022 iyr:2019 byr:1963 hcl:#fffffd + +cid:190 byr:1968 iyr:2018 +hgt:155cm hcl:#6b5442 ecl:grn +pid:891458997 eyr:2030 + +hcl:z +cid:103 iyr:2026 hgt:171 byr:1979 +pid:076174078 +eyr:2031 ecl:#fc4638 + +hcl:#f8063e pid:684921958 ecl:gry eyr:2020 iyr:2011 +byr:1958 hgt:189cm +cid:131 + +ecl:gry cid:90 iyr:2010 hgt:165cm +pid:683095019 byr:1953 +hcl:#341e13 +eyr:2030 + +pid:000303662 +ecl:amb iyr:2014 hcl:#733820 byr:1964 hgt:184cm cid:149 +eyr:2027 + +hcl:#341e13 hgt:150cm byr:1999 eyr:2022 pid:950260967 cid:72 +ecl:grn iyr:2012 + +cid:159 byr:1987 +hcl:#623a2f pid:144877169 eyr:2021 ecl:brn hgt:164cm + +pid:759578668 +cid:235 ecl:amb hgt:154cm +eyr:2023 byr:1941 hcl:#fffffd +iyr:2023 + +pid:18101245 hcl:z hgt:172in iyr:1947 byr:1956 ecl:grn eyr:1964 + +eyr:1980 pid:#8d62b1 ecl:#3e8868 cid:235 +iyr:1978 hcl:#efcc98 +byr:2025 hgt:181in + +hgt:64cm hcl:3bc533 iyr:2019 byr:2015 pid:158cm eyr:2027 ecl:#1abbd7 + +eyr:2020 iyr:2011 +pid:739854643 byr:1941 hgt:179cm hcl:#602927 ecl:gry cid:330 + +hcl:#a97842 iyr:2011 hgt:167cm pid:527353688 byr:1927 cid:256 eyr:2026 ecl:grn + +iyr:2011 pid:350783151 hgt:168cm +byr:1961 ecl:amb hcl:#341e13 +cid:181 + +eyr:2025 hgt:160cm +ecl:brn hcl:#cfa07d pid:136929481 +iyr:2017 + +ecl:oth byr:1994 iyr:2020 hgt:162cm pid:578918570 eyr:2027 hcl:#fffffd +cid:325 + +hgt:63in byr:1925 +ecl:amb iyr:2014 cid:224 +hcl:#341e13 pid:208286938 + +ecl:#76434f hgt:97 +hcl:z eyr:1968 pid:#871dc8 iyr:1955 +byr:2007 + +byr:2011 +eyr:1962 hcl:9ac7b8 pid:6836105558 +ecl:#d7084f +iyr:2023 hgt:76cm + +eyr:2016 iyr:2030 hgt:107 pid:948192703 byr:2013 +hcl:b80af7 ecl:#d47439 + +eyr:2027 iyr:2017 +pid:#27d2a6 byr:1921 ecl:brn hcl:#c0946f hgt:59in + +byr:1982 hcl:#ceb3a1 ecl:brn eyr:2020 hgt:63in +iyr:2017 + +ecl:brn hgt:152cm byr:1962 +iyr:2013 +pid:381950515 hcl:#2afabd eyr:2020 + +hgt:158cm ecl:gry pid:252068098 +cid:281 eyr:2023 byr:1950 iyr:2016 +hcl:#ceb3a1 + +byr:1922 +hgt:187cm cid:74 +hcl:#a97842 +ecl:amb +pid:045338811 +eyr:2025 iyr:2019 + +hgt:176cm eyr:2022 iyr:2019 byr:1938 ecl:blu pid:610286298 +hcl:#a97842 + +iyr:2028 byr:2025 +eyr:2039 pid:72530856 ecl:#a819ad hgt:69 hcl:z + +iyr:2018 eyr:2030 +hcl:#8b1e1f ecl:hzl byr:1971 +pid:189005628 + +pid:531154383 eyr:2020 hcl:#733820 ecl:oth +hgt:72in +iyr:2016 +byr:1983 + +hgt:178cm hcl:#623a2f pid:562756202 +eyr:2020 +byr:1929 ecl:oth +iyr:2013 + +iyr:2013 byr:1983 pid:510998389 ecl:gry +cid:99 hcl:#a97842 + +ecl:gry eyr:2026 +cid:202 hgt:191cm byr:1981 +pid:414853225 +hcl:#7d3b0c + +hcl:#866857 byr:1951 eyr:2020 hgt:169cm pid:844496997 +iyr:2016 ecl:brn + +pid:083641628 iyr:2019 eyr:2030 +byr:1938 ecl:hzl hcl:#b6652a hgt:68in + +hcl:#18171d +byr:1981 +pid:425911593 cid:309 eyr:2026 ecl:brn hgt:168cm + +hcl:c84fda pid:#80d5e6 byr:1925 hgt:162cm iyr:2026 +eyr:2036 ecl:#62c166 + +pid:461660733 eyr:2028 +hgt:167cm ecl:hzl hcl:#cfa07d iyr:2010 +cid:183 + +eyr:1930 byr:2021 iyr:2016 pid:163cm +hcl:79428f cid:136 +ecl:amb + +hcl:#efcc98 hgt:176cm eyr:2022 ecl:brn iyr:2013 pid:541033681 byr:1952 + +hgt:59cm +ecl:#d9b0bc pid:#3ab4b4 hcl:7aa29f +eyr:2034 +byr:2011 cid:266 iyr:2004 + +byr:1991 hcl:#cfa07d cid:259 hgt:67cm eyr:2024 pid:631601343 ecl:brn iyr:2011 + +byr:2020 +ecl:gry iyr:1944 +pid:421649652 hgt:107 +hcl:6d8593 eyr:2026 + +ecl:blu +byr:1953 hgt:66in hcl:#888785 eyr:2021 pid:174284708 + +ecl:#8f2c20 +pid:27713962 iyr:2010 cid:149 byr:1952 hcl:#866857 eyr:2030 +hgt:186cm + +eyr:2023 byr:1989 ecl:blu +hcl:#18171d pid:480641 iyr:2020 +hgt:74in + +hcl:#efcc98 +eyr:2023 hgt:157cm byr:1968 +iyr:2013 +ecl:amb pid:436599087 + +eyr:2021 +hgt:175cm hcl:#efcc98 ecl:hzl pid:701245439 +byr:1943 iyr:2015 + +hgt:164cm pid:310546869 +eyr:2021 hcl:#b6652a ecl:oth iyr:2011 cid:181 +byr:2001 + +byr:2016 hcl:94f4b9 eyr:1922 hgt:155cm ecl:hzl iyr:2009 pid:83440078 + +iyr:2014 hgt:60in +eyr:2031 +hcl:#c0946f +byr:1948 ecl:grt pid:117909137 + +byr:1965 hgt:186cm iyr:2010 cid:117 hcl:#602927 pid:806868279 +eyr:2029 +ecl:grn + +ecl:amb hgt:187cm hcl:#c0946f byr:1935 +cid:139 iyr:2019 eyr:2023 + +pid:925865182 +byr:1952 hgt:158cm hcl:#619e03 ecl:gry eyr:2026 +iyr:2016 + +iyr:2012 hgt:73in +cid:199 +byr:1959 +ecl:hzl hcl:#fcd2f7 pid:268810283 + +eyr:2025 +pid:317239854 ecl:brn byr:1955 hcl:#fffffd cid:220 hgt:175cm +iyr:2015 + +ecl:blu +byr:1939 hcl:#3332c0 +iyr:2019 pid:832588457 eyr:2030 hgt:192cm + +hgt:64cm cid:326 ecl:oth byr:2025 eyr:2025 hcl:z iyr:2012 pid:0394683801 + +ecl:amb byr:1966 +pid:734257450 hgt:65in hcl:#fffffd iyr:2018 eyr:2025 +cid:287 + +cid:249 +eyr:2034 ecl:#7b7bf5 byr:2009 pid:171cm hcl:709fe4 + +hcl:d7c488 ecl:#b9bbb2 +pid:55277333 +cid:90 byr:2022 iyr:1978 +hgt:69cm eyr:1981 + +hcl:z +byr:1949 pid:057966198 eyr:1941 +iyr:2025 + +hgt:168cm ecl:hzl hcl:#866857 iyr:2011 pid:052204052 eyr:2030 +byr:1970 + +pid:318707043 eyr:2029 ecl:hzl hcl:#888785 +byr:1932 iyr:2010 +hgt:166cm + +hcl:z iyr:2010 ecl:oth byr:2006 cid:120 pid:#15d5ef eyr:2039 hgt:73cm + +hcl:96c534 hgt:193in eyr:2036 byr:2008 ecl:#090691 cid:109 pid:603339169 iyr:2027 + +iyr:2029 +ecl:utc +pid:5845500732 hcl:2a32b8 +byr:2009 eyr:2040 +cid:305 hgt:71cm + +byr:1994 iyr:2015 +eyr:2026 +hcl:#623a2f pid:678627790 +hgt:176cm ecl:blu + +byr:2005 hcl:z +ecl:zzz pid:#47729a eyr:2039 hgt:62cm iyr:1983 + +hcl:#cfa07d ecl:blu +iyr:2014 eyr:2025 pid:824483836 hgt:174cm byr:1933 + +hgt:70in +iyr:2010 cid:53 eyr:2023 pid:093704222 ecl:amb hcl:#a97842 byr:1945 + +ecl:brn hcl:#602927 byr:1986 eyr:2029 +pid:422160398 +cid:134 +hgt:156cm +iyr:2020 + +iyr:2014 hgt:187cm byr:1921 eyr:2022 ecl:amb + +pid:765750572 eyr:2021 +ecl:hzl +iyr:1997 hgt:66 + +iyr:2016 +ecl:blu +cid:335 +hgt:175cm pid:297297703 hcl:#b6652a +eyr:2030 + +hgt:64in hcl:#866857 pid:159cm byr:1972 +cid:321 eyr:2021 ecl:brn +iyr:2017 + +pid:884038003 +iyr:2016 hgt:188cm ecl:grn +byr:1928 eyr:2027 hcl:#341e13 + +pid:020315021 hgt:60in ecl:amb iyr:2018 +hcl:#602927 +eyr:2028 +byr:1935 + +byr:1946 eyr:2021 hcl:#efcc98 iyr:2015 +cid:52 +hgt:177cm +pid:841348804 + +ecl:gry eyr:2027 +byr:1959 pid:482204272 +hcl:#888785 +iyr:2013 + +hcl:#623a2f +eyr:2027 iyr:2011 hgt:189cm pid:767923916 ecl:hzl +byr:1987 + +hgt:152in hcl:#efcc98 ecl:hzl eyr:2030 byr:1971 iyr:1978 pid:499148724 +cid:194 + +pid:#87513f hcl:e2a5de byr:2015 iyr:2016 hgt:155cm eyr:2024 +ecl:gry cid:123 + +byr:1977 +iyr:2028 +hcl:#888785 pid:69801913 eyr:2026 hgt:165in ecl:brn + +byr:1938 hcl:#efcc98 hgt:154cm pid:621714851 eyr:1972 ecl:gry iyr:2014 cid:161 + +hcl:#a97842 +hgt:184cm ecl:oth pid:009682326 +cid:233 eyr:2023 iyr:2019 byr:1982 + +hcl:#ceb3a1 pid:700761574 eyr:2020 byr:1940 iyr:2017 +ecl:gry hgt:76in + +iyr:2017 cid:73 +ecl:hzl +hcl:#efcc98 pid:363441284 +hgt:177cm byr:1924 eyr:2028 + +hcl:#a97842 eyr:2023 byr:1989 pid:589573553 +ecl:oth +iyr:2017 hgt:162cm + +ecl:oth +byr:2001 hgt:167cm hcl:#18171d eyr:2028 iyr:2015 pid:253666913 + +byr:1943 ecl:amb +hcl:#888785 pid:163cm iyr:2025 hgt:76 eyr:2026 + +byr:1963 eyr:2030 +hgt:158in iyr:2023 pid:399153486 hcl:#733820 + +pid:43290252 hgt:167cm cid:302 iyr:2016 hcl:f81436 +byr:1992 ecl:gry +eyr:1922 + +pid:487300118 hgt:167cm hcl:#888785 +iyr:2018 ecl:oth cid:286 byr:1971 eyr:2021 + +eyr:2036 +hgt:94 +byr:2013 +cid:162 hcl:37408d pid:527721797 ecl:dne +iyr:2022 + +hcl:5e67df byr:1973 pid:48217944 hgt:65in eyr:2023 +iyr:2001 ecl:gry + +hcl:717ef8 eyr:1996 pid:154cm ecl:#e2c90e +iyr:2028 +byr:2009 hgt:184cm + +iyr:2015 pid:549968053 hcl:#efcc98 +hgt:151cm eyr:2025 +byr:1993 +ecl:gry + +hgt:165cm ecl:gry +iyr:2020 +byr:1927 hcl:#602927 pid:278946330 +eyr:2027 + +eyr:2031 +ecl:#b01aae pid:151cm +cid:188 iyr:2025 +hgt:60cm byr:2015 + +eyr:2028 pid:928740840 +byr:1931 +hgt:191cm iyr:2014 cid:305 +hcl:#6b5442 +ecl:oth + +hcl:#7d3b0c cid:283 byr:1923 ecl:amb +pid:781290431 iyr:2019 +eyr:2021 +hgt:191cm + +byr:2027 +pid:51702036 +iyr:2028 hgt:165in ecl:gry hcl:z +eyr:2036 + +byr:1971 +ecl:blu iyr:2012 pid:986042111 +eyr:2021 hcl:#888785 +hgt:68in + +hgt:183cm byr:2030 +iyr:2013 +cid:209 pid:989002507 +ecl:hzl eyr:2028 hcl:59c2ce + +ecl:gry iyr:2020 pid:895856989 hcl:#888785 +hgt:185cm byr:1964 eyr:2025 + +ecl:gry +hgt:183cm cid:97 hcl:#93be9b eyr:2021 +byr:1995 pid:668647173 + +hcl:#733820 eyr:2027 +byr:1977 pid:242773849 hgt:184cm iyr:2017 +cid:76 ecl:brn + +hgt:167 hcl:z byr:2012 eyr:2027 +pid:590438786 ecl:hzl +cid:101 iyr:1994 + +iyr:2015 +hcl:#888785 eyr:2024 +ecl:blu pid:279218875 cid:178 byr:1944 hgt:74in + +ecl:oth cid:334 pid:169599381 +hcl:#7d3b0c eyr:2028 hgt:172cm iyr:2010 + +eyr:2033 byr:1973 cid:333 iyr:2019 hcl:z ecl:utc +hgt:178cm pid:#e7abc0 + +eyr:2026 ecl:blu cid:264 byr:1998 hgt:177cm hcl:#602927 +pid:770052780 +iyr:2019 + +ecl:blu +iyr:2016 cid:232 eyr:2023 +pid:643597545 hgt:167cm byr:1986 hcl:#cfa07d + +pid:017818204 +iyr:2017 eyr:2028 hgt:168cm hcl:#602927 byr:1931 ecl:oth + +byr:1984 ecl:grn hgt:191cm hcl:#efcc98 pid:408382086 +iyr:2010 eyr:2025 + +hgt:158cm ecl:#25e195 byr:1929 pid:0367744553 eyr:1957 iyr:2017 +hcl:z + +hgt:168cm byr:1977 pid:006609828 +eyr:2024 +iyr:2015 +ecl:amb hcl:#b6652a + +pid:635167847 iyr:2010 hcl:#18171d hgt:163cm ecl:grn +eyr:2026 + +pid:423029177 byr:1995 +iyr:2014 ecl:hzl +hgt:185cm hcl:#c0946f eyr:2024 cid:230 + +pid:#3e3109 ecl:#a8a0aa iyr:2020 hcl:#733820 eyr:2021 byr:2010 hgt:179in + +iyr:2017 byr:1938 eyr:2022 hcl:#733820 ecl:amb hgt:157cm pid:162425330 + +hgt:160cm +cid:339 byr:1938 +hcl:#341e13 +eyr:2025 iyr:2015 +pid:562755634 + +cid:283 byr:1954 ecl:blu hcl:#ceb3a1 hgt:169cm iyr:2013 pid:616439723 + +pid:830940520 eyr:2022 +byr:1981 hgt:193cm hcl:#18171d iyr:2013 +cid:117 + +hcl:#866857 iyr:2019 ecl:hzl byr:1962 hgt:72in eyr:2020 + +byr:2015 pid:4530685490 ecl:#c7604e hcl:z +hgt:151 eyr:1972 iyr:1948 + +pid:0800674852 hcl:z +ecl:#2a275e hgt:61cm +iyr:1950 eyr:1938 + +iyr:2028 +eyr:1998 +pid:#c604ca +hgt:122 hcl:z +ecl:dne cid:160 byr:2018 + +hcl:z +cid:67 iyr:2029 +byr:1973 +ecl:amb eyr:2030 +hgt:66 + +ecl:hzl +pid:483557353 eyr:2021 +hgt:172cm iyr:2011 +hcl:#888785 +byr:1963 + +eyr:2030 ecl:brn hcl:#fffffd byr:1969 +hgt:161cm pid:632930895 +iyr:2017 + +iyr:2015 byr:2000 +pid:525557240 hgt:156cm eyr:2029 +ecl:brn hcl:#64bf85 + +byr:2007 +iyr:2012 eyr:2029 ecl:#7c1d6f pid:612320497 hgt:165in + +eyr:2026 ecl:grn cid:93 +hcl:#888785 hgt:134 pid:745552484 iyr:2019 byr:1999 + +byr:2001 pid:984678649 hgt:173cm ecl:oth iyr:2012 cid:345 hcl:#fffffd +eyr:2028 + +hcl:#341e13 pid:308853935 +byr:1972 hgt:160cm iyr:2012 eyr:2026 +ecl:amb cid:97 + +hcl:z hgt:151 +ecl:grn pid:132866718 +iyr:2021 byr:1932 +eyr:2024 + +eyr:2027 byr:1923 +ecl:oth hgt:174cm hcl:#733820 +pid:099185839 +iyr:2017 + +iyr:2017 ecl:gry byr:1941 +hgt:74in +pid:540930352 +hcl:#888785 eyr:2023 + +hgt:161cm cid:277 +hcl:#866857 +byr:1928 +eyr:2030 ecl:blu +iyr:2020 pid:358953579 + +hgt:155cm eyr:1930 +iyr:2015 ecl:utc +pid:163cm +byr:2008 hcl:#733820 cid:156 + +byr:1946 hgt:164cm +cid:234 iyr:2015 +pid:168804387 eyr:2025 +ecl:hzl hcl:#a97842 + +hgt:184cm +hcl:#7d3b0c byr:1996 cid:193 iyr:2011 ecl:amb eyr:2030 pid:940497049 + +hcl:#733820 iyr:2016 hgt:168 +eyr:2020 +cid:118 pid:9871436 ecl:gry + +pid:416683862 +hgt:162in +hcl:#602927 byr:2027 +eyr:2027 ecl:gmt + +ecl:#771e11 +iyr:2024 +cid:81 pid:741843390 +hcl:#866857 byr:2012 eyr:1964 +hgt:157in + +pid:720946735 +byr:2002 hcl:#18171d iyr:2026 hgt:70cm +ecl:brn eyr:2025 + +byr:1987 hcl:#623a2f +hgt:165cm pid:087526326 ecl:grn +iyr:2017 eyr:2021 + +byr:2014 hgt:193cm +iyr:2018 hcl:z +eyr:2027 pid:792398819 + +cid:233 +hcl:z ecl:#18002d hgt:174cm iyr:2027 eyr:1944 + +pid:142615460 ecl:blu eyr:2021 +hcl:#c88693 iyr:2017 cid:182 hgt:152cm byr:1966 + +hcl:z hgt:65cm +eyr:1944 ecl:dne byr:2029 pid:1066768764 +iyr:2015 +cid:149 + +hcl:z pid:25144284 hgt:152in +byr:2009 +cid:276 eyr:2037 +iyr:2010 ecl:gmt + +cid:88 hcl:ed6b8a ecl:xry hgt:178in pid:36832491 byr:2020 iyr:2012 eyr:1993 + +byr:1972 iyr:2009 pid:324213657 hgt:160 hcl:z cid:259 eyr:2021 ecl:grn + +hcl:#7d3b0c pid:164496070 eyr:2024 ecl:brn hgt:165cm + +pid:955035528 +byr:1967 eyr:2021 iyr:2015 hcl:#fffffd hgt:156cm +cid:237 +ecl:blu + +hcl:z +eyr:2038 iyr:1973 ecl:grt hgt:193in +pid:41385449 byr:2011 +cid:119 + +byr:1934 pid:713339056 hgt:157cm cid:250 iyr:2016 ecl:blu hcl:#866857 eyr:2026 + +hgt:186cm byr:2012 +eyr:2022 +iyr:2013 hcl:#733820 pid:226693031 ecl:hzl + +cid:118 pid:56750275 hcl:#cfa07d iyr:2028 eyr:2033 byr:1933 hgt:166cm + +byr:1973 +ecl:hzl hgt:167 hcl:z +iyr:2015 pid:70648423 + +byr:1929 +iyr:2012 pid:083005744 ecl:brn hgt:162cm +eyr:2024 +hcl:#cfa07d + +hcl:#623a2f hgt:174cm +eyr:2026 iyr:2020 +ecl:grn +byr:1981 + +cid:236 byr:1979 iyr:2013 ecl:amb eyr:2030 hcl:#6b5442 pid:768869830 + +hcl:#341e13 byr:1998 iyr:2020 +pid:857980686 +ecl:hzl hgt:175cm eyr:2028 + +hgt:169in +cid:305 eyr:2023 +ecl:gry pid:833031763 hcl:#ceb3a1 iyr:2015 byr:1974 + +pid:370671195 hgt:162cm +iyr:2018 ecl:oth byr:2001 hcl:#7d3b0c +eyr:2021 + +eyr:2026 +ecl:brn +cid:288 +hcl:#866857 iyr:2010 byr:1922 +pid:309109383 + +byr:1949 iyr:2015 pid:832774982 eyr:2029 +hgt:182cm +hcl:#b7144c ecl:amb + +eyr:2029 iyr:2020 +hcl:#c0946f +pid:953788134 +byr:1954 hgt:167cm + +pid:981508704 eyr:2023 iyr:2013 hgt:66in cid:68 hcl:#fffffd byr:1996 ecl:oth + +iyr:2011 byr:1932 cid:232 eyr:2030 +hcl:#c0946f +hgt:169cm pid:994763987 +ecl:hzl + +ecl:gmt eyr:2031 hcl:z +byr:2006 cid:86 hgt:59cm iyr:1998 pid:#349a7f + +hcl:#7d3b0c iyr:2013 pid:549500594 eyr:2024 byr:1971 ecl:oth +hgt:153cm + +iyr:2015 +byr:1940 pid:798926275 eyr:2027 +hcl:#cfa07d +hgt:158cm ecl:amb + +ecl:brn pid:077141823 +eyr:1945 iyr:2023 hcl:#602927 byr:1956 +hgt:152 + +iyr:2022 +byr:2007 +hcl:f87f81 pid:8404831740 eyr:2033 hgt:170cm +ecl:gmt + +iyr:1958 +ecl:dne hcl:840fbe +cid:55 eyr:2032 pid:19403738 hgt:170cm +byr:2029 + +ecl:brn pid:864743117 +eyr:2025 +hgt:188cm byr:1934 hcl:#623a2f +iyr:2011 + +iyr:2010 pid:877675472 hcl:#7d3b0c eyr:2027 byr:1954 hgt:182cm +ecl:oth + +iyr:2015 hcl:#a97842 pid:719192774 ecl:brn +byr:1993 +hgt:186cm + +eyr:2021 hgt:176cm pid:395161956 hcl:#602927 +ecl:grn iyr:2020 byr:1972 + +hcl:#fffffd hgt:167cm byr:1945 ecl:grn iyr:2017 eyr:2026 + +hcl:#6b5442 ecl:gry cid:208 hgt:155cm iyr:2010 byr:1933 pid:040244553 +eyr:2029 + +iyr:1960 cid:281 ecl:#8f7c45 hcl:z pid:11609858 eyr:1955 hgt:150in +byr:1985 + +hgt:150cm byr:2002 hcl:#fffffd +pid:337375886 iyr:2011 ecl:amb +eyr:2037 + +iyr:2014 ecl:oth hgt:155cm hcl:#866857 eyr:2025 pid:614859979 cid:338 +byr:1952 + +hcl:#623a2f hgt:156cm +iyr:2010 ecl:amb byr:1997 +cid:285 +pid:225568504 eyr:2020 + +iyr:2021 hcl:#ceb3a1 ecl:#d6db5a pid:185cm eyr:2020 cid:130 byr:2009 + +byr:1956 +cid:245 iyr:1954 ecl:dne hcl:#341e13 eyr:2040 hgt:71cm pid:838134394 + +eyr:2027 +byr:1994 ecl:amb iyr:2014 hgt:168cm +cid:278 +hcl:#602927 pid:758176176 + +hcl:#941519 ecl:gry eyr:2030 byr:1921 +pid:9477831046 +iyr:2018 hgt:189cm + +cid:339 hcl:#6b5442 +byr:1972 +ecl:oth +iyr:2014 hgt:183cm eyr:2020 + +cid:165 +eyr:1926 hcl:#6b5442 iyr:1956 hgt:65cm byr:2029 +pid:9240052093 ecl:xry + +ecl:grn +eyr:2027 +hcl:#fffffd byr:1975 iyr:2011 hgt:177cm pid:825090410 cid:121 + +byr:1934 +hcl:#733820 pid:133141914 eyr:2027 +hgt:66in +ecl:amb +iyr:2010 cid:262 + +iyr:1951 +ecl:#bb9733 hcl:89fcbf +byr:2018 pid:#13265f hgt:85 +eyr:1977 + +hcl:#324bed ecl:hzl hgt:155cm +iyr:2013 byr:1942 eyr:2021 +pid:758516520 + +ecl:gry +pid:#567782 iyr:2015 hcl:276a6d eyr:2028 +hgt:60cm +byr:2005 + +hcl:#18171d hgt:191cm eyr:2030 +ecl:grn pid:748729106 byr:1922 iyr:2017 + +byr:1984 hcl:#733820 eyr:2020 iyr:2013 hgt:64in pid:444446114 +ecl:hzl + +byr:2006 ecl:dne iyr:2029 hcl:z +eyr:2023 hgt:68cm +pid:131910019 + +iyr:1976 hcl:45191a eyr:2017 hgt:68cm +ecl:oth pid:153cm byr:1968 + +ecl:gry byr:1959 eyr:2023 pid:781945569 +iyr:2015 hcl:#ceb3a1 hgt:167cm + +hgt:151cm +byr:1959 hcl:#7d3b0c +cid:76 pid:069205247 ecl:gry eyr:2029 +iyr:2013 + +pid:055193304 +hcl:#fffffd +hgt:67in ecl:grn iyr:2011 + +eyr:2026 +byr:1975 +pid:681437369 +hgt:173cm hcl:#a97842 +iyr:2017 ecl:brn + +pid:298214774 hgt:158cm ecl:hzl +hcl:#866857 byr:1993 iyr:2013 +eyr:2028 + +hcl:#b6652a eyr:2023 pid:879418046 hgt:193cm +iyr:2014 +ecl:brn + +hgt:164cm +eyr:2028 hcl:fbd462 ecl:gry +iyr:2011 byr:1938 pid:029003659 + +byr:1999 hgt:171cm eyr:2024 cid:195 pid:041799326 ecl:gry iyr:2012 hcl:#a97842 + +byr:1963 pid:7471206322 iyr:2015 ecl:brn hcl:#623a2f hgt:72cm +cid:63 + +byr:1961 +ecl:hzl hcl:#efcc98 +pid:617022365 +eyr:2020 hgt:155cm iyr:2018 + +pid:385763432 byr:1977 cid:228 hcl:#733820 eyr:2020 +hgt:163cm ecl:grt +iyr:2015 + +byr:1979 hgt:186in eyr:2037 +ecl:dne +iyr:2025 hcl:d93e3e +pid:187cm + +iyr:2018 +cid:158 eyr:2020 +byr:1929 +pid:334374178 hgt:181cm hcl:z ecl:grn + +cid:135 ecl:oth hcl:#623a2f +iyr:2017 +eyr:2024 byr:1940 +hgt:66in + +cid:92 eyr:2026 hcl:#888785 pid:827526879 byr:1990 +hgt:186cm ecl:amb iyr:2014 + +pid:575519103 +iyr:2016 byr:1964 hcl:#7d3b0c cid:252 hgt:172cm + +hcl:#c0946f +ecl:grn hgt:75in +eyr:2021 pid:426544544 + +cid:171 byr:2004 +hcl:z +hgt:191cm eyr:2028 pid:#292b3b ecl:brn + +iyr:2016 ecl:hzl +byr:2007 +hgt:167cm hcl:#653b4c cid:124 eyr:2022 +pid:#27024c + +hgt:177cm byr:2025 +hcl:z cid:303 iyr:2016 eyr:2000 ecl:dne +pid:345555418 + +eyr:2040 +hcl:70fbf6 cid:318 +byr:2027 iyr:2022 +ecl:#3a037c pid:644624005 +hgt:62cm + +ecl:brn iyr:2016 hgt:150cm pid:680594195 cid:324 hcl:#602927 +byr:1944 + +hcl:z eyr:2022 byr:2020 cid:112 ecl:dne iyr:2029 +pid:#3a3560 hgt:153in + +cid:86 +ecl:gry byr:1972 hcl:#866857 pid:758976621 hgt:188cm + +pid:#850e8b eyr:2025 hgt:163in +ecl:#71e9e2 +hcl:#623a2f + +ecl:amb byr:1958 hgt:193cm +pid:343803154 iyr:2010 eyr:2029 cid:86 hcl:#602927 + +hgt:178cm byr:1987 ecl:blu hcl:#866857 iyr:2017 +pid:222443921 eyr:2027 + +byr:1964 iyr:2001 +hgt:180cm eyr:1945 +hcl:#fffffd pid:305189916 ecl:#ac3c49 +cid:142 + +byr:1979 hgt:166cm ecl:brn +cid:202 hcl:#5311ca eyr:2028 pid:874418818 iyr:2014 + +hgt:161cm byr:1987 ecl:grn hcl:#6b5442 pid:986096798 +cid:74 +eyr:2027 iyr:2019 + +byr:1964 iyr:1979 eyr:2022 ecl:#77ada3 +hcl:#733820 +cid:56 + +hgt:185cm iyr:2010 pid:214991920 eyr:2023 cid:236 hcl:#866857 ecl:brn byr:1965 + +pid:885169578 iyr:2010 byr:1948 ecl:hzl hcl:#18171d +eyr:2025 hgt:175cm + +ecl:oth pid:34655368 +hgt:186 +byr:1968 +hcl:2653c9 +eyr:2030 iyr:2024 + +eyr:2022 iyr:2015 ecl:gry hgt:65in byr:1994 +pid:766704860 + +hcl:#c0946f cid:104 iyr:2015 +pid:739274357 +ecl:#ef45c8 +byr:1960 hgt:61in eyr:2026 + +pid:849044092 eyr:2020 hgt:186cm iyr:2014 +byr:1991 hcl:#866857 + +hgt:159cm iyr:1950 +eyr:2021 pid:325442644 hcl:#888785 +ecl:gry byr:1986 + +eyr:2023 hgt:188cm +iyr:2014 +pid:945115479 byr:1979 ecl:blu hcl:#b6652a + +eyr:2024 +cid:274 pid:390115952 byr:1934 hgt:161cm iyr:2017 hcl:#b95b0d + +ecl:#a16ec8 pid:187cm hcl:z iyr:2029 hgt:170 +byr:2008 \ No newline at end of file diff --git a/data/2020/5.txt b/data/2020/5.txt new file mode 100644 index 0000000..62e932d --- /dev/null +++ b/data/2020/5.txt @@ -0,0 +1,761 @@ +BFBBBFBLRR +BBFFFFFLRR +BFBFBFFRLR +FBBBBFFLLL +BFBBBBFRRL +FFBFFBFRLR +FFFBFBBRRL +FBFBBFBLRL +FBFFFBFLLR +FFBBFBBLLL +FBFBBFFRLL +FFBFFBFLRL +FFBFBFFRRR +BFFFFBBLRR +FFBFFBFRRL +FFBFBFFLRL +BBFFFFFRLL +FFFBFBBRRR +FBFBFBBLLR +FBFBFBFLLR +BFBFBFFRLL +FFFBFFBRLL +BBFFFBFLRL +BFBFBFBLLR +FFFFBBBRLL +FFBBBFFLRL +FBFFBFBRLR +FFBFBBFLLR +FBFBFFFRRL +BFBBFBBLRR +BFBFFFBRRR +BFFBBBFRLL +FFBFFFFRRL +FFFFBBFLRL +BBFFFBBRLR +BFFBFBBRRL +BFFFFFBLRR +FBFFFFBLLL +FFBFBBFLLL +BFBBBFBRRR +BBFFFBFLLR +FBBBFFFRRL +BFBBBBBLLL +BFBFFFBRLR +FFBBFBBLRR +FBFBFFFLLL +BFBBBFBRLL +BFFBFBFRRL +BFBFBFFRRR +FBBFFFFLLR +FFBBBFFLLL +BFFBFBBRRR +FFBFBFBRRR +FFFBBFFRRR +FFBBFBFRLR +FBBBFBFRRR +FFBFFBFRLL +BFBBBFFRLR +FBFFFFFRLR +BFBBBFBRRL +FBFFBFBRRL +FFBFBBFRLL +FFFBBBBLLL +FFBBBFBLLR +FFBBFFBRRR +FFBBBBFRRR +FFBFBBBLRL +FBBBBBFLLR +BFBFBBFLLR +FFFBBBFRLL +BFBFFBBRRL +FBFBBFBLLL +FBFFBBFLRR +FBBBFBFLRL +FFBBFBFRLL +FFBBBFFRRR +BFFBBBBRLR +FFBFFBBRLL +FBFBFBBRRL +FFBFFBFLLR +FBFBFFBLLR +FBFBBFFLLL +FBFBBFBLLR +FBBFBBFRLL +BFFFBFFRLL +FFBBBFFRLL +FBFBBFBRRR +BFFBBFFRLL +FFBFBBFRRR +FBBFFFFRRL +BFBBFBFLRR +BFBFFFFLRL +BFFFFBBRRR +BFFBFFBLRR +FBFFFBFLRL +FBFBFBFLRL +FFBBFBFRRR +BFFFFBFRRR +FBBBBBFLRL +BFFFBBBRLL +BFFBBBBLRR +FFBBBBFRLR +BFFFBBFRLR +FBBFFBFLLR +FBFBBBFLRR +FBFFFFBRRR +FFBBBBBLLR +FFBBFFFRRL +FBBFFBBLRL +FBFBBBFRRL +BFFBFBFRRR +FFBBBBFLLR +FFBBFFBLRL +FFBBBBBRLL +FFFBFBBLRL +BFFFBFFLRR +BFBBBFFLRR +FFBFFFFRRR +FBBFFBBLLR +FBBBBFFRRR +BFBBBFFRRL +FBBFFBBLLL +FBFBFBBLRL +BFBBBFFLLR +BBFFFBBLRL +FBBBFBBLLR +BBFFBFFLLL +FBBBFFFRRR +BFFBBFFLRR +FFBBFFFRLL +BFBBFFFLRR +FFBFFFFLLR +FFFBFFBLLL +FFBBBFFRLR +FFBFFFBRRR +FBFBBBBLRL +FBBFBBBRLL +FBBFBFFLLR +FFFFBFBLRR +BFFFBBFLRL +FBFFBBFRLR +BBFFFFBRRR +FFFBBBFLRL +FBBFBFFRRR +BFFBBFBRRR +FFFFBBBRLR +FBBBFBBRLL +FBBFBFFRRL +FBFFFFBLRR +BFFBBBBLRL +FBBBBBFRLR +FFFBFFBLLR +FBBFBFBRLR +FBBBBBFRRR +BFBBFFBRLR +BFFFFFBRRR +FFFBFFBRRR +BFBBBBFLLL +BFBFFFFLRR +FFBBFBBRRR +BBFFFBFRLL +FFBBBBBLRR +FBBBFBFLLR +FBFFFFFRLL +FFBBFFBLRR +FBFFFFFLRR +BFBBFBFRRR +FFBBFFBRLR +FBBFFFBLLL +BFFBFBFLLR +FBBFBFFRLL +FBBBBFBLRL +BFFFFBFRRL +FBFBBFBRRL +BFFFFBBLLL +FBFFBFBLLR +BFFBBFBRLL +BFBFFFBRRL +FBFFBFFLLR +BFBFFFFRRL +FFBFFFBRLR +FFBBBBFLRR +BBFFFFBLLL +BFBBBBBRLL +FFBFBBFRLR +BBFFFFFRLR +FBFFFBBRRR +BFFFBFBRLL +FBBBBFFLRL +BFFFFBFLRR +FBBFBFFLRL +BFBFBFBLRL +FBBFFBFRLR +FBBFFFBLLR +FBBBBFFRLL +BFBBBFFRRR +FBBFBBFLLR +FBBFFBFLRL +BFFBFBBLLR +FBBBFBFLLL +FBBBBBBRRR +FBFBBFBRLR +FFBFBFBRRL +FBFBBBBRRR +FFBBBFBLRR +FBFFBFBLRL +FFBFFFBLRL +BFBFBFFLRR +FBFFFFBLRL +BFFBFFFLRR +BFBBBBFRLL +FBFFBBBLRL +FBFBFBBLRR +BFBFFFBLRL +BFBFBBBLRL +FFBFBFBLRL +BFFBFFBRRL +BBFFFBFRRR +FFFBFFFRLR +FFFBFBFRRL +FFBBBFFLRR +BFBBBFFRLL +BFBBFBBLLL +FBBBBFBLLL +BFFFBFFRLR +BFFBBFBLLL +FFBBFBFLLL +FFFBFBFLLR +FBFFBFFLRR +BFBFFBFRLR +BFFBBBFLLL +FFBFFFBLLL +FFFBFFFRRL +FFBFFFBLRR +FBBFBBFRRR +BBFFFBBLLR +BFFFBFFLLR +FFBFBBBRLL +BFFFBBBLRR +FFBFBFFLLL +FFBFFBBLLL +BFBBFBBRRL +BBFFFFFRRL +FBFFBFFLLL +FFBFFBFLRR +BBFFFFFRRR +FBBFFFBRRL +FBFFBBFLRL +BFFBBBFRRL +BFBBFFFRRL +BFBFFBFLRR +FBBBFFFLLR +FFFFBBBLLR +BFFBFFBLRL +FFBFFFBLLR +FFFBFBBRLL +FBFBBBFLLL +BFBFBFBRRL +BFFFBBBRRL +FFFFBBFRRR +FBBFBBBLRL +FFBBBBBLLL +BBFFBFFLLR +FBFFBBBLLR +BFBFFBFRLL +BFFFFFBLRL +FFFFBFBLLL +FBBBBFBRRL +FBFBFFBLRR +FFFBBFFLLR +FBFBFBFLRR +BBFFFBBLRR +FFFBBFBLLR +FFBBBFBRRR +FFFBBBFRRR +BFBFBFFLLL +FBBBBBFRRL +BFFBFFBLLR +FFBFBBFLRR +BFFBFBBLRR +FBBBFBBLRL +FBFFBBFRLL +BFFBBBBRRL +BFFBBBBRRR +BFFFBBFRLL +BFBBBBBLRR +FFBBBBFLRL +FBBBBFFLRR +BFBFFBBRLR +FBBFBBBLRR +FBFBFBBRRR +BBFFFBBRLL +FBBBBFBRLL +FFBFBFFLLR +FBFFFBFRRR +BFBFBBFRRR +BFFFBFFRRL +BFBFFBFLLR +FFFBBBBLLR +FBBBFFFLRL +FBBFBBFRRL +FBBFBBBLLR +BFFFFBBLLR +FBBBBBBLLL +BFFFFFFRRR +FFFBBBBRLR +FFFBFBFRLR +FFFFBFBLRL +FBFBFFBRRR +FBBBBBBLRR +BFBBBFBRLR +FBFBBBFRLL +FBBFFBBLRR +BFFFBBFRRL +FBBBBFFRLR +BFFBFFBRRR +BFFFBFBLLR +BFFFBBBRRR +BFFBBBFLRL +BFBBFBBLRL +BFFBBFFLLR +BFFFFFBRLR +FBBFFBBRRL +BFFFFFBRRL +FBBBFFBLRL +FBFBBFBRLL +BFFBFBFLLL +BFFBFBBRLR +BFFBFFFLRL +BFBFBBBLLR +FBFBFFBRLL +BFFBBFBLLR +BFFBFBBLLL +BFFBBFBLRL +FBBFFBFRRL +BFBFBBFRLR +FBFFFFBRRL +FBFBFFFRRR +FFFBBFFRRL +FFFFBFBRRL +BFFFFFFLLR +FBBFFFFRLR +FBFBBFFRLR +FFBBFFBRRL +FBBFBBFRLR +FFBBFBFLRL +FFFFBBBLLL +FFBBFFFLLR +BFBBFBBRLL +BFFFFBBRRL +BFFBBFBRRL +FBBFBBBRRL +BFBFBFFLRL +FBFFFBBLRL +FFFFBBBRRR +FBFFBBFLLR +BFFBBFBRLR +FBBFBBFLRL +FFBBFFFRLR +BBFFFBBRRR +FFBBBBBLRL +FBBBBBBRLL +FFFBBBFRLR +FFBBFBFRRL +FFBBBBBRRL +BFBFBBFRLL +FBFFBFFRLR +BFBFBBBRLR +FFBFFFFLRL +FBFFBFBLRR +FBFFBFBRRR +FFFBBFBRRR +FBFFFBFLLL +BFFBFBFRLL +FBFFBFBRLL +FFBFFBBLRR +FFFFBFBRLR +BFFBBBBRLL +BFBBFFBLRR +FFBFFBFLLL +FFBFBBBRLR +FFBFFFFRLR +FBBFFFBRLR +BFFFFFFLLL +BFBBBFFLRL +FBBFBFFLLL +BFBBFBBRRR +BFBFFBBRLL +FBBFBFBLRL +BBFFFFFLLL +FBFFFBFRRL +BFBBBFBLLR +BFFFFBBRLL +FFBFBBFLRL +FFFBFBBLLR +FBFBFFFLRR +FBBBBBBLLR +BFFBFFBRLL +FBFFBFFRRL +FFBFBBBLLR +FBBBFBFLRR +FFBFBBBRRL +FBBFFBBRLR +BFFFBBBLRL +FBBFBBBRRR +BFFBBBFLRR +FBBFFFBRRR +BFBFFFFRLL +BFBBBBBRRR +FBFBBFFRRR +FBBBBBFLRR +FBBBFFBLRR +FFBBBBBRRR +FFFBFFFLLR +BFBBBBFRRR +BFFBFBFLRR +BFFFBBFLLR +FBFFFFFLLL +FBBFFFFRLL +BFFBBBFRLR +BBFFFFBLLR +FBBBBFFLLR +BFFFBFBRLR +BBFFFFFLRL +BFFFFBFLRL +BFFFFBBLRL +FBFFBBBLRR +FBFFBBBRRR +FBFBBFBLRR +FBBBBBBRRL +FFFBFFBLRL +FBFBFBFRLR +FFFBBFBLRR +BFBFFBFLRL +BFBFFFBRLL +BFFFBFBRRR +FBFBBBFLLR +BFFBBBFRRR +BFBFBBFLRR +FBBFBFBLLL +FBFBBBFRRR +BFBBBBFRLR +FFFBBBBLRL +FFFBFFFLLL +FFFBBBFLLL +BFBBFFBRRL +BFBBFBBLLR +FFBBBBFRLL +FBBBBFFRRL +FFBBBFBRRL +FBBFFFBLRL +FFBFFBBRLR +BFBFFBBLLL +FBFFFBFLRR +FFBBFFBLLL +BFFFFBFLLR +FFFBFBFLRL +FFFBBBBRLL +BBFFFBBRRL +BFBFFBBLRR +FFFFBFBLLR +BFBBFBFLLR +BFBBFBFRRL +FFBBFBBLLR +FBFFBBFRRL +BFFBBFFRRL +FBFBBBBLLR +FBFBBBFRLR +BFBFFFFLLL +FFBBFFBLLR +FBFFBBFRRR +BFFFFFFRLL +FBFFFFFLLR +FFFBFFBRRL +FFBBFBBLRL +FBBFBFBLLR +BBFFFBFRRL +FFBBFBFLRR +BFBBFBFLRL +FBFBBBFLRL +BFFFFFFLRL +FFFBFBBRLR +FFBBFBBRLR +FBBFFBFLLL +BFFBFBBLRL +FBFFBBBLLL +FBBBFFFLRR +BFFBBBBLLL +FBBBFBFRLL +FBBBFBBLRR +FBFFFBBRLL +FFBFBBBLRR +FBFBFFFLRL +BFFBFFFRLR +FFBBBFBRLR +FFFBBFBRLL +BFFFFFFLRR +FBBBFBBRRR +FBFFBFFLRL +FBFFBFBLLL +FBBBFBFRLR +FBFBFBBRLL +FBBBFBBLLL +FFBBBFBRLL +FFFBFBFLLL +FBFFFBBRRL +BFFFBFFLLL +FBBFBFBLRR +FBBBBFBLRR +FBBFFBFLRR +FBBBBBBLRL +BFFBFFFRLL +BFBFBBFRRL +BFBFFFFRRR +BFFFBFBRRL +FFFFBFBRLL +FBFBBFFLRR +BBFFFBFLLL +BFBBFFBRRR +FBBFBFBRRR +FBFFBFFRLL +BFBFBBBLRR +FBBFFBFRRR +FBBFBFBRLL +BFFFFBBRLR +BFBFBBBLLL +FBFBFBFLLL +BFFBFFBRLR +BFBFFFBLLR +FFFBFFFRLL +FBFFFFFRRR +FFFBFFFLRR +FFBFFBFRRR +BFFFFBFLLL +FBBBBFBRRR +FBBBFFFLLL +FFBFFBBLLR +BFFFFFFRRL +FFFFBBBLRL +FBFBFBBRLR +FBBBFFBRLR +FBBFBFFRLR +BBFFFBFRLR +FBBFBBFLLL +FBBFFFFLRR +FBFFFBBLLL +BFBBFFFRLL +FFFBFBFRLL +BFFFBBFRRR +FFBFFBBRRL +BBFFFBBLLL +BBFFFFFLLR +BBFFFFBRLL +FBBBFFBRLL +FBFBFBFRRL +FFFBFBBLLL +BFFBFBFLRL +BFBFFBBRRR +FFFBBBBRRL +BFFFBBFLLL +FBFFBBBRLL +FFFBFBBLRR +FBBFFFBLRR +BFBBFFFLLR +FFBBFFFLRL +FBBBFFBRRR +FFFBBFFRLR +FBFFFFBLLR +BFFBFFFRRL +FBFBFBFRRR +FBBBBBFRLL +BFFFFFBRLL +FFFBBFBLRL +BFFFFFBLLL +BFFFBFBLLL +FBFBFFFRLR +BFBFFFFRLR +FBFBBFFRRL +BFBBFFFRLR +FFBFFFFRLL +FFFBBFBRRL +FBBBFFBLLL +BFBFBFBLRR +BFFFFBFRLL +BFBBFFBLLL +FBBFBBBLLL +FBBFBBBRLR +BBFFFFBRRL +BFBFBFFRRL +FBBBFBBRRL +BFBBBBFLRR +FFBFBBBRRR +FFFBFFFLRL +FFFBFFFRRR +FFBBFBBRRL +FFBFBFBLLR +BFBFFFBLLL +FBFBFFBLLL +BFFFBFBLRR +BFFBFFBLLL +BBFFFFBLRR +FFBFBFFRLR +FBFFFBFRLR +FFBBBBBRLR +FBFFFBFRLL +FBFBBBBRLL +FFBFFFBRRL +BFFFBBBLLL +FFBBBFBLLL +BFFFBFFRRR +FFFBBFFRLL +FFFBBBFRRL +FBFBBFFLRL +FFBBFFFLRR +FFFFBBBRRL +FFBBBBFLLL +FFBFFFBRLL +FBFFBBBRRL +BFBBFFFRRR +FFBBBFFLLR +FFBBBFFRRL +BFBBFBFRLR +FFFFBBFLLL +FFBBBBFRRL +FBBFFFFLLL +BFFFBBBRLR +FBFFBBBRLR +BFBBFFFLRL +BFBFBBFLLL +FBFFFFBRLR +BFFBBFFRRR +FBFBBBBLLL +BFFBFBBRLL +FBFBFFBRLR +BFBFBFFLLR +FFFFBBFRLL +BFFBFFFRRR +FBFBBBBRLR +BFBBBBFLRL +BFBFBFBLLL +BFBFFBBLRL +BFBFFBBLLR +BFBBFFBRLL +FFBFBBBLLL +BFBFBBBRLL +BFBFBBBRRR +FFFFBBBLRR +FFFBFBFLRR +BFFFBBBLLR +FBBBBBFLLL +FFFBBFBLLL +FBFBFFFRLL +FBBBFFFRLR +FFBFBFFLRR +FFFFBBFRLR +FFFFBFBRRR +FFFBBFBRLR +FFBFBFBLLL +FFBFFFFLRR +FFFBFBFRRR +FFBBFFFLLL +FBBBFFBLLR +BFBFBBBRRL +FFBBBFBLRL +BFBBBBBRRL +FFFBBBBLRR +FBBBFFBRRL +FFBFBFFRRL +FBBBBBBRLR +FBFFBFFRRR +BFFFFBFRLR +FFBBFFBRLL +BFFBBBFLLR +FBFBFBFRLL +BFBFBFBRLR +FBFFFBBLLR +FBFBFFBRRL +FBBFFFBRLL +FFBFBFBRLR +FFBFBFFRLL +FFFBFFBRLR +BFBFBFBRRR +FFFBBBBRRR +BFBFFBFRRR +BFBBFFBLRL +FBBFFBFRLL +BFFBBFFLRL +FFBFBFBRLL +FBFBBBBLRR +BFBFBFBRLL +BFBFFBFRRL +BFFFFFFRLR +FFBFFBBRRR +FFBBFBFLLR +FFFBBFFLLL +BFBBBFBLRL +FBFFFFBRLL +FBBBFBBRLR +BFFFBBFLRR +FBBBBFBRLR +BFBBBFFLLL +FBFBFBBLLL +BBFFFFBRLR +FBFBFFFLLR +FBFBBBBRRL +FFBFBBFRRL +BFFBBFFLLL +FBBFBBFLRR +BFFFFFBLLR +BFBBFFFLLL +FBBFBFFLRR +FBBFFBBRRR +FBFFFFFLRL +BFBFFFBLRR +FFFBFFBLRR +FBBFFBBRLL +BFBBBBBLRL +FFFBBBFLRR +BFBBBFBLLL +FBFFFBBRLR +FFBBFBBRLL +FBFFFBBLRR +FBFBBFFLLR +FFFFBBFRRL +FBBFFFFRRR +BFFBFFFLLR +FFFBBFFLRL +FFFBBBFLLR +BFFFBFFLRL +FBBBBFBLLR +FFBFBFBLRR +BFBBFBFLLL +BFFBBFFRLR +BFBBBBFLLR +FFFFBBFLRR +BFBFBBFLRL +BBFFFBFLRR +BFBBFBBRLR +FBFBFFBLRL +FFFBBFFLRR +FFBBFFFRRR +BFFBBBBLLR +BBFFFFBLRL +FBFFBBFLLL +FFFFBBFLLR +FBBBFBFRRL +FFBFFBBLRL +BFBBFFBLLR +BFBFFFFLLR +BFBBBBBRLR +BFBBFBFRLL +BFFBFFFLLL +FFBFFFFLLL +BFBFFBFLLL +FBBFFFFLRL +BFBBBBBLLR +BFFBBFBLRR +BFFFBFBLRL +FBBBFFFRLL +FBBFBFBRRL +FBFFFFFRRL \ No newline at end of file diff --git a/data/2020/6.txt b/data/2020/6.txt new file mode 100644 index 0000000..962a618 --- /dev/null +++ b/data/2020/6.txt @@ -0,0 +1,2093 @@ +lqhksfnerg +negsc +snage +engs +sneg + +ctfzrdbsapql +srldfatzqcpb +qsntlprfdbza +ldptswouqbxzafr + +ncjolhqfbp +gphonqbflxj +jepdmfhsqtonz +cqpihonjbgf + +abytu +ayu +ayu +uhodlay +uay + +kzx +xjwk +kxfhsdc +xjk +jkx + +rwxckmfn +xpcrkft + +ntaf +lacuserbk + +sxwdfmnpl +xpsmnwlfd +lpxmwsndf +xfdmlwnps +pwlnmdsxf + +gjvcfamuty +uqfmjgzatpvyc +yfcjtavghm +amqfjkpgvyct +svgcenmylotjafbx + +yepqgs +nsfqwghce +segvq + +mi +l + +eirgvuadbphcfsmyqnzotxjlk +qjeintsxubmfchoavpyzglrkd +fdjeyhbxgqclsnaimoptkvruz +iexuntjgmvfhqykspzbdclrao +hkjgpqlyaxdtcnvobmrzifuse + +i +nl +on +zbp + +aqpjnkeowivfbdhgr +pgiojefhvrqdawknc + +ugmsibf +msbigfu +csgfimubj +mfisbgyu +nsmvuigfbe + +demjnxcwbsri +aypesftqhzluko + +ecoxhl +lochex +chelox +xhcoel +cholxe + +xntubrdemhylsoi +gfjihrutbaewzpoxlys + +iuqkewnyv +uyptkn +nyupsk + +e +f + +bxrsntkjdwivceapq +cqbakpimsvetnjxwrd +knvxqwpasurcodietbj +xvrqbdjiwsacykpent +npsavtbqxijkewrczld + +pk +qpwsk +zpk + +qdchnb +qwxbcdhyir +jhbdcq +hnecdbq + +tdryep +th +vxg +bre +e + +f +d +d + +rspjhlqocixnw +xicoqjpnlwsh +lxinqphjoscw +jhlowspincxq + +qptb +btpq +guqhbtpd + +nzloqtcxmfgdbj +tcfdnbmzgqlxo +bqkgnxazecltidsoymf +wtzmxcpflbongdhvq +zfroctngqdbmxl + +kcyhtoendvzwafbmuj +eltymcnhaowbkdzvuf +sfkmvobdnteuychzaw + +wetrpdnqab +qrpkenabgwtdl +nahwtbrpdsef + +hqbtefp +xslnrykmvau +zghcqtojidw + +gqsyhx +vcent + +pazioqhkbd +qnopbmrahdyk +dxbmkhaqotp +vkhaofqcdp +kqpzhaod + +ytljngqdmxfck +tcjmkfnqlgydx +mfctkldxqpjuynvg +ldtfnycxqkmjg +lndxtfkymgjcq + +elrfwpobjxa +mtpfoarbsdj + +qigtfkwhobpvrcyzjuelnd +zcawdbogrhqnlieyufpkt +hqlzcnrikfypswutoxbegd +butncgpyovzrlfwideqhk + +ozdnivyjlwkp +venpbsuzlodyw +xfdqnzhwyopvltcr +aizdgmlywponv + +tqg +qt +rqs + +whm +vadomyl +wmnqh +gwmps +mcnu + +loav +zdl + +vsleinyhgo +kshrxvaymptw +cqsubvf + +ofd +fod + +pdjrszhgkfe +dfshzegk +edhzfkgs + +wti +ftcwib +iwtoz +wiut + +joebqrhgxvst +alkgprwetohvznqdmcb +vbrgeoqhyjtix +thrfequgbxvo + +ejx +ezfmnx +iderjhxc + +hfrqe +rjambh + +ytsdznehwg +dwrohqyvmscgjz + +xdatzefv +kcxwhypoanlr + +tbvdcol +tblcodv + +kg +kyg + +wxtezyuomkfdhspqjcn +xuoqwtphyckfjndzsme +ouzwykhqfcndmspejxt +ncemfpxsquzwyhdtkvoj + +dyfvmobrspnlguqaw +vhalnuwbypod +xjuawvbptnyohld + +bmytkawjszl +jaystwzmkl +msatlkwzjy + +vghcafoer +graecvhzo +uavrcoheg +rhgvcaoe + +nvjga +avgni + +g +a +g +g + +otxj +xtjqo +xtoj +jxntoy +ltqjxoa + +i +ji +i +ai + +w +pw +qutdebyio +w + +camyzohlbrgd +ygcalmzbrdoh +hrbycdzmalgo + +hgsltxvwmc +loxsntghvdc +sgxclthv +ctvxlshg +yxcvsgthlf + +ekizadqujopgx +zuagvjsirokwpx +uoykijgpqaxzc +gqkoixpyabdjuz + +qjygvhmlkdbzsifcwapuonxrte +desvfncpryjamkzhgutwoi +nifhzpertsgmycjwauokdv +swohafgetuyvicpzjrnmkd + +dybpeckxz +zucgeyipqdnl +wspyefczlnhd +prevcytzod +pheyjdwzc + +vbpfnedqyoawhcr +qrhcewvabfopdnmy +afrvebhdocniykqpw +foqeawrbvyhpdcn +ncwaphbvoqdrfey + +dwj +wdzj + +mr +rm + +idnkmufx +demjykixo +kjdmxiov + +ukbflqhomzrwastyjgpex +voqkyihjufmxswgrztbc + +tjn +njv + +ruika +irkua +wairlkszu + +rfgphcezl +zcreg + +mce +mec +qsme +mpeyf + +wjcxoftvnr +zomvfjnyw +nywjofvtm +kvwhfunajolsigq + +y +n +n +y +oe + +nvjkryifxace +ziehtgnjfbyrlvka +xnpvjismakeyfr + +g +g +g +g +g + +vwgnj +ivoj +ugjv + +myzrbf +ymczfr +vmwroxhfj +mlfdr + +ajqerszpbdyvoufwlmgcnitxk +wmzuftgdkavjrlibenpoqxcys +gnpmcsxlwzvfateqdirkyujob + +bnfudi +inay +iuncv + +trqlgxaeouy +uvoqxktwejyr +otqeuxyr +xogreiyqut + +ficdymxhuboq +dvwiuexfc + +zbhndug +ugsdwphnv +nugdwh +dughnjio +jgsyuhnd + +f +qrcvkfu +f + +yvf +yfv +yfv + +qtnc +cbqn +qnc +tcqn + +rxyhizgjklumv +fidxgjlkyhvr +avncxqrjbkgplhiy +zrdkxtlgjvyhi + +zjq +f +u +prgot + +hrgktyczsvnmiolewbf +gbowmtzvynferksichl +svgbrzmcolkieynfhtw +vehwtyrmgsnickfozbl + +lbucxdo +jlcgdxiu + +hvtafpnwzex +vnxzwftehp +hezxvnpfwt +tnehfxvpzw + +wbmyejlv + +gevqi +eigv + +unogtlfwvcyjdr +jcuvlftdgnwroy + +kdlm +pklw +klfay +lk + +somjqeuvdk +rzaqodkmvxsj + +g +g +g +g + +ceihqtrjpbxso +xohipcersbqj +pibhoxsrjeftcq +pbcqvosehrjix +icbqhosrpejx + +jvldsruex +oktrdvslcujx +xdurvpjsl +mxesdiujvrl + +rgcdsax +alqsbd +fdavzs +ijsutahdpye +baqdsz + +jxcabgpuimtekqsy +iduqmetsognaybxp +yqwaburlxps + +ulesvzoijdnpfhkacwmxbrty +zvxrdjskefbthimwnpayoul +ihdnlkxrpgwjbyevozuatmfs +yixowledpbvrthjkzufsmna + +hxibvuzdowysmflpkqjgacnr +bhctimdakyqlsvxwjprounfg + +xolza +axzl +xazld +lzoax + +vjpdirbzwmcyeqtfgoulhsk +shzpugkqlobmridvjyewfc +ybufwljhrcdegsiozqvkmp +ucnbokilmgvqwjzsfphaeryxd + +fzwiyxutvmdpbqkgrj +vmqludbfywzkxpijtg +qwkuzbfxyjmdptigv +pmgifdkjtbuzywvqx + +jvxwlqr +rqfjmsveoaw +ptbyhvjqw +qwkvjxg + +qnaxrduhpfvoyjbksgw +qjnwieaoxrsfpzdhk + +nrcmyksodhaztijuwblv +ksxrufaqhwbcnme + +sqx +sjbql +gsqnpwk +sq + +cpgkrjvqx +vgkpqcxjr +qjxckapvorg +xjvqckprg +gkqrcpvxj + +ojyziuqkbe +fvuceart + +qpgyknd +kfvyjtd + +phfmqdwxnuvgo +ouxdblhnmpgq +amxnpihkdusoqr + +run +dnx +vnc +ponklq +nur + +ixoytfqugrvjzcdwlhkbesmp +qalryztjxumhevifnobpcgdw +bothiuxqjzefcglpwymdvar +lgfjctrixhzudaqmebpvoyw +zlwfoituxvdpqbejhycgrm + +lrwvkj +jqwc + +awvyst +vtysa + +ugxys +x +x +x +x + +ismv +mfi +ihofm + +lijwuxcbrfotekpangzmsvyd +onmsdklutybrcqavegwfxijp +vnyarmslcetoxjkwuqgdipfb +jtrsdmfcnwiveyxlobhukgpa +msatlerkovjnfgdicuywpxb + +xmyen +enymx +myxen +xyemn +xymen + +oaustqdifyxepkrwh +kbcvmrjn + +uqv +qrvw +qv +vqtmu +qv + +lo +l +l +t +l + +aoqujemitxrszgnywvlc +lauzwhvr +akulrbdzwv +lrwdpvhauz + +jhwycgso +trshda +hs +sh + +oydxjrhetainw +nbwdxloetyiar +entcioxrwadyh +tonyexrpdawi + +bkdrqlnjwshi +nkidbwshrqlj +hrqvfldjinsbkw +khdbsnwrjilq +wjnipadhqkrlbs + +iusqovtzgajpndcwl +icstgzpurhbwqnvjoka + +hvwcue +chwnejv +cxwvath + +yroksb +tbs +swb +sb +sb + +vgixnfosrpetb +rwpndfevylg + +alytpjgxn +styjnkmegil +npfyakjgxlt +vzdhtlonwygbjq + +dp +dp +pd +dp +pd + +cav +i +ac +chzu + +kdv +fld +dwq +qds + +x +wanxl + +cfborlazjq +pfcloajrwqbz +btonaqzidlfrgjc +lcfjzqsroba + +o +n +kwl +s +f + +oylasgwtbnu +wstxylzug +ikjvuqwltyhgs +ultbomgwnsyax + +iotqspcwuhr +uplinrgcvhews +tduspchwrim +sihrcbquotwp + +qjdnkl +ldnqa +qdiknl +qdmnlv +sltxwbqnyd + +rnzmybp +zfnwc +nkazdqg +uzesvmjn +vzn + +emp +epm +pem +mep +mpe + +zxhde +demhz +jadu +ckrpvglsw + +pegn +gnep +pgne +engp + +hjkeoyrglpcitbva +ubtzsmvakoly + +u +b + +ksanb +sbk +sbk +skvxdb +bkfs + +z +z +zo +wuqmz +gz + +jwbyaugknetqrmoxh +axwnmobetrjqkdyuhg +omvjbyhngureqxkatw + +lqdiban +ifbazln +bafzinl +ifsbanl + +dovkxjylabqmtizw +pawvoxdmbyizqtj +vwubiayopgxcjzqdtm +qbjtvowdnzsixamy + +ykpusjaqclowb +kjsclynwqapobu + +zasypunbwitorjvmeglqxhkdcf +bvlirhqwgskftxedonymuapcjz + +ezxghwr +rzgxnewh +erwxzhgv + +nkfvplstgaybmhorewzu +lakohrfuznjdsqvgmywp +tuyshcfwkpabzomglrnv +clnsrgvowhufamykzp + +gbrln +pb +b +bsw + +ugcnskomzepjvxifrtwq +vpmkutefjzgwrbsoncxiq +cmkesufoxvqprwidzgntj + +rpsheibkg +bokwgjeh + +sfwgbm +jmfgbws +sgfumwb +bfmgws + +qfxderyt +ikwyln + +nsrjpbtxuvcfgl +putvcjfrdlsonxegb +vgbjtrlsfxcpun +lnbgctvmsjrxiufp + +cnawzexsdlubpm +bufnvdiaxptlcmse +lbyugexmdncspa + +xtvpcfsdzewmgaqb +felcxvdpiqnuymow + +xoqt +tqxp +gtfqjkvbu +tqa +qta + +jplacdti +apfliojtcb +ilcapjtk +atcjilp +tuipnjleyasc + +by +by +yob +by + +m +mp + +kenjrtgyvxiqwmazchfbup +dezplgiwyxrq + +ra +wa +aw + +qldpihtceyfoksa +cfsopeatkilynqrdv +xctlfjsoapiguyqdke +syiupwbjlacefokqdt + +sc +twsq + +ewc +ce +ce +ceiaf + +wnqfklygehirdxazup +vqgepxnsziakrw +eznxgqwpriak +irnqvzwkpaxbeg + +gu +au + +ujvidwoe +jekiubdov +idunjveo +eidvunjo +evinoyduj + +irytzs +jhnr +r +mnrjdb +rnv + +ug +gu +ug +ug +ug + +ifndua +rafyduin +ufhvnadi +dyguamifn + +aihwljuqkezp +wzaiqlp +iplagzwq +qwizmpla + +pvedlxntwjf +veldpnftwj + +xvglbzusemwqihn +vkdbefxrtimp + +spcwi +pjewi +idpyfb +ivp +pwzioj + +e +v +za +z +g + +mjvxyaguoc +qlhypbgw +qegylr +gklyrniw + +tv +l +l + +tmrzoldvsiu +owzpglsidvtmu +hmtjvlodxsubyzi +tuvilzdoksma + +yenvdmsagq +nihfbxaymg + +hcylanqdjmwrpixbo +qmwxybpcdalohn +mxwoazyphndcblq +wzbydamnoqxhcpl +mnlcadybwxpqoh + +miupnhbvj +uwpnbhxjqiv + +rqgta +awkxo +hzjsdb +awfu + +gskncrox +npulc + +iugzcseolh +gshioluezc + +jqbi +pjqi +bqj +njoqv + +eitjbcr +lpskbhyfrgxuzoiawv + +fejdyanx +cyfjekxdon + +gqzniubejkx +zjingbqhuexk +gknzxqcuijeb +uxjnzvergikybq + +wub +w +tarx + +ghpi +hiasg +ahip +yicd + +brysq +hkgfbnmacr +wprtbyqls + +lzfqot +qolfz +lqfzkor +qopmzdeflcx +toqflz + +vhremdpywtabokuilx +oryhfcztaixlvmdwup + +mwvqzngluxpcoeidk +ufcgnxjvmdzqikhlpw +lwvkxmciuepndgqz +glmzpqknieudvxcws + +ibrduwhlcxtsnpyvamekzjf +zmuevtynhpfskralcwjxibd + +rvdpebnwsiugmaqzxj +sidlbyakwrhvgmjoef + +q +q +q + +jofkmbcunaxet +elqngabhskmy +wkmxacenib + +ezfpogadrbulys +sbamgenyopfzu + +utagkdzvwoqemchb +zthluvqinacgb +qcjhvutilznabgy + +gduwcpj +bcxgdswpurj +pujdwmcg + +zxcagirye +uzrljgq +gwtzhfrb +dxrgze + +m +m +m + +mzf +zfm +zfm +mfz +zfmo + +ovdqzm +dmqvoz +zmdqvo + +bisprlndef +abvltrnkxd +rndbyl + +zmglywve +lyvegwz + +gtmrhpujzfqskoxavydie +typwiahqfnkdumvgoxresz +qzevtxauogipcksyrhfdml + +rcova +pjcab +upacjb +alc + +kzp +kpz +yz + +aivymnlux +myuxvlias +lmyauixv +viumlxay +iyavulrdexm + +smgjbqifah +bixgqsfmha +gsfqpnmhbilae + +yb +fy + +hfvcgd +hfkxcugdo +fhemcdgo +hgqfxdcy +begthcfrdqi + +gcwtjyluzvbsnrkopmeai +uzbtyinrqmofsjdkcvwega + +s +s +s + +dsvpg +gdp +ndegr +digp + +jiylzgcomkurtvqpa +yvmjtapingcruo + +auijcbwfqkxyshl +xwhcyqukbislfaj +yiqcljkxfasruhbw +cjlfkxyqwuhiasb +iayklqhucsjwxbf + +z +s +s +si + +brayc +cykwbra +rxbcva +ckdabrh + +rlfvawcqemhub +ctuqfsbaehm + +wbrzpyacqhi +bmpalyhzgrc +vbazpnyshk +hzyijfacbp + +wgjohx +sxhjgwo + +alhkqy +dahfmjlcy + +g +g +g +g + +lpsbynokvrudcgzqmtijhx +snuhqjlokypfrbvcmidxg +yhwbjmxopvirguqscnldk + +mwzsclu +yuwslzm +alsumwz + +maj +mjxal + +asgryznlwqjdfcpkehbm +knehsopgjdrqa +dnapshekjgvqr +ajendtksguqphr + +puznxmqsrtfdckvyijbalg +kcgytbmsxvrunqjzlfaip +yuikxpqtafvbnszgjmcrl +qkvagxcjslbytnifpumzr + +pglvfdihqa +pntwkbzeco +ep + +fpjmzitnlkvbd +qdbknvtjfilrzm +bijznpmlkdtfv +otbjfznlmvdhsik + +x +x +gx +xk + +b +qge +kycnzjw +pixlb + +cpzgaufikyltmbqvesoj +fusibtgoayvjqkpe +ovtfbasiekjugryqp +iubyfkjqvsoepgat +akofugibyqetpdsjv + +yirboahn +ozvha +oah +hoav +aehco + +hspqcxmjrbfyktngi +sptqigfklmadncxrvybh + +wdksztumeroaplhxqbyvjfin +tadflskombxyhqewjrvipzn +afrejdkobnhstqyilpmxvwz +vzynhwtafpdqlkjoirxmebs +kqjpwxrdvtizfmlhenysbao + +wonxesaihurqkymd +sxyqkmwdbnljrgueiao +whenxordaumqksyi +krouemnawsidyqx +rmsukxeyqonwida + +ckywportslfhdaqixvmjn +gkvlapqwfscjzruoy + +dtevjz +feqndzgxlvrtboc +zteuvkd +dszvuheti +tvdewz + +ehaqfwylskdbzvmpgt +vagbfeqwptszykhmld +arpzbsvmweytfugjdchqlk +gpmvqkawhdstzlyebf +btaesiwkvpfdhzymlqg + +hozuack +yuaznf + +ozvmpady +paydovmz + +gtmbeikr +breigtmk +gebkritm +kmibgert + +jm +m +ml + +frexcnogyv +nrvgyzilodxufeh + +btvzjpu +zjvtubap +btzujpv +jdeptzvub +bvzpjqut + +fkdcirhqt +cidhrkvfq +icqdhrfvk +vktrchidfq +ldqascokxrhfig + +tlgjdsoapmciey +gitdwojaeslmynpc +dtycalegpmosji +mydoitvespcjlga +gladijvyoctfsemp + +hwieujqgsxc +sgxebjhnuqwc +kqgcxwuhtvesj +qgecmsjxwhu +cwjqmugeshx + +qjwldfsri +iqgbedvlsfrh +ujnldiksfqmpyrw + +a +a +a + +spotgrheckwqan +shwvnatgpkqcyoerz +hcgasrpewnoktq +tkewponscaqhrg + +bjrsxkeiucnpoz +xrkczspbfeu +kqcuytdsrhvgplbxa + +at +ae + +x +x +v +x + +ds +dr +xemdno + +bvpdiocu +pzvhuyxci + +a +u + +d +d + +rplowaxqj +rqvowa +yrombawnsteq +acujvqowr +wrxloaupq + +s +k +k +k + +zmn +pfgseobimq +mdkza +mzyvd +kwhmr + +uqmtreg +twleuoqm + +hm +mh +whm +hm + +ydegnjfmkr +kvglzrfs + +kovgzemjf +kfyighomzelj +fkzxtueogjm +fxkjozgmue +zofbvejmgk + +zatrhwfjiopulke +satohknewfuipjlzrv +ekioxurwfljpztah +lgqzopirjkhwaufte + +xgbozwltnevidfrjuhcysk +gwsmtbkroyfinadpjhevcxq + +x +dx +mxzr +x + +kaof +kodf +ofk +fko + +rkuoazney +azyrqhtdo +yalobrzcw +xioayfrze + +cusyzmjhqloftdpakegin +lmnjipdyogkfahuqstcze +mneocjwgilpfxzthsayqudk + +m +hwyug +ymna +drptzijlc +wm + +pg +pg + +lrobg +orqfnsv +nqao +ojmwdecz + +jmxlkan +mlauxtj +olcwmeaxqjnk +jxbpmltar +mljxdiszyagfv + +sgriuf +ugmpoxvyq +dgzcuqwnh + +m +e +m +y + +dqkh +qdhk +hkdq + +znfwuiodcryqsmbpvejg +xnqwcjrdebpzmgovysi +pihmyewrcgnjzqvdabsuo +tqdsnjwzovrbcgeiamfyp + +meztpcwrsnojquxkg +mekurwxtncojsqg +ktjwqocsnugxerm + +eplzc +ezpcl +lzypec + +jmlrkseozxdunqf +dknseojuqzmlx +nsxqljdeukbmiz +sqmvnxubokizlejd +ctqsjmlkpwxzdunghe + +klqgxyrdt +toykrdqgl + +fwkzcuvmogxjrbelthi +zfhtgbqnomvwxku +fuozbthvwkqgmx + +s +x +x + +pefqgwzlimyjncouh +qaduwhmysxjopieftrl +ojfphequiwmnykl + +ksfb +sbkf +sfbk +fbqvks + +eomabw +wemarv + +ghldr +iw +yj +po + +lpihfvqersujkzyb +vjlfrebkiq +jblqifrevk + +zgr +zg +zg +zg +gz + +hfvydluaxgipsq +otqcbfurygsvempk +ljnqdswvgpufy + +gdxbjivufyolq +usmbflyxiqdv + +kpfy +yrfpk +fpyk + +oencuyp +uceypoi +cypueo + +orcfsjhvxaqynibuk +cbixuyokaqvrnhsjf +qcoyfjxukrsnhavbi +fkyuhbvojnsxaqrci +vrcshuqxyfniakojb + +mvgbupxhfesodnzwjcq +dcjxzqyuepnvhfbsmgo +kpmzrsfebgaovnhcxu +npxgivuohmwsjefcbz + +xaujvbesdqgnz +augndvqbcjfzs + +eoyhpnrcldjbqfvtiua +laoyrgqzbuhndxwpvf + +pxfnblvuzijhdq +hdkljpbz + +jphqxmkwgsycurietbadzfv +vweygbzashxqcdji +wcbjdniysvhqeaxgz +dqxwhvbozjaiysgce +zwxghisaqbycjevd + +bzqgcuerktfsavwhnoydi +rbvyqdsiokcuganewhtzm + +tom +to +to +to +to + +rkfmtd +vkcunbq +rk +kf + +pkmifxjtwnz +kmsfanxteihjp +nmaftdji +ybqimuvojntf + +ns +r +r +cvhm +wnias + +mfsxucvboyj +cxomsbyvfj +fsbvomjyxc +mjhcvysbofx +xmfjcybovs + +quxomeysk +uqtokyxsm +yqohxbkm +uyoqkaxm + +br +rbi +brj + +paqhkzmcwfrsiubtvjnx +zktiqbucarpwnxmyhj +aikmgtyucrjnpqwhxzb +jkabpxztcrwhuqnmi +mnxzwbaitqrkujhpc + +szbanq +oegiflu +as +qpt +t + +qsu +faqiu +qsui +uroqckjv + +ufkcrahgitoyj +xknlcfujagd +gjcklauf +jkwafgcu + +gdmxn +boiygrca +hgs + +ybwclvjfkumxso +nvmkyowedlijuxcfsb +lzmqscybvxfukro + +fiprvjsgcenhtmalxzqo +phcgntoqmeviajfxlszr +zsxqctnevliohrpagmjf +sqgipcuanmtxlrvjehozf +vlczqjgoipafetmrnhxs + +ypwbf +pfwytb +pyfbw +btfwpy +ybpgwf + +wrzhafdpmx +tzspfhxnd +dkfhzwst +bgelqjdcyfizvhou + +peubvwgaqiclkfdxmsyjtr +kuwpsvlxbjrditgmqeacyf +btxejuiqcrpgslmadvfywk +gwalifqpdusrvmtjybcekx + +qvmhulrt +wcpzdsifex + +pohq +hqop +opqh +oqhp + +en +iws +tpr +qs + +lvfinmpcbzx +hkcsblgz +tcgzbkl +cblzw + +rsjie +ewjribms +ijers + +knizwxycoqe +dnqocbk +pkgsanof + +hravnysejobwi +nlfusgdxtpqmaki + +kuvboax +kjvohxa + +qwm +mwq + +xowbafsitjz +lawm +aylmw +wanur + +qcdsao +dqaos +opaksqd + +p +p +p +p +p + +wl +d +l +n +rwa + +rdi +dri +dir +ird +rdi + +ei +e +e +e +e + +favclpbni +icbfalnpv + +uokmvxgafizceprnydsht +pkeaonhzruqxgvdfmscytil +fpxhsgcrutovzykaenimd +aszthkimoyxdufvcregpn + +fgibsklo +dsokalnriegjzbf +kvwlocuys + +icnortpmfwy +vnqrofpmycit + +yaiempzjbvkgnrfco +tozadmejkbgqfcsiw + +crgtkhbajzdmlp +epnsvfhib +pvbhn + +fglxtqrb +uigxvbft +wxflbyg +xbpzndhfegj + +jiolrqxfapuwdngybhktzcv +bnerupsdkflaqjzvitcmxo + +znjus +qzsjna +znjs +uzjsn +zjxnks + +snwj +w +w +pw +w + +i +p +cd +qs + +f +ofm +f +f + +dv +av +cxkuo + +rbxieoyczljtuqvm +gnphsrckqifzeljw + +h +h +h +h +h + +exghrdkbivqsmcwal +vhicaqdmlbrywxsgek +mrvcbskheadwliqxg +yrmckldaqeghisvwxb +algoshwxzmbrqjdevcik + +omtswbxujpvfzd +yntcbxwl +aqtxyewb +tiybhgrkxw + +srkxfjlgtpedai +digtrkjsxyapq +djxrgapiktse + +fzlagmcnjwbd +chlzbgunwfj + +qszghewkntxaomu +xekowrasunz +xnksoeawzu +wjxaoduensbzfk + +oacfnvhugekystwp +ftncaykejwhbomz + +abrcsi +xctrvokbsg +yaescfbr + +vjwbpsleug +ghlwjekpbusv +jpuelswvfbg +yjwpvbeslgu +uwjegbpsvl + +jkvqesnto +kjot +jkot +jotk +otjk + +elf +nlg +vzl +yl +yl + +rgbf +yrzmhbn +rbv +btrp +fzrb + +uyetaqw +wheyaut +ateuyw +awyeut + +swuaon +usnwao + +udcyfksltzeqb +bkuycfstdqzel + +gjmbfxieklohpc +oglhiuyxjekcmfpr +okelfixjpgmch + +zixq +ziq +qgiz +iezq + +sdbjl +vyjsdb +glkdnjb +hdefnbj +opjbmd + +id +d + +l +l + +dsnze +senzd +dzesn + +cegqnbzyhtm +ovaksmjwrdbpicxul + +fzjxbck +ndjp +heyrsgaqm +tzof +xvdn + +kxtimcjayh +syavicktmxh +mpxcfatihky +kyxitmcah +taxhmyickv + +xlwjibshfgontek +njeixkslbogfhwt +hiwlbojxnktgfes + +udsygjltikqrmv +tulkrgijvm +teumkjvlgir +vgjkulrimt +rghkmlvpejtiu + +oegptdlksbixhcwqavjun +jacqedxslunipgh +enjgslzcmxupaqdih +zcndhlaqsepxugij +nqajehxpilcdgsu + +shdieqwxflurjzby +wmtajifoqcupgnkb + +xwck +ao + +zkpfgvda +kdgya +qwnbiheos +jr +muxfjcl + +wamxpysnl +qpydmrnj +nmypsl + +k +xtvweuplk +aykc +kyf + +uryfiabjvelptkmnsxow +pfcaoerluxdtnwjqbskm + +wqenhkxgypc +dnltwxzaofs + +srxmeabuodzq +oaeqdrubmzk +kdeaurobzqm + +rfungq +gfunqr +rqgufn +nftougqr + +jqthdmlfacp +liqumfdcj +qtjmglcskaf +lrbzwqyxoenmfjc + +dgz +fj +x +g + +qnhwlzjoac +wlzoajhcqn +jwqzcanohl +mwlzqonhjac + +asqtlpwnrm +nparsmd +sarnmpf +nspamxr + +ot +ozt + +cuokwgjmhxzidteslq +ytfqwpieraosbjn + +czoxdyvhasnit +zaxiovcynhts +juoyhvxatbnsiz + +owsjger +oerwgjs +rwsojeg +ojswgre +ewjsocrgv + +cmexibr +yxbir +irbx + +nbgpodvsxmzfqiteuj +mnvtqbpxuszjod +jtsqpovbxndmzu +spxbzqmodvjtun +oumjnpsvztdbqx + +vrwytk +kglvfrw +zxwusdonikph +mwgkj +warykt + +rkdijofslupwqgtvaxhy +jzdsuprykoiwfvlxaq +wfboijqpurvslkxdya +skylwcmauoexpijdvqfr + +pe +ep +e +eb +e + +uzrmjehfktblxsivqpo +rovklpubzdsfiheqxmt +ekzuprvbtisxoflhqm +imuhkftvbrepzslqxo +fmrtxblpzeosuvikhq + +oauifsgwqbtvkzxjycpml +kqmgzxjbwcoyiuvlatfps +pwjmqczoytaxgksvbiful +yqwsazxilvutcmbjopkfg +qtfdpxkmbzwacsgoiluyjv + +ykcjafmxlbehuqtiwvs +zqxudnmysc +ngrpcymsqxu + +qlyp +plqy +pqly +lyqp +yqlp + +dtszxekb +sxrgbztedm +wsdnyxobqtl + +oqmxabwknfy +mxyofkbqwaj + +xfqrjeh +hfqrjex +qbfxrhje +xhjeqfr +oqhrixfjcse + +pjaoerbtkqslx +fxkelnithrspa + +tdrpcbksa +daksbcptr +abskdptrc + +clidq +fqkmil +bioje + +wjetbyvxhoumkp +bfyenwakpvotxm + +adlqkrzvg +vlzaqgdr +zqdvryagl +lzarqgvd +arvlfqgdz + +xfsb +xbfs +xgbzsjf + +pbtrqilmkfwv +mkwflp +pkwflm +wfklsmup +wpkflm + +qkjhnsczmueftdpbrgvixw +kdejtqhfswnbmupcgxvzri +ghxwkqupdtbvscrmnzfeij +fbmrgtkxjqevhywsdzcnupi +enskiwxgdtpbquchvrjfzm + +u +u +u +u + +fitcw +dfvzabyu + +saewhufodzlxbjcrqivygmpk +jqxiopdmyluwkctsfzegbavr + +zsdfpajrnvqk +bkaxzpsrndvqj +danpsvrqjykz +ujspgrndaovkzq +tljnarpzvekwqsdmhi + +wyuemtvkdixl +direvlmytpnowauk +eigvlkwumyctd + +jcrpnzalft +jacrutndpeixz +jczvantrepk +ergcajnptzv + +iagonws +awings +wgiasn +anwsig +sngaiw + +qogitsbfzmxk +kefoxbiqtzs +tisfzvxobqk +castjxbqpifozk +okbfsnidqtzxe + +gocwh +otmhge +ogsh +ogh +sgho + +e +y +ixmds + +rtkcgwfx +tjxzckfhgbiw +aenyvmcfg + +ngspdqwv +hziq +qx +yqtf +qjz + +exgirhuwyjt +rxtuepwhgjisy +xtwyghrjeui +getuyijwcxrh +ughtwyxiejr + +vdh +devh + +y +y + +m +m +mpv + +ptvlsonebiqjwraxckumhzgf +lqtvbihsowmgeunckzjfapxr +xglbifczovtwrpqnmajeuksh +eoivpuqfcbhtnagjwkrzsxml +nubpeofjwmqvxgircahksztl + +uyltcxrzjegmfwbkio +tgpxmuvsobicfej +esvgjxcfmuotib +xifognqmbtdujeca +bxhfmiejcgout + +djaz +dajn +edja +tawdh + +hyp +yhvp +ydph + +z +z +z +z + +jeixykzcrfd +zexmdjk +xkzdje + +auih +uial +uia + +ucwkeiadhgsr +ihswgkrudea +gwezhskryadnuoi + +lvhmuranicfqpbt +bqhrlotfnzgacmu +fhdcslqwymbrutan + +u +bj +pkb +pj +i + +yg +mlyxo + +q +p +u + +yibeaxjpkcwsfm +ixpekjcaswmyrfbl +ecmbikjptafwyzsxq +sxfacbmiekjwyp + +vyzhmwginr +scjl + +s +c +h +s + +qxhngcyijptvazme +gdiwlszqfbtvcpxnejhy +eghzaniykvpqotmjuxc + +yasrbcwju +rzbacjug +abuzkxjcr + +yjdgutwfreslm +jlutewfdgsmry +tglyjcefrswmud + +cf +m +mn + +zbwlnqrc +zwrpc \ No newline at end of file diff --git a/data/2020/7.txt b/data/2020/7.txt new file mode 100644 index 0000000..96d7723 --- /dev/null +++ b/data/2020/7.txt @@ -0,0 +1,594 @@ +light beige bags contain 5 dark green bags, 5 light gray bags, 3 faded indigo bags, 2 vibrant aqua bags. +faded purple bags contain 4 shiny green bags, 2 mirrored olive bags. +drab tomato bags contain 4 shiny coral bags. +mirrored crimson bags contain 4 bright maroon bags. +faded magenta bags contain 2 clear bronze bags, 5 dim brown bags, 3 striped cyan bags. +vibrant beige bags contain 1 pale silver bag. +plaid lavender bags contain 5 striped teal bags, 2 vibrant tan bags, 3 clear bronze bags, 3 light black bags. +posh maroon bags contain no other bags. +dotted yellow bags contain 4 plaid turquoise bags, 2 plaid lavender bags, 1 dotted violet bag. +posh fuchsia bags contain 5 mirrored gold bags, 2 faded bronze bags, 2 faded coral bags, 1 vibrant maroon bag. +dotted chartreuse bags contain 1 pale magenta bag. +muted beige bags contain 2 drab cyan bags. +dark olive bags contain 4 dull gold bags. +posh yellow bags contain no other bags. +dotted turquoise bags contain 5 striped indigo bags, 2 pale cyan bags, 5 light violet bags, 2 plaid silver bags. +wavy black bags contain 1 light cyan bag, 3 pale tomato bags. +striped plum bags contain 5 wavy maroon bags, 2 dim violet bags, 5 shiny tan bags. +shiny olive bags contain 5 vibrant aqua bags. +dim indigo bags contain 3 dull indigo bags, 2 light crimson bags, 2 dark magenta bags, 2 vibrant tomato bags. +drab tan bags contain 4 vibrant lime bags, 1 faded turquoise bag. +muted black bags contain 4 dull crimson bags, 2 posh tan bags, 4 shiny blue bags. +plaid red bags contain 5 clear blue bags, 3 plaid white bags, 4 dark magenta bags, 1 dark purple bag. +pale black bags contain 2 faded beige bags, 1 striped black bag. +striped red bags contain 3 vibrant green bags, 4 plaid blue bags, 2 drab brown bags. +dotted fuchsia bags contain 1 striped orange bag, 5 dotted maroon bags, 4 posh turquoise bags, 2 drab white bags. +plaid green bags contain 3 posh magenta bags, 4 dark black bags, 3 clear chartreuse bags. +dark violet bags contain 2 clear teal bags, 5 muted cyan bags, 2 shiny coral bags, 5 faded teal bags. +striped gray bags contain 3 bright salmon bags, 5 mirrored brown bags. +dull aqua bags contain 5 mirrored cyan bags, 1 mirrored olive bag. +light indigo bags contain 4 dotted salmon bags, 5 faded lavender bags, 1 dark teal bag, 2 dull purple bags. +dark aqua bags contain 1 clear tan bag, 5 muted turquoise bags, 3 drab orange bags. +drab orange bags contain 5 mirrored gray bags, 5 muted red bags, 3 muted gray bags. +wavy beige bags contain 1 light beige bag, 5 wavy coral bags. +dark gray bags contain 4 shiny violet bags, 3 dull tomato bags. +dull indigo bags contain 4 wavy coral bags, 3 dim plum bags, 2 shiny cyan bags, 2 vibrant bronze bags. +drab gray bags contain 4 drab silver bags, 1 vibrant bronze bag, 3 faded red bags. +dotted gold bags contain 2 faded silver bags. +muted chartreuse bags contain 3 clear turquoise bags, 5 muted turquoise bags, 4 dark crimson bags. +dark orange bags contain 4 shiny coral bags, 5 mirrored fuchsia bags, 5 mirrored teal bags. +light olive bags contain 4 shiny coral bags, 1 pale purple bag, 2 posh yellow bags, 5 shiny gray bags. +dotted silver bags contain 3 dotted purple bags. +muted bronze bags contain 4 striped silver bags, 1 posh plum bag, 1 muted blue bag, 5 shiny violet bags. +striped magenta bags contain 4 dark purple bags, 2 dull tomato bags, 4 mirrored lavender bags. +vibrant violet bags contain 1 plaid purple bag, 2 mirrored olive bags, 3 dotted bronze bags, 2 posh turquoise bags. +muted cyan bags contain 2 dotted crimson bags, 1 muted red bag, 1 plaid lavender bag. +striped black bags contain 1 plaid white bag, 5 pale cyan bags, 4 posh plum bags. +wavy blue bags contain 3 plaid plum bags, 1 shiny bronze bag, 1 shiny magenta bag, 2 vibrant cyan bags. +bright gold bags contain 2 mirrored indigo bags, 3 faded cyan bags, 3 posh beige bags, 1 faded indigo bag. +dim magenta bags contain 1 dark black bag. +dotted magenta bags contain 1 posh tomato bag, 4 striped white bags, 2 posh fuchsia bags, 1 mirrored tan bag. +light lime bags contain 1 mirrored fuchsia bag, 1 dull cyan bag, 1 mirrored chartreuse bag, 2 dotted beige bags. +faded crimson bags contain 1 muted blue bag. +dim tomato bags contain 2 plaid black bags, 3 striped black bags. +wavy tan bags contain 3 wavy gray bags, 2 striped indigo bags. +plaid beige bags contain 2 bright yellow bags, 1 dark gray bag, 5 dotted gray bags. +bright coral bags contain 2 drab white bags, 3 bright maroon bags, 2 dotted tan bags, 4 shiny salmon bags. +plaid tomato bags contain 3 clear white bags, 2 clear coral bags, 1 mirrored blue bag. +striped chartreuse bags contain 4 pale green bags, 2 muted crimson bags. +dim salmon bags contain 5 posh magenta bags, 5 dark red bags, 4 dull teal bags, 4 plaid gray bags. +plaid aqua bags contain 5 dark black bags, 1 light chartreuse bag, 1 dotted maroon bag. +faded silver bags contain 2 plaid silver bags, 1 shiny teal bag, 3 clear purple bags. +drab red bags contain 2 mirrored brown bags. +faded brown bags contain 5 shiny plum bags. +vibrant indigo bags contain 2 vibrant bronze bags, 2 wavy orange bags. +pale salmon bags contain 5 dull cyan bags, 2 wavy orange bags. +drab olive bags contain 1 striped beige bag. +vibrant white bags contain 4 shiny gold bags. +striped teal bags contain 4 faded green bags, 3 mirrored brown bags. +posh beige bags contain 3 posh yellow bags, 1 dull yellow bag, 2 posh maroon bags. +pale violet bags contain 3 shiny teal bags, 5 drab purple bags, 5 light turquoise bags, 4 pale tan bags. +light turquoise bags contain 4 dim lavender bags. +muted yellow bags contain 4 dim crimson bags, 2 wavy gray bags. +mirrored maroon bags contain 5 wavy silver bags, 5 dull aqua bags, 1 faded black bag, 1 faded cyan bag. +drab lavender bags contain 4 drab tan bags, 4 pale violet bags, 2 wavy indigo bags. +light salmon bags contain 2 dim magenta bags, 5 dull orange bags. +drab turquoise bags contain 5 shiny gold bags. +vibrant magenta bags contain 5 wavy maroon bags, 4 dotted gray bags. +clear violet bags contain 1 bright red bag, 2 faded plum bags. +clear beige bags contain 5 faded purple bags. +light silver bags contain 4 vibrant gray bags, 2 wavy gray bags, 4 drab salmon bags. +dark coral bags contain 5 bright plum bags. +pale white bags contain 3 posh tomato bags, 1 clear purple bag, 2 posh crimson bags. +vibrant yellow bags contain 5 posh gold bags, 2 plaid turquoise bags, 5 muted blue bags. +drab yellow bags contain 3 bright salmon bags, 3 clear blue bags, 1 faded indigo bag. +pale red bags contain 5 drab olive bags. +muted lime bags contain 1 vibrant fuchsia bag, 1 shiny coral bag, 2 mirrored violet bags, 5 wavy gray bags. +faded chartreuse bags contain 2 muted tomato bags, 5 dotted gray bags, 1 faded cyan bag, 1 dotted plum bag. +dark beige bags contain 3 dotted violet bags, 5 bright silver bags, 4 posh magenta bags, 4 faded fuchsia bags. +pale olive bags contain 3 plaid red bags, 5 posh maroon bags. +vibrant brown bags contain 1 plaid white bag, 3 dotted gold bags, 2 faded chartreuse bags. +bright orange bags contain 2 shiny magenta bags. +light coral bags contain 3 faded black bags, 4 faded coral bags, 4 plaid teal bags, 1 dull aqua bag. +dull silver bags contain 2 drab salmon bags, 2 shiny violet bags, 1 dull aqua bag, 5 faded black bags. +striped cyan bags contain 1 faded purple bag. +dim beige bags contain 5 wavy violet bags. +dotted coral bags contain 4 dim salmon bags, 5 clear beige bags, 2 shiny bronze bags, 2 light tan bags. +faded aqua bags contain 3 bright magenta bags, 3 posh olive bags. +mirrored tan bags contain 5 plaid silver bags, 5 striped gray bags. +striped beige bags contain 4 dull yellow bags. +wavy coral bags contain no other bags. +dark indigo bags contain 1 drab olive bag, 2 faded cyan bags, 5 dim yellow bags. +dark white bags contain 1 vibrant gray bag, 3 mirrored plum bags, 5 clear lavender bags, 1 shiny purple bag. +muted maroon bags contain 1 dim blue bag, 1 pale silver bag. +dotted gray bags contain 1 mirrored teal bag, 2 shiny gold bags, 5 drab gold bags. +dull tan bags contain 4 bright silver bags, 4 pale lavender bags, 3 wavy gray bags. +dark chartreuse bags contain 2 wavy tan bags, 1 striped orange bag, 1 posh salmon bag. +wavy gray bags contain no other bags. +drab brown bags contain no other bags. +dotted red bags contain 2 shiny yellow bags, 1 muted yellow bag, 2 pale lime bags. +bright black bags contain 4 striped gray bags, 2 dull yellow bags. +clear tan bags contain 3 shiny gold bags, 1 dark magenta bag, 5 bright aqua bags, 1 clear maroon bag. +dim silver bags contain 2 pale green bags, 3 clear orange bags, 2 pale white bags, 1 posh yellow bag. +mirrored chartreuse bags contain 1 wavy gray bag, 5 shiny magenta bags, 2 plaid purple bags, 2 dotted beige bags. +striped indigo bags contain 5 pale bronze bags, 1 muted blue bag. +dull plum bags contain 2 plaid red bags, 5 bright plum bags. +striped tan bags contain 3 vibrant aqua bags, 2 muted blue bags. +dotted teal bags contain 3 vibrant tan bags, 3 bright plum bags. +wavy white bags contain 2 muted black bags, 2 muted tomato bags, 4 bright gold bags. +muted lavender bags contain 3 clear beige bags. +striped salmon bags contain 1 faded coral bag, 1 clear green bag. +vibrant tomato bags contain 3 shiny violet bags. +dim olive bags contain 2 faded tan bags, 3 mirrored maroon bags, 3 dark crimson bags, 5 muted cyan bags. +dotted lime bags contain 5 muted violet bags, 3 light beige bags, 2 drab brown bags. +striped purple bags contain 2 dull gray bags. +wavy tomato bags contain 1 posh crimson bag, 5 vibrant tan bags, 3 bright maroon bags. +bright lavender bags contain 2 mirrored lavender bags, 4 shiny cyan bags. +faded turquoise bags contain 3 dull gray bags, 5 dull yellow bags, 5 dotted bronze bags, 4 vibrant aqua bags. +vibrant olive bags contain 4 dull violet bags, 5 dark coral bags. +bright cyan bags contain 3 bright turquoise bags. +pale aqua bags contain 5 shiny green bags, 3 clear silver bags, 4 muted tan bags. +vibrant cyan bags contain 2 vibrant maroon bags, 5 plaid magenta bags, 1 light black bag, 5 bright maroon bags. +striped lime bags contain 4 faded red bags, 3 mirrored brown bags, 4 dim plum bags, 4 wavy silver bags. +pale gold bags contain 5 posh plum bags, 1 dull tomato bag, 3 dark teal bags, 4 shiny black bags. +drab black bags contain 5 pale brown bags. +wavy maroon bags contain 1 dull yellow bag, 4 dim crimson bags, 1 dim lavender bag, 2 drab brown bags. +plaid gold bags contain 2 dotted gray bags, 2 pale orange bags, 5 mirrored brown bags. +shiny gray bags contain 3 faded lavender bags, 3 drab yellow bags, 3 wavy green bags. +bright beige bags contain 2 drab turquoise bags. +muted red bags contain 4 wavy gray bags, 5 mirrored lime bags. +bright violet bags contain 5 striped cyan bags, 2 pale blue bags, 1 clear plum bag. +plaid bronze bags contain 5 muted green bags, 5 posh gray bags, 1 dull silver bag, 4 faded black bags. +shiny gold bags contain 4 wavy green bags, 2 mirrored teal bags, 4 dark tomato bags, 2 faded beige bags. +plaid cyan bags contain 5 bright green bags. +posh green bags contain 5 mirrored beige bags. +dull purple bags contain 5 dull blue bags. +pale fuchsia bags contain 4 mirrored cyan bags, 1 faded red bag, 5 wavy green bags. +wavy olive bags contain 5 dotted olive bags, 3 shiny tan bags, 4 dotted magenta bags, 2 clear violet bags. +faded tan bags contain 3 plaid teal bags, 5 muted tomato bags. +pale blue bags contain 4 faded plum bags, 5 wavy green bags, 3 shiny violet bags, 2 faded black bags. +vibrant blue bags contain 1 shiny yellow bag, 2 clear tan bags, 5 posh crimson bags. +mirrored beige bags contain 5 shiny magenta bags, 3 pale blue bags. +dark maroon bags contain 4 bright green bags, 5 faded bronze bags, 1 faded indigo bag, 3 dotted teal bags. +plaid violet bags contain 4 posh yellow bags, 3 faded cyan bags, 1 mirrored lime bag, 2 striped black bags. +wavy indigo bags contain 5 dotted aqua bags, 1 drab salmon bag, 5 bright cyan bags, 4 dotted purple bags. +dull violet bags contain 1 vibrant tomato bag, 4 plaid blue bags, 5 shiny plum bags, 2 dotted aqua bags. +dotted salmon bags contain 5 plaid gray bags. +drab salmon bags contain 4 faded yellow bags. +light maroon bags contain 5 bright cyan bags. +drab cyan bags contain 2 dark beige bags, 1 dotted purple bag, 5 dark coral bags. +faded salmon bags contain 4 clear bronze bags, 4 muted green bags, 1 faded plum bag, 4 bright silver bags. +clear turquoise bags contain 5 shiny silver bags, 5 striped maroon bags, 5 posh chartreuse bags. +clear silver bags contain 5 vibrant fuchsia bags, 5 vibrant lime bags, 5 faded red bags. +muted magenta bags contain 3 dotted teal bags, 3 wavy orange bags. +striped aqua bags contain 4 bright green bags, 2 mirrored maroon bags, 5 muted gold bags, 2 pale brown bags. +drab magenta bags contain 5 vibrant tomato bags, 1 wavy violet bag. +clear yellow bags contain 4 drab salmon bags. +striped gold bags contain 3 dull salmon bags. +posh black bags contain 2 dim black bags, 4 plaid crimson bags. +drab fuchsia bags contain 1 drab turquoise bag. +mirrored fuchsia bags contain 5 shiny cyan bags, 4 dim crimson bags, 2 drab brown bags. +pale lavender bags contain 1 shiny lavender bag, 4 mirrored fuchsia bags, 1 wavy silver bag, 1 bright black bag. +light teal bags contain 2 vibrant fuchsia bags, 4 mirrored indigo bags. +light cyan bags contain 5 mirrored cyan bags, 1 faded fuchsia bag. +wavy lavender bags contain 1 faded gray bag. +clear purple bags contain 4 light red bags, 3 shiny teal bags. +mirrored coral bags contain 2 bright tomato bags, 4 drab fuchsia bags, 4 pale salmon bags, 1 wavy teal bag. +muted crimson bags contain 2 faded lime bags, 2 wavy plum bags, 5 bright gold bags. +plaid silver bags contain 4 wavy coral bags, 3 shiny violet bags, 5 faded beige bags. +posh orange bags contain 4 dim blue bags, 4 mirrored lime bags, 1 muted chartreuse bag. +dotted olive bags contain 4 dim plum bags, 5 bright aqua bags. +vibrant black bags contain 3 dark purple bags. +dim turquoise bags contain 3 shiny coral bags, 4 dotted indigo bags, 4 muted yellow bags, 4 dull bronze bags. +light gray bags contain 1 plaid silver bag, 4 faded purple bags, 3 faded green bags. +muted white bags contain 2 faded yellow bags, 4 dark white bags, 3 drab green bags, 4 dim yellow bags. +pale gray bags contain 4 pale brown bags, 3 dotted indigo bags, 1 mirrored indigo bag, 1 bright silver bag. +dull brown bags contain 1 plaid silver bag, 2 pale bronze bags, 3 dark magenta bags, 5 posh yellow bags. +bright indigo bags contain 4 dull red bags, 5 dark yellow bags. +dotted purple bags contain 2 muted yellow bags. +bright salmon bags contain 2 vibrant orange bags, 4 vibrant bronze bags, 4 shiny coral bags, 3 drab brown bags. +shiny chartreuse bags contain 1 dotted red bag, 4 wavy lavender bags, 2 muted aqua bags. +light brown bags contain 3 dark teal bags, 3 faded lime bags, 5 bright coral bags, 5 plaid red bags. +dim orange bags contain 4 clear lime bags, 2 plaid teal bags, 4 plaid lavender bags. +wavy teal bags contain 3 drab chartreuse bags. +posh purple bags contain 4 striped salmon bags, 2 mirrored black bags. +dim cyan bags contain 5 mirrored fuchsia bags, 5 dotted bronze bags, 1 light violet bag. +clear fuchsia bags contain 3 dim yellow bags, 1 pale yellow bag. +muted fuchsia bags contain 2 mirrored beige bags, 4 dull black bags, 5 mirrored red bags. +striped bronze bags contain 3 muted violet bags, 4 dull brown bags, 4 drab silver bags, 5 dotted maroon bags. +bright silver bags contain 2 drab gray bags, 3 wavy coral bags, 4 posh yellow bags. +light tomato bags contain 1 muted green bag, 3 bright indigo bags, 1 wavy blue bag. +dark red bags contain 1 dim brown bag. +vibrant fuchsia bags contain 1 shiny gold bag. +vibrant crimson bags contain 4 dull olive bags, 1 striped orange bag. +clear lime bags contain 5 dull crimson bags. +clear lavender bags contain 2 dotted gold bags, 3 light crimson bags, 3 mirrored red bags, 2 dark purple bags. +dark silver bags contain 4 muted silver bags. +posh white bags contain 3 light maroon bags, 5 dotted brown bags, 5 light yellow bags. +dark gold bags contain 4 muted plum bags, 4 posh silver bags. +dotted cyan bags contain 4 shiny magenta bags, 3 drab red bags. +plaid chartreuse bags contain 3 posh fuchsia bags, 4 light white bags. +dim lime bags contain 2 dull green bags, 5 posh magenta bags. +shiny indigo bags contain 5 light violet bags, 3 plaid orange bags, 2 drab turquoise bags, 5 striped beige bags. +bright tan bags contain 3 dotted fuchsia bags, 1 dim yellow bag, 2 mirrored violet bags, 2 plaid silver bags. +mirrored green bags contain 2 plaid turquoise bags, 5 bright turquoise bags, 5 light lime bags, 5 plaid white bags. +light purple bags contain 2 striped silver bags. +shiny violet bags contain 4 dull yellow bags, 1 faded red bag, 3 pale lime bags, 4 drab brown bags. +pale coral bags contain 5 drab indigo bags. +faded olive bags contain 4 posh tan bags, 3 striped orange bags, 3 wavy gold bags. +wavy cyan bags contain 3 mirrored teal bags. +wavy magenta bags contain 5 bright coral bags, 2 dark black bags, 1 muted beige bag. +wavy green bags contain 2 light violet bags. +shiny purple bags contain 5 wavy orange bags, 3 striped turquoise bags. +wavy orange bags contain 2 bright turquoise bags, 3 mirrored lime bags, 5 light violet bags. +shiny crimson bags contain 5 plaid olive bags, 2 mirrored turquoise bags, 3 posh lavender bags, 4 muted bronze bags. +dark tomato bags contain 3 posh maroon bags, 5 dotted purple bags, 1 shiny violet bag, 2 drab silver bags. +clear green bags contain 1 light black bag. +clear indigo bags contain 5 vibrant crimson bags. +muted coral bags contain 2 mirrored black bags, 4 dull silver bags. +clear teal bags contain 1 posh tan bag, 3 faded plum bags, 3 wavy maroon bags, 1 mirrored lavender bag. +shiny tomato bags contain 1 clear tomato bag, 5 bright gray bags, 1 striped cyan bag, 5 vibrant lavender bags. +shiny silver bags contain 2 dim violet bags, 2 striped teal bags, 2 mirrored beige bags, 3 drab turquoise bags. +posh indigo bags contain 5 drab fuchsia bags. +dull lime bags contain 5 vibrant cyan bags, 5 vibrant chartreuse bags. +mirrored lavender bags contain 2 drab gold bags, 5 vibrant aqua bags, 1 plaid teal bag. +faded coral bags contain 2 clear tan bags, 4 faded green bags, 2 faded fuchsia bags, 3 drab brown bags. +mirrored purple bags contain 1 plaid black bag, 5 dim teal bags, 4 muted bronze bags. +bright lime bags contain 1 light lavender bag. +pale turquoise bags contain 2 striped silver bags, 2 muted tan bags, 4 vibrant lime bags, 4 faded lime bags. +posh cyan bags contain 4 bright salmon bags. +wavy bronze bags contain 1 drab olive bag, 5 plaid orange bags, 1 wavy silver bag, 2 faded bronze bags. +light tan bags contain 3 faded violet bags. +mirrored brown bags contain 2 pale lime bags, 2 dull gray bags, 5 dotted bronze bags. +posh lime bags contain 4 dotted beige bags. +drab maroon bags contain 5 wavy gray bags, 4 posh magenta bags, 2 dull gray bags. +light yellow bags contain 4 striped lime bags, 3 faded purple bags, 1 plaid silver bag, 2 muted violet bags. +vibrant silver bags contain 3 posh purple bags. +mirrored plum bags contain 1 muted salmon bag, 4 light salmon bags, 2 faded brown bags. +mirrored gray bags contain 1 wavy silver bag, 1 dotted maroon bag, 4 posh maroon bags, 3 muted blue bags. +light blue bags contain 5 striped magenta bags, 2 dim plum bags, 4 muted tomato bags. +dim violet bags contain 4 dotted maroon bags, 1 pale lime bag, 2 mirrored brown bags, 2 bright salmon bags. +dotted violet bags contain 2 dim maroon bags, 3 faded beige bags. +shiny red bags contain 1 wavy gray bag, 3 clear bronze bags. +dotted black bags contain 4 pale fuchsia bags. +mirrored gold bags contain 3 pale cyan bags, 1 dark green bag, 5 plaid white bags, 1 drab black bag. +shiny plum bags contain 1 posh crimson bag, 5 bright yellow bags, 1 dull indigo bag. +dotted brown bags contain 5 dotted black bags, 2 clear yellow bags, 1 mirrored violet bag, 4 shiny gold bags. +faded orange bags contain 3 posh indigo bags, 3 bright magenta bags, 2 light teal bags, 2 bright turquoise bags. +mirrored tomato bags contain 1 dim bronze bag, 1 bright salmon bag, 4 dark purple bags, 4 light olive bags. +dotted orange bags contain 3 faded brown bags. +dull red bags contain 1 plaid black bag. +dim purple bags contain 3 vibrant purple bags, 2 dim cyan bags, 3 clear tan bags, 5 wavy beige bags. +dull coral bags contain 5 drab chartreuse bags. +dull black bags contain 1 vibrant bronze bag. +pale crimson bags contain 4 striped brown bags. +faded green bags contain 2 shiny gold bags, 5 dim maroon bags. +shiny bronze bags contain 4 dull turquoise bags. +dotted tomato bags contain 3 clear teal bags, 2 wavy crimson bags, 4 clear tan bags. +pale purple bags contain 2 shiny aqua bags. +bright teal bags contain 2 drab salmon bags, 4 dim yellow bags, 1 drab maroon bag. +pale tomato bags contain 3 striped black bags, 2 mirrored fuchsia bags. +striped silver bags contain 1 wavy turquoise bag. +dim gold bags contain 5 dim crimson bags, 4 dim violet bags, 2 striped bronze bags. +light orange bags contain 2 mirrored turquoise bags, 5 bright crimson bags, 4 pale tan bags, 1 drab teal bag. +wavy salmon bags contain 3 plaid orange bags, 2 faded cyan bags, 3 clear purple bags, 5 dotted orange bags. +vibrant chartreuse bags contain 2 plaid red bags, 3 dull aqua bags, 1 mirrored brown bag. +striped orange bags contain 4 dim crimson bags, 2 wavy coral bags, 1 dim plum bag. +light black bags contain 2 clear bronze bags, 2 posh cyan bags, 1 vibrant fuchsia bag. +dark salmon bags contain 2 vibrant tan bags, 1 shiny chartreuse bag. +drab gold bags contain 4 dim crimson bags, 2 light violet bags, 1 vibrant orange bag. +bright bronze bags contain 3 clear green bags. +dim coral bags contain 3 dark red bags, 5 dim lavender bags. +dull orange bags contain 5 drab black bags, 1 dotted violet bag, 3 dim blue bags. +clear brown bags contain 2 dark red bags, 1 dull turquoise bag, 1 mirrored red bag, 5 wavy beige bags. +muted tan bags contain 3 dotted teal bags, 3 mirrored cyan bags, 5 faded fuchsia bags, 2 drab white bags. +faded lavender bags contain 1 muted silver bag, 1 mirrored brown bag, 3 dark tomato bags, 3 pale lime bags. +dim bronze bags contain 1 bright yellow bag. +wavy lime bags contain 4 bright aqua bags, 5 wavy silver bags. +dark black bags contain 4 dark green bags. +faded lime bags contain 1 faded lavender bag, 5 plaid gray bags, 3 posh turquoise bags, 5 faded bronze bags. +drab lime bags contain 1 light cyan bag, 4 dotted red bags. +dull olive bags contain 3 dim plum bags, 3 pale lime bags, 4 posh yellow bags, 5 shiny violet bags. +clear black bags contain 1 faded fuchsia bag, 3 posh aqua bags. +dark crimson bags contain 2 dotted beige bags. +faded cyan bags contain 5 clear blue bags. +pale tan bags contain 4 posh aqua bags, 5 dim yellow bags, 2 light chartreuse bags. +light red bags contain 3 faded fuchsia bags, 5 dotted purple bags, 2 mirrored indigo bags, 3 shiny violet bags. +muted olive bags contain 5 posh tan bags, 4 faded tan bags. +plaid yellow bags contain 4 faded coral bags. +clear tomato bags contain 3 plaid salmon bags, 2 faded lavender bags. +vibrant maroon bags contain 3 muted lime bags, 4 vibrant fuchsia bags, 4 drab yellow bags. +posh red bags contain 5 posh cyan bags, 2 faded black bags, 1 bright crimson bag, 5 wavy plum bags. +mirrored silver bags contain 5 dull aqua bags. +wavy yellow bags contain 3 faded white bags, 1 dotted fuchsia bag. +light plum bags contain 1 vibrant bronze bag, 4 vibrant green bags, 1 plaid turquoise bag, 4 posh cyan bags. +shiny lime bags contain 1 posh tomato bag, 4 mirrored cyan bags, 2 plaid white bags, 3 shiny aqua bags. +light gold bags contain 1 drab silver bag, 3 clear brown bags, 2 wavy fuchsia bags. +dotted indigo bags contain 2 plaid teal bags, 1 dull yellow bag. +bright fuchsia bags contain 3 faded teal bags, 2 faded silver bags, 3 dim red bags, 1 muted lime bag. +mirrored black bags contain 5 muted violet bags. +dark magenta bags contain 5 dim crimson bags. +shiny yellow bags contain 3 clear tan bags. +muted orange bags contain 3 striped bronze bags. +dull bronze bags contain 1 dotted gray bag, 2 clear bronze bags, 5 light turquoise bags. +mirrored blue bags contain 3 shiny coral bags. +vibrant turquoise bags contain 2 pale blue bags, 4 shiny beige bags. +pale green bags contain 1 posh crimson bag, 2 drab gold bags, 3 drab brown bags. +striped yellow bags contain 5 mirrored red bags, 4 plaid salmon bags, 4 muted salmon bags, 5 faded tan bags. +faded tomato bags contain 5 clear blue bags. +faded teal bags contain 2 posh teal bags, 3 light violet bags, 5 dotted olive bags, 3 shiny teal bags. +clear blue bags contain 3 dull yellow bags, 3 light violet bags, 2 wavy coral bags, 4 shiny cyan bags. +dotted blue bags contain 5 muted coral bags, 4 muted salmon bags. +shiny lavender bags contain 2 dotted crimson bags, 4 light lime bags, 1 posh cyan bag. +mirrored magenta bags contain 3 mirrored fuchsia bags, 3 clear teal bags, 4 muted fuchsia bags. +faded yellow bags contain 1 dim crimson bag, 3 dull cyan bags. +muted teal bags contain 3 dull red bags. +light lavender bags contain 4 striped orange bags, 2 mirrored beige bags. +posh chartreuse bags contain 2 dark purple bags. +pale beige bags contain 4 pale silver bags, 2 striped crimson bags. +pale lime bags contain no other bags. +faded blue bags contain 1 mirrored red bag, 3 drab cyan bags, 3 dull yellow bags, 5 plaid plum bags. +dull maroon bags contain 5 light blue bags, 3 dull crimson bags, 3 clear yellow bags. +dim plum bags contain no other bags. +drab beige bags contain 5 light black bags, 1 striped teal bag, 4 mirrored violet bags. +pale orange bags contain 4 clear chartreuse bags. +dotted beige bags contain 4 dark yellow bags, 3 light black bags, 5 bright aqua bags. +plaid salmon bags contain 3 posh silver bags, 2 wavy violet bags, 3 striped tan bags. +clear gray bags contain 4 wavy purple bags. +drab coral bags contain 2 faded silver bags, 3 light fuchsia bags, 2 dull indigo bags, 3 drab cyan bags. +dark yellow bags contain 2 mirrored fuchsia bags. +posh turquoise bags contain 2 dim lavender bags, 1 muted yellow bag, 4 bright plum bags. +bright tomato bags contain 5 striped orange bags, 3 bright turquoise bags, 3 dull yellow bags. +drab silver bags contain 2 light turquoise bags, 3 mirrored indigo bags, 4 vibrant orange bags. +clear cyan bags contain 4 muted cyan bags, 2 faded silver bags, 3 faded yellow bags, 4 faded crimson bags. +mirrored orange bags contain 3 dark green bags, 5 drab salmon bags, 4 posh gray bags. +muted gray bags contain 2 mirrored lime bags. +pale brown bags contain 4 dull gray bags. +wavy silver bags contain 5 faded red bags, 5 muted silver bags. +dull blue bags contain 1 dotted olive bag, 4 muted violet bags. +dull magenta bags contain 4 muted silver bags, 4 posh salmon bags, 4 plaid tomato bags. +dark cyan bags contain 5 shiny purple bags, 3 vibrant coral bags, 1 posh green bag, 2 dull cyan bags. +shiny turquoise bags contain 3 pale white bags, 5 dotted black bags. +dark green bags contain 4 dim maroon bags. +posh magenta bags contain 2 pale brown bags. +dull salmon bags contain 5 posh magenta bags, 5 dotted indigo bags, 4 drab orange bags, 5 mirrored gray bags. +dull gray bags contain 5 wavy coral bags, 5 vibrant tan bags, 5 mirrored olive bags. +dull turquoise bags contain 3 clear black bags, 5 striped indigo bags, 3 shiny white bags, 2 faded fuchsia bags. +striped violet bags contain 2 faded white bags. +muted brown bags contain 2 dim cyan bags, 4 drab black bags, 5 clear bronze bags, 1 shiny green bag. +drab plum bags contain 2 dark teal bags, 5 plaid lavender bags, 4 mirrored blue bags. +striped green bags contain 1 mirrored olive bag, 3 clear green bags, 3 dim yellow bags, 3 muted red bags. +bright white bags contain 5 shiny coral bags, 5 faded fuchsia bags. +vibrant tan bags contain no other bags. +faded white bags contain 4 pale crimson bags, 1 plaid green bag, 5 faded bronze bags. +clear orange bags contain 3 bright cyan bags, 4 dotted green bags, 3 faded purple bags, 3 faded black bags. +drab chartreuse bags contain 5 wavy gray bags, 4 muted turquoise bags. +mirrored aqua bags contain 2 bright crimson bags, 4 mirrored magenta bags, 3 clear teal bags. +wavy crimson bags contain 5 posh yellow bags, 3 clear blue bags, 1 striped lime bag, 2 faded cyan bags. +shiny black bags contain 4 dim cyan bags, 3 striped beige bags, 3 posh beige bags, 4 bright gold bags. +wavy brown bags contain 2 wavy coral bags, 3 shiny yellow bags. +pale plum bags contain 3 drab olive bags, 1 light turquoise bag. +drab green bags contain 1 mirrored orange bag, 5 dark turquoise bags, 5 posh chartreuse bags, 2 pale magenta bags. +drab teal bags contain 5 faded silver bags, 4 striped brown bags, 4 drab purple bags. +dull gold bags contain 1 dark orange bag, 4 faded lime bags. +posh gray bags contain 1 posh cyan bag, 2 plaid crimson bags, 1 plaid olive bag, 2 bright yellow bags. +dim red bags contain 3 posh chartreuse bags, 4 drab white bags, 2 bright green bags, 4 drab yellow bags. +dull chartreuse bags contain 1 drab fuchsia bag, 2 dull crimson bags, 4 light coral bags. +plaid magenta bags contain 1 mirrored silver bag. +drab crimson bags contain 3 faded tan bags. +faded bronze bags contain 4 dim plum bags, 4 faded fuchsia bags, 4 bright aqua bags, 2 vibrant orange bags. +plaid gray bags contain 3 light fuchsia bags, 1 dotted turquoise bag. +vibrant bronze bags contain 1 wavy green bag, 2 muted yellow bags. +clear maroon bags contain 3 dim plum bags, 4 light red bags, 5 wavy silver bags. +drab blue bags contain 1 plaid gray bag, 5 mirrored gray bags, 5 shiny magenta bags. +posh bronze bags contain 3 muted crimson bags, 5 wavy gray bags. +dim black bags contain 1 bright green bag, 3 dim maroon bags, 4 mirrored cyan bags, 4 faded black bags. +vibrant green bags contain 4 vibrant blue bags, 4 wavy gold bags, 5 vibrant fuchsia bags, 3 muted yellow bags. +dim teal bags contain 5 faded fuchsia bags, 3 striped lavender bags, 2 pale lime bags, 4 clear maroon bags. +posh silver bags contain 2 shiny magenta bags. +plaid blue bags contain 2 pale brown bags, 4 drab brown bags, 2 drab plum bags, 1 wavy maroon bag. +dim fuchsia bags contain 3 dark purple bags, 4 shiny red bags, 1 clear chartreuse bag, 2 pale gold bags. +muted turquoise bags contain 4 striped maroon bags, 1 dim lavender bag, 2 clear beige bags, 3 wavy maroon bags. +shiny beige bags contain 4 shiny red bags, 1 vibrant bronze bag, 5 plaid chartreuse bags, 3 mirrored teal bags. +muted blue bags contain 3 pale lime bags, 4 dim crimson bags. +faded black bags contain 4 striped beige bags, 4 muted blue bags. +muted plum bags contain 5 drab white bags, 2 dull cyan bags, 1 light gray bag. +dark tan bags contain 2 light aqua bags. +clear white bags contain 5 dotted plum bags. +dotted aqua bags contain 4 posh turquoise bags, 5 bright aqua bags. +posh gold bags contain 5 pale crimson bags, 4 light fuchsia bags, 4 plaid turquoise bags. +bright turquoise bags contain 3 mirrored brown bags, 2 dotted black bags, 3 dull indigo bags, 4 plaid white bags. +light white bags contain 5 mirrored brown bags, 2 dim magenta bags. +posh crimson bags contain 1 bright green bag, 3 posh yellow bags, 4 posh turquoise bags, 4 vibrant aqua bags. +muted silver bags contain 1 dotted purple bag, 2 posh yellow bags, 5 mirrored indigo bags, 4 shiny violet bags. +pale indigo bags contain 2 mirrored aqua bags, 1 vibrant tomato bag, 5 striped violet bags, 2 shiny white bags. +vibrant aqua bags contain 5 pale bronze bags, 5 posh yellow bags, 2 dull cyan bags, 2 bright silver bags. +posh brown bags contain 2 bright green bags, 4 mirrored fuchsia bags, 4 dotted salmon bags. +shiny orange bags contain 2 faded lavender bags, 3 dull yellow bags. +shiny fuchsia bags contain 2 striped teal bags. +dark lavender bags contain 4 mirrored teal bags, 5 plaid gray bags. +vibrant teal bags contain 3 drab orange bags, 1 plaid red bag, 4 clear cyan bags. +dotted lavender bags contain 5 pale gray bags. +plaid lime bags contain 5 bright maroon bags, 2 dim tomato bags, 2 mirrored teal bags. +dim white bags contain 3 plaid turquoise bags, 2 faded red bags, 5 striped orange bags. +shiny coral bags contain 2 posh turquoise bags. +posh coral bags contain 4 bright salmon bags, 4 dim coral bags, 1 pale fuchsia bag. +drab aqua bags contain 1 vibrant maroon bag, 4 muted green bags, 5 muted red bags. +dim crimson bags contain no other bags. +vibrant purple bags contain 5 dark teal bags, 3 muted crimson bags. +dull fuchsia bags contain 5 dull aqua bags, 3 clear silver bags. +dotted green bags contain 3 dull tomato bags, 3 drab black bags, 5 dim red bags. +muted green bags contain 4 light cyan bags, 2 light red bags, 3 posh turquoise bags, 3 dark orange bags. +wavy aqua bags contain 4 faded white bags, 5 dim brown bags, 2 plaid salmon bags. +light magenta bags contain 4 dotted black bags, 3 posh blue bags, 2 bright coral bags. +light aqua bags contain 1 light yellow bag, 1 plaid gray bag, 1 vibrant cyan bag, 4 dotted aqua bags. +dark purple bags contain 2 plaid silver bags, 2 muted gray bags, 1 clear maroon bag. +wavy violet bags contain 4 plaid white bags, 5 dull red bags. +faded plum bags contain 5 posh beige bags, 2 light turquoise bags, 5 vibrant orange bags. +dull beige bags contain 2 dark blue bags, 2 shiny green bags. +clear crimson bags contain 1 vibrant salmon bag. +drab violet bags contain 4 faded purple bags, 4 plaid turquoise bags. +dull white bags contain 4 striped brown bags, 5 wavy black bags. +dark teal bags contain 3 faded fuchsia bags, 2 dotted maroon bags, 4 plaid orange bags. +dark blue bags contain 3 shiny bronze bags, 4 bright yellow bags, 1 vibrant bronze bag, 5 dull blue bags. +vibrant salmon bags contain 4 drab aqua bags. +plaid coral bags contain 2 drab salmon bags. +vibrant gray bags contain 3 dark purple bags, 3 vibrant green bags, 2 clear teal bags. +clear gold bags contain 3 mirrored green bags, 4 plaid gray bags, 1 bright gray bag. +posh salmon bags contain 2 shiny bronze bags, 3 faded coral bags, 3 mirrored chartreuse bags, 3 vibrant green bags. +wavy red bags contain 1 posh brown bag. +faded red bags contain 5 dim lavender bags, 4 bright plum bags, 4 striped orange bags. +striped lavender bags contain 4 dull black bags, 4 dark crimson bags, 1 posh turquoise bag, 4 light beige bags. +dull tomato bags contain 2 wavy silver bags, 3 muted yellow bags, 3 wavy maroon bags, 2 dotted black bags. +shiny salmon bags contain 1 wavy turquoise bag, 4 dull green bags, 5 dull aqua bags. +pale yellow bags contain 1 dull gray bag. +clear olive bags contain 1 posh crimson bag, 4 pale crimson bags. +clear coral bags contain 4 dark orange bags, 4 dim crimson bags. +dark bronze bags contain 4 mirrored silver bags, 3 light plum bags. +bright aqua bags contain 1 vibrant tan bag, 3 clear blue bags, 2 shiny violet bags. +striped blue bags contain 5 muted tomato bags, 5 muted magenta bags, 5 drab white bags, 3 pale crimson bags. +dim lavender bags contain 2 posh yellow bags. +dim green bags contain 2 mirrored chartreuse bags, 5 plaid orange bags. +plaid maroon bags contain 1 dark magenta bag, 1 posh beige bag, 5 drab plum bags, 5 bright aqua bags. +pale maroon bags contain 1 clear bronze bag, 1 plaid blue bag. +clear salmon bags contain 1 dark coral bag. +shiny magenta bags contain 3 vibrant aqua bags, 3 dim maroon bags. +mirrored yellow bags contain 4 wavy black bags, 4 pale gray bags, 4 mirrored magenta bags. +shiny green bags contain 3 striped lime bags, 2 posh yellow bags. +dim aqua bags contain 4 dotted aqua bags. +mirrored olive bags contain 1 muted blue bag, 5 vibrant tan bags, 5 posh yellow bags. +mirrored violet bags contain 1 plaid orange bag, 4 drab salmon bags. +pale chartreuse bags contain 2 muted tomato bags, 3 faded indigo bags. +striped maroon bags contain 4 shiny lime bags. +muted indigo bags contain 4 dim magenta bags, 3 muted orange bags, 2 dim beige bags, 4 vibrant purple bags. +dim maroon bags contain 2 pale bronze bags, 4 bright aqua bags. +pale teal bags contain 5 dark gray bags, 2 dark tomato bags, 1 dull red bag. +posh aqua bags contain 3 mirrored lavender bags. +vibrant lime bags contain 2 wavy silver bags. +dark turquoise bags contain 2 wavy black bags. +vibrant gold bags contain 2 striped brown bags, 2 faded indigo bags. +faded maroon bags contain 4 mirrored tan bags, 3 posh beige bags, 5 posh orange bags. +faded fuchsia bags contain 1 bright salmon bag. +light fuchsia bags contain 2 dull black bags. +striped coral bags contain 1 dull green bag, 2 muted beige bags, 2 bright coral bags, 5 wavy orange bags. +bright brown bags contain 4 plaid gold bags. +plaid olive bags contain 2 dim coral bags. +dull yellow bags contain 3 drab brown bags. +posh tomato bags contain 3 dotted purple bags. +clear magenta bags contain 1 mirrored brown bag, 5 dotted plum bags, 1 light coral bag, 2 drab maroon bags. +faded indigo bags contain 1 drab gold bag. +plaid white bags contain 5 mirrored fuchsia bags. +bright green bags contain 1 posh beige bag, 5 dark green bags, 4 dull aqua bags. +bright gray bags contain 3 light lavender bags. +posh violet bags contain 2 vibrant tan bags, 5 pale magenta bags, 3 posh white bags, 5 mirrored gray bags. +dull teal bags contain 1 dull brown bag, 2 drab gray bags, 2 shiny cyan bags, 1 mirrored lavender bag. +shiny cyan bags contain 1 bright plum bag, 1 shiny violet bag. +posh plum bags contain 4 drab brown bags, 4 mirrored olive bags, 4 dim maroon bags, 4 striped orange bags. +plaid fuchsia bags contain 5 drab blue bags. +dull green bags contain 1 mirrored red bag, 1 bright turquoise bag, 2 dark beige bags. +bright chartreuse bags contain 5 dim white bags, 2 faded red bags. +faded beige bags contain 5 posh turquoise bags, 5 vibrant tan bags, 2 posh yellow bags, 4 mirrored indigo bags. +dim chartreuse bags contain 1 posh magenta bag, 2 dotted crimson bags, 5 clear black bags, 4 striped olive bags. +drab indigo bags contain 5 striped orange bags, 1 pale chartreuse bag, 2 mirrored indigo bags, 4 clear purple bags. +light bronze bags contain 4 muted red bags. +shiny teal bags contain 3 faded beige bags, 2 striped beige bags, 2 mirrored olive bags, 5 plaid white bags. +shiny white bags contain 2 wavy silver bags, 3 plaid turquoise bags, 1 dim plum bag, 4 posh plum bags. +pale silver bags contain 2 pale cyan bags, 5 muted teal bags, 5 plaid turquoise bags, 2 clear coral bags. +dim yellow bags contain 2 vibrant tomato bags, 3 bright salmon bags, 4 dull gray bags. +mirrored indigo bags contain 5 posh yellow bags, 5 faded red bags. +clear bronze bags contain 1 posh turquoise bag, 3 faded black bags, 3 shiny coral bags. +mirrored turquoise bags contain 2 mirrored teal bags, 4 striped black bags, 4 dull teal bags, 4 clear black bags. +mirrored red bags contain 3 clear purple bags, 5 light red bags, 5 mirrored beige bags. +bright olive bags contain 3 vibrant plum bags. +drab white bags contain 4 dim lavender bags. +clear red bags contain 5 dark gray bags, 1 shiny green bag, 2 striped brown bags, 3 plaid olive bags. +vibrant red bags contain 2 dull bronze bags, 2 dotted magenta bags, 5 dark red bags, 1 drab magenta bag. +striped crimson bags contain 4 dull silver bags, 4 dark gray bags, 4 light red bags, 2 posh chartreuse bags. +dotted tan bags contain 4 shiny lime bags. +plaid orange bags contain 1 wavy maroon bag, 2 drab brown bags, 5 dull black bags. +clear plum bags contain 2 muted yellow bags, 5 faded turquoise bags, 1 faded beige bag, 1 dull aqua bag. +mirrored bronze bags contain 5 posh magenta bags. +mirrored cyan bags contain 4 striped orange bags, 3 wavy gray bags, 1 mirrored olive bag, 2 dim lavender bags. +striped white bags contain 4 striped aqua bags. +bright red bags contain 4 dotted gray bags, 4 dark green bags, 4 shiny aqua bags, 4 shiny indigo bags. +dim blue bags contain 1 dull black bag, 4 dotted turquoise bags. +dotted bronze bags contain 5 mirrored indigo bags, 4 wavy coral bags. +muted gold bags contain 4 wavy plum bags. +clear aqua bags contain 2 clear teal bags, 4 mirrored crimson bags, 1 dull silver bag, 3 bright crimson bags. +dim brown bags contain 3 clear green bags, 5 bright cyan bags. +bright plum bags contain 3 striped orange bags, 2 pale lime bags. +bright blue bags contain 1 shiny violet bag, 4 wavy gold bags. +bright maroon bags contain 1 striped indigo bag, 3 striped beige bags, 1 shiny teal bag. +pale cyan bags contain 1 dull gray bag, 2 mirrored lime bags. +wavy chartreuse bags contain 5 dark red bags, 5 plaid fuchsia bags, 2 dim salmon bags. +dull cyan bags contain 2 dim lavender bags, 3 dull yellow bags, 5 dim crimson bags, 5 dull gray bags. +shiny brown bags contain 3 wavy aqua bags, 2 faded lime bags. +dim tan bags contain 5 pale orange bags, 2 mirrored blue bags. +drab purple bags contain 1 vibrant bronze bag, 4 pale magenta bags. +wavy fuchsia bags contain 3 bright aqua bags, 2 dim lavender bags, 4 pale lime bags. +mirrored teal bags contain 4 dull yellow bags, 2 faded black bags, 3 pale blue bags, 5 wavy coral bags. +plaid brown bags contain 4 posh chartreuse bags, 2 dark beige bags. +plaid tan bags contain 3 pale turquoise bags, 3 dark teal bags. +posh tan bags contain 2 faded yellow bags, 3 dim tomato bags, 1 dotted olive bag, 1 light violet bag. +plaid plum bags contain 5 muted yellow bags, 2 dim crimson bags. +plaid purple bags contain 2 posh magenta bags. +wavy gold bags contain 2 shiny teal bags, 2 mirrored lime bags. +striped tomato bags contain 5 shiny maroon bags, 3 mirrored lime bags. +vibrant lavender bags contain 1 bright turquoise bag. +muted violet bags contain 2 dull tomato bags, 4 mirrored lavender bags. +light crimson bags contain 4 drab violet bags. +bright crimson bags contain 3 drab silver bags. +muted purple bags contain 3 dim aqua bags. +posh lavender bags contain 4 mirrored magenta bags. +posh olive bags contain 2 bright salmon bags, 2 faded violet bags, 2 wavy indigo bags, 2 vibrant yellow bags. +muted aqua bags contain 4 bright red bags, 3 vibrant crimson bags, 3 dotted red bags. +shiny aqua bags contain 2 mirrored lavender bags. +bright yellow bags contain 2 muted gray bags, 4 plaid turquoise bags, 1 dull yellow bag, 5 wavy green bags. +light chartreuse bags contain 5 vibrant bronze bags, 5 posh magenta bags, 2 dotted salmon bags, 3 plaid red bags. +striped fuchsia bags contain 4 dull plum bags, 5 mirrored silver bags. +dull lavender bags contain 4 mirrored lavender bags, 2 plaid crimson bags, 4 dotted turquoise bags, 2 drab purple bags. +mirrored lime bags contain 2 pale lime bags, 4 light turquoise bags, 5 bright plum bags. +wavy turquoise bags contain 1 pale bronze bag. +pale magenta bags contain 2 dull teal bags, 2 muted red bags. +dotted plum bags contain 5 light red bags. +drab bronze bags contain 5 muted blue bags, 1 faded teal bag, 3 faded yellow bags. +plaid teal bags contain 4 wavy maroon bags, 5 pale brown bags. +plaid indigo bags contain 5 light olive bags, 4 clear salmon bags, 1 wavy lime bag, 4 drab black bags. +shiny blue bags contain 3 bright turquoise bags, 3 mirrored red bags, 1 pale brown bag, 2 dark violet bags. +striped turquoise bags contain 4 pale tomato bags, 1 light turquoise bag. +mirrored white bags contain 4 dim chartreuse bags. +dark fuchsia bags contain 2 dotted lavender bags, 5 pale gray bags, 5 light crimson bags, 5 shiny lavender bags. +posh blue bags contain 5 dark orange bags. +shiny tan bags contain 5 bright magenta bags, 2 clear beige bags, 1 pale lime bag. +dark lime bags contain 1 shiny magenta bag, 2 muted cyan bags. +bright magenta bags contain 3 clear blue bags, 3 wavy indigo bags. +dotted crimson bags contain 2 wavy turquoise bags. +dotted maroon bags contain 5 dark green bags, 1 striped lime bag, 1 dotted black bag, 5 striped beige bags. +dark brown bags contain 3 pale white bags. +vibrant coral bags contain 5 plaid olive bags, 5 dim maroon bags. +posh teal bags contain 5 shiny white bags. +plaid crimson bags contain 1 dark coral bag, 2 dotted beige bags, 1 dotted gray bag. +mirrored salmon bags contain 1 plaid lavender bag, 2 striped orange bags, 4 clear purple bags. +vibrant orange bags contain no other bags. +vibrant plum bags contain 1 pale red bag, 2 drab plum bags. +dim gray bags contain 5 dull salmon bags. +shiny maroon bags contain 3 dim plum bags, 4 pale black bags, 3 dark red bags, 4 light maroon bags. +muted tomato bags contain 1 pale bronze bag, 3 dim crimson bags, 3 striped beige bags, 3 muted yellow bags. +dotted white bags contain 5 striped red bags. +wavy plum bags contain 2 dull indigo bags, 3 plaid turquoise bags, 1 dull silver bag, 5 clear tan bags. +light violet bags contain 3 dim crimson bags, 2 drab brown bags. +muted salmon bags contain 2 clear yellow bags, 3 faded plum bags. +plaid turquoise bags contain 4 faded yellow bags. +pale bronze bags contain 2 dim plum bags, 1 posh maroon bag, 4 dim lavender bags. +clear chartreuse bags contain 1 clear salmon bag, 4 faded purple bags, 5 mirrored tan bags. +bright purple bags contain 5 clear salmon bags, 5 shiny red bags, 5 dotted aqua bags, 1 wavy plum bag. +faded gold bags contain 2 faded indigo bags. +striped brown bags contain 1 posh magenta bag, 2 dull olive bags, 3 dotted purple bags, 1 dark beige bag. +faded gray bags contain 3 shiny green bags. +wavy purple bags contain 2 dark beige bags, 2 dotted bronze bags. +striped olive bags contain 1 clear tan bag, 2 dim salmon bags, 2 dotted gold bags. +dull crimson bags contain 2 drab red bags. +dark plum bags contain 1 dark blue bag, 2 light yellow bags, 2 striped silver bags. +faded violet bags contain 4 dotted gray bags, 5 muted blue bags. +plaid black bags contain 2 posh aqua bags, 5 plaid orange bags. +light green bags contain 4 muted silver bags, 2 muted tomato bags, 3 mirrored teal bags. \ No newline at end of file diff --git a/data/2020/8.txt b/data/2020/8.txt new file mode 100644 index 0000000..187c7cf --- /dev/null +++ b/data/2020/8.txt @@ -0,0 +1,594 @@ +nop +81 +acc -17 +jmp +1 +acc +31 +jmp +211 +acc +30 +acc -7 +jmp +29 +acc +16 +nop +89 +jmp +163 +acc -9 +acc +40 +jmp +189 +jmp +111 +acc +0 +acc +6 +jmp +19 +acc +6 +acc +16 +jmp +78 +nop +178 +jmp +441 +acc +27 +acc +34 +jmp +3 +acc +9 +jmp +302 +acc -4 +acc +33 +jmp +417 +nop +80 +acc +34 +acc +11 +nop +181 +jmp -12 +jmp +143 +jmp +53 +jmp +52 +jmp +324 +acc +0 +acc -8 +acc +47 +jmp +1 +jmp +169 +acc +23 +acc -14 +acc -6 +acc -13 +jmp +267 +acc +24 +jmp +188 +acc +36 +jmp +160 +acc +14 +acc +34 +acc -18 +jmp +500 +jmp +137 +jmp +295 +acc +11 +jmp +393 +acc +24 +acc +37 +nop +258 +acc +20 +jmp -52 +acc +40 +jmp +1 +jmp +62 +acc +34 +nop +312 +acc +39 +nop +431 +jmp +386 +acc -17 +nop +282 +acc -8 +jmp +490 +jmp +148 +jmp -1 +jmp +201 +jmp -54 +acc +0 +acc +22 +jmp +110 +nop +443 +nop +388 +acc +28 +jmp +167 +nop +48 +acc +46 +jmp +406 +acc +11 +acc +17 +acc +23 +jmp +1 +jmp +286 +acc +0 +acc -15 +acc +1 +acc +6 +jmp +214 +acc +39 +acc +21 +acc +34 +jmp +341 +jmp +417 +jmp +400 +jmp -2 +jmp +117 +acc -10 +acc +14 +acc +10 +acc +10 +jmp +339 +jmp +162 +acc +16 +nop +20 +acc +12 +acc -11 +jmp +78 +acc +21 +acc +12 +jmp +181 +jmp +404 +nop +26 +jmp +46 +jmp +1 +jmp -93 +jmp -76 +acc -1 +nop +30 +acc +48 +jmp +238 +acc +6 +nop +244 +jmp +36 +acc +10 +acc +8 +acc +19 +acc +3 +jmp -72 +nop +225 +jmp +228 +acc +44 +acc -13 +jmp +349 +acc -8 +acc +45 +acc -11 +jmp +76 +acc +46 +jmp +196 +acc +4 +acc +45 +jmp +218 +acc +38 +jmp -77 +acc +10 +acc +46 +jmp +385 +acc +29 +jmp +159 +jmp +247 +jmp +1 +acc +26 +nop +357 +jmp +284 +nop +335 +acc -18 +acc +41 +jmp +326 +nop +181 +jmp +189 +nop -135 +acc +50 +nop +152 +jmp -53 +acc +0 +jmp +1 +acc +23 +jmp +167 +nop +131 +acc +18 +acc +42 +nop +13 +jmp +28 +jmp +284 +acc +10 +acc +43 +jmp +243 +jmp +64 +acc +17 +jmp +213 +acc +0 +acc +29 +jmp +25 +jmp -180 +nop +184 +jmp +90 +jmp -13 +jmp +1 +jmp -86 +jmp +1 +acc +20 +acc +49 +jmp +6 +jmp +188 +acc +24 +acc +0 +nop -16 +jmp +160 +jmp +2 +jmp +68 +acc +1 +acc +30 +jmp -52 +acc -19 +jmp +1 +acc -18 +jmp +153 +acc +0 +jmp -92 +nop -72 +acc +38 +jmp +13 +jmp +160 +acc +24 +acc +0 +jmp +111 +acc -4 +acc +45 +jmp -215 +acc +16 +acc +25 +acc +28 +acc +12 +jmp +348 +nop +144 +jmp -52 +acc +41 +jmp +1 +acc +12 +acc +14 +jmp +207 +jmp +1 +acc +26 +acc +4 +jmp +1 +jmp +15 +jmp +20 +acc +23 +acc +41 +jmp -8 +jmp +284 +nop +204 +acc +47 +acc +35 +acc +17 +jmp -58 +jmp +1 +acc +8 +nop +72 +jmp -210 +jmp +324 +acc -7 +acc +12 +acc +48 +acc +1 +jmp +269 +acc -19 +acc +18 +jmp +167 +jmp +1 +acc +48 +acc +2 +jmp +134 +jmp +204 +jmp +1 +acc -1 +jmp +191 +nop -203 +nop +104 +acc -16 +jmp +261 +acc +32 +acc +11 +acc +37 +jmp +74 +acc -16 +acc -4 +acc +10 +jmp +101 +acc +47 +acc +18 +jmp +122 +acc +42 +acc +30 +jmp -47 +nop -54 +acc +38 +nop +237 +acc +15 +jmp -58 +acc +50 +acc +37 +acc +20 +jmp -163 +nop +49 +acc +28 +acc +50 +acc -13 +jmp -305 +jmp +66 +jmp +92 +acc +30 +acc +0 +jmp -190 +nop +153 +acc -12 +jmp +73 +nop -241 +acc +25 +nop -310 +jmp +127 +acc +32 +acc +6 +jmp +55 +jmp -250 +acc +25 +acc -2 +acc +42 +nop +25 +jmp -264 +acc +47 +acc +47 +nop -297 +jmp -146 +jmp +1 +jmp -257 +acc +48 +acc +49 +acc -2 +jmp +232 +acc +25 +acc +9 +acc -6 +jmp +115 +jmp +53 +acc +4 +acc +19 +acc -5 +jmp -188 +acc +0 +acc -16 +jmp +132 +jmp +189 +acc -8 +jmp -54 +acc -19 +nop -338 +jmp -322 +acc +43 +acc +19 +acc +1 +jmp -238 +jmp -111 +acc +48 +jmp +49 +nop -225 +jmp +153 +jmp +55 +jmp -264 +acc +27 +acc -1 +acc -1 +acc +7 +jmp +208 +jmp +68 +jmp -218 +acc +13 +jmp +70 +acc +1 +jmp +12 +acc -7 +jmp +129 +jmp +1 +acc +7 +acc +11 +acc +2 +jmp -377 +acc +0 +jmp -241 +jmp +110 +jmp -355 +acc -13 +jmp +1 +jmp -120 +nop +83 +acc +19 +jmp -378 +acc +26 +jmp +72 +acc +9 +acc +0 +jmp -92 +nop -242 +jmp -200 +acc +29 +jmp -374 +acc -19 +acc +40 +acc +9 +nop -117 +jmp -144 +acc +6 +jmp +122 +acc +7 +acc +9 +acc +50 +jmp -367 +acc +18 +acc +18 +acc +6 +nop -212 +jmp -19 +acc +34 +acc -1 +jmp +1 +jmp -89 +acc -19 +acc +20 +jmp -70 +jmp +117 +acc +38 +acc +23 +acc +29 +acc +20 +jmp -330 +acc +30 +acc +38 +nop -2 +jmp +96 +acc +11 +acc +32 +jmp -194 +jmp -64 +acc +10 +acc -2 +acc -2 +jmp -320 +jmp -314 +jmp +115 +acc -1 +acc +38 +acc +30 +jmp -407 +acc +1 +jmp -32 +jmp +55 +acc +50 +jmp +84 +nop -69 +acc +0 +nop -270 +acc +38 +jmp -33 +acc +11 +acc +32 +acc -15 +jmp -122 +jmp -413 +acc -2 +jmp -322 +acc +49 +jmp +1 +acc +26 +nop -455 +jmp -105 +acc +26 +jmp -6 +nop +42 +acc +15 +jmp -149 +acc -7 +acc +34 +jmp +59 +acc -9 +acc -11 +jmp -122 +nop -89 +acc +28 +acc +34 +acc +14 +jmp -127 +jmp -89 +jmp -335 +acc +49 +acc +0 +acc +43 +acc +41 +jmp -314 +jmp -56 +acc +11 +jmp -443 +acc +7 +jmp -11 +acc +24 +acc +16 +acc +44 +jmp -29 +acc +38 +acc +8 +jmp +50 +acc +30 +acc +8 +acc +14 +jmp -160 +acc -10 +acc +46 +acc +2 +acc +21 +jmp -328 +acc +17 +acc +23 +jmp -374 +acc +20 +jmp -160 +acc +1 +acc +30 +acc +22 +jmp +1 +jmp -302 +jmp +1 +acc +3 +acc +19 +acc +28 +jmp +30 +acc +50 +acc +23 +jmp -244 +acc +20 +jmp +1 +acc +27 +jmp -6 +jmp -71 +acc +28 +acc +35 +nop -3 +jmp -62 +nop -386 +nop -217 +jmp -45 +acc +7 +acc -11 +jmp -104 +nop -279 +jmp +1 +acc -15 +acc -17 +jmp -478 +nop -11 +jmp -432 +acc -3 +acc +12 +jmp -558 +jmp -513 +acc +3 +acc +46 +jmp -532 +acc -14 +acc +32 +acc -8 +acc +25 +jmp -521 +acc +6 +acc +11 +acc +40 +acc +33 +jmp -266 +acc +17 +acc +11 +nop -203 +acc +2 +jmp -433 +acc +38 +jmp -476 +jmp -125 +jmp +1 +acc +24 +acc -11 +jmp +1 +jmp +1 \ No newline at end of file diff --git a/data/2020/9.txt b/data/2020/9.txt new file mode 100644 index 0000000..b0d99b6 --- /dev/null +++ b/data/2020/9.txt @@ -0,0 +1,1000 @@ +4 +15 +11 +10 +33 +20 +42 +34 +49 +45 +29 +43 +26 +12 +19 +17 +28 +47 +46 +2 +18 +39 +50 +3 +23 +5 +14 +7 +52 +9 +60 +16 +20 +61 +97 +79 +8 +10 +11 +22 +13 +12 +15 +65 +17 +19 +28 +21 +18 +24 +23 +33 +25 +41 +34 +26 +35 +29 +36 +20 +27 +38 +40 +39 +43 +32 +80 +37 +45 +58 +42 +49 +53 +44 +73 +46 +52 +47 +55 +100 +56 +57 +59 +60 +64 +66 +69 +88 +130 +77 +127 +79 +169 +86 +89 +90 +103 +106 +99 +98 +93 +187 +102 +184 +113 +163 +116 +148 +181 +141 +152 +146 +193 +176 +156 +199 +279 +200 +175 +182 +209 +191 +192 +195 +206 +297 +215 +218 +229 +265 +257 +262 +287 +368 +293 +302 +321 +331 +371 +338 +392 +367 +439 +542 +863 +397 +457 +387 +401 +421 +433 +472 +698 +486 +519 +583 +788 +685 +614 +595 +940 +652 +669 +705 +725 +754 +764 +784 +1307 +798 +1035 +844 +1185 +887 +854 +905 +958 +1005 +1100 +1102 +1833 +1209 +1489 +1449 +1247 +1430 +2101 +1459 +1469 +2432 +1518 +1949 +2267 +1642 +2313 +1698 +1731 +1741 +1759 +1954 +2791 +1963 +2105 +2202 +3373 +3383 +4842 +2677 +5805 +2977 +3128 +3101 +2928 +2987 +3160 +3216 +3690 +3340 +3401 +8933 +12623 +5160 +10647 +3713 +7030 +5033 +5478 +5092 +5130 +5605 +5654 +6137 +5905 +5915 +6056 +6029 +6376 +9457 +6147 +6500 +6556 +6741 +7053 +7114 +11820 +8746 +8805 +10570 +8843 +10125 +11132 +10222 +10697 +11569 +15399 +11559 +11934 +11944 +12085 +12176 +12405 +12523 +12647 +12703 +13056 +13297 +17873 +14167 +17239 +20364 +26082 +19937 +18968 +19065 +23308 +25579 +20919 +22266 +23735 +24019 +25108 +24120 +24029 +24261 +24581 +24928 +25350 +25703 +37637 +37810 +37603 +31406 +35086 +36304 +38033 +40856 +38905 +39887 +39984 +49608 +47764 +55141 +46001 +47754 +48139 +48290 +86659 +48610 +48842 +49509 +50278 +66559 +60789 +66492 +67710 +69009 +69439 +114246 +74337 +85797 +84906 +78792 +188583 +87748 +93755 +93765 +94140 +94291 +95893 +124615 +134407 +97452 +98119 +98351 +135306 +229446 +145695 +135126 +134202 +185200 +138448 +168092 +153129 +218906 +163698 +166540 +189648 +181503 +181513 +281001 +187905 +338329 +301846 +395986 +195571 +195803 +196470 +232321 +233657 +319669 +269328 +273574 +304988 +272650 +291577 +302146 +316827 +486491 +330238 +363016 +348053 +369408 +391374 +413834 +383476 +560905 +427892 +392041 +392273 +428124 +562559 +428791 +465978 +502985 +541978 +542902 +546224 +849454 +593723 +1065544 +904994 +988797 +678291 +739427 +1167319 +717461 +1277346 +783647 +806107 +775517 +819933 +820165 +970102 +1022514 +1012202 +894769 +1644421 +1044963 +1049209 +1084880 +1311184 +1263685 +2275887 +1272014 +1395752 +1456888 +1784390 +1453808 +2466010 +1501108 +2131349 +2356147 +1753749 +1626040 +1745619 +2083850 +2426990 +1864871 +2648554 +1906971 +3861762 +2094172 +4510840 +3017633 +2720573 +2896860 +4221018 +3238198 +5665188 +2849560 +3652590 +3079848 +2954916 +4814745 +7117878 +3618620 +3379789 +3610490 +4513425 +4803831 +3771842 +3959043 +5675489 +4001143 +6095315 +6789475 +4943732 +5570133 +5617433 +8572349 +6515480 +6502150 +5929408 +8575673 +5804476 +6034764 +6334705 +6565406 +10848130 +6990279 +6998409 +7151631 +7382332 +7730885 +7772985 +9867157 +7960186 +8944875 +9571276 +10513865 +12794755 +10561165 +11187566 +11546841 +11733884 +11839240 +11964172 +16348658 +12139181 +13025043 +13947738 +12900111 +14763264 +21099369 +14721164 +14924616 +14533963 +15113217 +15503870 +20758842 +16905061 +20754941 +18516151 +20085141 +21075030 +23803412 +21748731 +22734407 +24758927 +23873065 +23978421 +35759450 +25039292 +25164224 +25925154 +29297227 +27663375 +30037833 +31626225 +29647180 +29458579 +31439024 +55572334 +46363640 +35421212 +36990202 +47773699 +41160171 +59335060 +42823761 +48631992 +44483138 +46607472 +59289600 +47851486 +70342061 +54622803 +89431233 +85030913 +53588529 +56960602 +57121954 +96325262 +60897603 +59105759 +64879791 +66860236 +87767643 +72411414 +78244973 +89011657 +112923589 +91455753 +87306899 +90675247 +94458958 +91090610 +105713231 +137282719 +108211332 +110549131 +110710483 +112694288 +114082556 +114486132 +116066361 +116227713 +149781006 +120003362 +123985550 +131740027 +139271650 +150656387 +159718313 +165551872 +176318556 +177982146 +178397509 +181765857 +202670290 +185549568 +224631687 +269022746 +269784368 +218760463 +287029039 +445341302 +226776844 +228568688 +243988912 +232294074 +236231075 +251743389 +255725577 +426300689 +304823522 +315590206 +531017951 +367315425 +341870428 +403029196 +388219858 +506015443 +400526320 +404310031 +474486040 +547884280 +464799763 +875012360 +454991538 +614996702 +455345532 +459070918 +460862762 +507468966 +701030838 +487974464 +556566911 +709185853 +646693950 +876194322 +1042901266 +730090286 +742396748 +863891958 +804836351 +859301569 +859597238 +859655563 +911778997 +1734609598 +1320460000 +910337070 +914062456 +914416450 +916208294 +919933680 +947045382 +1265752764 +995443430 +1044541375 +1134668414 +1203260861 +1355879803 +1376784236 +1618591070 +1962834946 +1472487034 +1547233099 +1664137920 +1664433589 +1718898807 +2332084272 +1769992633 +1822116067 +1861107838 +1824399526 +2337929275 +1828478906 +1830624744 +1836141974 +2922159668 +2081713796 +2179209789 +1721308972 +2247802236 +2490548217 +2924569833 +2974470873 +2849271270 +3019720133 +3136624954 +3492912495 +3211371019 +3328571509 +3383332396 +4857933926 +3491301605 +3543425039 +3551933716 +3545708498 +4015351763 +4329516032 +3549787878 +5412707885 +5003873464 +5896630541 +6686412832 +3900518761 +4741029105 +5097073506 +5339819487 +5899040706 +5985896224 +5868991403 +9531604722 +6347995973 +6594703415 +6539942528 +6711903905 +6874634001 +7034726644 +7037010103 +9450974422 +7095496376 +11052361866 +16325608423 +7450306639 +8290816983 +8641547866 +14162210544 +10495222176 +10248514734 +8997592267 +14094665773 +13576952631 +11208810890 +15327827086 +11854887627 +12216987376 +13443492349 +12887938501 +14130223020 +13251846433 +13586537906 +13909360645 +16447898906 +16546470798 +16932364849 +19667294015 +25793940007 +15741123622 +16091854505 +17288409250 +17639140133 +19246107001 +19492814443 +20206403157 +25106734060 +23063698517 +25339033910 +30676693818 +24071875003 +24742826128 +36599658864 +26139784934 +26474476407 +27716760926 +32189022528 +55419519946 +29650484267 +36115192921 +32673488471 +40352107767 +55444424274 +31832978127 +36534516251 +51681836971 +37494812407 +36885247134 +38738921444 +49178609063 +46346188091 +47135573520 +47806524645 +58663498935 +88313983202 +63481747572 +50882611062 +52614261341 +62589669328 +54191237333 +86864725804 +111288272217 +70571899571 +62323972738 +64506466598 +84691771779 +86063856197 +98028025062 +84020820654 +85085109535 +110852654689 +146344793392 +101391713732 +85874494964 +93481761611 +125805720310 +94942098165 +98689135707 +103496872403 +105073848395 +106805498674 +201747596839 +165898180330 +200287260285 +126830439336 +132895872309 +135078366169 +149198238377 +147015744517 +231036565171 +170959604499 +169105930189 +182048845716 +178566871146 +183774245242 +180816593129 +179356256575 +276028677713 +184563630671 +188423859776 +193631233872 +198438970568 +211879347069 +210302371077 +231904287731 +282094110686 +354322040106 +292728619666 +304184296358 +261908805505 +319641996840 +315894959298 +445683050747 +326372001092 +340065534688 +347672801335 +348462186764 +360615716862 +357923127721 +360172849704 +507188594221 +727777161433 +612370616506 +372987490447 +382055093648 +392070204440 +673818087019 +422181718146 +442206658808 +674110946539 +586278407044 +902173366342 +601974340193 +707965163738 +707591856252 +635536956138 +642266960390 +749993332161 +666437535780 +687738336023 +696134988099 +706385314485 +1034552334652 +800129786529 +733160340151 +1276085286732 +755042584095 +774125298088 +1188252747237 +804236811794 +814251922586 +1118316706245 +1221815363182 +1028485065852 +1228545367434 +1237511296331 +1301974491918 +1244241300583 +1614381709115 +1277803916528 +1308704496170 +1330005296413 +1394123650508 +1354175871803 +1383873324122 +1402520302584 +1439545654636 +1488202924246 +2337189562022 +2198360462302 +2063747080265 +1529167882183 +2472492578048 +1618488734380 +1832721877646 +2574246596996 +2146801772097 +2692577820292 +2257030433286 +2466056663765 +2552945796753 +3727528344485 +2724128946921 +2756696174387 +2927193230550 +3141426373816 +4257198526963 +2748299522311 +4031082339948 +2872076248368 +2842065957220 +2927748578882 +3017370806429 +3147656616563 +3361889759829 +3451210612026 +3675969654280 +7398624900779 +7274569333392 +4298778541411 +4403832205383 +4612858435862 +5398456807102 +4723087097051 +5190185610686 +5277074743674 +9335945532913 +5590365479531 +5889725896127 +5714142205588 +5620375770679 +5676048101193 +5765670328740 +6379260566258 +5769814536102 +5859436763649 +9974826642604 +6165027422992 +6823626270843 +10849835512805 +8866155264966 +8079801859663 +10293558101510 +8702610746794 +10382672971964 +15969606202703 +10437229302639 +14143230008640 +11334517976267 +10866233711879 +10867440223205 +18373359961173 +11210741250210 +11296423871872 +16057605073318 +11386046099419 +11441718429933 +11535484864842 +19733595488171 +11934841959094 +15031182687958 +16798452913447 +14867638169786 +14903428130506 +21303463014518 +17568766011760 +18947242082868 +22827764529352 +19085283718758 +20819902274603 +21733653174511 +22507165122082 +21733673935084 +22078181473415 +22252279811298 +23376560389027 +22596787349629 +22652459680143 +22682469971291 +33626371085078 +22921530964261 +31175313918104 +32472194142266 +28733294872541 +31701881043953 +29771066300292 +31666091083233 +32436404181546 +33850670213374 +40165553361389 +45279257320920 +50649123126821 +39905185993361 +40818936893269 +42553555449114 +44240818296593 +43811855408499 +43985953746382 +44330461284713 +44934749782589 +62877194962057 +73301582806964 +56503129893517 +55154664113557 +51654825836802 +73755856206735 +58504361172833 +62243260442558 \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..5b99829 --- /dev/null +++ b/index.js @@ -0,0 +1,13 @@ +#!/usr/local/bin/env node + +const cmd = process.argv.slice(2); +if (cmd.length !== 3) { + console.log('ERROR: bad command'); + process.exit(1); +} + +const dayPath = cmd.slice(0, 2).join('/'); +const data = require('./lib/load')(dayPath); + +const result = require(`./solutions/${dayPath}`)[cmd[2]](data); +console.log(`${result}`); diff --git a/lib/BNMath.js b/lib/BNMath.js new file mode 100644 index 0000000..9a3a11b --- /dev/null +++ b/lib/BNMath.js @@ -0,0 +1,47 @@ +module.exports = { + min(...nums) { + if (nums.length === 0) { + throw new Error('invalid arguments'); + } + return nums.reduce((a, b) => (a < b ? a : b)); + }, + max(...nums) { + if (nums.length === 0) { + throw new Error('invalid arguments'); + } + return nums.reduce((a, b) => (a > b ? a : b)); + }, + abs(num) { + if (num < 0n) { + return num * -1n; + } + return num; + }, + sqrt(num) { + if (num < 0n) { + throw new Error('no sqrt of negative'); + } + if (num <= 1n) { + return num; + } + + let x0 = num >> 1n; + let x1 = (x0 + num / x0) >> 1n; + + while (x1 < x0) { + x0 = x1; + x1 = (x0 + num / x0) >> 1n; + } + + return x0; + }, + // todo: implement longer string parsing, should be simple-ish to do with + // some looping and multiplication + parseInt(string, radix) { + if (string.length > 10) { + console.log(string); + throw new Error('todo'); + } + return BigInt(parseInt(string, radix)); + }, +}; diff --git a/lib/Glib.js b/lib/Glib.js new file mode 100644 index 0000000..16683f4 --- /dev/null +++ b/lib/Glib.js @@ -0,0 +1,327 @@ +const Math = require('./bnmath'); + +const EMPTY = Symbol('empty'); + +class Glib { + static infiniteFromIterable(iterable) { + const cache = Array.from(iterable); + return new Glib( + (function*() { + while (true) { + yield* cache; + } + })(), + ); + } + static fromSplit(string, separator = '\n') { + return new Glib( + (function*() { + let partial = ''; + for (const char of string) { + partial += char; + if (!partial.endsWith(separator)) { + continue; + } + yield partial.slice(0, -separator.length); + partial = ''; + } + yield partial; + })(), + ); + } + static fromParsedString(string, separator, parse) { + return new Glib( + (function*() { + let partial = ''; + for (const char of string) { + partial += char; + if (!partial.endsWith(separator)) { + continue; + } + yield parse(partial.slice(0, -separator.length)); + partial = ''; + } + yield parse(partial); + })(), + ); + } + static fromLines(lines) { + const g = Glib.fromIterable(lines.split('\n')); + return g.map((line) => { + // console.log(line); + return line.trim(); + }); + } + static fromSequence(start = 1n, end = Infinity, step = 1n) { + if (typeof start === 'number') { + start = BigInt(start); + } + if (typeof end === 'number' && (end !== Infinity && end !== -Infinity)) { + end = BigInt(end); + } + if (typeof step === 'number') { + step = BigInt(step); + } + return new Glib( + (function*() { + for (let i = start; i <= end; i += step) { + yield i; + } + })(), + ); + } + static fromIterable(iterable) { + return new Glib( + (function*() { + yield* iterable; + })(), + ); + } + constructor(iterator) { + this._ = iterator; + } + flatMap(mapFn) { + return new Glib( + (function*(iterable) { + let index = 0; + for (const entry of iterable) { + yield* mapFn(entry, index++); + } + })(this), + ); + } + map(mapFn) { + return this.flatMap((...args) => { + return [mapFn(...args)]; + }); + } + filter(filterFn) { + return this.flatMap((entry, ...args) => + filterFn(entry, ...args) ? [entry] : [], + ); + } + reduce(reduceFn, accumulator = EMPTY) { + return this.partialReduce(reduceFn, () => true, accumulator); + } + join(sep = ',') { + return this.reduce((acc, e, i) => acc + (i === 0 ? e : sep + e), ''); + } + partialReduce(reduceFn, continueFn, accumulator = EMPTY) { + let index = 0; + for (const entry of this) { + // console.log(accumulator); + if (index === 0 && accumulator === EMPTY) { + accumulator = entry; + } else { + // console.log(`${accumulator} ${JSON.stringify(entry)}`); + accumulator = reduceFn(accumulator, entry, index++); + if (!continueFn(accumulator, entry, index - 1)) { + break; + } + } + } + // console.log(accumulator); + if (index === 0 && accumulator === EMPTY) { + throw new Error( + 'reduce of empty Glib with no starting value for accumulator', + ); + } + return accumulator; + } + take(count = 1) { + return new Glib( + (function*(iterable) { + let taken = 0; + if (taken >= count) { + return; + } + for (const entry of iterable) { + yield entry; + if (++taken >= count) { + return; + } + } + })(this), + ); + } + first() { + for (const entry of this) { + return entry; + } + } + toInts(base = 10) { + switch (base) { + case 10: + return this.map((i) => BigInt(i)); + default: + throw new Error('unimplemented base'); + } + } + sum() { + return this.reduce((a, b) => { + return a + b; + }, 0n); + } + product() { + return this.partialReduce( + (a, b) => { + return a * b; + }, + (p) => p !== 0n, + ); + } + min() { + return this.reduce((a, b) => (a < b ? a : b)); + } + max() { + return this.reduce((a, b) => (a > b ? a : b)); + } + minMax() { + return this.reduce( + ([min, max], current) => { + return [Math.min(min, current), Math.max(max, current)]; + }, + [Infinity, -Infinity], + ); + } + then(fn) { + return fn(this); + } + infinite() { + return Glib.infiniteFromIterable(this); + } + forEach(eachFn) { + let i = BigInt(0); + for (let entry of this) { + eachFn(entry, i); + i++; + } + } + chunk(chunkLength = EMPTY, leftoversOk = false) { + if (chunkLength === EMPTY) { + throw new Error('must provide chunk length'); + } + return new Glib( + (function*(iterable) { + let chunk = []; + for (const entry of iterable) { + chunk.push(entry); + if (chunk.length === chunkLength) { + yield chunk; + chunk = []; + } + } + if (chunk.length !== 0) { + if (leftoversOk) { + yield chunk; + } else { + throw new Error('chunk operation had leftovers'); + } + } + })(this), + ); + } + frequency() { + return this.reduce((counts, k) => { + counts.set(k, (counts.get(k) || 0n) + 1n); + return counts; + }, new Map()); + } + every(everyFn) { + return this.map(everyFn) + .filter((i) => i === false) + .isEmpty(); + } + lookupInMap(map, allowMissing = false) { + if (!allowMissing) { + throw new Error('todo'); + } + return this.flatMap((k) => { + // console.log(k); + return map.has(k) ? [map.get(k)] : []; + }); + } + filterBySet(set, invert) { + if (invert) { + return this.filter((k) => !set.has(k)); + } + return this.filter((k) => set.has(k)); + } + unique() { + const seen = new Set(); + // better than converting whole iterable to set + // allows for iterative/partial compoutation + // normal set creation from iterable is eager + return this.filter((e) => { + if (seen.has(e)) { + return false; + } + seen.add(e); + return true; + }); + } + [Symbol.iterator]() { + return this._; + } + get array() { + return Array.from(this); + } + get string() { + return this.join(''); + } + get set() { + return new Set(this); + } + get length() { + let i = 0n; + for (const _ of this) { + i++; + } + return i; + } + isEmpty() { + for (const entry of this) { + return false; + } + return true; + } + toMap() { + return new Map(this); + } + // need dvFn to not resuse sets, arrays, etc + toMapReduce(reduceFn, dvFn) { + const output = new Map(); + for (const [k, v] of this) { + output.set(k, reduceFn(output.has(k) ? output.get(k) : dvFn(), v)); + } + return output; + } + toMapArray() { + return this.toMapReduce( + (acc, a) => { + return [...acc, a]; + }, + () => [], + ); + } + toMapSet() { + return this.toMapReduce( + (acc, a) => { + acc.add(a); + return acc; + }, + () => new Set(), + ); + } + reduceScoreK(chooseFn) { + return this.reduce((a, b) => (chooseFn(a[1] > b[1]) ? a : b))[0]; + } + minScoreK() { + return this.reduceScoreK((a, b) => a < b); + } + maxScoreK() { + return this.reduceScoreK((a, b) => a > b); + } +} + +module.exports = Glib; diff --git a/lib/Maps.js b/lib/Maps.js new file mode 100644 index 0000000..dcb2345 --- /dev/null +++ b/lib/Maps.js @@ -0,0 +1,38 @@ +module.exports = class Maps { + static and(...maps) { + if (maps.length === 0) { + return []; + } + + const outputs = []; + for (const i of maps) { + outputs.push(new Map()); + } + + const [map1, ...rest] = maps; + for (const k of map1.keys()) { + if (rest.every((map) => map.has(k))) { + for (let i = 0; i < maps.length; i++) { + outputs[i].set(k, maps[i].get(k)); + } + } + } + return outputs; + } + static combineBy(combineFn, ...maps) { + const result = new Map(); + + for (const map of maps) { + for (const [k, v] of map.entries()) { + result.set(k, result.has(k) ? combineFn(k, result.get(k), v) : v); + } + } + + return result; + } + static add(...maps) { + return Maps.combineBy((k, v1, v2) => { + return v1 + v2; + }, ...maps); + } +}; diff --git a/lib/Sets.js b/lib/Sets.js new file mode 100644 index 0000000..2da8249 --- /dev/null +++ b/lib/Sets.js @@ -0,0 +1,47 @@ +module.exports = class Sets { + static and(set1, ...rest) { + const output = new Set(); + for (const v of set1) { + if (rest.every((set) => set.has(v))) { + output.add(v); + } + } + return output; + } + static or(...sets) { + const output = new Set(); + for (const set of sets) { + for (const v of set) { + output.add(v); + } + } + return output; + } + static xor(...sets) { + if (sets.length !== 2) { + throw new Error('xor is only meaningful on 2 sets'); + } + const [l, r] = sets; + const output = new Set(); + for (const v of l) { + if (!r.has(v)) { + output.add(v); + } + } + for (const v of r) { + if (!l.has(v)) { + output.add(v); + } + } + return output; + } + static counts(...sets) { + const output = new Map(); + for (const set of sets) { + for (const v of set) { + output.set(v, (output.get(v) || 0n) + 1n); + } + } + return output; + } +}; diff --git a/lib/Vector.js b/lib/Vector.js new file mode 100644 index 0000000..9677fda --- /dev/null +++ b/lib/Vector.js @@ -0,0 +1,106 @@ +const Math = require('./bnmath'); +const Glib = require('./Glib'); + +module.exports = class Vector { + static fromString(string) { + if (!string.startsWith('(') || !string.endsWith(')')) { + throw new Error('invalid format'); + } + return new Vector( + ...Glib.fromSplit(string.slice(1, -1), ',').map((i) => BigInt(i.trim())), + ); + } + constructor(...v) { + this.v = v.map((i) => { + switch (typeof i) { + case 'number': + return BigInt(i); + case 'bigint': + return i; + default: + throw new Error('invalid input'); + } + }); + } + _check(v) { + if (typeof v !== 'object' || !(v instanceof Vector)) { + throw new Error('nope'); + } + if (this.len !== v.len) { + throw new Error('mismatched length'); + } + } + _resolve(v) { + if (typeof v === 'number' || typeof v === 'bigint') { + return new Vector(...this.v.map((e) => v)); + } + + if (typeof v !== 'object' || !(v instanceof Vector)) { + throw new Error('nope'); + } + if (this.len !== v.len) { + throw new Error('mismatched length'); + } + + return v; + } + multiply(v) { + v = this._resolve(v); + return new Vector(...this.v.map((e, i) => e * v.v[i])); + } + add(v) { + v = this._resolve(v); + return new Vector(...this.v.map((e, i) => e + v.v[i])); + } + subtract(v) { + v = this._resolve(v); + return this.add(v.multiply(-1)); + } + remainder(v) { + v = this._resolve(v); + return new Vector(...this.v.map((e, i) => e % v.v[i])); + } + modulo(v) { + v = this._resolve(v); + return new Vector( + ...this.v.map((e, i) => ((e % v.v[i]) + v.v[i]) % v.v[i]), + ); + } + distance(v) { + this._check(v); + return this.v + .map((e, i) => { + return Math.abs(e + v.v[i]); + }) + .reduce((a, b) => a + b); + } + neighbors() { + return new Glib( + (function*(_this) { + let permutations = 3n ** _this.length; + const skipped = Math.parseInt('1'.repeat(_this.v.length), 3); + for (let i = 0n; i < permutations; i++) { + if (i === skipped) { + continue; + } + yield _this.add( + new Vector( + ...Glib.fromIterable( + i.toString(3).padStart(_this.v.length, '0'), + ).map((i) => BigInt(i) - 1n), + ), + ); + } + })(this), + ); + } + toArray() { + return this.v.slice(); + } + get length() { + return BigInt(this.v.length); + } + get string() { + return '(' + this.v.join(', ') + ')'; + } +}; diff --git a/lib/_pollute/array.js b/lib/_pollute/array.js new file mode 100644 index 0000000..207f429 --- /dev/null +++ b/lib/_pollute/array.js @@ -0,0 +1,51 @@ +const Glib = require('../glib'); + +Object.defineProperty(Array.prototype, 'glib', { + enumerable: false, + configurable: false, + get() { + return Glib.fromIterable(this); + }, +}); + +Object.defineProperty(Array.prototype, 'set', { + enumerable: false, + configurable: false, + get() { + return new Set(this); + }, +}); + +Array.prototype.safeSplice = function safeSplice(...args) { + const spliced = this.slice(); + spliced.splice(...args); + return spliced; +}; + +Array.prototype.chainSplice = function chainSplice(...args) { + this.splice(...args); + return this; +}; + +Array.prototype.chainPush = function chainPush(...args) { + this.push(...args); + return this; +}; + +Array.prototype.safePush = function safePush(...args) { + const clone = this.slice(); + clone.push(...args); + return clone; +}; + +Array.prototype.safeReverse = function safeReverse(...args) { + const clone = this.slice(); + clone.reverse(...args); + return clone; +}; + +Array.prototype.safeSort = function safeSort(...args) { + const clone = this.slice(); + clone.sort(...args); + return clone; +}; diff --git a/lib/_pollute/index.js b/lib/_pollute/index.js new file mode 100644 index 0000000..5726e7f --- /dev/null +++ b/lib/_pollute/index.js @@ -0,0 +1,15 @@ +const fs = require('fs'); +const path = require('path'); + +for (const filename of fs.readdirSync(__dirname)) { + if (filename === 'index.js' || !filename.endsWith('.js')) { + continue; + } + const resolved = path.resolve(__dirname, filename); + if (!fs.statSync(resolved).isFile()) { + continue; + } + require(resolved); +} + +module.exports = true; diff --git a/lib/_pollute/map.js b/lib/_pollute/map.js new file mode 100644 index 0000000..4116558 --- /dev/null +++ b/lib/_pollute/map.js @@ -0,0 +1,58 @@ +const Glib = require('../glib'); + +Object.defineProperty(Map.prototype, 'glibEntries', { + enumerable: false, + configurable: false, + get() { + return new Glib(this.entries()); + }, +}); + +Object.defineProperty(Map.prototype, 'glibKeys', { + enumerable: false, + configurable: false, + get() { + return new Glib(this.keys()); + }, +}); + +Object.defineProperty(Map.prototype, 'glibValues', { + enumerable: false, + configurable: false, + get() { + return new Glib(this.values()); + }, +}); + +const _getPath = (map, path) => { + for (const component of path) { + if (!map.has(component)) { + return undefined; + } + map = map.get(component); + } + return map; +}; + +Map.prototype.hasPath = function hasPath(path) { + path = Array.from(path); + const map = _getPath(this, path.slice(0, -1)); + if (!map) { + return false; + } + return map.has(path[path.length - 1]); +}; + +Map.prototype.getPath = function getPath(path) { + return _getPath(this, path); +}; + +Map.prototype.setPath = function setPath(path, value) { + path = Array.from(path); + let map = this; + for (const component of path.slice(0, -1)) { + map.set(component, (map = map.get(component) || new Map())); + } + map.set(path[path.length - 1], value); + return this; +}; diff --git a/lib/_pollute/set.js b/lib/_pollute/set.js new file mode 100644 index 0000000..f555ab6 --- /dev/null +++ b/lib/_pollute/set.js @@ -0,0 +1,9 @@ +const Glib = require('../glib'); + +Object.defineProperty(Set.prototype, 'glib', { + enumerable: false, + configurable: false, + get() { + return Glib.fromIterable(this); + }, +}); diff --git a/lib/_pollute/string.js b/lib/_pollute/string.js new file mode 100644 index 0000000..b0f9b63 --- /dev/null +++ b/lib/_pollute/string.js @@ -0,0 +1,30 @@ +const crypto = require('crypto'); + +Object.defineProperty(String.prototype, 'md5', { + enumerable: false, + configurable: false, + get() { + return crypto + .createHash('md5') + .update(this.valueOf()) + .digest('hex'); + }, +}); + +Object.defineProperty(String.prototype, 'characterFrequencies', { + enumerable: false, + configurable: false, + get() { + const frequency = new Map(); + for (const letter of this) { + frequency.set(letter, (frequency.get(letter) || BigInt(0)) + BigInt(1)); + } + return frequency; + }, +}); + +String.prototype.splice = function(...args) { + const characterArray = this.valueOf().split(''); + characterArray.splice(...args); + return characterArray.join(''); +}; diff --git a/lib/fn.js b/lib/fn.js new file mode 100644 index 0000000..121fea0 --- /dev/null +++ b/lib/fn.js @@ -0,0 +1,17 @@ +require('./_pollute/map'); + +module.exports = { + curry: (fn) => (...args) => (...callArgs) => fn(...[...args, ...callArgs]), + curryRight: (fn) => (...args) => (...callArgs) => + fn(...[...callArgs, ...args]), + memo: (fn) => { + const memo = new Map(); + return (...args) => { + const path = [args.length, ...args]; + if (!memo.hasPath(path)) { + memo.setPath(path, fn(...args)); + } + return memo.getPath(path); + }; + }, +}; diff --git a/lib/index.js b/lib/index.js new file mode 100644 index 0000000..1bf2a32 --- /dev/null +++ b/lib/index.js @@ -0,0 +1,18 @@ +const fs = require('fs'); +const path = require('path'); + +module.exports = {}; + +for (const filename of fs.readdirSync(__dirname)) { + if (filename === 'index.js' || !filename.endsWith('.js')) { + continue; + } + const resolved = path.resolve(__dirname, filename); + if (!fs.statSync(resolved).isFile()) { + continue; + } + const key = filename.slice(0, -3); + module.exports[key] = require(resolved); +} + +require('./_pollute'); diff --git a/lib/load.js b/lib/load.js new file mode 100644 index 0000000..8a498d9 --- /dev/null +++ b/lib/load.js @@ -0,0 +1,5 @@ +const fs = require('fs'); +const path = require('path'); + +module.exports = (day) => + fs.readFileSync(path.resolve(__dirname, `../data/${day}.txt`)).toString(); diff --git a/lib/twodee.js b/lib/twodee.js new file mode 100644 index 0000000..691c535 --- /dev/null +++ b/lib/twodee.js @@ -0,0 +1,111 @@ +const Glib = require('./Glib'); +const Vector = require('./Vector'); + +const ORIGIN = new Vector(0, 0); + +const DIRECTIONS = { + UP: new Vector(0, 1), + DOWN: new Vector(0, -1), + LEFT: new Vector(-1, 0), + RIGHT: new Vector(1, 0), +}; + +class Rectangle { + static fromPoints(one, two) { + const [x1, x2] = [one.v[0], two.v[0]].sort(); + const [y1, y2] = [one.v[1], two.v[1]].sort(); + const bottomLeft = new Vector(x1, y1); + const size = bottomLeft.multiply(-1).add(new Vector(x2, y2)); + return new Rectangle(bottomLeft, size); + } + constructor(offset, size) { + // console.log(`${offset.string} ${offset.add(size).string}`); + // todo: normalize? + this.offset = offset; + this.size = size; + } + allPoints() { + return new Glib( + (function*(_this) { + const [startX, startY] = _this.offset.toArray(); + const [endX, endY] = _this.offset.add(_this.size).toArray(); + for (let x = startX; x < endX; x++) { + for (let y = startY; y < endY; y++) { + yield new Vector(x, y); + } + } + })(this), + ); + } +} + +class Instruction { + static fromString(string, instructionSet) { + const [char, ...num] = string.split(''); + + if (!instructionSet.hasOwnProperty(char)) { + throw new Error('invalid move'); + } + + const move = instructionSet[char]; + return num.length === 0 + ? new Instruction(move) + : new Instruction(move, BigInt(num.join(''))); + } + constructor(move, count = 1n) { + this.move = move; + this.count = count; + } + jump(source) { + // console.log(this.count); + return source.add(this.move.multiply(this.count)); + } + walk(source) { + return new Glib( + (function*(_this) { + for (let i = 0n; i < _this.count; i++) { + // console.log(source.string); + source = source.add(_this.move); + yield source; + } + // console.log(source.string); + })(this), + ); + } +} + +module.exports = { + Instruction, + Rectangle, + DIRECTIONS, + ORIGIN, + '^v<>': { + '^': DIRECTIONS.UP, + v: DIRECTIONS.DOWN, + '<': DIRECTIONS.LEFT, + '>': DIRECTIONS.RIGHT, + }, + udlr: { + u: DIRECTIONS.UP, + d: DIRECTIONS.DOWN, + l: DIRECTIONS.LEFT, + r: DIRECTIONS.RIGHT, + }, + UDLR: { + U: DIRECTIONS.UP, + D: DIRECTIONS.DOWN, + L: DIRECTIONS.LEFT, + R: DIRECTIONS.RIGHT, + }, + everyStep(instructions, source = ORIGIN) { + return new Glib( + (function*() { + for (const instruction of instructions) { + // console.log(instruction); + yield* instruction.walk(source); + source = instruction.jump(source); + } + })(), + ); + }, +}; diff --git a/solutions/2015/1.js b/solutions/2015/1.js new file mode 100644 index 0000000..faf8e15 --- /dev/null +++ b/solutions/2015/1.js @@ -0,0 +1,19 @@ +const { Glib } = require('../../lib'); + +const VALUE = { + '(': 1n, + ')': -1n, +}; + +module.exports = { + '1': (input) => + Glib.fromIterable(input) + .map((char) => VALUE[char] || 0n) + .sum(), + '2': (input) => + Glib.fromIterable(input).partialReduce( + ([floor], char, index) => [floor + (VALUE[char] || 0n), index + 1], + ([floor]) => floor >= 0, + [0n, 0], + )[1], +}; diff --git a/solutions/2015/2.js b/solutions/2015/2.js new file mode 100644 index 0000000..5a5104d --- /dev/null +++ b/solutions/2015/2.js @@ -0,0 +1,21 @@ +const { Glib } = require('../../lib'); + +module.exports = { + '1': (input) => + Glib.fromLines(input) + .map((i) => { + const [x, y, z] = i.split('x').glib.toInts().array; + const sides = [x * y, y * z, z * x]; + return sides.glib.sum() * 2n + sides.glib.min(); + }) + .sum(), + 2: (input) => + Glib.fromLines(input) + .map((i) => { + const vertices = i.split('x').glib.toInts().array; + const [x, y, z] = vertices; + const sides = [x + y, y + z, z + x]; + return sides.glib.min() * 2n + vertices.glib.product(); + }) + .sum(), +}; diff --git a/solutions/2015/3.js b/solutions/2015/3.js new file mode 100644 index 0000000..42b026a --- /dev/null +++ b/solutions/2015/3.js @@ -0,0 +1,28 @@ +const { Glib, Sets, twodee } = require('../../lib'); + +const instructions = twodee['^v<>']; + +const parse = (input) => + Glib.fromIterable(input).map((move) => + twodee.Instruction.fromString(move, instructions), + ); + +module.exports = { + '1': (input) => + twodee.everyStep(parse(input)).map((pt) => pt.string).set.size, + '2': (input) => + Sets.or( + ...parse(input) + .chunk(2) + .reduce( + ([sm, rm], [s, r]) => { + // console.log(s, r, sm[sm.length - 1], rm[rm.length - 1]); + sm.push(s.jump(sm[sm.length - 1])); + rm.push(r.jump(rm[rm.length - 1])); + return [sm, rm]; + }, + [[twodee.ORIGIN], [twodee.ORIGIN]], + ) + .map((points) => points.glib.map((pt) => pt.string).set), + ).size, +}; diff --git a/solutions/2015/4.js b/solutions/2015/4.js new file mode 100644 index 0000000..342adaf --- /dev/null +++ b/solutions/2015/4.js @@ -0,0 +1,12 @@ +const { Glib } = require('../../lib'); + +module.exports = { + '1': (input) => + Glib.fromSequence(1) + .filter((number) => `${input}${number}`.md5.startsWith('00000')) + .take(1).string, + '2': (input) => + Glib.fromSequence(1) + .filter((number) => `${input}${number}`.md5.startsWith('000000')) + .take(1).string, +}; diff --git a/solutions/2015/5.js b/solutions/2015/5.js new file mode 100644 index 0000000..5148974 --- /dev/null +++ b/solutions/2015/5.js @@ -0,0 +1,15 @@ +const { Glib } = require('../../lib'); + +module.exports = { + '1': (input) => + Glib.fromLines(input).filter( + (string) => + !string.match(/(ab|cd|pq|xy)/) && + string.match(/[aeiou].*[aeiou].*[aeiou]/) && + string.match(/(.)\1/), + ).length, + '2': (input) => + Glib.fromLines(input).filter( + (string) => string.match(/(..).*\1/) && string.match(/(.).\1/), + ).length, +}; diff --git a/solutions/2016/1.js b/solutions/2016/1.js new file mode 100644 index 0000000..8f1398b --- /dev/null +++ b/solutions/2016/1.js @@ -0,0 +1,87 @@ +const { Glib, Vector } = require('../../lib'); + +const DIRECTIONS = { + NORTH: 'NORTH', + SOUTH: 'SOUTH', + EAST: 'EAST', + WEST: 'WEST', +}; + +const TURNS = { + LEFT: 'L', + RIGHT: 'R', +}; + +const TURN = { + [TURNS.LEFT]: { + [DIRECTIONS.NORTH]: DIRECTIONS.WEST, + [DIRECTIONS.EAST]: DIRECTIONS.NORTH, + [DIRECTIONS.SOUTH]: DIRECTIONS.EAST, + [DIRECTIONS.WEST]: DIRECTIONS.SOUTH, + }, + [TURNS.RIGHT]: { + [DIRECTIONS.NORTH]: DIRECTIONS.EAST, + [DIRECTIONS.EAST]: DIRECTIONS.SOUTH, + [DIRECTIONS.SOUTH]: DIRECTIONS.WEST, + [DIRECTIONS.WEST]: DIRECTIONS.NORTH, + }, +}; + +const MOVE = { + [DIRECTIONS.NORTH]: new Vector(0, 1), + [DIRECTIONS.EAST]: new Vector(1, 0), + [DIRECTIONS.SOUTH]: new Vector(0, -1), + [DIRECTIONS.WEST]: new Vector(-1, 0), +}; + +const START = new Vector(0, 0); + +const parse = (input) => + Glib.fromIterable(input.trim().split(',')).map((i) => { + const [turn, ...distance] = i.trim(); + + if (turn !== TURNS.LEFT && turn !== TURNS.RIGHT) { + throw new Error('Invalid turn'); + } + + return { + turn, + distance: parseInt(distance.join(''), 10), + }; + }); + +module.exports = { + '1': (input) => { + input = parse(input); + let direction = DIRECTIONS.NORTH; + let location = START; + for (const { turn, distance } of input) { + direction = TURN[turn][direction]; + const moveVector = MOVE[direction].multiply(distance); + location = location.add(moveVector); + } + return START.distance(location); + }, + '2': (input) => { + input = parse(input); + let direction = DIRECTIONS.NORTH; + let location = START; + + let visited = new Set(); + for (const { turn, distance } of input) { + direction = TURN[turn][direction]; + const destination = location.add(MOVE[direction].multiply(distance)) + .string; + let locStr = location.string; + while (locStr != destination) { + if (visited.has(locStr)) { + return START.distance(location); + } + visited.add(locStr); + location = location.add(MOVE[direction]); + locStr = location.string; + } + } + }, + parse, +}; diff --git a/solutions/2016/2.js b/solutions/2016/2.js new file mode 100644 index 0000000..57f4c49 --- /dev/null +++ b/solutions/2016/2.js @@ -0,0 +1,71 @@ +const { Glib, Vector } = require('../../lib'); + +const generatePad = (layout) => { + const PAD = {}; + const rows = layout.split('\n'); + for (let i = 0; i < rows.length; i++) { + for (let j = 0; j < rows[i].length; j++) { + const source = rows[i][j]; + if (source.match(/\s/)) { + continue; + } + + const NUM = {}; + const pi = i - 1; + if (pi >= 0 && pi < rows.length) { + const target = rows[pi][j]; + if (target !== ' ' && typeof target === 'string') NUM.U = target; + } + const ni = i + 1; + if (ni < rows.length) { + const target = rows[ni][j]; + if (target !== ' ' && typeof target === 'string') NUM.D = target; + } + const pj = j - 1; + if (pj >= 0) { + const target = rows[i][pj]; + if (target !== ' ' && typeof target === 'string') NUM.L = target; + } + const nj = j + 1; + if (nj < rows.length) { + const target = rows[i][nj]; + if (target !== ' ' && typeof target === 'string') NUM.R = target; + } + PAD[source] = NUM; + } + } + return PAD; +}; + +const PAD1txt = ` +123 +456 +789 +`; +const PAD2txt = ` + 1 + 234 +56789 + ABC + D +`; + +const solve = (input, PAD) => + Glib.fromLines(input) + .reduce( + (code, line) => + code + + line + .trim() + .split('') + .reduce((last, direction) => { + return PAD[last][direction] || last; + }, code[code.length - 1]), + '5', + ) + .slice(1); + +module.exports = { + '1': (input) => solve(input, generatePad(PAD1txt)), + '2': (input) => solve(input, generatePad(PAD2txt)), +}; diff --git a/solutions/2016/3.js b/solutions/2016/3.js new file mode 100644 index 0000000..735727d --- /dev/null +++ b/solutions/2016/3.js @@ -0,0 +1,46 @@ +const { Glib, BNMath: Math } = require('../../lib'); + +function* chunk(input, size) { + let cc = []; + for (const row of input) { + cc.push(row); + if (cc.length === 3) { + yield cc; + cc = []; + } + } + if (cc.length !== 0) { + throw new Error('leftovers!'); + } +} + +const validTriangle = (sides) => { + const hypotenuse = Math.max(...sides); + const others = sides.slice(); + others.splice(sides.indexOf(hypotenuse), 1); + return others[0] + others[1] > hypotenuse; +}; + +const parse = (input) => + Glib.fromLines(input).map( + (triangle) => + triangle + .trim() + .split(/\s+/) + .glib.toInts().array, + ); + +module.exports = { + '1': (input) => parse(input).filter(validTriangle).length, + '2': (input) => + parse(input) + .chunk(3) + .flatMap(([a, b, c]) => { + const output = []; + for (let i = 0; i < 3; i++) { + output.push([a[i], b[i], c[i]]); + } + return output; + }) + .filter(validTriangle).length, +}; diff --git a/solutions/2016/4.js b/solutions/2016/4.js new file mode 100644 index 0000000..b9c9509 --- /dev/null +++ b/solutions/2016/4.js @@ -0,0 +1,59 @@ +const { Glib } = require('../../lib'); + +const calculateChecksum = (string) => { + return Array.from(string.characterFrequencies.entries()) + .sort(([a, af], [b, bf]) => { + if (af > bf) { + return -1; + } else if (af < bf) { + return 1; + } + return a.charCodeAt(0) - b.charCodeAt(0); + }) + .glib.take(5) + .map(([a]) => a).string; +}; + +const START_CHAR_CODE = 'a'.charCodeAt(0); +const decrypt = (name, sectorId) => { + let outputString = ''; + for (let i = 0; i < name.length; i++) { + const letterNum = name.charCodeAt(i) - START_CHAR_CODE; + const decryptedLetterNum = (letterNum + sectorId) % 26; + outputString += String.fromCharCode(decryptedLetterNum + START_CHAR_CODE); + } + return outputString; +}; + +const parse = (input) => + Glib.fromLines(input) + .map((room) => { + let [first, checksum] = room.split('['); + checksum = checksum.slice(0, -1); + const splits = first.split('-'); + const name = splits.slice(0, -1).join('-'); + const sectorId = parseInt(splits.slice(-1), 10); + return { name, sectorId, checksum }; + }) + .filter(({ name, checksum }) => { + const cleanName = name.split('-').join(''); + return calculateChecksum(cleanName) === checksum; + }); + +module.exports = { + '1': (input) => + parse(input) + .map(({ sectorId }) => sectorId) + .toInts() + .sum(), + '2': (input) => + parse(input) + .filter( + ({ name, sectorId }) => + name + .split('-') + .map((component) => decrypt(component, sectorId)) + .join('-') === 'northpole-object-storage', + ) + .first().sectorId, +}; diff --git a/solutions/2016/5.js b/solutions/2016/5.js new file mode 100644 index 0000000..24ed9c7 --- /dev/null +++ b/solutions/2016/5.js @@ -0,0 +1,37 @@ +const { Glib } = require('../../lib'); + +module.exports = { + '1': (input) => + Glib.fromSequence(1, Infinity) + .flatMap((i) => { + const md5 = `${input}${i}`.md5; + return md5.startsWith('00000') ? [md5[5]] : []; + }) + .take(8).string, + '2': (input) => + Glib.fromSequence(1, Infinity) + .flatMap((i) => { + const md5 = `${input}${i}`.md5; + if (!md5.startsWith('00000')) { + return []; + } + const position = parseInt(md5[5], 10); + if (md5[5] != position.toString()) { + return []; + } + return [{ position, character: md5[6] }]; + }) + .partialReduce( + (accumulator, { position, character }, index, done, undone) => { + if (accumulator[position] !== ' ') { + return accumulator; + } + + return accumulator.splice(position, 1, character); + }, + (accumulator) => { + return accumulator.indexOf(' ') !== -1; + }, + ' ', + ), +}; diff --git a/solutions/2016/6.js b/solutions/2016/6.js new file mode 100644 index 0000000..56d4773 --- /dev/null +++ b/solutions/2016/6.js @@ -0,0 +1,42 @@ +const { Glib, Maps } = require('../../lib'); + +const parse = (input) => + Glib.fromLines(input).reduce((frequencies, string, index) => { + if (index === 0) { + frequencies = []; + for (let i = 0; i < string.length; i++) { + frequencies[i] = string[i].characterFrequencies; + } + } else { + for (let i = 0; i < string.length; i++) { + frequencies[i] = Maps.add( + frequencies[i], + string[i].characterFrequencies, + ); + } + } + return frequencies; + }, null); + +module.exports = { + '1': (input) => + parse(input) + .glib.map((i) => + i.glibEntries.reduce( + ([maxChar, maxCount], [char, count]) => + maxCount > count ? [maxChar, maxCount] : [char, count], + ['!', -Infinity], + ), + ) + .map(([char]) => char).string, + '2': (input) => + parse(input) + .glib.map((i) => + i.glibEntries.reduce( + ([minChar, minCount], [char, count]) => + count < minCount ? [char, count] : [minChar, minCount], + ['!', Infinity], + ), + ) + .map(([char]) => char).string, +}; diff --git a/solutions/2017/1.js b/solutions/2017/1.js new file mode 100644 index 0000000..c2932cc --- /dev/null +++ b/solutions/2017/1.js @@ -0,0 +1,22 @@ +const { Glib } = require('../../lib'); + +const VALUE = { + '(': 1, + ')': -1, +}; + +module.exports = { + '1': (input) => + Glib.fromIterable(input) + .filter((char, index) => char === input[(index + 1) % input.length]) + .toInts() + .sum(), + '2': (input) => + Glib.fromIterable(input) + .filter( + (char, index) => + char === input[(index + input.length / 2) % input.length], + ) + .toInts() + .sum(), +}; diff --git a/solutions/2017/2.js b/solutions/2017/2.js new file mode 100644 index 0000000..250e433 --- /dev/null +++ b/solutions/2017/2.js @@ -0,0 +1,38 @@ +const { Glib } = require('../../lib'); + +module.exports = { + '1': (input) => + Glib.fromLines(input) + .map((row) => + row + .trim() + .split(/\s+/) + .glib.toInts() + .minMax(), + ) + .map(([min, max]) => max - min) + .sum(), + '2': (input) => + Glib.fromLines(input.trim()) + .map( + (row) => + row + .trim() + .split(/\s+/) + .glib.toInts().array, + ) + .map((row) => { + for (const dividend of row) { + for (const divisor of row) { + if (dividend === divisor) { + continue; + } + if (dividend % divisor === 0n) { + return dividend / divisor; + } + } + } + throw new Error('no solution'); + }) + .sum(), +}; diff --git a/solutions/2017/3.js b/solutions/2017/3.js new file mode 100644 index 0000000..15a349e --- /dev/null +++ b/solutions/2017/3.js @@ -0,0 +1,162 @@ +const { + Glib, + BNMath: Math, + Vector, + twodee: { DIRECTIONS, ORIGIN }, +} = require('../../lib'); + +const midpointDistance = (i) => (Math.sqrt(i - 1n) + 1n) / 2n; +const rotationalDistance = (i, md) => { + if (i === 1n) { + return 0n; + } + const sideLength = md * 2n; + const rotationalOffset = i - ((md * 2n - 1n) ** 2n + 1n); + const normalizedRotationalOffset = rotationalOffset % sideLength; + const sideOffset = -md + 1n; + return Math.abs(normalizedRotationalOffset + sideOffset); +}; + +const distance = (i) => { + const md = midpointDistance(i); + const rd = rotationalDistance(i, md); + // console.log(i, md, rd); + return md + rd; +}; + +const order = new Map([ + [DIRECTIONS.RIGHT.string, DIRECTIONS.UP], + [DIRECTIONS.UP.string, DIRECTIONS.LEFT], + [DIRECTIONS.LEFT.string, DIRECTIONS.DOWN], + [DIRECTIONS.DOWN.string, DIRECTIONS.RIGHT], +]); + +const check = new Map([ + [DIRECTIONS.RIGHT.string, DIRECTIONS.UP], + [DIRECTIONS.UP.string, DIRECTIONS.LEFT], + [DIRECTIONS.LEFT.string, DIRECTIONS.DOWN], + [DIRECTIONS.DOWN.string, DIRECTIONS.RIGHT], +]); + +const nextDirection = (current, direction, calculated) => + calculated.has(current.add(check.get(direction.string)).string) + ? direction + : order.get(direction.string); + +const validate = [ + 1n, + 1n, + 2n, + 4n, + 5n, + 10n, + 11n, + 23n, + 25n, + 26n, + 54n, + 57n, + 59n, + 122n, + 133n, + 142n, + 147n, + 304n, + 330n, + 351n, + 362n, + 747n, + 806n, + 880n, + 931n, + 957n, + 1968n, + 2105n, + 2275n, + 2391n, + 2450n, + 5022n, + 5336n, + 5733n, + 6155n, + 6444n, + 6591n, + 13486n, + 14267n, + 15252n, + 16295n, + 17008n, + 17370n, + 35487n, + 37402n, + 39835n, + 42452n, + 45220n, + 47108n, + 48065n, + 98098n, + 103128n, + 109476n, + 116247n, + 123363n, + 128204n, + 130654n, + 266330n, + 279138n, + 295229n, + 312453n, + 330785n, + 349975n, + 363010n, + 369601n, + 752688n, + 787032n, + 830037n, + 875851n, + 924406n, + 975079n, + 1009457n, + 1026827n, + 2089141n, + 2179400n, + 2292124n, + 2411813n, + 2539320n, + 2674100n, + 2814493n, + 2909666n, + 2957731n, + 6013560n, + 6262851n, +]; + +module.exports = { + '1': (input) => { + return distance(BigInt(input)); + }, + '2': (input) => { + const target = BigInt(input); + const calculated = new Map([[ORIGIN.string, 1n]]); + let direction = DIRECTIONS.UP; + let current = DIRECTIONS.RIGHT; + let sum = 1n; + while (sum < target) { + sum = current + .neighbors() + .map((pt) => pt.string) + .lookupInMap(calculated, true) + .sum(); + calculated.set(current.string, sum); + current = current.add(direction); + direction = nextDirection(current, direction, calculated); + } + return sum; + + a.filter( + (char, index) => + char === input[(index + input.length / 2) % input.length], + ) + .toInts() + .sum(); + }, +}; diff --git a/solutions/2017/4.js b/solutions/2017/4.js new file mode 100644 index 0000000..17318c8 --- /dev/null +++ b/solutions/2017/4.js @@ -0,0 +1,20 @@ +const { Glib } = require('../../lib'); + +const parse = (input) => Glib.fromLines(input).map((p) => p.split(' ')).array; + +module.exports = { + '1': (input) => + parse(input).filter((words) => words.set.size === words.length).length, + '2': (input) => + parse(input).filter((words) => { + return ( + words.length === + words.map((i) => + i + .split('') + .sort() + .join(), + ).set.size + ); + }).length, +}; diff --git a/solutions/2017/5.js b/solutions/2017/5.js new file mode 100644 index 0000000..14c5665 --- /dev/null +++ b/solutions/2017/5.js @@ -0,0 +1,34 @@ +const { Glib } = require('../../lib'); + +const parse = (input) => Glib.fromLines(input).toInts().array; + +module.exports = { + '1': (input) => { + const program = parse(input); + let programCounter = 0n; + let step = 0; + while (programCounter < program.length) { + const delta = program[programCounter]; + program[programCounter]++; + programCounter += delta; + step++; + } + return step; + }, + '2': (input) => { + const program = parse(input); + let programCounter = 0n; + let step = 0; + while (programCounter < program.length) { + const delta = program[programCounter]; + if (delta >= 3n) { + program[programCounter]--; + } else { + program[programCounter]++; + } + programCounter += delta; + step++; + } + return step; + }, +}; diff --git a/solutions/2018/1.js b/solutions/2018/1.js new file mode 100644 index 0000000..a8a5d02 --- /dev/null +++ b/solutions/2018/1.js @@ -0,0 +1,24 @@ +const { Glib } = require('../../lib'); + +module.exports = { + '1': (input) => + Glib.fromLines(input) + .toInts() + .sum(), + 2: (input) => + Glib.fromLines(input) + .toInts() + .infinite() + .partialReduce( + ({ seen, position }, move, index) => { + position = position + move; + if (seen.has(position)) { + return position; + } + seen.add(position); + return { seen, position }; + }, + (state) => typeof state !== 'bigint', + { seen: new Set([0n]), position: 0n }, + ), +}; diff --git a/solutions/2018/2.js b/solutions/2018/2.js new file mode 100644 index 0000000..400832e --- /dev/null +++ b/solutions/2018/2.js @@ -0,0 +1,35 @@ +const { Glib } = require('../../lib'); + +module.exports = { + '1': (input) => + Glib.fromLines(input) + .map((boxId) => new Set(boxId.characterFrequencies.values())) + .reduce( + ([two, three], counts) => [ + two + (counts.has(2n) ? 1n : 0n), + three + (counts.has(3n) ? 1n : 0n), + ], + [0n, 0n], + ) + .glib.product(), + '2': (input) => { + const boxIds = Glib.fromLines(input).map( + (boxId) => + Glib.fromSequence(0, boxId.length - 1).map((i) => + boxId.splice(Number(i), 1), + ).array, + ).array; + for (let i = 0; i < boxIds.length; i++) { + const left = boxIds[i]; + for (let j = i + 1; j < boxIds.length; j++) { + const right = boxIds[j]; + for (let k = 0; k < left.length; k++) { + if (left[k] === right[k]) { + return left[k]; + } + } + } + } + throw new Error('no solution'); + }, +}; diff --git a/solutions/2018/3.js b/solutions/2018/3.js new file mode 100644 index 0000000..7336cd4 --- /dev/null +++ b/solutions/2018/3.js @@ -0,0 +1,33 @@ +const { Glib, Sets, Vector, twodee } = require('../../lib'); + +const parse = (input) => + Glib.fromLines(input).map((line) => { + const [id, at, offset, size] = line.split(' '); + const offsetPoint = Vector.fromString(`(${offset.slice(0, -1)})`); + const sizeVector = Vector.fromString(`(${size.replace('x', ',')})`); + const rectangle = new twodee.Rectangle(offsetPoint, sizeVector); + return { + id: id.slice(1), + rectangle, + }; + }); + +module.exports = { + '1': (input) => { + return parse(input) + .flatMap(({ rectangle }) => rectangle.allPoints().map((pt) => pt.string)) + .frequency() + .glibValues.filter((v) => v >= 2n).length; + }, + '2': (input) => { + const claimed = parse(input) + .flatMap(({ rectangle }) => rectangle.allPoints().map((pt) => pt.string)) + .frequency(); + return parse(input) + .filter(({ rectangle }) => + rectangle.allPoints().every((pt) => claimed.get(pt.string) === 1n), + ) + .map((i) => i.id) + .join(); + }, +}; diff --git a/solutions/2018/4.js b/solutions/2018/4.js new file mode 100644 index 0000000..74ab600 --- /dev/null +++ b/solutions/2018/4.js @@ -0,0 +1,81 @@ +const { Glib, Maps } = require('../../lib'); + +const parse = (input) => { + return new Glib( + (function*() { + let current = null; + let awake = true; + for (const line of Glib.fromLines(input).array.sort()) { + const [datePortion, actionPortion] = line.split('] '); + if (actionPortion.endsWith('begins shift')) { + if (current != null) { + yield current; + current = null; + } + current = { + guard: BigInt(actionPortion.split(' ')[1].slice(1)), + schedule: [], + }; + awake = true; + } else if (actionPortion === 'wakes up') { + if (awake) { + continue; + } + awake = true; + current.schedule.push(BigInt(datePortion.split(':')[1])); + } else if (actionPortion === 'falls asleep') { + if (!awake) { + continue; + } + awake = false; + current.schedule.push(BigInt(datePortion.split(':')[1])); + } else { + throw new Error('bad line'); + } + } + yield current; + })(), + ); +}; + +module.exports = { + '1': (input) => { + input = parse(input).array; + const chosen = input.glib + .map(({ guard, schedule }) => [ + guard, + schedule.glib + .chunk(2) + .map(([a, b]) => b - a) + .sum(), + ]) + .reduce((a, pair) => Maps.add(a, new Map([pair])), new Map()) + .glibEntries.reduce((a, b) => (a[1] > b[1] ? a : b))[0]; + + return ( + chosen * + input.glib + .filter(({ guard }) => guard === chosen) + .flatMap(({ schedule }) => + schedule.glib + .chunk(2) + .flatMap(([start, end]) => Glib.fromSequence(start, end - 1n)), + ) + .frequency() + .glibEntries.reduce((a, b) => (a[1] > b[1] ? a : b))[0] + ); + }, + 2: (input) => + parse(input) + .flatMap(({ guard, schedule }) => + schedule.glib + .chunk(2) + .flatMap(([start, end]) => Glib.fromSequence(start, end - 1n)) + .map((minute) => `${guard},${minute}`), + ) + .frequency() + .glibEntries.reduce((a, b) => (a[1] > b[1] ? a : b))[0] + .split(',') + .glib.toInts() + .product(), +}; diff --git a/solutions/2018/5.js b/solutions/2018/5.js new file mode 100644 index 0000000..20ca1ab --- /dev/null +++ b/solutions/2018/5.js @@ -0,0 +1,42 @@ +const { Glib } = require('../../lib'); + +const fuelFor = (mass) => mass / 3n - 2n; + +function* tyrant(mass) { + while ((mass = fuelFor(mass)) > 0n) { + yield mass; + } +} + +const react = (input) => { + let lastLength; + do { + lastLength = input.length; + for (let i = 0; i < input.length - 1; i++) { + if ( + input[i] !== input[i + 1] && + input[i].toUpperCase() === input[i + 1].toUpperCase() + ) { + input = input.splice(i, 2); + } + } + } while (input.length < lastLength); + return input; +}; + +module.exports = { + '1': (input) => react(input).length, + 2: (input) => { + // pre-reacting saves a ton of time and makes no moves that invalidate others + input = react(input); + return Glib.fromIterable(input) + .map((i) => i.toLowerCase()) + .unique() + .map((char) => { + const reduced = react(input.replace(new RegExp(char, 'gi'), '')); + return reduced.length; + }) + .toInts() + .min(); + }, +}; diff --git a/solutions/2019/1.js b/solutions/2019/1.js new file mode 100644 index 0000000..83b89b0 --- /dev/null +++ b/solutions/2019/1.js @@ -0,0 +1,22 @@ +const { Glib } = require('../../lib'); + +const fuelFor = (mass) => mass / 3n - 2n; + +function* tyrant(mass) { + while ((mass = fuelFor(mass)) > 0n) { + yield mass; + } +} + +module.exports = { + '1': (input) => + Glib.fromLines(input) + .toInts() + .map((i) => fuelFor(i)) + .sum(), + 2: (input) => + Glib.fromLines(input) + .toInts() + .flatMap((i) => tyrant(i)) + .sum(), +}; diff --git a/solutions/2019/2.js b/solutions/2019/2.js new file mode 100644 index 0000000..a908f64 --- /dev/null +++ b/solutions/2019/2.js @@ -0,0 +1,25 @@ +const { parse, run } = require('./_intcode'); + +const gravityAssist = (program, noun, verb) => { + const pClone = program.slice(); + pClone[1] = noun; + pClone[2] = verb; + return run(pClone).memory[0]; +}; + +module.exports = { + '1': (input) => { + return gravityAssist(parse(input), 12n, 2n); + }, + 2: (input) => { + const program = parse(input); + for (let noun = 0n; noun <= 99n; noun++) { + for (let verb = 0n; verb <= 99n; verb++) { + if (gravityAssist(program, noun, verb) === 19690720n) { + return noun * 100n + verb; + } + } + } + throw new Error('no solution'); + }, +}; diff --git a/solutions/2019/3.js b/solutions/2019/3.js new file mode 100644 index 0000000..33b6885 --- /dev/null +++ b/solutions/2019/3.js @@ -0,0 +1,33 @@ +const { Glib, Maps, Sets, Vector, twodee } = require('../../lib'); + +const parseLine = (input) => + Glib.fromSplit(input, ',').map(([direction, ...numchars]) => { + return new twodee.Instruction( + twodee.UDLR[direction], + BigInt(numchars.join('')), + ); + }); + +module.exports = { + '1': (input) => + Sets.and( + ...Glib.fromLines(input).map( + (line) => twodee.everyStep(parseLine(line)).map((i) => i.string).set, + ), + ) + .glib.map((i) => Vector.fromString(i).distance(twodee.ORIGIN)) + .min(), + 2: (input) => + Maps.add( + ...Maps.and( + ...Glib.fromLines(input).map((line) => + twodee + .everyStep(parseLine(line)) + .map((pt, i) => [pt.string, i + 1]) + .toMap(), + ), + ), + ) + .glibEntries.map(([point, distance]) => distance) + .min(), +}; diff --git a/solutions/2019/4.js b/solutions/2019/4.js new file mode 100644 index 0000000..eb47083 --- /dev/null +++ b/solutions/2019/4.js @@ -0,0 +1,22 @@ +const { Glib } = require('../../lib'); + +const fuelFor = (mass) => mass / 3n - 2n; + +const parse = (input) => + Glib.fromSequence(...Glib.fromSplit(input, '-').toInts()) + .map((number) => number.toString(10)) + .filter( + (password) => + password.match(/(\d)\1/) && + password + .split('') + .sort() + .join('') === password, + ); + +module.exports = { + '1': (input) => parse(input).length, + 2: (input) => + parse(input).filter((i) => i.characterFrequencies.glibValues.set.has(2n)) + .length, +}; diff --git a/solutions/2019/5.js b/solutions/2019/5.js new file mode 100644 index 0000000..e192c93 --- /dev/null +++ b/solutions/2019/5.js @@ -0,0 +1,17 @@ +const { parse, run } = require('./_intcode'); + +const gravityAssist = (program, noun, verb) => { + const pClone = program.slice(); + pClone[1] = noun; + pClone[2] = verb; + return run(pClone).memory[0]; +}; + +module.exports = { + '1': (input) => { + return run(parse(input), [1n]).outputs.glib.sum(); + }, + 2: (input) => { + return run(parse(input), [5n]).outputs.glib.sum(); + }, +}; diff --git a/solutions/2019/6.js b/solutions/2019/6.js new file mode 100644 index 0000000..3b6fd23 --- /dev/null +++ b/solutions/2019/6.js @@ -0,0 +1,69 @@ +const { Glib, Maps, Sets, Vector, twodee } = require('../../lib'); + +const parse = (input) => { + const pairs = Glib.fromLines(input).map((i) => i.split(')')).array; + const parents = pairs.glib.map((pair) => pair.safeReverse()).toMap(); + const children = pairs.glib.toMapSet(); + + const points = new Map( + pairs.glib + .flatMap((i) => i) + .unique() + .map((point) => [ + point, + { + children: children.get(point), + parent: parents.get(point), + }, + ]), + ); + + return points; +}; + +const count = (map, source = 'COM', depth = 0n) => { + return ( + (map.get(source).children || []).glib + .map((name) => count(map, name, depth + 1n)) + .sum() + depth + ); +}; + +const distance = (source, destination, info) => { + let current = source; + let distance = 0n; + while (current !== destination && current !== 'COM') { + distance++; + current = info.get(current).parent; + } + if (current !== destination) { + throw new Error('no link (toward COM)'); + } + return distance; +}; + +const allParents = (source, input) => + new Glib( + (function*() { + let current = source; + while (current !== 'COM') { + current = input.get(current).parent; + yield current; + } + })(), + ); + +module.exports = { + '1': (input) => count(parse(input), 'COM'), + 2: (input) => { + input = parse(input); + return ( + Sets.and(allParents('YOU', input).set, allParents('SAN', input).set) + .glib.map( + (midpoint) => + distance('YOU', midpoint, input) + distance('SAN', midpoint, input), + ) + .min() - 2n + ); + }, +}; diff --git a/solutions/2019/_intcode.js b/solutions/2019/_intcode.js new file mode 100644 index 0000000..d64b56c --- /dev/null +++ b/solutions/2019/_intcode.js @@ -0,0 +1,313 @@ +const { Glib } = require('../../lib'); + +const DEBUG = false; + +const OPCODES = { + ADD: 1n, + MULTIPLY: 2n, + INPUT: 3n, + OUTPUT: 4n, + JUMP_IF_TRUE: 5n, + JUMP_IF_FALSE: 6n, + LESS_THAN: 7n, + EQUALS: 8n, + HALT: 99n, +}; + +const MODES = { + POSITION: 0n, + IMMEDIATE: 1n, +}; + +const CONDITIONS = { + HALT: Symbol('HALT'), +}; + +class AbstractParameter { + read() { + throw new Error("can't read"); + } + write() { + throw new Error("can't write"); + } + position() { + throw new Error("can't write"); + } +} + +class PositionParameter extends AbstractParameter { + constructor(value) { + super(); + this._v = value; + } + read(memory) { + return memory[this._v]; + } + write(memory, value) { + return memory.safeSplice(Number(this._v), 1, value); + } + position() { + return this._v; + } +} + +class DirectParameter extends AbstractParameter { + constructor(value) { + super(); + this._v = value; + } + read() { + return this._v; + } + position() { + return -1n; + } +} + +const INSTRUCTIONS = new Map([ + [ + OPCODES.ADD, + { + arity: 3n, + execute: ({ memory, parameters: [left, right, output] }) => { + DEBUG && + console.log( + `ADD (${left.position()})->${left.read( + memory, + )} (${right.position()})->${right.read( + memory, + )} TO (${output.position()})`, + ); + return { + memory: output.write(memory, left.read(memory) + right.read(memory)), + }; + }, + }, + ], + [ + OPCODES.MULTIPLY, + { + arity: 3n, + execute: ({ memory, parameters: [left, right, output] }) => { + DEBUG && + console.log( + `MULTIPLY (${left.position()})->${left.read( + memory, + )} (${right.position()})->${right.read( + memory, + )} TO (${output.position()})`, + ); + return { + memory: output.write(memory, left.read(memory) * right.read(memory)), + }; + }, + }, + ], + [ + OPCODES.INPUT, + { + arity: 1n, + execute: ({ memory, parameters: [target], inputs }) => { + DEBUG && console.log(`INPUT TO (${target.position()})`); + const [input, ...newInputs] = inputs; + return { + memory: target.write(memory, input), + inputs: newInputs, + }; + }, + }, + ], + [ + OPCODES.OUTPUT, + { + arity: 1n, + execute: ({ memory, parameters: [value], outputs }) => { + DEBUG && + console.log(`OUTPUT (${value.position()})->${value.read(memory)}`); + return { + outputs: outputs.safePush(value.read(memory)), + }; + }, + }, + ], + [ + OPCODES.JUMP_IF_TRUE, + { + arity: 2n, + execute: ({ memory, parameters: [conditional, target] }) => { + DEBUG && + console.log( + `JUMP_IF_TRUE (${conditional.position()})->${conditional.read( + memory, + )} TO (${target.position()})->${target.read(memory)}`, + ); + const diff = {}; + if (conditional.read(memory) !== 0n) { + diff.instructionPointer = target.read(memory); + } + return diff; + }, + }, + ], + [ + OPCODES.JUMP_IF_FALSE, + { + arity: 2n, + execute: ({ memory, parameters: [conditional, target] }) => { + DEBUG && + console.log( + `JUMP_IF_FALSE (${conditional.position()})->${conditional.read( + memory, + )} TO (${target.position()})->${target.read(memory)}`, + ); + const diff = {}; + if (conditional.read(memory) === 0n) { + diff.instructionPointer = target.read(memory); + } + return diff; + }, + }, + ], + [ + OPCODES.LESS_THAN, + { + arity: 3n, + execute: ({ memory, parameters: [left, right, output] }) => { + DEBUG && + console.log( + `LESS_THAN (${left.position()})->${left.read( + memory, + )} < (${right.position()})->${right.read( + memory, + )} TO (${output.position()})`, + ); + return { + memory: output.write( + memory, + left.read(memory) < right.read(memory) ? 1n : 0n, + ), + }; + }, + }, + ], + [ + OPCODES.EQUALS, + { + arity: 3n, + execute: ({ memory, parameters: [left, right, output] }) => { + DEBUG && + console.log( + `EQUALS (${left.position()})->${left.read( + memory, + )} === (${right.position()})->${right.read( + memory, + )} TO (${output.position()})`, + ); + return { + memory: output.write( + memory, + left.read(memory) === right.read(memory) ? 1n : 0n, + ), + }; + }, + }, + ], + // JUMP_IF_TRUE: 5n, + // JUMP_IF_FALSE: 6n, + // LESS_THAN: 7n, + // EQUALS: 8n, + [ + OPCODES.HALT, + { + arity: 0n, + execute: () => { + DEBUG && console.log(`HALT`); + return { + condition: CONDITIONS.HALT, + }; + }, + }, + ], +]); + +const PARAMETER_MODES = new Map([ + [MODES.POSITION, (value) => new PositionParameter(value)], + [MODES.IMMEDIATE, (value) => new DirectParameter(value)], +]); + +const parseInstruction = (instruction) => { + const opcode = instruction % 100n; + const modes = []; + let modeInt = instruction / 100n; + while (modeInt > 0) { + modes.push(modeInt % 10n); + modeInt /= 10n; + } + return { + opcode, + modes, + }; +}; + +const parseParameters = (modes, rawParameters) => { + if (modes.length > rawParameters.length) { + throw new Error('invalid mode arity'); + } else if (modes.length < rawParameters.length) { + modes = modes.concat(Array(rawParameters.length - modes.length).fill(0n)); + } + return rawParameters.map((value, i) => { + const mode = modes[i]; + if (!PARAMETER_MODES.has(mode)) { + throw new Error(`No mode for '${mode}'`); + } + return PARAMETER_MODES.get(mode)(value); + }); +}; + +module.exports = { + parse(text) { + return Glib.fromSplit(text, ',').toInts().array; + }, + run(program, inputs = []) { + let state = { + memory: program.slice(), + instructionPointer: 0n, + inputs, + outputs: [], + }; + while (state.condition !== CONDITIONS.HALT) { + DEBUG && console.log(state); + const { opcode, modes } = parseInstruction( + state.memory[state.instructionPointer], + ); + if (!INSTRUCTIONS.has(opcode)) { + throw new Error(`No instruction for opcode '${opcode}'`); + } + const instruction = INSTRUCTIONS.get(opcode); + const instructionParametersPc = state.instructionPointer + 1n; + const instructionEndPc = instructionParametersPc + instruction.arity; + const parameters = parseParameters( + modes, + instruction.arity > 0n + ? state.memory.slice( + Number(instructionParametersPc), + Number(instructionEndPc), + ) + : [], + ); + if (BigInt(parameters.length) !== instruction.arity) { + throw new Error('Invalid number of parameters'); + } + + const stateChanges = instruction.execute({ ...state, parameters }); + + if (!stateChanges.hasOwnProperty('instructionPointer')) { + stateChanges.instructionPointer = instructionEndPc; + } + + state = { ...state, ...stateChanges }; + } + DEBUG && console.log(state); + return state; + }, +}; diff --git a/solutions/2020/1.js b/solutions/2020/1.js new file mode 100644 index 0000000..38b5f46 --- /dev/null +++ b/solutions/2020/1.js @@ -0,0 +1,28 @@ +const { Glib } = require('../../lib'); + +module.exports = { + '1': (input) => { + input = Glib.fromLines(input).toInts().array; + for (let i = 0; i < input.length; i++) { + for (let j = i; j < input.length; j++) { + if (input[i] + input[j] === 2020n) { + return input[i] * input[j]; + } + } + } + throw new Error('no solution'); + }, + '2': (input) => { + input = Glib.fromLines(input).toInts().array; + for (let i = 0; i < input.length; i++) { + for (let j = i + 1; j < input.length; j++) { + for (let k = j + 1; k < input.length; k++) { + if (input[i] + input[j] + input[k] === 2020n) { + return input[i] * input[j] * input[k]; + } + } + } + } + throw new Error('no solution'); + }, +}; diff --git a/solutions/2020/10.js b/solutions/2020/10.js new file mode 100644 index 0000000..a707b10 --- /dev/null +++ b/solutions/2020/10.js @@ -0,0 +1,41 @@ +const { Glib, BNMath: Math, fn } = require('../../lib'); + +const solve2 = fn.memo((number, inputs) => { + let paths = 0n; + const end = Math.max(number - 3n, 0n); + for (let next = number - 1n; next >= end; next--) { + if (inputs.has(next)) { + paths += solve2(next, inputs); + } else if (next === 0n) { + paths += 1n; + } + } + return paths; +}); + +module.exports = { + '1': (input) => { + let previous = 0n; + const differences = new Map([[3n, 1n]]); + input = Glib.fromLines(input) + .toInts() + .array.safeSort((a, b) => (a - b > 0 ? 1 : -1)) + .glib.forEach((joltage) => { + const difference = joltage - previous; + if (difference > 3n) { + throw new Error('invalid'); + } + differences.set(difference, (differences.get(difference) || 0n) + 1n); + previous = joltage; + }); + return (differences.get(1n) || 0n) * (differences.get(3n) || 0n); + }, + '2': (input) => { + const target = + Glib.fromLines(input) + .toInts() + .max() + 3n; + + return solve2(target, Glib.fromLines(input).toInts().set); + }, +}; diff --git a/solutions/2020/2.js b/solutions/2020/2.js new file mode 100644 index 0000000..d79f762 --- /dev/null +++ b/solutions/2020/2.js @@ -0,0 +1,33 @@ +const { Glib } = require('../../lib'); + +const parse = (input) => + Glib.fromLines(input).map((i) => { + const [meta, password] = i.split(':'); + const [lens, char] = meta.split(' '); + const [min, max] = lens.split('-'); + + return { + min: parseInt(min, 10), + max: parseInt(max, 10), + char, + password: password.trim(), + }; + }); + +const solve = (input, filterFn) => parse(input).filter(filterFn).length; + +module.exports = { + '1': (input) => + solve(input, ({ min, max, char, password }) => { + const charCount = password.split('').filter((c) => c === char).length; + return charCount >= min && charCount <= max; + }), + '2': (input) => + solve( + input, + ({ min, max, char, password }) => + (password[min - 1] === char) !== (password[max - 1] === char), + ), + parse, + solve, +}; diff --git a/solutions/2020/3.js b/solutions/2020/3.js new file mode 100644 index 0000000..e3184cb --- /dev/null +++ b/solutions/2020/3.js @@ -0,0 +1,26 @@ +const { Glib } = require('../../lib'); + +const parse = (input) => Glib.fromLines(input).array; + +const TREE = '#'; + +const solve = (input, yIncrement, xMultiplier) => { + input = parse(input); + let xLoc = 0; + let treeCount = 0; + for (let yLoc = 0; yLoc < input.length; yLoc += yIncrement) { + if (input[yLoc][(yLoc * xMultiplier) % input[yLoc].length] === TREE) { + treeCount++; + } + } + return treeCount; +}; + +module.exports = { + '1': (input) => solve(input, 1, 3), + '2': (input) => + [[1, 1], [1, 3], [1, 5], [1, 7], [2, 1]] + .map(([y, x]) => solve(input, y, x / y)) + .reduce((a, b) => a * b), + parse, +}; diff --git a/solutions/2020/4.js b/solutions/2020/4.js new file mode 100644 index 0000000..1a1852e --- /dev/null +++ b/solutions/2020/4.js @@ -0,0 +1,92 @@ +const { Glib } = require('../../lib'); + +const REQUIRED_FIELDS = [ + 'byr', + 'iyr', + 'eyr', + 'hgt', + 'hcl', + 'ecl', + 'pid', + // 'cid', +]; + +const VALIDATORS = [ + ({ byr }) => { + if (byr.length !== 4) { + return false; + } + const p = parseInt(byr, 10); + if (byr !== p.toString()) { + return false; + } + return p >= 1920 && p <= 2002; + }, + ({ iyr }) => { + if (iyr.length !== 4) { + return false; + } + const p = parseInt(iyr, 10); + if (iyr !== p.toString()) { + return false; + } + return p >= 2010 && p <= 2020; + }, + ({ eyr }) => { + if (eyr.length !== 4) { + return false; + } + const p = parseInt(eyr, 10); + if (eyr !== p.toString()) { + return false; + } + return p >= 2020 && p <= 2030; + }, + ({ hgt }) => { + const p = parseInt(hgt, 10); + if (hgt.endsWith('cm')) { + if (hgt !== p.toString() + 'cm') { + return false; + } + return p >= 150 && p <= 193; + } else if (hgt.endsWith('in')) { + if (hgt !== p.toString() + 'in') { + return false; + } + return p >= 59 && p <= 76; + } + return false; + }, + ({ hcl }) => { + return hcl.replace(/#[0-9a-f]{6}/, '') === ''; + }, + ({ ecl }) => { + // console.log(`${hcl} ${hcl.replace(/#[0-9a-f]{6}/, '')}`); + return ecl.replace(/(amb|blu|brn|gry|grn|hzl|oth)/, '') === ''; + }, + ({ pid }) => { + return pid.replace(/\d{9}/, '') === ''; + }, +]; + +const parse = (input) => + Glib.fromSplit(input, '\n\n').map((l) => + Object.fromEntries( + Glib.fromSplit(l.trim().replace(/\s+/g, ' '), ' ').map((pair) => + pair.split(':'), + ), + ), + ); + +module.exports = { + '1': (input) => + parse(input).filter((i) => + REQUIRED_FIELDS.glib.every((field) => i.hasOwnProperty(field)), + ).length, + '2': (input) => + parse(input) + .filter((i) => + REQUIRED_FIELDS.glib.every((field) => i.hasOwnProperty(field)), + ) + .filter((i) => VALIDATORS.glib.every((vf) => vf(i))).length, +}; diff --git a/solutions/2020/5.js b/solutions/2020/5.js new file mode 100644 index 0000000..a4f4d39 --- /dev/null +++ b/solutions/2020/5.js @@ -0,0 +1,46 @@ +const { Glib } = require('../../lib'); + +const START = 0b0; +const END = 0b1111111111; + +const decode = (bp) => { + if (!bp.match(/^[bf]+[lr]+$/i, '')) { + throw new Error('invalid input'); + } + const binary = bp.replace(/[br]/gi, '1').replace(/[fl]/gi, '0'); + return BigInt('0b' + binary); +}; + +const encode = (seatId, columnCharacters, length) => { + const binary = seatId.toString(2).padStart(length, '0'); + return ( + binary + .slice(0, -columnCharacters) + .replace(/1/g, 'B') + .replace(/0/g, 'F') + + binary + .slice(-columnCharacters) + .replace(/1/g, 'R') + .replace(/0/g, 'L') + ); +}; + +module.exports = { + '1': (input) => + Glib.fromLines(input) + .map(decode) + .reduce((max, current) => (max > current ? max : current), -Infinity), + '2': (input) => { + const foundSid = new Map( + Glib.fromLines(input).map((bp) => [decode(bp), bp]), + ); + return Glib.fromSequence(START, END) + .filter( + (sid) => + !foundSid.has(sid) && + foundSid.has(sid - 1n) && + foundSid.has(sid + 1n), + ) + .join(); + }, +}; diff --git a/solutions/2020/6.js b/solutions/2020/6.js new file mode 100644 index 0000000..6ec125b --- /dev/null +++ b/solutions/2020/6.js @@ -0,0 +1,32 @@ +const { Glib, Maps } = require('../../lib'); + +const parse = (input) => + Glib.fromSplit(input, '\n\n').map((i) => { + return Glib.fromSplit(i) + .map((i) => i.characterFrequencies) + .reduce( + ({ length, frequencies }, b) => ({ + length: length + BigInt(1), + frequencies: Maps.add(frequencies, b), + }), + { length: BigInt(0), frequencies: new Map() }, + ); + }); + +module.exports = { + '1': (input) => { + return parse(input) + .map(({ frequencies }) => { + return BigInt(frequencies.size); + }) + .sum(); + }, + '2': (input) => { + return parse(input) + .map( + ({ length, frequencies }) => + new Glib(frequencies.values()).filter((i) => i === length).length, + ) + .sum(); + }, +}; diff --git a/solutions/2020/7.js b/solutions/2020/7.js new file mode 100644 index 0000000..c9e5c5a --- /dev/null +++ b/solutions/2020/7.js @@ -0,0 +1,70 @@ +const { Glib, Maps } = require('../../lib'); + +const parse = (input) => + Glib.fromLines(input).map((line) => { + const [color, heldString] = line.split(' bags contain '); + const children = []; + + if (heldString !== 'no other bags.') { + const helds = heldString.split(', '); + for (const held of helds) { + const [heldDef] = held.split(' bag'); + const [heldNum, ...heldColorArr] = heldDef.split(' '); + const heldColor = heldColorArr.join(' '); + children.push({ + count: BigInt(heldNum), + color: heldColor, + }); + } + } + + return { color, children }; + }); + +const parseChildren = (input) => + parse(input).reduce((map, { color, children }) => { + map.set(color, children); + return map; + }, new Map()); + +const parseParents = (input) => + parse(input).reduce((map, { color: parentColor, children }) => { + for (const { color } of children) { + let parent; + map.set(color, (parent = map.get(color) || new Set())); + parent.add(parentColor); + } + return map; + }, new Map()); + +const childrenCount = (start, graph) => { + const children = graph.get(start) || []; + let count = BigInt(0); + for (const child of children) { + count += child.count; + count += childrenCount(child.color, graph) * child.count; + } + + return count; +}; + +module.exports = { + '1': (input) => { + const parents = parseParents(input); + + const found = new Set(parents.get('shiny gold')); + let lastCount = 0; + while (lastCount !== found.size) { + lastCount = found.size; + for (const color of found) { + for (const addedColor of parents.get(color) || []) { + found.add(addedColor); + } + } + } + return lastCount; + }, + '2': (input) => { + return childrenCount('shiny gold', parseChildren(input)); + }, +}; diff --git a/solutions/2020/8.js b/solutions/2020/8.js new file mode 100644 index 0000000..18de45e --- /dev/null +++ b/solutions/2020/8.js @@ -0,0 +1,63 @@ +const { Glib } = require('../../lib'); + +const parseInstruction = (i) => { + const [operation, argument] = i.split(' '); + return { operation, argument: BigInt(argument) }; +}; + +const parse = (input) => Glib.fromLines(input).map(parseInstruction).array; + +const operations = new Map([ + ['nop', (argument, state) => ({})], + ['acc', (argument, { acc }) => ({ acc: acc + argument })], + ['jmp', (argument, { pc }) => ({ pc: pc + argument })], +]); + +const step = (state) => { + const { pc = 0n, program, acc = 0n } = state; + const { operation, argument } = program[pc]; + + if (!operations.has(operation)) { + throw new Error('no such operation'); + } + const newState = operations.get(operation)(argument, state); + + if (!newState.hasOwnProperty('pc')) { + newState.pc = pc + 1n; + } + + if (!newState.hasOwnProperty('program')) { + newState.program = program.slice(); + } + + return { ...state, ...newState }; +}; + +const run = (program) => { + let state = { pc: 0n, acc: 0n, program }; + const seenInstructions = new Set(); + while (!seenInstructions.has(state.pc) && state.pc < program.length) { + seenInstructions.add(state.pc); + state = step(state); + } + return state; +}; + +module.exports = { + '1': (input) => run(parse(input)).acc, + '2': (input) => { + const program = parse(input); + return program.glib + .map(({ operation, argument }, i) => { + const modified = program.slice(); + modified[i] = { + operation: operation === 'nop' ? 'jmp' : 'nop', + argument, + }; + return run(modified); + }) + .filter(({ pc, program }) => pc === BigInt(program.length)) + .map(({ acc }) => acc) + .first(); + }, +}; diff --git a/solutions/2020/9.js b/solutions/2020/9.js new file mode 100644 index 0000000..0390939 --- /dev/null +++ b/solutions/2020/9.js @@ -0,0 +1,43 @@ +const { Glib, BNMath: Math, Vector, twodee } = require('../../lib'); + +const invalid = (input, preamble = 25) => { + for (let i = preamble; i < input.length; i++) { + const current = input[i]; + let solved = false; + dance: for (let j = i - preamble; j < i; j++) { + for (let k = j + 1; k < i; k++) { + if (input[j] + input[k] === current) { + solved = true; + break dance; + } + } + } + if (!solved) { + return current; + } + } + throw new Error('no invalid found'); +}; + +const parse = (input) => Glib.fromLines(input).toInts().array; + +module.exports = { + '1': (input) => invalid(parse(input)), + '2': (input) => { + input = parse(input); + const target = invalid(input); + dance: for (let i = 0; i < input.length - 1; i++) { + for (let j = i + 1; j < input.length; j++) { + const sum = input.slice(i, j).glib.sum(); + if (sum === target) { + return input + .slice(i, j) + .glib.minMax() + .glib.sum(); + } else if (sum > target) { + continue dance; + } + } + } + }, +}; diff --git a/testAll.js b/testAll.js new file mode 100644 index 0000000..e61a478 --- /dev/null +++ b/testAll.js @@ -0,0 +1,165 @@ +const { execSync } = require('child_process'); + +const results = { + 2020: { + 1: [1007104, 18847752], + 2: [465, 294], + 3: [237, 2106818610], + 4: [200, 116], + 5: [801, 597], + 6: [6297, 3158], + 7: [177, 34988], + 8: [1553, 1877], + 9: [1721308972, 209694133], + 10: [2277, 37024595836928], + }, + 2019: { + 1: [3386686, 5077155], + 2: [3166704, 8018], + 3: [1225, 107036], + 4: [2150, 1462], + 5: [16434972, 16694270], + 6: [154386, 346], + }, + 2018: { + 1: [578, 82516], + 2: [4980, 'qysdtrkloagnfozuwujmhrbvx'], + 3: [124850, 1097], + 4: [76357, 41668], + // slow + 5: [11894, 5310], + }, + 2017: { + 1: [1097, 1188], + 2: [41887, 226], + 3: [438, 266330], + 4: [383, 265], + // slow (pt2) + 5: [391540, 30513679], + // todo: + // 6: [12841, 8038], + }, + 2016: { + 1: [262, 131], + 2: [24862, '46C91'], + 3: [1032, 1838], + 4: [278221, 267], + // very slow + 5: ['2414bc77', '437e60fc'], + 6: ['mshjnduc', 'apfeeebz'], + }, + 2015: { + 1: [74, 1795], + 2: [1598415, 3812909], + 3: [2565, 2639], + // slow + 4: [117946, 3938038], + 5: [238, 69], + // todo: + // 6: [377891, 14110788], + }, +}; + +const LOG_MODE = ((LOG_MODE) => { + switch (LOG_MODE) { + case 'compact': + return 'compact'; + default: + return 'verbose'; + } +})(process.env.LOG_MODE || 'compact'); +const RUN_SLOW = (process.env.RUN_SLOW || 'false') === 'true'; + +let errors = []; + +const run = (year, day, problem, expected) => { + try { + switch (LOG_MODE) { + case 'compact': + break; + case 'verbose': + process.stdout.write(`${year}-${day} ${problem}: `); + break; + } + + // todo: implement slow solution detection of some sort + const start = process.hrtime.bigint(); + const output = execSync( + `"${process.argv[0]}" index.js ${year} ${day} ${problem}`, + ); + const end = process.hrtime.bigint(); + const actual = output.toString().trim(); + if (actual !== `${expected}`) { + switch (LOG_MODE) { + case 'compact': + process.stdout.write('x'); + errors.push( + `${year}-${day} ${problem} got ${actual}, expected ${expected}\n`, + ); + break; + case 'verbose': + process.stdout.write('fail\n'); + process.stdout.write(`\tgot ${actual}, expected ${expected}\n`); + break; + } + } else { + switch (LOG_MODE) { + case 'compact': + process.stdout.write('.'); + break; + case 'verbose': + process.stdout.write('pass\n'); + break; + } + } + } catch (e) { + process.stdout.write('x\n'); + switch (LOG_MODE) { + case 'compact': + process.stdout.write('e'); + errors.push( + `${year}-${day} ${problem} Error:\n${e.stderr + .toString() + .split('\n') + .map((s) => '\t' + s) + .join('\n')}`, + ); + break; + case 'verbose': + process.stdout.write('error\n'); + process.stdout.write( + e.stderr + .toString() + .split('\n') + .map((s) => '\t' + s) + .join('\n') + '\n', + ); + break; + } + } +}; + +for (const [year, days] of Object.entries(results)) { + switch (LOG_MODE) { + case 'compact': + process.stdout.write(`${year}: `); + break; + case 'verbose': + break; + } + for (const [day, [one, two]] of Object.entries(days)) { + run(year, day, 1, one); + run(year, day, 2, two); + } + switch (LOG_MODE) { + case 'compact': + process.stdout.write('\n'); + break; + case 'verbose': + break; + } +} + +for (const error of errors) { + process.stdout.write(error); +}