summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--d01/Cargo.toml6
-rw-r--r--d01/input.txt1
-rw-r--r--d01/src/main.rs123
-rw-r--r--d02/Cargo.toml6
-rw-r--r--d02/input.txt5
-rw-r--r--d02/src/main.rs86
-rw-r--r--d03/Cargo.toml6
-rw-r--r--d03/input.txt1911
-rw-r--r--d03/src/main.rs89
-rw-r--r--d04/Cargo.toml6
-rw-r--r--d04/input.txt1066
-rw-r--r--d04/src/main.rs135
-rw-r--r--d05/Cargo.toml7
-rw-r--r--d05/src/main.rs86
-rw-r--r--d06/Cargo.toml6
-rw-r--r--d06/input.txt572
-rw-r--r--d06/src/main.rs63
-rw-r--r--d07/Cargo.toml6
-rw-r--r--d07/input.txt2000
-rw-r--r--d07/src/main.rs153
-rw-r--r--d08/Cargo.toml6
-rw-r--r--d08/input.txt162
-rw-r--r--d08/src/main.rs78
-rw-r--r--d09/Cargo.toml6
-rw-r--r--d09/input.txt1
-rw-r--r--d09/src/main.rs123
-rw-r--r--d10/Cargo.toml6
-rw-r--r--d10/input.txt231
-rw-r--r--d10/src/main.rs173
-rw-r--r--d11/Cargo.toml6
-rw-r--r--d11/input.txt4
-rw-r--r--d11/src/main.rs251
-rw-r--r--d12/Cargo.toml6
-rw-r--r--d12/input.txt23
-rw-r--r--d12/src/main.rs129
-rw-r--r--d13/Cargo.toml6
-rw-r--r--d13/src/main.rs79
-rw-r--r--d14/Cargo.toml7
-rw-r--r--d14/src/main.rs116
-rw-r--r--d15/Cargo.toml6
-rw-r--r--d15/input.txt6
-rw-r--r--d15/src/main.rs71
-rw-r--r--d16/Cargo.toml6
-rw-r--r--d16/src/main.rs81
-rw-r--r--d17/Cargo.toml7
-rw-r--r--d17/src/main.rs109
-rw-r--r--d18/Cargo.toml6
-rw-r--r--d18/input.txt1
-rw-r--r--d18/src/main.rs62
-rw-r--r--d19/Cargo.toml6
-rw-r--r--d19/src/main.rs85
-rw-r--r--d20/Cargo.toml6
-rw-r--r--d20/input.txt1104
-rw-r--r--d20/src/main.rs72
-rw-r--r--d21/Cargo.toml7
-rw-r--r--d21/input.txt100
-rw-r--r--d21/src/main.rs109
-rw-r--r--d22/Cargo.toml6
-rw-r--r--d22/input.txt902
-rw-r--r--d22/src/main.rs205
-rw-r--r--d23/Cargo.toml6
-rw-r--r--d23/input.txt26
-rw-r--r--d23/src/main.rs149
-rw-r--r--d24/Cargo.toml7
-rw-r--r--d24/input.txt39
-rw-r--r--d24/src/main.rs146
-rw-r--r--d25/Cargo.toml6
-rw-r--r--d25/input.txt30
-rw-r--r--d25/src/main.rs178
70 files changed, 11292 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1e7caa9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+Cargo.lock
+target/
diff --git a/d01/Cargo.toml b/d01/Cargo.toml
new file mode 100644
index 0000000..0c0a29c
--- /dev/null
+++ b/d01/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "d01"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/d01/input.txt b/d01/input.txt
new file mode 100644
index 0000000..2c9ac6a
--- /dev/null
+++ b/d01/input.txt
@@ -0,0 +1 @@
+L2, L5, L5, R5, L2, L4, R1, R1, L4, R2, R1, L1, L4, R1, L4, L4, R5, R3, R1, L1, R1, L5, L1, R5, L4, R2, L5, L3, L3, R3, L3, R4, R4, L2, L5, R1, R2, L2, L1, R3, R4, L193, R3, L5, R45, L1, R4, R79, L5, L5, R5, R1, L4, R3, R3, L4, R185, L5, L3, L1, R5, L2, R1, R3, R2, L3, L4, L2, R2, L3, L2, L2, L3, L5, R3, R4, L5, R1, R2, L2, R4, R3, L4, L3, L1, R3, R2, R1, R1, L3, R4, L5, R2, R1, R3, L3, L2, L2, R2, R1, R2, R3, L3, L3, R4, L4, R4, R4, R4, L3, L1, L2, R5, R2, R2, R2, L4, L3, L4, R4, L5, L4, R2, L4, L4, R4, R1, R5, L2, L4, L5, L3, L2, L4, L4, R3, L3, L4, R1, L2, R3, L2, R1, R2, R5, L4, L2, L1, L3, R2, R3, L2, L1, L5, L2, L1, R4
diff --git a/d01/src/main.rs b/d01/src/main.rs
new file mode 100644
index 0000000..3117a5a
--- /dev/null
+++ b/d01/src/main.rs
@@ -0,0 +1,123 @@
+use std::fs;
+
+enum Heading {
+ North,
+ East,
+ South,
+ West,
+}
+
+impl Heading {
+ fn turn_left(&mut self) {
+ *self = match *self {
+ Heading::North => Heading::West,
+ Heading::East => Heading::North,
+ Heading::South => Heading::East,
+ Heading::West => Heading::South,
+ };
+ }
+
+ fn turn_right(&mut self) {
+ *self = match *self {
+ Heading::North => Heading::East,
+ Heading::East => Heading::South,
+ Heading::South => Heading::West,
+ Heading::West => Heading::North,
+ };
+ }
+}
+
+fn get_route(input: &str) -> Vec<(isize, isize)> {
+ let steps: Vec<&str> = input.trim().split(", ").collect();
+
+ let mut pos = (0, 0);
+ let mut route = vec![pos];
+
+ let mut facing = Heading::North;
+ for s in steps {
+ // Read which way to turn
+ if s.starts_with("L") {
+ facing.turn_left();
+ } else if s.starts_with("R") {
+ facing.turn_right();
+ }
+
+ // Read how far to go in the new direction
+ let dist: usize = s[1..].parse().unwrap();
+
+ // Add each 1-block step to `route' so that part 2 can be solved
+ for _i in 0..dist {
+ pos = match facing {
+ Heading::North => (pos.0 + 1, pos.1),
+ Heading::East => (pos.0, pos.1 + 1),
+ Heading::South => (pos.0 - 1, pos.1),
+ Heading::West => (pos.0, pos.1 - 1),
+ };
+ route.push(pos);
+ }
+ }
+
+ route
+}
+
+fn solve_part1(input: &str) -> isize {
+ let route = get_route(input);
+ let ended = route.last().unwrap();
+
+ // Manhattan distance from origin to `ended' position
+ ended.0.abs() + ended.1.abs()
+}
+
+fn solve_part2(input: &str) -> Option<isize> {
+ let route = get_route(input);
+
+ for i in 1..route.len() {
+ let pos = route[i - 1];
+ if route[i..].contains(&pos) {
+ // Manhattan distance to first twice-visited position
+ return Some(pos.0.abs() + pos.1.abs());
+ }
+ }
+
+ None
+}
+
+fn main() {
+ // Read instructions from input text file
+ let input = fs::read_to_string("input.txt").unwrap();
+
+ // Part 1 gives 181 for me
+ println!("Part 1 solution: {}", solve_part1(&input));
+
+ // Part 2 gives 140 for me
+ println!("Part 2 solution: {}", solve_part2(&input).unwrap());
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn part1_example1() {
+ let input = "R2, L3";
+ assert_eq!(solve_part1(input), 5);
+ }
+
+ #[test]
+ fn part1_example2() {
+ let input = "R2, R2, R2";
+ assert_eq!(solve_part1(input), 2);
+ }
+
+ #[test]
+ fn part1_example3() {
+ let input = "R5, L5, R5, R3";
+ assert_eq!(solve_part1(input), 12);
+ }
+
+ #[test]
+ fn part2_example1() {
+ let input = "R8, R4, R4, R8";
+ assert_eq!(solve_part2(input).unwrap(), 4);
+ }
+}
diff --git a/d02/Cargo.toml b/d02/Cargo.toml
new file mode 100644
index 0000000..47add02
--- /dev/null
+++ b/d02/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "d02"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/d02/input.txt b/d02/input.txt
new file mode 100644
index 0000000..ba5a73d
--- /dev/null
+++ b/d02/input.txt
@@ -0,0 +1,5 @@
+RUDULRLLUULRURDDRRUDURULLLDRLRLUDDLUDUDDUDRRDUDULDUUULLRULLRLDDLDLDDRLRRRRUDLLDDUULDRLLUDDRRUURLULRRRDLLURRUUDURUDDURLUDDDLUDDUUDUURUDLRDRDRLRDRLDRUDRUUDLRDDRRURDDLRDDRRURDUDDLULLUDRURURRRLRRUDUULULULRRLDLUDUURRLLRUDLLDRDDLRRRULRUDLULDDLLLULDLRUDLLLLRDDLRDRLDRLLRDRRDLRDULULRLLLDRUDRRRUULRUULDRURLUDRURRDLLDLRDLDDDDRRLUDLRRLUUUURDRDDLRRURURRDUULLRLURLURUDDDRDURDUUDRLRLRRLDDLDLDLDDDUDDULURLDDLLRLRRDULUDDLULRLUDDLDLRULUUUDRLDRUDURLUDDRLLRUULDLRRRRDLLLLURULLRDRRUDLUULRRDLLRLRLUDLDDULLDLLRDLDLL
+LLUUUUUUDUDRLRDRDLDURRRLLRRLRURLLUURRLLUDUDLULUURUUURDLUDLDDLULLRDLRUULDLRDUDURLLDDUDUDULLUDDUULLLUULRRRLULRURRDLRUDUDDURRRDRUURDURLLULLRULLDRUULLURLDRDUUDDDDDDRRLDRLRRRLULDDUURRLLLLDRURLURDRDRDURUDUURRDUDUDRLLUUDDRLUDDDRDLDLRLDRURRDLLRULDRLLURURRLUULLRLRRURDDRDRUUURUURUUUDLLRRLUDRLDLRLURLDLUDDUDDDLDUDRRLDLRURULRLLRDUULURRRULDLLLRLDDDUURRRRDULLRURRLULULDLRRUDUDDLRUURDLDUDDUDRRDLRRRDUDUUUDLLDDDDLURLURRRUUULLLULRRLLLLLLULDUUDLRUDRRDLRDUUDUDLLRLDLLRUURDUUURUUUDDLLUUDLULDURLULULUUUDRUDULLURRULRULLRDLDDU
+RLUUURULLDLRLDUDRDURRDUURLLUDDDUULRRRLRLURDDRUULUDULDUUDDDDUDDDDRUDDLDUUDRUDLRRRLLRDDLLLRLLRUULRUULDDRURRLURRLRLULDDRRRDDURDDRDRDULRUDRUUDULRLLULDLRLLDRULRDDRRDDUDLRLLUDRDRRRLUDULRDLRDDURRUUDDRRUDURRUUUDDRRDUDURLUUDUDUURDDDLURLULLUULULURUDUUDRUDULLUUULURDLDUULLDDLLDULRLRLRDUUURUUDLRLDURUDRLDULLUDLDLLRDUURRDUDURLUUUDLLRRULRLULRLDLLURDURRULRLLRRDUDLLRDRRRRDLUUDRUUUDDLRLUDDDDDDRURRRUUURRDLLRURLDDLLDLRRLLLDRRULRRUDLDRDDRRLULURLLUURURURRRRUUUUURUDURLRLLLULULDLLDLRDRRULUDUDRDRRDRDRRDUDLLLRUDRUDDDULRULRRRDRLRUUUURUDURDUUULLULRUDDULDUUDLDURRD
+ULRULDDLDLULLLRRRLRUDDDDDLLDDUDLRRDULUUDRDLRRURDRRLUULRURUDRRULDLLLUDRUUDULULUDDRUDDDRDURRRDRDUUURLRDULUDRDRLDRUDDLLLDRRULUDLUDLDLLRRUDUULULDLDLLUURDLDDLLUUDURLURLLLDRDLDRRLRULUURRDRULRUUURULRRUDDDDLLDLDDLLRRLRRRRDUUDUDLDRDRRURDLRURULDLRDLLLLRUDRLLRDLRLRDURDRUDURRRLRDRDLLRLUDDDDRLRLLDUURRURLUURUULUDLUURDRRUDDLUDUDDDURRDRUDRLRULDULUUUUUUDDUDRUDUUURUDRRDLUDLUUDUULUDURDLDDDLLURRURUUDUDDRRDRLLULULDRLRURRDDDRDUUURDDDRULUDRDDLDURRLDDDLRRRLDDRDURULDLUDLLLURLURRLRRULDLLDDUDRRULDRRRRLURRUULRRRUDLURDLLDLLDULUUDRRLDLLLDRLRUDLUULDLDRUDUDURDRUDRDDDLRLULLUR
+LRLUUURRLRRRRRUURRLLULRLULLDLUDLUDRDDRLDLRLULLURDURLURDLLRLDUUDDURRRRLDLLRULLRLDLLUUDRLDDLLDRULDRLLRURDLRURRUDLULLRURDLURRURUDULLDRLLUUULUDRURRUUDUDULUUULRLDDULDRDLUDDUDDDLRURULLDLLLRLLUURDLRUDLLLLDLLRLRUUUDDRUUUUDLDLRDDURLDURUULLLUUDLLLLDULRRRLLDLDRRDRLUDRUDURLLUDLRLLUDUDRDDDRDLRDLRULUULDRLUDLRLDUURLRRLUDDDUUDDDUDRLDLDUDLURUULLDDDURUUULRLUDLDURUUDRDRURUDDUURDUUUDLLDLDLDURUURLLLLRURUURURULRULLRUDLRRUUUUUDRRLLRDDUURDRDRDDDUDRLURDRRRUDLLLDURDLUUDLLUDDULUUDLDUUULLDRDLRURUURRDURRDLURRRRLLUUULRDULDDLDUURRDLDLLULRRLLUDLDUDLUUL
diff --git a/d02/src/main.rs b/d02/src/main.rs
new file mode 100644
index 0000000..33c7ec0
--- /dev/null
+++ b/d02/src/main.rs
@@ -0,0 +1,86 @@
+use std::fs;
+
+fn solve_part1(lines: &Vec<&str>) -> String {
+ let mut result = String::new();
+
+ let mut num = 5;
+ for line in lines {
+ for c in line.chars() {
+ num = match c {
+ 'U' => if num - 3 > 0 { num - 3 } else { num },
+ 'D' => if num + 3 < 10 { num + 3 } else { num },
+ 'L' => if num % 3 != 1 { num - 1 } else { num },
+ 'R' => if num % 3 != 0 { num + 1 } else { num },
+ _ => num, // shouldn't happen
+ }
+ }
+ result.push_str(&num.to_string());
+ }
+
+ result
+}
+
+fn solve_part2(lines: &Vec<&str>) -> String {
+ let mut result = String::new();
+
+ // Part 2's keypad is a bit more exotic
+ let keypad = [
+ [0, 0, 1, 0, 0],
+ [0, 2, 3, 4, 0],
+ [5, 6, 7, 8, 9],
+ [0, 10, 11, 12, 0],
+ [0, 0, 13, 0, 0],
+ ];
+ let mut pos = (2, 0); // (row, col) index
+
+ for line in lines {
+ for c in line.chars() {
+ let mut new = pos;
+ match c {
+ 'U' => new.0 = if pos.0 > 0 { pos.0 - 1 } else { pos.0 },
+ 'D' => new.0 = if pos.0 < 4 { pos.0 + 1 } else { pos.0 },
+ 'L' => new.1 = if pos.1 > 0 { pos.1 - 1 } else { pos.1 },
+ 'R' => new.1 = if pos.1 < 4 { pos.1 + 1 } else { pos.1 },
+ _ => {}, // shouldn't happen
+ };
+ // Ignore this `c' if it would take us off the diamond's edge
+ if keypad[new.0][new.1] != 0 {
+ pos = new;
+ }
+ }
+
+ // Print as hexadecimal to follow puzzle description
+ result.push_str(&format!("{:X}", keypad[pos.0][pos.1]));
+ }
+
+ result
+}
+
+fn main() {
+ // Read directions from input text file
+ let input = fs::read_to_string("input.txt").unwrap();
+ let lines = input.lines().collect();
+
+ // Part 1 gives 74921 for me
+ println!("Part 1 solution: {}", solve_part1(&lines));
+
+ // Part 2 gives A6B35 for me
+ println!("Part 2 solution: {}", solve_part2(&lines));
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn part1_example1() {
+ let lines = vec!["ULL", "RRDDD", "LURDL", "UUUUD"];
+ assert_eq!(solve_part1(&lines), "1985");
+ }
+
+ #[test]
+ fn part2_example1() {
+ let lines = vec!["ULL", "RRDDD", "LURDL", "UUUUD"];
+ assert_eq!(solve_part2(&lines), "5DB3");
+ }
+}
diff --git a/d03/Cargo.toml b/d03/Cargo.toml
new file mode 100644
index 0000000..5bff35d
--- /dev/null
+++ b/d03/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "d03"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/d03/input.txt b/d03/input.txt
new file mode 100644
index 0000000..b8e5272
--- /dev/null
+++ b/d03/input.txt
@@ -0,0 +1,1911 @@
+ 541 588 421
+ 827 272 126
+ 660 514 367
+ 39 703 839
+ 229 871 3
+ 237 956 841
+ 898 566 112
+ 101 79 112
+ 813 541 146
+ 603 135 565
+ 335 363 180
+ 382 493 669
+ 545 81 843
+ 657 960 849
+ 823 909 9
+ 370 194 908
+ 101 750 317
+ 295 671 968
+ 656 431 64
+ 634 291 245
+ 819 663 266
+ 504 662 829
+ 760 590 918
+ 733 859 258
+ 197 651 137
+ 357 799 638
+ 544 250 597
+ 604 654 431
+ 90 870 184
+ 609 535 604
+ 313 777 650
+ 421 320 741
+ 278 967 430
+ 299 722 23
+ 362 949 973
+ 353 258 989
+ 992 607 461
+ 850 264 490
+ 251 351 569
+ 810 320 116
+ 959 335 611
+ 450 242 624
+ 849 26 376
+ 419 42 222
+ 995 14 291
+ 711 174 615
+ 17 982 961
+ 722 895 941
+ 920 161 480
+ 905 246 531
+ 794 190 144
+ 317 318 633
+ 145 233 150
+ 445 534 519
+ 935 592 863
+ 784 260 844
+ 255 704 570
+ 521 57 61
+ 490 149 110
+ 163 144 142
+ 771 289 60
+ 914 233 541
+ 271 93 542
+ 411 640 812
+ 370 968 65
+ 61 960 781
+ 333 79 421
+ 269 190 428
+ 477 225 96
+ 610 641 265
+ 650 135 461
+ 145 759 380
+ 758 451 682
+ 524 125 861
+ 760 555 251
+ 360 219 567
+ 456 285 726
+ 510 98 927
+ 886 336 228
+ 356 916 323
+ 685 974 165
+ 253 532 207
+ 868 990 548
+ 811 803 525
+ 205 624 894
+ 707 512 328
+ 835 288 657
+ 496 776 413
+ 484 185 10
+ 33 832 403
+ 896 678 789
+ 745 595 773
+ 287 201 669
+ 150 189 513
+ 884 42 131
+ 934 214 407
+ 239 819 149
+ 145 582 334
+ 375 307 467
+ 680 59 850
+ 873 441 973
+ 243 393 256
+ 509 237 265
+ 302 550 334
+ 728 524 291
+ 130 986 333
+ 60 926 390
+ 133 653 692
+ 428 755 491
+ 24 476 659
+ 446 290 823
+ 906 703 410
+ 950 183 391
+ 199 735 250
+ 734 908 254
+ 635 373 34
+ 489 567 275
+ 587 746 463
+ 512 508 367
+ 104 971 568
+ 647 857 191
+ 605 20 775
+ 118 853 634
+ 432 559 322
+ 887 433 134
+ 660 332 336
+ 669 711 952
+ 762 713 610
+ 108 972 860
+ 732 743 562
+ 877 277 758
+ 225 590 380
+ 708 35 424
+ 989 425 439
+ 279 413 818
+ 107 422 634
+ 775 833 667
+ 755 755 279
+ 694 293 6
+ 156 75 649
+ 820 303 651
+ 448 934 587
+ 25 830 788
+ 473 192 932
+ 734 126 535
+ 940 215 513
+ 935 126 656
+ 428 905 789
+ 760 742 772
+ 510 523 633
+ 994 808 110
+ 93 740 100
+ 943 80 198
+ 329 888 532
+ 50 763 337
+ 320 673 741
+ 722 52 639
+ 18 130 566
+ 733 130 921
+ 280 586 642
+ 450 222 350
+ 178 427 325
+ 317 685 261
+ 744 261 105
+ 621 809 326
+ 740 532 605
+ 855 690 526
+ 441 301 185
+ 783 309 196
+ 525 272 334
+ 502 58 432
+ 980 150 121
+ 891 9 800
+ 286 143 705
+ 985 846 850
+ 362 696 70
+ 807 194 900
+ 912 193 448
+ 405 148 461
+ 677 261 30
+ 121 406 308
+ 34 206 451
+ 109 473 312
+ 46 726 695
+ 793 847 25
+ 834 160 708
+ 372 849 375
+ 744 799 423
+ 631 478 715
+ 346 82 545
+ 541 184 95
+ 492 228 588
+ 542 635 43
+ 75 347 439
+ 612 321 431
+ 719 526 847
+ 158 270 338
+ 813 482 560
+ 817 253 402
+ 899 630 887
+ 198 456 730
+ 235 286 344
+ 125 646 398
+ 204 375 401
+ 80 289 308
+ 295 664 862
+ 284 382 565
+ 816 130 651
+ 947 596 383
+ 131 611 723
+ 617 471 549
+ 663 282 697
+ 475 219 901
+ 535 829 434
+ 542 502 544
+ 23 649 110
+ 733 691 820
+ 684 21 821
+ 740 689 1
+ 224 249 280
+ 485 776 350
+ 682 971 182
+ 465 12 610
+ 294 296 13
+ 606 297 594
+ 337 104 3
+ 154 257 343
+ 352 171 349
+ 322 466 973
+ 189 173 854
+ 484 338 714
+ 194 194 551
+ 188 741 162
+ 14 696 663
+ 219 868 33
+ 224 4 446
+ 218 865 411
+ 392 536 574
+ 616 692 482
+ 746 592 94
+ 230 72 663
+ 291 487 99
+ 326 482 669
+ 131 265 155
+ 61 422 609
+ 80 552 641
+ 509 334 851
+ 475 211 911
+ 193 274 737
+ 128 15 973
+ 381 31 255
+ 413 21 812
+ 778 461 3
+ 514 307 697
+ 329 353 695
+ 48 90 212
+ 856 354 294
+ 863 265 360
+ 496 918 264
+ 377 889 164
+ 603 164 418
+ 159 701 199
+ 283 503 186
+ 127 658 54
+ 938 226 855
+ 189 533 465
+ 924 365 906
+ 322 422 291
+ 943 713 238
+ 714 508 138
+ 612 328 49
+ 962 877 685
+ 849 963 732
+ 154 278 428
+ 49 624 476
+ 111 518 753
+ 284 330 216
+ 716 689 290
+ 667 369 127
+ 719 728 175
+ 543 493 139
+ 759 408 286
+ 915 970 827
+ 482 289 787
+ 713 860 621
+ 836 286 729
+ 921 447 223
+ 665 655 706
+ 692 579 316
+ 772 679 289
+ 972 394 84
+ 221 675 877
+ 272 336 864
+ 439 684 69
+ 780 721 503
+ 225 587 125
+ 802 945 408
+ 280 237 682
+ 406 281 745
+ 176 60 71
+ 450 720 335
+ 656 293 383
+ 324 694 454
+ 547 57 51
+ 415 965 657
+ 311 936 687
+ 989 878 585
+ 156 72 165
+ 938 823 574
+ 626 968 146
+ 823 896 588
+ 294 236 597
+ 177 294 177
+ 287 351 480
+ 133 252 649
+ 706 319 175
+ 34 418 960
+ 722 583 906
+ 711 379 674
+ 529 574 882
+ 546 868 781
+ 577 875 687
+ 881 844 503
+ 926 247 190
+ 621 535 356
+ 294 105 257
+ 601 640 579
+ 573 142 519
+ 978 900 427
+ 693 823 350
+ 275 362 683
+ 137 291 741
+ 258 130 517
+ 838 686 12
+ 59 800 869
+ 790 188 881
+ 997 324 278
+ 582 338 887
+ 900 23 712
+ 288 619 402
+ 480 168 596
+ 292 505 505
+ 993 30 982
+ 636 335 892
+ 813 363 175
+ 230 248 620
+ 450 668 896
+ 460 736 874
+ 331 800 837
+ 844 805 734
+ 620 54 708
+ 726 820 592
+ 126 20 394
+ 728 820 219
+ 229 27 32
+ 164 569 939
+ 290 559 949
+ 325 360 794
+ 342 356 529
+ 203 627 691
+ 60 932 544
+ 767 865 563
+ 770 316 525
+ 99 756 674
+ 165 783 180
+ 72 27 846
+ 973 419 905
+ 104 364 294
+ 896 271 613
+ 294 222 416
+ 414 609 858
+ 481 429 478
+ 308 544 615
+ 624 139 560
+ 574 626 840
+ 998 338 328
+ 403 739 211
+ 625 472 120
+ 808 190 64
+ 5 202 558
+ 800 42 607
+ 874 801 675
+ 27 275 735
+ 898 927 280
+ 366 794 526
+ 233 529 13
+ 314 744 525
+ 842 530 617
+ 704 461 406
+ 281 946 841
+ 389 113 678
+ 545 652 410
+ 851 754 339
+ 14 56 706
+ 623 131 738
+ 636 127 931
+ 857 404 199
+ 682 25 387
+ 574 406 435
+ 508 528 307
+ 574 531 575
+ 223 433 827
+ 80 811 486
+ 710 642 904
+ 749 903 795
+ 920 205 60
+ 904 286 108
+ 96 428 120
+ 631 364 307
+ 599 169 180
+ 743 491 302
+ 133 939 980
+ 559 879 883
+ 642 605 918
+ 935 868 810
+ 539 860 357
+ 584 643 972
+ 831 562 800
+ 211 561 108
+ 953 928 802
+ 730 611 73
+ 483 373 139
+ 245 374 210
+ 493 582 77
+ 671 422 887
+ 568 458 930
+ 727 462 467
+ 663 603 657
+ 113 490 966
+ 95 26 415
+ 74 84 463
+ 117 78 276
+ 81 814 741
+ 407 852 36
+ 348 39 748
+ 144 43 826
+ 915 174 218
+ 775 148 820
+ 388 305 131
+ 458 135 195
+ 142 199 96
+ 79 223 625
+ 338 47 879
+ 295 217 575
+ 790 72 723
+ 713 736 711
+ 366 769 330
+ 302 642 718
+ 603 526 956
+ 450 181 663
+ 176 638 433
+ 902 801 408
+ 750 545 97
+ 398 366 271
+ 490 186 474
+ 801 290 324
+ 964 652 190
+ 937 593 344
+ 112 888 373
+ 940 377 623
+ 668 693 367
+ 623 889 870
+ 231 714 220
+ 694 535 837
+ 701 178 674
+ 620 887 23
+ 603 133 576
+ 224 983 601
+ 3 103 234
+ 867 232 33
+ 869 235 233
+ 448 909 262
+ 247 941 265
+ 464 909 4
+ 30 224 22
+ 154 99 764
+ 146 187 786
+ 789 347 512
+ 474 166 775
+ 583 253 359
+ 517 531 274
+ 154 414 735
+ 397 436 997
+ 864 822 104
+ 712 303 243
+ 310 652 217
+ 915 772 521
+ 25 780 616
+ 927 266 233
+ 899 327 372
+ 796 897 343
+ 741 794 508
+ 533 554 586
+ 470 656 176
+ 159 863 749
+ 680 644 839
+ 784 768 143
+ 152 451 939
+ 125 366 67
+ 779 902 437
+ 657 749 452
+ 325 759 722
+ 576 562 249
+ 776 467 790
+ 776 580 296
+ 705 264 84
+ 522 526 220
+ 879 278 392
+ 712 426 442
+ 288 589 363
+ 74 23 960
+ 203 873 22
+ 170 857 952
+ 155 46 56
+ 840 855 211
+ 740 816 188
+ 644 272 737
+ 623 362 311
+ 309 416 848
+ 895 807 900
+ 196 790 127
+ 871 912 916
+ 569 966 180
+ 461 223 854
+ 805 754 886
+ 828 353 453
+ 263 697 656
+ 595 541 418
+ 235 302 908
+ 883 446 723
+ 996 745 204
+ 457 813 925
+ 674 271 977
+ 463 769 97
+ 668 535 957
+ 609 720 417
+ 889 987 722
+ 649 852 317
+ 450 69 383
+ 499 915 226
+ 430 185 435
+ 475 840 992
+ 775 992 695
+ 334 725 933
+ 642 273 908
+ 682 693 55
+ 14 532 444
+ 63 192 736
+ 51 362 930
+ 306 301 474
+ 448 330 373
+ 691 115 425
+ 431 321 623
+ 265 881 504
+ 591 726 138
+ 58 930 870
+ 540 954 120
+ 496 157 772
+ 116 376 817
+ 943 249 828
+ 945 384 518
+ 777 573 897
+ 769 254 676
+ 290 691 734
+ 845 818 135
+ 860 802 75
+ 956 267 157
+ 964 92 268
+ 631 126 262
+ 571 59 14
+ 45 226 368
+ 144 878 306
+ 166 940 581
+ 803 30 24
+ 40 408 268
+ 782 423 267
+ 511 251 426
+ 680 962 467
+ 919 817 103
+ 558 609 789
+ 619 7 544
+ 122 611 384
+ 503 449 80
+ 373 982 264
+ 355 559 207
+ 911 801 105
+ 382 889 894
+ 762 707 989
+ 754 83 383
+ 890 198 327
+ 189 185 492
+ 844 820 374
+ 602 375 81
+ 399 871 374
+ 576 446 620
+ 696 249 930
+ 203 510 741
+ 485 264 79
+ 485 310 443
+ 163 340 469
+ 187 15 873
+ 309 506 141
+ 319 508 753
+ 202 457 500
+ 560 614 177
+ 377 909 534
+ 84 32 898
+ 261 761 825
+ 207 763 85
+ 649 544 761
+ 874 639 578
+ 760 555 435
+ 738 108 970
+ 711 458 986
+ 31 529 83
+ 98 374 182
+ 344 620 186
+ 421 340 29
+ 490 860 153
+ 97 793 609
+ 412 70 510
+ 855 542 805
+ 753 320 429
+ 130 245 621
+ 173 309 23
+ 741 513 716
+ 588 632 728
+ 53 928 543
+ 429 868 480
+ 455 90 465
+ 673 302 632
+ 238 255 483
+ 455 49 181
+ 325 935 570
+ 631 118 140
+ 579 987 515
+ 385 485 576
+ 466 497 16
+ 85 57 595
+ 967 801 619
+ 792 543 386
+ 842 480 332
+ 861 688 780
+ 88 209 741
+ 784 542 396
+ 696 800 232
+ 434 969 747
+ 709 342 679
+ 698 892 147
+ 526 474 726
+ 491 707 679
+ 241 197 440
+ 799 371 452
+ 832 425 98
+ 249 288 669
+ 657 909 768
+ 657 930 957
+ 751 211 846
+ 2 642 844
+ 748 718 11
+ 694 764 366
+ 332 231 268
+ 580 593 459
+ 921 656 751
+ 171 757 815
+ 828 555 167
+ 38 409 765
+ 244 455 834
+ 251 121 421
+ 659 271 526
+ 401 470 326
+ 354 241 846
+ 145 732 473
+ 53 261 972
+ 192 594 511
+ 480 337 383
+ 68 182 937
+ 472 478 653
+ 84 346 471
+ 707 458 137
+ 710 483 366
+ 954 52 537
+ 871 116 778
+ 670 104 912
+ 989 639 346
+ 139 444 640
+ 876 497 599
+ 313 8 980
+ 211 896 163
+ 127 894 850
+ 504 230 28
+ 385 710 79
+ 602 553 90
+ 981 628 560
+ 653 532 914
+ 452 275 432
+ 251 486 366
+ 521 257 539
+ 385 255 892
+ 552 405 361
+ 220 223 576
+ 608 368 309
+ 287 92 647
+ 33 346 483
+ 271 397 213
+ 834 8 851
+ 450 129 51
+ 477 139 847
+ 652 619 430
+ 525 117 446
+ 505 656 250
+ 387 34 263
+ 288 651 381
+ 450 665 145
+ 704 612 710
+ 875 974 543
+ 887 419 378
+ 328 768 521
+ 249 30 936
+ 318 762 906
+ 807 242 71
+ 794 413 374
+ 100 200 330
+ 317 65 889
+ 268 175 870
+ 69 215 691
+ 487 484 583
+ 368 497 505
+ 402 64 263
+ 290 420 846
+ 552 525 839
+ 300 497 485
+ 371 144 551
+ 590 391 504
+ 790 519 261
+ 533 533 519
+ 997 537 453
+ 869 26 534
+ 179 787 612
+ 470 6 559
+ 407 781 138
+ 239 498 490
+ 390 291 976
+ 604 227 556
+ 78 937 610
+ 513 171 447
+ 528 874 853
+ 308 925 92
+ 113 114 109
+ 286 820 150
+ 68 64 664
+ 29 952 167
+ 86 988 736
+ 530 285 93
+ 533 829 394
+ 654 917 322
+ 79 802 748
+ 79 226 476
+ 63 681 810
+ 699 249 37
+ 970 116 99
+ 332 355 71
+ 821 366 189
+ 653 531 751
+ 577 791 917
+ 841 104 877
+ 717 993 919
+ 342 969 58
+ 469 458 501
+ 190 446 208
+ 511 151 600
+ 635 875 369
+ 443 580 620
+ 235 761 902
+ 170 707 130
+ 404 586 241
+ 270 920 319
+ 280 340 126
+ 226 357 857
+ 432 401 816
+ 122 962 518
+ 903 139 38
+ 886 928 553
+ 884 636 522
+ 139 696 787
+ 936 455 611
+ 935 238 617
+ 879 265 631
+ 162 490 358
+ 447 520 570
+ 283 118 375
+ 432 411 768
+ 468 110 89
+ 642 116 624
+ 299 8 687
+ 426 802 789
+ 428 846 419
+ 21 750 486
+ 306 251 164
+ 824 54 144
+ 625 273 242
+ 625 507 776
+ 618 429 200
+ 7 81 763
+ 167 288 97
+ 60 239 173
+ 223 370 259
+ 719 160 934
+ 895 833 51
+ 961 693 984
+ 240 940 566
+ 240 869 930
+ 171 457 848
+ 105 693 480
+ 807 288 493
+ 839 883 538
+ 18 659 905
+ 883 665 543
+ 904 746 659
+ 225 119 529
+ 523 104 507
+ 447 57 109
+ 642 234 709
+ 319 554 656
+ 849 437 597
+ 648 645 614
+ 482 447 953
+ 891 321 883
+ 432 423 391
+ 295 684 242
+ 214 303 540
+ 562 256 130
+ 784 369 960
+ 414 510 954
+ 395 508 442
+ 790 536 212
+ 764 463 384
+ 515 37 205
+ 857 840 421
+ 778 876 558
+ 594 698 882
+ 274 425 847
+ 463 766 592
+ 825 456 751
+ 42 530 818
+ 800 812 238
+ 795 832 365
+ 879 814 318
+ 102 763 445
+ 916 349 731
+ 165 838 485
+ 757 973 270
+ 520 501 512
+ 682 157 411
+ 326 563 238
+ 881 173 303
+ 776 160 358
+ 810 284 156
+ 169 981 827
+ 132 886 635
+ 109 223 359
+ 785 28 287
+ 2 855 288
+ 782 854 23
+ 824 452 743
+ 425 79 768
+ 839 380 810
+ 859 212 356
+ 545 250 389
+ 341 270 90
+ 271 31 500
+ 958 38 718
+ 890 7 642
+ 437 869 750
+ 267 488 241
+ 481 517 781
+ 898 751 423
+ 363 244 7
+ 938 960 415
+ 714 297 426
+ 821 370 697
+ 454 77 498
+ 290 171 296
+ 257 509 698
+ 504 455 525
+ 619 771 981
+ 502 179 779
+ 554 746 322
+ 554 203 273
+ 576 557 27
+ 560 474 284
+ 76 85 88
+ 366 418 956
+ 426 487 928
+ 468 783 402
+ 547 167 678
+ 206 627 728
+ 467 191 185
+ 621 856 989
+ 618 794 862
+ 183 667 714
+ 582 707 993
+ 558 38 366
+ 324 111 131
+ 939 660 600
+ 863 576 550
+ 761 410 470
+ 414 273 362
+ 411 148 179
+ 532 795 514
+ 299 214 719
+ 296 871 522
+ 557 895 97
+ 489 873 782
+ 398 81 760
+ 493 75 328
+ 832 502 96
+ 482 505 247
+ 378 667 38
+ 463 434 78
+ 190 789 78
+ 798 510 131
+ 855 502 824
+ 698 775 920
+ 685 930 693
+ 920 723 923
+ 911 303 901
+ 668 574 538
+ 8 832 573
+ 670 629 626
+ 248 686 96
+ 434 131 743
+ 456 716 679
+ 294 807 107
+ 533 284 167
+ 765 615 130
+ 958 870 257
+ 910 169 662
+ 304 829 425
+ 600 235 796
+ 411 788 121
+ 243 840 791
+ 576 707 927
+ 613 307 633
+ 58 888 639
+ 634 707 253
+ 589 371 730
+ 193 956 813
+ 733 551 197
+ 155 973 175
+ 763 477 200
+ 102 984 83
+ 207 427 487
+ 135 868 546
+ 375 596 389
+ 329 405 299
+ 496 691 230
+ 266 975 261
+ 295 834 423
+ 80 140 572
+ 844 660 625
+ 772 44 369
+ 171 642 782
+ 352 889 273
+ 788 228 588
+ 737 852 753
+ 599 322 664
+ 545 296 545
+ 445 137 454
+ 218 69 171
+ 234 928 681
+ 67 991 829
+ 166 131 174
+ 442 11 769
+ 324 133 795
+ 736 757 408
+ 49 177 439
+ 719 923 31
+ 497 953 502
+ 664 684 447
+ 173 497 278
+ 954 888 913
+ 764 118 107
+ 601 850 972
+ 466 61 19
+ 969 499 418
+ 686 460 404
+ 327 329 165
+ 596 726 139
+ 811 596 75
+ 185 331 327
+ 216 409 168
+ 160 196 483
+ 264 533 1
+ 227 495 151
+ 226 708 155
+ 580 345 615
+ 586 900 862
+ 16 699 871
+ 38 594 382
+ 760 684 141
+ 770 455 511
+ 286 821 117
+ 582 919 393
+ 433 979 346
+ 75 939 949
+ 102 899 631
+ 98 305 567
+ 349 636 399
+ 627 981 520
+ 948 639 181
+ 753 150 521
+ 776 563 328
+ 89 613 658
+ 552 747 504
+ 131 449 276
+ 429 824 391
+ 283 542 472
+ 731 199 435
+ 456 707 160
+ 675 243 107
+ 547 911 854
+ 170 849 912
+ 497 869 377
+ 475 951 392
+ 458 273 24
+ 140 109 311
+ 38 276 388
+ 151 274 515
+ 100 704 858
+ 811 362 42
+ 745 777 817
+ 740 497 81
+ 424 270 266
+ 375 714 277
+ 602 668 923
+ 33 492 225
+ 603 953 772
+ 244 65 920
+ 247 659 29
+ 380 651 916
+ 674 529 388
+ 656 624 288
+ 53 112 270
+ 653 385 841
+ 736 945 725
+ 474 883 204
+ 995 21 127
+ 264 886 337
+ 873 870 237
+ 275 42 834
+ 188 202 872
+ 232 234 490
+ 688 384 29
+ 713 174 281
+ 90 533 299
+ 365 437 364
+ 345 940 484
+ 572 829 274
+ 556 319 28
+ 310 736 27
+ 758 729 19
+ 919 993 823
+ 942 949 411
+ 520 610 663
+ 376 24 997
+ 876 668 790
+ 762 682 677
+ 530 224 905
+ 480 624 428
+ 127 796 916
+ 777 114 158
+ 38 824 844
+ 771 821 741
+ 870 738 438
+ 615 13 677
+ 856 751 710
+ 68 89 515
+ 827 390 728
+ 889 356 930
+ 741 935 128
+ 858 515 386
+ 641 922 307
+ 714 383 434
+ 381 638 194
+ 710 290 388
+ 601 658 846
+ 610 559 781
+ 10 439 810
+ 114 699 864
+ 848 860 733
+ 949 736 155
+ 454 185 588
+ 188 877 350
+ 597 820 593
+ 240 725 614
+ 22 553 516
+ 239 428 318
+ 707 173 296
+ 649 766 51
+ 557 760 313
+ 913 62 485
+ 362 24 684
+ 805 55 212
+ 610 397 255
+ 331 680 376
+ 733 339 525
+ 777 7 686
+ 879 920 684
+ 495 926 25
+ 175 533 818
+ 678 810 343
+ 690 823 682
+ 52 185 180
+ 245 228 826
+ 299 102 977
+ 904 227 871
+ 867 20 889
+ 666 220 171
+ 696 805 515
+ 380 681 837
+ 738 243 339
+ 576 513 714
+ 898 609 914
+ 732 403 842
+ 65 29 417
+ 635 604 578
+ 588 610 339
+ 123 147 654
+ 65 80 660
+ 113 123 70
+ 530 767 183
+ 154 253 34
+ 377 994 217
+ 991 771 825
+ 557 595 223
+ 839 175 698
+ 680 414 626
+ 57 876 930
+ 675 735 408
+ 674 747 543
+ 547 749 929
+ 161 36 383
+ 286 951 733
+ 453 923 535
+ 480 575 661
+ 643 402 847
+ 630 953 624
+ 21 888 632
+ 136 814 335
+ 833 441 246
+ 937 388 147
+ 613 604 255
+ 668 625 410
+ 196 660 255
+ 117 333 779
+ 884 780 853
+ 912 919 303
+ 72 632 889
+ 929 27 933
+ 858 630 181
+ 647 439 851
+ 543 205 795
+ 270 431 312
+ 514 300 234
+ 455 290 594
+ 415 38 755
+ 392 749 796
+ 760 749 105
+ 368 10 783
+ 844 620 117
+ 514 323 208
+ 359 499 126
+ 641 9 263
+ 636 233 362
+ 61 245 109
+ 665 493 989
+ 494 711 865
+ 195 534 431
+ 200 651 721
+ 42 832 577
+ 178 262 431
+ 912 555 708
+ 891 524 503
+ 326 978 344
+ 984 371 44
+ 678 443 935
+ 655 654 905
+ 384 602 298
+ 828 716 458
+ 734 243 645
+ 200 588 627
+ 434 319 449
+ 541 648 208
+ 618 393 505
+ 49 51 527
+ 651 431 27
+ 794 116 242
+ 454 99 190
+ 614 169 369
+ 635 347 837
+ 533 718 55
+ 127 859 890
+ 809 535 303
+ 922 487 246
+ 199 619 78
+ 124 599 113
+ 951 248 547
+ 853 792 528
+ 639 270 510
+ 704 256 49
+ 192 143 521
+ 821 5 339
+ 14 299 920
+ 827 296 810
+ 396 630 54
+ 409 319 535
+ 582 850 483
+ 748 125 175
+ 876 51 329
+ 536 141 309
+ 944 357 396
+ 807 390 188
+ 889 577 474
+ 778 295 217
+ 752 299 217
+ 45 424 155
+ 506 283 758
+ 239 427 742
+ 740 162 16
+ 103 466 204
+ 656 718 395
+ 711 370 556
+ 915 240 466
+ 381 152 564
+ 698 136 118
+ 801 989 979
+ 404 20 740
+ 920 980 503
+ 426 449 642
+ 345 396 63
+ 314 52 601
+ 908 910 453
+ 639 943 749
+ 886 903 652
+ 505 623 394
+ 564 131 304
+ 250 542 119
+ 470 353 683
+ 207 558 664
+ 587 282 129
+ 368 850 270
+ 721 525 763
+ 857 515 929
+ 163 172 921
+ 813 379 716
+ 848 308 879
+ 231 683 824
+ 564 715 305
+ 589 903 967
+ 452 576 371
+ 120 820 215
+ 444 536 215
+ 897 300 478
+ 659 78 489
+ 688 259 807
+ 475 744 132
+ 430 47 721
+ 59 729 594
+ 123 255 846
+ 267 822 141
+ 283 982 920
+ 914 670 772
+ 31 803 762
+ 882 940 22
+ 196 889 610
+ 412 540 310
+ 473 467 599
+ 186 108 628
+ 749 266 559
+ 876 263 736
+ 741 794 155
+ 916 489 217
+ 244 683 93
+ 735 32 860
+ 79 469 774
+ 694 498 168
+ 875 971 968
+ 44 660 936
+ 891 909 68
+ 335 803 447
+ 592 440 192
+ 602 625 528
+ 964 299 913
+ 864 165 676
+ 870 211 388
+ 139 658 896
+ 161 710 828
+ 239 681 111
+ 71 727 871
+ 899 324 898
+ 876 969 47
+ 102 426 768
+ 645 531 788
+ 740 143 24
+ 126 687 39
+ 692 236 701
+ 680 904 696
+ 19 888 694
+ 315 353 457
+ 331 917 500
+ 407 291 968
+ 335 410 880
+ 558 515 406
+ 450 379 766
+ 500 149 685
+ 90 442 254
+ 590 573 807
+ 444 759 934
+ 547 983 229
+ 591 6 764
+ 457 631 82
+ 351 623 791
+ 697 240 380
+ 680 586 523
+ 142 542 564
+ 196 568 103
+ 671 672 588
+ 861 102 540
+ 297 946 373
+ 351 757 750
+ 573 445 421
+ 110 931 491
+ 244 667 417
+ 253 852 662
+ 133 258 885
+ 801 791 404
+ 840 867 890
+ 138 506 521
+ 786 496 173
+ 813 618 607
+ 56 189 183
+ 143 464 143
+ 194 568 251
+ 553 975 89
+ 40 956 336
+ 529 579 340
+ 517 876 870
+ 698 748 771
+ 513 191 220
+ 985 754 351
+ 297 869 155
+ 865 124 214
+ 349 627 737
+ 458 241 398
+ 383 417 996
+ 469 56 636
+ 281 379 667
+ 290 375 403
+ 61 54 128
+ 47 999 378
+ 16 996 484
+ 453 718 314
+ 324 643 418
+ 240 134 361
+ 890 9 340
+ 141 90 353
+ 868 94 582
+ 876 486 539
+ 231 662 114
+ 981 831 580
+ 609 264 435
+ 510 378 388
+ 125 321 143
+ 245 785 782
+ 171 368 238
+ 78 959 740
+ 174 264 202
+ 797 597 391
+ 832 496 415
+ 155 676 108
+ 648 947 171
+ 630 556 239
+ 75 61 727
+ 356 439 740
+ 363 455 230
+ 746 64 703
+ 699 487 178
+ 110 477 537
+ 347 640 201
+ 704 118 559
+ 857 719 453
+ 215 861 623
+ 665 768 311
+ 635 95 630
+ 418 547 323
+ 546 432 466
+ 635 256 163
+ 20 948 990
+ 164 982 281
+ 152 173 745
+ 688 580 193
+ 602 239 331
+ 875 390 312
+ 935 818 360
+ 163 996 778
+ 838 617 720
+ 69 195 442
+ 795 604 370
+ 809 647 473
+ 724 606 742
+ 709 743 861
+ 101 798 285
+ 656 333 91
+ 541 591 94
+ 185 327 149
+ 677 34 945
+ 543 170 473
+ 544 183 994
+ 578 574 351
+ 560 863 386
+ 62 613 114
+ 67 950 242
+ 303 606 171
+ 364 461 152
+ 592 209 521
+ 736 696 587
+ 935 534 284
+ 466 283 120
+ 301 458 742
+ 622 618 758
+ 332 643 475
+ 704 495 412
+ 386 920 113
+ 632 658 906
+ 405 917 669
+ 969 309 974
+ 762 93 102
+ 778 191 601
+ 897 117 681
+ 313 553 678
+ 60 703 504
+ 360 711 335
+ 240 415 317
+ 83 256 292
+ 182 622 509
+ 945 298 318
+ 812 581 650
+ 988 778 820
+ 744 692 625
+ 808 652 11
+ 156 285 613
+ 256 59 486
+ 9 493 462
+ 246 488 875
+ 476 284 372
+ 84 413 124
+ 508 626 464
+ 784 760 569
+ 275 439 701
+ 669 705 634
+ 571 647 526
+ 704 798 866
+ 141 939 981
+ 700 416 888
+ 677 579 687
+ 127 250 564
+ 302 288 392
+ 747 164 661
+ 876 145 974
+ 235 776 950
+ 698 425 25
+ 711 960 937
+ 587 155 168
+ 321 39 529
+ 843 172 601
+ 538 979 79
+ 209 788 585
+ 347 615 623
+ 605 703 53
+ 348 760 293
+ 825 194 336
+ 246 913 550
+ 571 745 359
+ 755 305 568
+ 137 502 612
+ 92 335 819
+ 185 176 244
+ 793 927 516
+ 90 917 10
+ 795 120 526
+ 376 200 481
+ 935 286 222
+ 745 116 477
+ 132 528 588
+ 812 162 598
+ 926 516 67
+ 137 753 113
+ 762 860 967
+ 894 663 993
+ 420 933 587
+ 822 614 897
+ 946 964 988
+ 731 224 756
+ 582 547 763
+ 273 333 12
+ 520 794 181
+ 461 498 846
+ 970 493 885
+ 866 400 229
+ 895 427 943
+ 80 303 913
+ 658 256 244
+ 481 981 281
+ 418 784 512
+ 785 739 556
+ 598 79 548
+ 905 798 18
+ 16 747 709
+ 604 422 109
+ 622 337 607
+ 235 664 940
+ 192 928 263
+ 427 669 747
+ 259 364 794
+ 312 606 973
+ 66 888 604
+ 504 601 128
+ 789 731 543
+ 883 385 584
+ 549 746 739
+ 243 30 974
+ 517 774 893
+ 479 361 847
+ 507 170 333
+ 264 387 860
+ 688 905 485
+ 302 677 369
+ 521 918 694
+ 306 435 744
+ 413 683 692
+ 662 504 471
+ 131 393 765
+ 277 613 541
+ 311 977 448
+ 77 714 200
+ 535 760 407
+ 567 910 371
+ 477 161 408
+ 175 224 834
+ 524 139 423
+ 53 197 234
+ 741 44 130
+ 747 220 343
+ 152 970 844
+ 517 178 54
+ 585 864 867
+ 812 201 16
+ 434 561 27
+ 617 372 23
+ 483 981 131
+ 635 157 182
+ 729 836 185
+ 638 762 607
+ 99 836 79
+ 714 939 613
+ 19 369 171
+ 168 424 312
+ 161 605 447
+ 294 24 766
+ 390 16 992
+ 188 31 532
+ 876 971 282
+ 893 980 505
+ 36 64 438
+ 820 658 792
+ 784 742 672
+ 544 951 415
+ 825 586 313
+ 115 47 298
+ 913 539 539
+ 399 383 574
+ 5 616 775
+ 401 574 837
+ 932 186 210
+ 314 140 652
+ 685 75 667
+ 683 303 224
+ 654 260 698
+ 269 338 909
+ 481 395 983
+ 467 651 337
+ 117 633 789
+ 960 676 402
+ 570 438 248
+ 537 686 151
+ 100 375 563
+ 894 196 476
+ 902 430 890
+ 832 161 413
+ 852 600 150
+ 655 713 277
+ 223 462 773
+ 579 348 861
+ 423 599 107
+ 820 655 872
+ 664 615 487
+ 175 158 793
+ 382 330 208
+ 226 433 657
+ 316 321 505
+ 332 718 917
+ 349 349 837
+ 220 449 309
+ 353 49 699
+ 745 314 852
+ 488 295 161
+ 390 277 913
+ 403 130 139
+ 194 244 874
+ 250 900 126
+ 234 800 17
+ 434 407 144
+ 502 334 514
+ 777 558 417
+ 581 435 444
+ 644 399 448
+ 351 674 351
+ 588 789 785
+ 418 283 642
+ 410 177 125
+ 110 116 747
+ 116 392 639
+ 22 250 219
+ 106 332 452
+ 882 523 655
+ 838 798 712
+ 970 438 99
+ 796 526 268
+ 18 569 586
+ 811 154 770
+ 225 483 638
+ 700 365 856
+ 628 121 280
+ 109 217 93
+ 610 365 262
+ 628 309 184
+ 716 382 175
+ 72 480 116
+ 762 852 94
+ 398 119 308
+ 595 323 380
+ 289 260 116
+ 73 26 147
+ 833 574 967
+ 790 595 890
+ 513 446 883
+ 657 520 594
+ 241 206 421
+ 193 383 465
+ 993 932 141
+ 972 902 489
+ 54 459 409
+ 67 134 614
+ 43 487 631
+ 578 500 479
+ 728 426 182
+ 441 202 325
+ 213 653 761
+ 311 499 642
+ 265 939 467
+ 457 609 840
+ 43 732 121
+ 487 317 958
+ 223 424 394
+ 489 429 40
+ 367 87 362
+ 420 217 87
+ 628 855 185
+ 212 679 162
+ 142 146 150
+ 770 529 597
+ 735 410 568
+ 457 497 182
+ 203 447 45
+ 266 299 200
+ 933 580 14
+ 345 883 795
+ 629 311 798
+ 81 312 674
+ 25 40 629
+ 58 343 43
+ 285 384 381
+ 365 202 764
+ 144 319 775
+ 236 237 727
+ 219 681 491
+ 374 901 870
+ 429 92 77
+ 561 73 648
+ 845 28 647
+ 764 497 183
+ 345 591 73
+ 824 804 193
+ 37 452 516
+ 12 25 584
+ 33 431 562
+ 283 354 846
+ 457 278 67
+ 698 201 894
+ 26 283 646
+ 658 597 344
+ 686 455 490
+ 473 265 560
+ 497 207 736
+ 140 298 623
+ 588 960 698
+ 591 32 249
+ 3 973 823
+ 265 151 789
+ 644 300 86
+ 552 366 744
+ 561 302 955
+ 547 867 988
+ 514 852 638
+ 682 499 416
+ 573 945 845
+ 535 635 658
+ 197 495 330
+ 333 483 690
+ 309 42 532
+ 489 158 372
+ 566 482 961
+ 109 341 783
+ 677 712 119
+ 531 37 232
+ 340 720 347
+ 913 134 690
+ 889 142 429
+ 206 232 821
+ 742 721 309
+ 461 532 188
+ 888 360 389
+ 671 950 531
+ 569 238 573
+ 205 837 461
+ 678 911 560
+ 537 935 552
+ 245 346 500
+ 84 225 546
+ 506 752 793
+ 499 609 383
+ 246 199 476
+ 197 634 991
+ 420 554 641
+ 238 720 826
+ 571 179 321
+ 547 902 890
+ 550 5 156
+ 424 149 875
+ 598 156 814
+ 724 95 766
+ 38 236 620
+ 742 238 162
+ 462 213 218
+ 283 599 565
+ 460 812 473
+ 331 733 798
+ 43 32 896
+ 286 711 908
+ 406 288 678
+ 515 881 387
+ 914 756 617
+ 300 178 3
+ 559 543 905
+ 485 486 909
+ 851 950 411
+ 360 806 419
+ 704 305 747
+ 730 206 61
+ 808 435 421
+ 588 349 416
+ 346 519 684
+ 718 771 253
+ 936 695 748
+ 966 123 346
+ 487 571 976
+ 717 673 998
+ 343 505 124
+ 109 169 918
+ 247 646 985
+ 850 995 239
+ 702 762 661
+ 733 677 459
+ 54 660 25
+ 625 661 192
+ 654 55 168
+ 227 364 350
+ 221 655 867
+ 52 413 767
+ 948 714 641
+ 111 412 816
+ 859 833 382
+ 250 719 818
+ 528 616 94
+ 386 203 781
+ 111 447 244
+ 316 383 677
+ 280 100 824
+ 452 322 649
+ 634 793 332
+ 625 665 349
+ 49 435 758
+ 320 580 776
+ 352 166 227
+ 691 801 376
+ 89 794 10
+ 758 19 387
+ 24 951 738
+ 584 127 681
+ 564 888 469
+ 421 813 308
+ 120 380 894
+ 539 675 908
+ 610 112 430
+ 605 196 435
+ 822 89 10
+ 912 760 205
+ 497 850 873
+ 472 876 699
+ 582 896 978
+ 727 238 974
+ 748 784 223
+ 961 411 965
+ 954 767 62
+ 148 855 987
+ 832 955 512
+ 399 748 110
+ 530 616 422
+ 525 708 992
+ 668 340 962
+ 833 804 120
+ 797 294 259
+ 693 181 688
+ 898 165 715
+ 675 424 309
+ 596 76 129
+ 519 470 267
+ 377 926 744
+ 551 66 834
+ 560 976 275
+ 475 551 92
+ 195 468 205
+ 446 358 122
+ 366 338 734
+ 972 710 760
+ 914 818 24
+ 532 324 333
+ 75 917 277
+ 605 656 369
+ 727 548 469
+ 58 84 437
+ 674 524 68
+ 467 452 792
+ 841 519 660
+ 922 861 946
+ 682 753 605
+ 777 419 758
+ 536 434 269
+ 291 624 351
+ 372 151 768
+ 86 579 751
+ 252 720 474
+ 976 739 949
+ 878 23 771
+ 320 259 561
+ 536 887 709
+ 491 828 668
+ 949 488 913
+ 973 40 122
+ 868 492 808
+ 261 938 614
+ 42 327 679
+ 296 806 227
+ 251 681 523
+ 555 933 543
+ 802 343 31
+ 739 605 863
+ 581 553 337
+ 198 880 885
+ 139 466 781
+ 479 471 785
+ 565 29 36
+ 962 283 367
+ 756 881 927
+ 761 837 936
+ 413 712 289
+ 118 620 91
+ 297 732 256
+ 733 895 489
+ 163 12 540
+ 655 898 321
+ 241 509 371
+ 916 272 653
+ 688 281 810
+ 103 215 281
+ 987 92 408
+ 957 170 454
+ 466 88 293
+ 40 813 103
+ 436 766 254
diff --git a/d03/src/main.rs b/d03/src/main.rs
new file mode 100644
index 0000000..d168a44
--- /dev/null
+++ b/d03/src/main.rs
@@ -0,0 +1,89 @@
+use std::fs;
+
+fn solve_part1(rows: &Vec<Vec<usize>>) -> usize {
+ let mut num_valid: usize = 0;
+
+ for row in rows {
+ let mut sides = row.clone();
+
+ sides.sort();
+ if sides[0] + sides[1] > sides[2] {
+ num_valid += 1;
+ }
+ }
+
+ num_valid
+}
+
+fn solve_part2(rows: &Vec<Vec<usize>>) -> usize {
+ let mut num_valid: usize = 0;
+
+ // For each 3 consecutive rows of data
+ for i in 0..(rows.len() / 3) {
+ // For each of the 3 numbers per row
+ for j in 0..3 {
+ let mut sides = Vec::new();
+ // For each row in this group of 3 rows
+ for k in 0..3 {
+ sides.push(rows[3 * i + k][j]);
+ }
+
+ sides.sort();
+ if sides[0] + sides[1] > sides[2] {
+ num_valid += 1;
+ }
+ }
+ }
+
+ num_valid
+}
+
+fn main() {
+ // Read and parse triangle data from input text file
+ let input = fs::read_to_string("input.txt").unwrap();
+ let lines: Vec<&str> = input.lines().collect();
+ let words: Vec<Vec<&str>> = lines
+ .into_iter()
+ .map(|l| l.split_ascii_whitespace().collect())
+ .collect();
+ let rows: Vec<Vec<usize>> = words
+ .into_iter()
+ .map(|w123| w123
+ .into_iter()
+ .map(|s| s.parse().unwrap())
+ .collect())
+ .collect();
+
+ // Part 1 gives 993 for me
+ println!("Part 1 solution: {}", solve_part1(&rows));
+
+ // Part 2 gives 1849 for me
+ println!("Part 2 solution: {}", solve_part2(&rows));
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn part1_example1() {
+ let rows = vec![
+ vec![5, 10, 25],
+ vec![3, 4, 5],
+ ];
+ assert_eq!(solve_part1(&rows), 1);
+ }
+
+ #[test]
+ fn part2_example1() {
+ let rows = vec![
+ vec![101, 301, 501],
+ vec![102, 302, 502],
+ vec![103, 303, 503],
+ vec![201, 401, 601],
+ vec![202, 402, 602],
+ vec![203, 403, 603],
+ ];
+ assert_eq!(solve_part2(&rows), 6);
+ }
+}
diff --git a/d04/Cargo.toml b/d04/Cargo.toml
new file mode 100644
index 0000000..4a8c306
--- /dev/null
+++ b/d04/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "d04"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/d04/input.txt b/d04/input.txt
new file mode 100644
index 0000000..1d7aee4
--- /dev/null
+++ b/d04/input.txt
@@ -0,0 +1,1066 @@
+nzydfxpc-rclop-qwzhpc-qtylyntyr-769[oshgk]
+qzlozfhmf-bzmcx-bnzshmf-zbpthrhshnm-339[zmxdi]
+xtwtelcj-rclop-upwwjmply-zapcletzyd-743[itbds]
+mrxivrexmsrep-fewoix-ywiv-xiwxmrk-308[kzypw]
+ibghopzs-qobrm-difqvogwbu-142[lnrzo]
+irgyyolokj-xghhoz-lotgtiotm-228[vnmxd]
+foadouwbu-gqojsbusf-vibh-fsgsofqv-376[ymswi]
+jvuzbtly-nyhkl-wyvqljapsl-wshzapj-nyhzz-ylzlhyjo-903[jnyaz]
+amjmpdsj-cee-qcptgacq-236[caejm]
+nvrgfezqvu-avccpsvre-crsfirkfip-217[nrzcd]
+vdzonmhydc-bzmcx-bnzshmf-zbpthrhshnm-235[znyot]
+oxaflxzqfsb-mixpqfz-doxpp-abmxoqjbkq-393[xqbfo]
+drxevkzt-upv-crsfirkfip-893[rfikp]
+rkpqxyib-zelzlixqb-obzbfsfkd-627[wzymt]
+ajvyjprwp-kdwwh-bjunb-563[jwbpa]
+nzcczdtgp-eza-dpncpe-mldvpe-opalcexpye-171[wjzyc]
+jxdkbqfz-zixppfcfba-mixpqfz-doxpp-abmilvjbkq-809[nbaoc]
+tbxmlkfwba-zelzlixqb-xkxivpfp-315[yixla]
+gvcskirmg-gerhc-gsexmrk-hizipstqirx-620[zyosg]
+ygcrqpkbgf-ecpfa-eqcvkpi-uvqtcig-440[sbpfj]
+irdgrxzex-vxx-rthlzjzkzfe-425[zdqok]
+szfyrqriuflj-tfcfiwlc-wcfnvi-uvjzxe-425[lfipb]
+zgmfyxypbmsq-aylbw-bcqgel-912[dqtlr]
+ubhatstkwhnl-cxeeruxtg-wxitkmfxgm-475[ectpi]
+ejpanjwpekjwh-fahhuxawj-wymqeoepekj-316[utnvq]
+qlm-pbzobq-ciltbo-pqloxdb-601[lktqh]
+votubcmf-fhh-efwfmpqnfou-493[aiyzx]
+jqwpihizlwca-uqtqbizg-ozilm-kivlg-twoqabqka-382[frmkh]
+zovldbkfz-bdd-tlohpelm-497[dcfxw]
+atyzghrk-yigbktmkx-natz-jkyomt-748[ktyag]
+iuxxuyobk-hgyqkz-iayzuskx-ykxboik-566[yzsxi]
+jvsvymbs-zjhclunly-obua-klzpnu-903[ckmyr]
+sbnqbhjoh-ezf-tbmft-623[bfhte]
+forwcoqhwjs-rms-difqvogwbu-870[owfqr]
+yhtwhnpun-ibuuf-zopwwpun-721[tjlfz]
+guahyncw-wbiwifuny-omyl-nymncha-968[nywac]
+ykjoqian-cnwza-bhksan-zaoecj-576[btksq]
+ckgvutofkj-igtje-zxgototm-800[mlqgz]
+ipvohghykvbz-jvsvymbs-lnn-dvyrzovw-227[pysto]
+jqwpihizlwca-zilqwikbqdm-ntwemz-kwvbiqvumvb-382[antsy]
+njmjubsz-hsbef-cvooz-mbcpsbupsz-805[bferv]
+ojk-nzxmzo-xgvnndadzy-xcjxjgvoz-mzxzdqdib-785[vzpun]
+yhkpvhjapcl-ihzrla-svnpzapjz-747[pahzj]
+htqtwkzq-zsxyfgqj-kqtbjw-rfsfljrjsy-827[wzxif]
+fubrjhqlf-sodvwlf-judvv-ilqdqflqj-257[flqdj]
+forwcoqhwjs-qobrm-qcohwbu-rsgwub-116[gtsir]
+nzydfxpc-rclop-mfyyj-cpdplcns-483[gzysm]
+cjpibabsepvt-cbtlfu-nbobhfnfou-857[bfcno]
+oxmeeuruqp-ngzzk-geqd-fqefuzs-222[equzf]
+mvkccspson-lexxi-bomosfsxq-614[ybgsn]
+frqvxphu-judgh-fdqgb-frdwlqj-vhuylfhv-231[bojwc]
+sno-rdbqds-bgnbnkzsd-btrsnldq-rdquhbd-989[dbnsq]
+wrs-vhfuhw-fdqgb-frdwlqj-uhvhdufk-179[fhduw]
+ftzgxmbv-ynssr-vahvhetmx-mktbgbgz-397[truqi]
+xst-wigvix-tpewxmg-kveww-ywiv-xiwxmrk-984[nmrid]
+dkqjcbctfqwu-rncuvke-itcuu-ucngu-544[inaxl]
+hwdtljsnh-wfggny-fsfqdxnx-151[anbvm]
+aflwjfslagfsd-bwddqtwsf-vwhdgqewfl-970[sjqtc]
+hmsdqmzshnmzk-okzrshb-fqzrr-sqzhmhmf-885[qzbly]
+xcitgcpixdcpa-qphzti-gtrtxkxcv-141[ctxip]
+nbhofujd-tdbwfohfs-ivou-gjobodjoh-649[fnwgk]
+wfruflnsl-wfggny-xjwanhjx-905[lnztx]
+jrncbavmrq-rtt-fgbentr-975[rtbna]
+jqwpihizlwca-akidmvomz-pcvb-bziqvqvo-460[zakpd]
+oxmeeuruqp-nmewqf-eqdhuoqe-560[vtznk]
+plolwdub-judgh-udeelw-uhvhdufk-985[fnsty]
+kfg-jvtivk-treup-ivrthlzjzkzfe-503[ktvze]
+bqvvu-ywjzu-ykwpejc-naoawnyd-550[txaws]
+gsvvswmzi-wgezirkiv-lyrx-qerekiqirx-984[irevg]
+vcibutulxiom-yaa-uhufsmcm-552[gpimb]
+ugjjgkanw-usfvq-ugslafy-lwuzfgdgyq-918[gufaj]
+qfmcusbwq-foadouwbu-dzoghwq-ufogg-hsqvbczcum-506[uoqbc]
+qzchnzbshud-rbzudmfdq-gtms-zmzkxrhr-547[gxjyh]
+aflwjfslagfsd-usfvq-ugslafy-esjcwlafy-450[kjnil]
+nzwzcqfw-nsznzwlep-afcnsldtyr-951[hjrdi]
+aoubshwq-pogysh-kcfygvcd-740[pxyzt]
+zbytomdsvo-lkcuod-nocsqx-380[rqsuo]
+fmsledevhsyw-jpsaiv-wivzmgiw-542[pitok]
+qvbmzvibqwvit-ntwemz-abwziom-304[urjat]
+gvaaz-tdbwfohfs-ivou-eftjho-389[inlud]
+wlqqp-avccpsvre-ivjvrity-399[qcgto]
+shmml-pelbtravp-pubpbyngr-znantrzrag-897[prabn]
+iruzfrtkzmv-jtrmvexvi-ylek-jvimztvj-477[vijmr]
+hdgdovmt-bmvyz-xjgjmapg-xviyt-xjvodib-yzqzgjkhzio-499[tsira]
+willimcpy-yaa-omyl-nymncha-916[jtwau]
+dpssptjwf-gmpxfs-bobmztjt-389[kjlin]
+gpbepvxcv-snt-tcvxcttgxcv-245[etyfm]
+jxdkbqfz-ciltbo-cfkxkzfkd-367[xldij]
+udglrdfwlyh-sodvwlf-judvv-pdunhwlqj-231[rslnt]
+ygcrqpkbgf-ecpfa-eqcvkpi-gpikpggtkpi-440[pgkci]
+sno-rdbqds-eknvdq-otqbgzrhmf-391[yzexr]
+lzfmdshb-atmmx-bnmszhmldms-313[bacsl]
+qczcftiz-xszzmpsob-aofyshwbu-974[nxzyq]
+nwzekwypera-fahhuxawj-iwngapejc-420[yzguv]
+sbnqbhjoh-gmpxfs-efwfmpqnfou-389[sbwne]
+ugjjgkanw-xdgowj-ksdwk-554[sntqw]
+wdjcvuvmyjpn-kgvnodx-bmvnn-ncdkkdib-213[apifx]
+nvrgfezqvu-tyftfcrkv-uvgcfpdvek-269[tiuvc]
+uiovmbqk-jcvvg-abwziom-252[trvgn]
+fydelmwp-prr-ecltytyr-561[ryelp]
+ujoon-rpcsn-rdpixcv-jhtg-ithixcv-999[dcbon]
+ahngzyzqcntr-eknvdq-dmfhmddqhmf-131[dhmnq]
+iqmbazulqp-ngzzk-fqotzaxask-222[nmtgf]
+tfejldvi-xiruv-avccpsvre-nfibjyfg-113[vfice]
+wlsiayhcw-nij-mywlyn-xsy-nywbhifias-552[otlcf]
+muqfedyput-sqdto-seqjydw-skijecuh-iuhlysu-764[mqlfy]
+wbhsfbohwcboz-suu-hfowbwbu-324[bwhou]
+owshgfarwv-hdsklau-yjskk-suimakalagf-944[wtiza]
+ahngzyzqcntr-rbzudmfdq-gtms-bnmszhmldms-859[yvztm]
+qyujihctyx-vohhs-fiacmncwm-292[knzep]
+vetllbybxw-xzz-ybgtgvbgz-579[bgzlt]
+zekvierkzferc-tyftfcrkv-uvgrikdvek-477[pecqo]
+molgbzqfib-mixpqfz-doxpp-obzbfsfkd-367[ptnjg]
+oxmeeuruqp-otaoaxmfq-geqd-fqefuzs-924[puwxb]
+gpewwmjmih-nippcfier-gsrxemrqirx-646[tpsoa]
+xgvnndadzy-wvnfzo-gvwjmvojmt-603[nfstl]
+bjfutsneji-hfsid-htfynsl-htsyfnsrjsy-983[fdzej]
+pynffvsvrq-wryylorna-qrcnegzrag-351[dymsz]
+xjgjmapg-rzvkjiduzy-wvnfzo-kpmxcvndib-109[eyrcm]
+sebehvkb-rkddo-vydqdsydw-296[lgonm]
+hjgbwuladw-uzgugdslw-kwjnauwk-138[kgloe]
+ohmnuvfy-wuhxs-wiuncha-uwkocmcncih-890[tvylz]
+udpsdjlqj-iorzhu-wudlqlqj-491[rtwma]
+rdggdhxkt-ytaanqtpc-ejgrwphxcv-635[gtacd]
+eqttqukxg-ecpfa-yqtmujqr-596[hnvwy]
+laffe-lruckx-iutzgotsktz-852[nglsy]
+pkl-oaynap-xwogap-yqopkian-oanreya-394[ebzft]
+kyelcrga-afmamjyrc-bcnyprkclr-314[crayk]
+joufsobujpobm-dipdpmbuf-ufdiopmphz-571[ytgxs]
+ydjuhdqjyedqb-fbqijys-whqii-tufqhjcudj-894[ekswi]
+ajvyjprwp-kdwwh-mnenuxyvnwc-251[psaok]
+ibghopzs-suu-gsfjwqsg-220[qshwm]
+ugjjgkanw-hdsklau-yjskk-dstgjslgjq-502[lqxth]
+ugdgjxmd-hdsklau-yjskk-hmjuzskafy-788[vtyzi]
+lqwhuqdwlrqdo-mhoobehdq-oderudwrub-751[bzype]
+wdjcvuvmyjpn-kgvnodx-bmvnn-pnzm-oznodib-837[dcbaw]
+vcibutulxiom-qyujihctyx-wbiwifuny-fiacmncwm-994[tjxnm]
+vqr-ugetgv-dcumgv-tgegkxkpi-102[gvekt]
+encuukhkgf-lgnnadgcp-wugt-vguvkpi-752[vdmps]
+ktfitzbgz-wrx-vhgmtbgfxgm-267[twjsh]
+dzczkrip-xiruv-jtrmvexvi-ylek-kvtyefcfxp-243[vctis]
+pynffvsvrq-enzcntvat-qlr-qrcnegzrag-377[vdxzy]
+zixppfcfba-mixpqfz-doxpp-ixyloxqlov-679[pxfio]
+shoewudys-isqludwuh-xkdj-kiuh-juijydw-608[qedlg]
+qjopwxha-ywjzu-ykwpejc-nayaerejc-524[syznu]
+upq-tfdsfu-dboez-dpbujoh-nbobhfnfou-415[bfoud]
+fruurvlyh-udeelw-dqdobvlv-907[psznj]
+tcfkqcevkxg-dwppa-wugt-vguvkpi-336[klouj]
+plolwdub-judgh-gbh-uhdftxlvlwlrq-621[bnwav]
+chnylhuncihuf-wuhxs-wiuncha-xypyfijgyhn-110[hnuyc]
+froruixo-gbh-rshudwlrqv-153[amoni]
+clxalrtyr-nsznzwlep-zapcletzyd-327[guevs]
+xgsvgmotm-igtje-rghuxgzuxe-306[lcxzy]
+gpsxdprixkt-rpcsn-gtprfjxhxixdc-401[xprcd]
+lsyrkjkbnyec-nio-bokmaescsdsyx-874[nkgyo]
+buzahisl-ibuuf-zopwwpun-747[vwuxt]
+vqr-ugetgv-fag-yqtmujqr-882[gqrtu]
+bgmxkgtmbhgte-wrx-wxlbzg-137[zquts]
+ujqgywfau-ugdgjxmd-tskcwl-hmjuzskafy-112[yolzm]
+lqwhuqdwlrqdo-fkrfrodwh-frqwdlqphqw-985[qwdrf]
+surmhfwloh-fdqgb-uhvhdufk-621[dimhn]
+fhezusjybu-hqrryj-qdqboiyi-322[esjtk]
+gvaaz-tdbwfohfs-ivou-tijqqjoh-857[oafhi]
+xmtjbzidx-xviyt-mznzvmxc-759[xmzit]
+tfiifjzmv-gcrjkzt-xirjj-dribvkzex-399[ijrzf]
+zuv-ykixkz-kmm-uvkxgzouty-748[xvipz]
+gokzyxsjon-cmkfoxqob-rexd-domrxyvyqi-172[yfozw]
+plolwdub-judgh-frqvxphu-judgh-sodvwlf-judvv-frqwdlqphqw-959[duhlq]
+kfg-jvtivk-treup-tfekrzedvek-373[xyqzr]
+dmybmsuzs-oaddaeuhq-qss-pqeusz-586[mansh]
+ryexqpqhteki-rqiauj-iqbui-660[trqbl]
+ytu-xjhwjy-jll-wjhjnansl-125[zketn]
+fhezusjybu-muqfedyput-sqdto-udwyduuhydw-660[udyef]
+qspkfdujmf-dipdpmbuf-mphjtujdt-909[dwuov]
+cebwrpgvyr-enqvbnpgvir-enoovg-nanylfvf-533[akmyb]
+qfmcusbwq-pogysh-hfowbwbu-246[hdsbg]
+dmybmsuzs-bxmefuo-sdmee-abqdmfuaze-846[wsntq]
+sno-rdbqds-azrjds-nodqzshnmr-157[ogtbm]
+dpotvnfs-hsbef-cbtlfu-qvsdibtjoh-493[isjkl]
+nwilwcejc-lhwopey-cnwoo-odellejc-732[isofe]
+gokzyxsjon-mkxni-mykdsxq-bomosfsxq-822[nyudi]
+molgbzqfib-gbiivybxk-obxznrfpfqflk-679[wotra]
+cybyjqho-whqtu-rqiauj-jhqydydw-920[qyhjd]
+tinnm-pogysh-ghcfous-506[xtcso]
+myvybpev-cmkfoxqob-rexd-cdybkqo-146[boycd]
+pbeebfvir-shmml-enoovg-chepunfvat-949[nltsr]
+apuut-ezggtwzvi-yzqzgjkhzio-135[gdywb]
+xfbqpojafe-ezf-bobmztjt-441[qbwdc]
+ktfitzbgz-xzz-ehzblmbvl-943[zdigt]
+eqnqthwn-dcumgv-rwtejcukpi-232[umdca]
+xlrypetn-clmmte-opawzjxpye-379[bkvqj]
+fydelmwp-awldetn-rcldd-lylwjdtd-821[dlwet]
+owshgfarwv-esyfwlau-kusnwfywj-zmfl-ugflsafewfl-658[fwlsa]
+bnmrtldq-fqzcd-eknvdq-sqzhmhmf-807[snkmf]
+tyepcyletzylw-upwwjmply-cpnptgtyr-951[kyfol]
+ckgvutofkj-igtje-iugzotm-ynovvotm-462[otgvi]
+jshzzpmplk-ihzrla-klzpnu-981[yiaum]
+aoubshwq-qczcftiz-qvcqczohs-qighcasf-gsfjwqs-896[hyxzq]
+zilqwikbqdm-kpwkwtibm-ewzsapwx-668[zujgy]
+tpspahyf-nyhkl-jhukf-jvhapun-zopwwpun-669[slmnt]
+iuruxlar-lruckx-aykx-zkyzotm-852[kruxa]
+bdavqofuxq-bxmefuo-sdmee-dqeqmdot-144[gblym]
+eqnqthwn-ygcrqpkbgf-dcumgv-octmgvkpi-778[aznbf]
+amppmqgtc-kyelcrga-bwc-ylyjwqgq-522[aedsm]
+diozmivodjivg-xviyt-xjvodib-vxlpdndodji-109[dcnaq]
+wifilzof-wbiwifuny-uwkocmcncih-474[lcymu]
+dpmpsgvm-dboez-dpbujoh-efwfmpqnfou-779[ujlre]
+iwcjapey-fahhuxawj-nayaerejc-758[elvba]
+tcorcikpi-ejqeqncvg-vgejpqnqia-414[tywiv]
+excdklvo-mrymyvkdo-wkbuodsxq-120[ngxcw]
+nbhofujd-qmbtujd-hsbtt-bobmztjt-467[evdab]
+fubrjhqlf-gbh-pdqdjhphqw-959[nmklz]
+lxuxaodu-snuuhknjw-cnlqwxuxph-667[skyjn]
+ytu-xjhwjy-jll-zxjw-yjxynsl-931[tyzfu]
+cjpibabsepvt-sbccju-tbmft-519[ijnyz]
+bkwzkqsxq-lexxi-cobfsmoc-406[xbcko]
+yaxsnlcrun-dwbcjkun-kdwwh-orwjwlrwp-823[wnrcd]
+jchipqat-gpqqxi-ejgrwphxcv-739[pqcgh]
+etyyx-dff-cdudknoldms-937[dfyce]
+jsehsyafy-vqw-dgyaklauk-112[rhsgp]
+nzwzcqfw-awldetn-rcldd-opalcexpye-587[cdelw]
+nvrgfezqvu-wcfnvi-uvjzxe-139[vefnu]
+apuut-kgvnodx-bmvnn-ncdkkdib-915[stofz]
+hwdtljsnh-ojqqdgjfs-zxjw-yjxynsl-489[ftzsy]
+pualyuhapvuhs-jhukf-jvhapun-ayhpupun-877[oflqz]
+yaxsnlcrun-bljenwpna-qdwc-mnenuxyvnwc-407[ncwae]
+eqnqthwn-ejqeqncvg-nqikuvkeu-102[exsvc]
+ynssr-lvtoxgzxk-angm-tvjnblbmbhg-813[bgnlm]
+sehheiylu-zubboruqd-cqdqwucudj-400[ziuys]
+awzwhofm-ufors-qobrm-gozsg-246[zurge]
+ahngzyzqcntr-bzmcx-bnzshmf-lzmzfdldms-677[zmnbc]
+eza-dpncpe-awldetn-rcldd-wzrtdetnd-769[mtgef]
+htsxzrjw-lwfij-kqtbjw-wjxjfwhm-931[sjxwa]
+szfyrqriuflj-jtrmvexvi-ylek-nfibjyfg-373[alfvj]
+emixwvqhml-ntwemz-amzdqkma-876[lutzf]
+hwbba-fag-tgegkxkpi-726[zilbc]
+nwilwcejc-zua-zalhkuiajp-212[acijl]
+aflwjfslagfsd-esyfwlau-kusnwfywj-zmfl-mkwj-lwklafy-892[flwas]
+fmsledevhsyw-fewoix-xiglrspskc-256[sefil]
+zuv-ykixkz-lruckx-ykxboiky-306[odviu]
+ftzgxmbv-utldxm-ftgtzxfxgm-969[noxmk]
+ojk-nzxmzo-nxvqzibzm-cpio-mzvxlpdndodji-109[nfysr]
+molgbzqfib-mixpqfz-doxpp-abmilvjbkq-133[bimpq]
+zekvierkzferc-tyftfcrkv-jkfirxv-867[bjyft]
+gvaaz-ezf-bobmztjt-727[muyvq]
+mvhkvbdib-zbb-hvivbzhzio-551[yntvz]
+dwbcjkun-kdwwh-ujkxajcxah-641[jkwac]
+lhkhszqx-fqzcd-qzaahs-lzmzfdldms-209[tklbi]
+njmjubsz-hsbef-sbccju-qvsdibtjoh-571[tpswx]
+avw-zljyla-lnn-zopwwpun-149[lnwap]
+ckgvutofkj-hgyqkz-iayzuskx-ykxboik-358[mdnay]
+ytu-xjhwjy-hfsid-rfsfljrjsy-697[hmiag]
+houngfgxjuay-igtje-sgtgmksktz-384[monuj]
+qfkkj-ojp-ecltytyr-249[itsvz]
+udglrdfwlyh-udeelw-zrunvkrs-985[dlrue]
+gsvvswmzi-tpewxmg-kveww-viwievgl-178[vbmit]
+houngfgxjuay-yigbktmkx-natz-ykxboiky-930[bjyzu]
+eqttqukxg-uecxgpigt-jwpv-uvqtcig-102[gnzpx]
+amjmpdsj-bwc-pcqcypaf-288[gsywq]
+zntargvp-cynfgvp-tenff-npdhvfvgvba-793[vfngp]
+hdgdovmt-bmvyz-xcjxjgvoz-ozxcijgjbt-811[snjmz]
+etaqigpke-rncuvke-itcuu-ewuvqogt-ugtxkeg-154[eugtk]
+pbybeshy-sybjre-ybtvfgvpf-117[vszqj]
+vqr-ugetgv-tcddkv-uvqtcig-336[hzkdw]
+ykhknbqh-xwogap-pnwejejc-368[nqxzy]
+sehheiylu-rkddo-jusxdebewo-634[edhos]
+mvydjvxodqz-xcjxjgvoz-adivixdib-395[snpmt]
+ahngzyzqcntr-bzmcx-rsnqzfd-183[zfkpc]
+qxdwpopgsdjh-eaphixr-vgphh-detgpixdch-973[hpdgx]
+nij-mywlyn-jlidywncfy-jfumncw-alumm-zchuhwcha-682[nvybs]
+yhtwhnpun-jhukf-klzpnu-383[hnukp]
+yhtwhnpun-qlssfilhu-svnpzapjz-175[fopst]
+sgmtkzoi-jek-jkbkruvsktz-774[whzny]
+gifavtkzcv-wcfnvi-rercpjzj-711[cvfij]
+pkl-oaynap-acc-lqnydwoejc-940[aclno]
+vhkkhlbox-ktuubm-tvjnblbmbhg-475[gyhzn]
+guahyncw-wfummczcyx-wuhxs-guleyncha-422[iybfa]
+ydjuhdqjyedqb-hqrryj-sedjqydcudj-816[ftnej]
+rnqnyfwd-lwfij-gfxpjy-xytwflj-801[phsxc]
+vdzonmhydc-qzaahs-rdquhbdr-365[quvjr]
+ucynmlgxcb-zyqicr-rcaflmjmew-444[ncmzr]
+wfummczcyx-gcfcnuls-aluxy-luvvcn-jolwbumcha-864[culma]
+qzoggwtwsr-dfcxsqhwzs-suu-qighcasf-gsfjwqs-220[sgqwf]
+esyfwlau-mfklstdw-uzgugdslw-suimakalagf-918[igapw]
+zntargvp-wryylorna-genvavat-819[zmnji]
+ugfkmewj-yjsvw-uzgugdslw-umklgewj-kwjnauw-268[wugjk]
+xjinphzm-bmvyz-kgvnodx-bmvnn-pnzm-oznodib-109[rfzpw]
+mvydjvxodqz-mvwwdo-ozxcijgjbt-265[cxfdz]
+ujoon-rwdrdapit-bpcpvtbtci-375[ptbcd]
+aczupnetwp-dnlgpyrpc-sfye-afcnsldtyr-457[cydjq]
+uzfqdzmfuazmx-eomhqzsqd-tgzf-ymzmsqyqzf-898[zmqfd]
+lugjuacha-luvvcn-ijyluncihm-890[uclah]
+mtzslklcozfd-upwwjmply-lnbftdtetzy-379[yzwvu]
+myvybpev-oqq-bocokbmr-328[bomqv]
+tagzsrsjvgmk-xdgowj-ghwjslagfk-346[anbri]
+dpmpsgvm-ezf-mphjtujdt-493[dolas]
+votubcmf-sbccju-efqbsunfou-831[mnvky]
+zotts-xsy-nywbhifias-188[boqzr]
+gvcskirmg-glsgspexi-irkmriivmrk-646[igrkm]
+bnknqetk-cxd-cdozqsldms-625[dcknq]
+eqnqthwn-lgnnadgcp-cpcnauku-206[ytmnv]
+kmjezxodgz-wpiit-mznzvmxc-525[gtdob]
+dpotvnfs-hsbef-fhh-dvtupnfs-tfswjdf-519[fsdht]
+bwx-amkzmb-kpwkwtibm-lmdmtwxumvb-486[qmvwa]
+guahyncw-vohhs-lyuwkocmcncih-760[chnou]
+guahyncw-zfiqyl-nywbhifias-188[szhfp]
+ksodcbwnsr-foppwh-kcfygvcd-194[cdfko]
+gpewwmjmih-glsgspexi-jmrergmrk-542[bfqnt]
+vqr-ugetgv-fag-fgxgnqrogpv-440[gvfqr]
+encuukhkgf-etaqigpke-tcddkv-ceswkukvkqp-726[fijhw]
+yrwxefpi-fyrrc-hiwmkr-724[rfiwy]
+hwdtljsnh-bjfutsneji-hfsid-htfynsl-xfqjx-801[cdbsl]
+xjmmjndqz-xcjxjgvoz-jkzmvodjin-681[jmxzd]
+jqwpihizlwca-kivlg-tijwzibwzg-200[jpsbx]
+fodvvlilhg-froruixo-fkrfrodwh-wudlqlqj-621[yketz]
+wpuvcdng-fag-fgrctvogpv-518[klean]
+xgvnndadzy-xviyt-xjvodib-mzxzdqdib-421[oypak]
+kzeed-gzssd-qtlnxynhx-515[byszr]
+surmhfwloh-iorzhu-pdqdjhphqw-517[bhpqy]
+xcitgcpixdcpa-ytaanqtpc-rjhidbtg-htgkxrt-167[kjlxw]
+yuxufmdk-sdmpq-nmewqf-emxqe-248[cteon]
+iuxxuyobk-kmm-xkykgxin-306[hjxkm]
+joufsobujpobm-dboez-dpbujoh-mphjtujdt-675[fwybh]
+ajmrxjlcren-ouxfna-vjatncrwp-459[ajnrc]
+nwzekwypera-xwogap-paydjkhkcu-992[akpwe]
+aietsrmdih-gpewwmjmih-gerhc-stivexmsrw-282[eimhr]
+sxdobxkdsyxkv-nio-yzobkdsyxc-874[gpnhm]
+qfkkj-mldvpe-afcnsldtyr-639[dfkla]
+eqnqthwn-tcddkv-ucngu-674[lekca]
+lqxlxujcn-bcxajpn-667[aomrt]
+etaqigpke-dcumgv-wugt-vguvkpi-180[guvei]
+udglrdfwlyh-mhoobehdq-orjlvwlfv-413[mnizv]
+wyvqljapsl-jhukf-jvhapun-klzpnu-851[ixkjt]
+esyfwlau-jsttal-wfyafwwjafy-138[afwyj]
+bdavqofuxq-ymszqfuo-otaoaxmfq-fdmuzuzs-222[zbyrv]
+udskkaxawv-wyy-vwkayf-996[drsqf]
+qzoggwtwsr-qczcftiz-foppwh-gvwddwbu-246[btqac]
+yaxsnlcrun-yujbcrl-pajbb-nwprwnnarwp-745[cdwey]
+zhdsrqlchg-gbh-pdunhwlqj-439[hdglq]
+zekvierkzferc-nvrgfezqvu-treup-tfrkzex-ivjvrity-139[nthvs]
+vhkkhlbox-ktwbhtvmbox-vtgwr-vhtmbgz-ftgtzxfxgm-709[tbghv]
+kmjezxodgz-xmtjbzidx-agjrzm-rjmfncjk-863[hramk]
+qspkfdujmf-kfmmzcfbo-vtfs-uftujoh-129[nmtql]
+ipvohghykvbz-jhukf-jvhapun-jvuahputlua-591[cyqjf]
+lahxpnwrl-lqxlxujcn-vjwjpnvnwc-563[wcjme]
+sbejpbdujwf-qmbtujd-hsbtt-bdrvjtjujpo-493[jbtdu]
+ujoon-hrpktcvtg-wjci-stepgibtci-115[tdcgy]
+wlqqp-jtrmvexvi-ylek-rercpjzj-321[pyfoz]
+qyujihctyx-vohhs-yhachyylcha-604[xfbmz]
+eza-dpncpe-nlyoj-nzletyr-epnsyzwzrj-925[ytbnm]
+nzwzcqfw-awldetn-rcldd-lnbftdtetzy-743[tomzn]
+nwzekwypera-bhksan-yqopkian-oanreya-914[otvsm]
+avw-zljyla-wshzapj-nyhzz-klclsvwtlua-773[lazwh]
+plolwdub-judgh-iorzhu-vdohv-179[bmrjz]
+lnkfaypeha-zua-zarahkliajp-368[tzngm]
+slqryzjc-afmamjyrc-pcqcypaf-418[tjmsy]
+frqvxphu-judgh-vfdyhqjhu-kxqw-rshudwlrqv-387[dxhnm]
+uqtqbizg-ozilm-lgm-nqvivkqvo-928[rmnzf]
+lqwhuqdwlrqdo-edvnhw-ilqdqflqj-335[ctsda]
+zloolpfsb-mixpqfz-doxpp-obzbfsfkd-133[txiel]
+otzkxtgzoutgr-igtje-iugzotm-xkykgxin-592[zywxn]
+sbnqbhjoh-kfmmzcfbo-nbobhfnfou-701[fihgn]
+eqttqukxg-tcfkqcevkxg-rncuvke-itcuu-vtckpkpi-960[fobts]
+xgjougizobk-hatte-jkbkruvsktz-592[ktbgj]
+bqvvu-bhksan-pnwejejc-836[tcjgz]
+ikhcxvmbex-unggr-kxvxbobgz-787[opysz]
+jsehsyafy-usfvq-mkwj-lwklafy-320[msztr]
+ikhcxvmbex-ktuubm-ftgtzxfxgm-891[ojsny]
+ajvyjprwp-ajkkrc-mnenuxyvnwc-381[umkpn]
+pinovwgz-zbb-mznzvmxc-993[aumbt]
+ajyqqgdgcb-aylbw-rcaflmjmew-678[abcgj]
+houngfgxjuay-kmm-zxgototm-488[zudop]
+kmjezxodgz-ezggtwzvi-ozxcijgjbt-707[jyizu]
+eadalsjq-yjsvw-xdgowj-mkwj-lwklafy-762[jwald]
+aczupnetwp-ojp-dstaatyr-379[ftyeo]
+gvcskirmg-yrwxefpi-gerhc-gsexmrk-ywiv-xiwxmrk-958[rgixe]
+yuxufmdk-sdmpq-rxaiqd-pqbmdfyqzf-196[azivn]
+qyujihctyx-wuhxs-yhachyylcha-344[zdimn]
+rflsjynh-idj-yjhmstqtld-515[cvfph]
+lqwhuqdwlrqdo-edvnhw-rshudwlrqv-257[nlxst]
+odiih-kdwwh-mnbrpw-953[wdhib]
+ugdgjxmd-uzgugdslw-klgjsyw-814[cktda]
+mybbycsfo-pvygob-myxdksxwoxd-744[ifscp]
+bqvvu-ywjzu-odellejc-316[krcsj]
+nzcczdtgp-dnlgpyrpc-sfye-cplnbftdtetzy-743[kbdyu]
+pinovwgz-xcjxjgvoz-xjiovdihzio-525[mhjxn]
+ckgvutofkj-igtje-xkykgxin-878[vimez]
+rmn-qcapcr-zsllw-bcnjmwkclr-912[anzkg]
+ipvohghykvbz-yhiipa-zlycpjlz-227[oyzjt]
+nwilwcejc-nwxxep-wymqeoepekj-550[ztyes]
+uzfqdzmfuazmx-otaoaxmfq-pqhqxabyqzf-274[qafzm]
+hafgnoyr-qlr-chepunfvat-975[zauvm]
+irdgrxzex-treup-tfrkzex-ljvi-kvjkzex-269[lozqp]
+udskkaxawv-bwddqtwsf-klgjsyw-944[nmsxw]
+ujoon-rpcsn-gtprfjxhxixdc-921[xcjno]
+jrncbavmrq-enoovg-qrfvta-195[aqyxs]
+xgsvgmotm-yigbktmkx-natz-iutzgotsktz-462[smvtd]
+sxdobxkdsyxkv-mkxni-zebmrkcsxq-770[zkwax]
+zbytomdsvo-oqq-crszzsxq-614[iwqoc]
+wfruflnsl-kqtbjw-qfgtwfytwd-801[imsvp]
+nglmtuex-wrx-ybgtgvbgz-787[etuki]
+ixeumktoi-yigbktmkx-natz-uvkxgzouty-774[hylkz]
+cxy-bnlanc-ljwmh-cnlqwxuxph-719[unwgt]
+xcitgcpixdcpa-ytaanqtpc-hidgpvt-453[cptai]
+udglrdfwlyh-fkrfrodwh-fxvwrphu-vhuylfh-985[ntvum]
+dsxxw-glrcplyrgmlyj-afmamjyrc-yaosgqgrgml-912[hstuv]
+nglmtuex-xzz-wxiehrfxgm-267[wjyqr]
+ixccb-fdqgb-xvhu-whvwlqj-153[bchqv]
+vhehkyne-vtgwr-vhtmbgz-ehzblmbvl-449[mnuht]
+xgjougizobk-hgyqkz-jkyomt-774[sdeqt]
+ktiaaqnqml-zijjqb-abwziom-252[fgisn]
+glrcplyrgmlyj-cee-pcyaosgqgrgml-470[osmrp]
+qjopwxha-lhwopey-cnwoo-nawymqeoepekj-472[rfgnc]
+plolwdub-judgh-fdqgb-vklsslqj-959[ldbgj]
+yknnkoera-zua-wymqeoepekj-472[rsqmj]
+ujoon-ytaanqtpc-gtrtxkxcv-635[tacno]
+tcfkqcevkxg-fag-ujkrrkpi-856[njiek]
+uzfqdzmfuazmx-bdavqofuxq-qss-dqmocgueufuaz-170[wktxs]
+ltpedcxots-rpcsn-hwxeexcv-375[draoy]
+zntargvp-pnaql-nanylfvf-585[iejdf]
+lqwhuqdwlrqdo-vfdyhqjhu-kxqw-orjlvwlfv-101[szrtk]
+dyz-combod-oqq-cdybkqo-614[odqbc]
+jyddc-fyrrc-wepiw-802[chjtm]
+nglmtuex-yehpxk-phkdlahi-319[cjshn]
+surmhfwloh-fdqgb-xvhu-whvwlqj-205[vzite]
+wrs-vhfuhw-udeelw-dqdobvlv-179[znwyc]
+myxcewob-qbkno-lkcuod-cdybkqo-328[ysbjw]
+ixeumktoi-inuiurgzk-giwaoyozout-124[vnlcr]
+vhehkyne-utldxm-nlxk-mxlmbgz-839[cnryt]
+tagzsrsjvgmk-tskcwl-klgjsyw-216[sgkjl]
+bjfutsneji-idj-ijajqturjsy-203[gkoyb]
+plolwdub-judgh-gbh-wudlqlqj-335[snabj]
+ydjuhdqjyedqb-sqdto-seqjydw-tufbeocudj-504[cawtu]
+fkqbokxqflkxi-ciltbo-jxohbqfkd-913[mthlx]
+eadalsjq-yjsvw-tskcwl-sfsdqkak-840[sakdj]
+tipfxvezt-dzczkrip-xiruv-irsszk-ivtvzmzex-347[ewgst]
+plolwdub-judgh-fdqgb-pdqdjhphqw-309[slvtc]
+nwilwcejc-iehepwnu-cnwza-ywjzu-naoawnyd-914[wnace]
+lejkrscv-irsszk-fgvirkzfej-633[krsef]
+qzlozfhmf-bgnbnkzsd-qdrdzqbg-105[ltrxz]
+hmsdqmzshnmzk-bkzrrhehdc-idkkxadzm-sqzhmhmf-833[vsftk]
+mbggf-wyvqljapsl-ibuuf-ylhjxbpzpapvu-565[kxetg]
+vehmsegxmzi-tpewxmg-kveww-erepcwmw-360[ewmgp]
+mhi-lxvkxm-xzz-wxoxehifxgm-475[zvuxn]
+pejji-nio-gybucryz-848[scvwe]
+oqnidbshkd-rbzudmfdq-gtms-cdozqsldms-729[dsmqb]
+hmsdqmzshnmzk-lzfmdshb-idkkxadzm-btrsnldq-rdquhbd-937[yncvm]
+fmsledevhsyw-wgezirkiv-lyrx-jmrergmrk-932[bgytv]
+houngfgxjuay-lruckx-iayzuskx-ykxboik-462[vefmw]
+njmjubsz-hsbef-dboez-vtfs-uftujoh-337[bfjsu]
+lhkhszqx-fqzcd-azrjds-cdozqsldms-157[amnks]
+dpotvnfs-hsbef-dipdpmbuf-tbmft-103[zhrge]
+sebehvkb-rqiauj-jusxdebewo-166[jscdv]
+diozmivodjivg-pinovwgz-ezggtwzvi-mznzvmxc-811[ysntj]
+kwtwznct-kpwkwtibm-zmamizkp-902[kwmtz]
+jyddc-fyrrc-asvowlst-828[ybfgd]
+tagzsrsjvgmk-vqw-ugflsafewfl-580[xmqnr]
+mfklstdw-tmffq-kwjnauwk-502[fkwmt]
+xcitgcpixdcpa-rpcsn-rdpixcv-rdcipxcbtci-453[ynzqc]
+fmsledevhsyw-wgezirkiv-lyrx-hitevxqirx-542[eirvx]
+ojk-nzxmzo-zbb-ozxcijgjbt-213[zbjox]
+gpewwmjmih-hci-vigimzmrk-932[injxy]
+gpsxdprixkt-qjccn-hpath-349[pchtx]
+diozmivodjivg-nxvqzibzm-cpio-omvdidib-109[jivdx]
+dzczkrip-xiruv-srjbvk-crsfirkfip-269[mbnda]
+lgh-kwujwl-usfvq-ugslafy-vwhsjlewfl-580[ftwxr]
+ymszqfuo-rxaiqd-xmnadmfadk-456[smxyt]
+slqryzjc-njyqrga-epyqq-kypicrgle-158[ktcij]
+apwmeclga-hcjjwzcyl-bctcjmnkclr-496[cjlam]
+pejji-zvkcdsm-qbkcc-gybucryz-770[junto]
+kzeed-kqtbjw-xmnuunsl-931[eknub]
+fhezusjybu-sedikcuh-whqtu-hqrryj-cqhaujydw-322[kogjn]
+encuukhkgf-uecxgpigt-jwpv-fgrnqaogpv-648[gpuce]
+fnjyxwrinm-kjbtnc-bjunb-225[nbjcf]
+gifavtkzcv-sleep-kvtyefcfxp-737[cusry]
+nij-mywlyn-xsy-fiacmncwm-266[txfyk]
+pxtihgbsxw-cxeeruxtg-labiibgz-501[vfryk]
+oaxadrgx-vqxxknqmz-etubbuzs-612[gmzpy]
+oxaflxzqfsb-yxphbq-obzbfsfkd-497[gsjqc]
+lxaaxbren-ajmrxjlcren-kdwwh-uxprbcrlb-563[rxabl]
+drxevkzt-jtrmvexvi-ylek-ivrthlzjzkzfe-893[evzkr]
+xst-wigvix-veqtekmrk-hci-hizipstqirx-334[itxeh]
+hqcfqwydw-sxesebqju-bewyijysi-556[upyan]
+oxjmxdfkd-avb-abmxoqjbkq-809[cuyzr]
+vkppo-isqludwuh-xkdj-husuylydw-686[sfajr]
+nwilwcejc-ykjoqian-cnwza-ywjzu-ykjpwejiajp-576[jwaci]
+gpewwmjmih-hci-jmrergmrk-360[jftsi]
+ibghopzs-gqojsbusf-vibh-gvwddwbu-324[ratwb]
+mvhkvbdib-wvnfzo-gvwjmvojmt-785[zljyf]
+lahxpnwrl-mhn-bjunb-719[kexws]
+iuxxuyobk-inuiurgzk-vaxingyotm-722[snwtx]
+rnqnyfwd-lwfij-xhfajsljw-mzsy-wjhjnansl-671[nyphz]
+uwtojhynqj-wfggny-yjhmstqtld-229[qzmtg]
+dfcxsqhwzs-pibbm-qighcasf-gsfjwqs-220[iucxp]
+eqttqukxg-dwppa-uvqtcig-362[setiw]
+gcfcnuls-aluxy-vohhs-guleyncha-500[gchrt]
+ocipgvke-dwppa-gpikpggtkpi-518[tihzs]
+qfmcusbwq-dzoghwq-ufogg-cdsfohwcbg-454[ylkjh]
+yhtwhnpun-msvdly-zlycpjlz-123[qjnxy]
+lxuxaodu-ljwmh-lxjcrwp-anjlzdrbrcrxw-199[lnesc]
+qekrixmg-jpsaiv-tyvglewmrk-646[egikm]
+emixwvqhml-moo-wxmzibqwva-720[mwioq]
+kpvgtpcvkqpcn-dwppa-cpcnauku-934[bmprc]
+lugjuacha-vumeyn-mylpcwym-604[muyac]
+lzfmdshb-ahngzyzqcntr-dff-nodqzshnmr-937[pwdof]
+sbqiiyvyut-vkppo-zubboruqd-cqdqwucudj-348[osntj]
+ubhatstkwhnl-wrx-ftkdxmbgz-111[fojwk]
+mvhkvbdib-zbb-ncdkkdib-967[brnch]
+vetllbybxw-utldxm-mktbgbgz-579[gljhz]
+htsxzrjw-lwfij-gzssd-btwpxmtu-333[rhtqs]
+nzcczdtgp-nlyoj-nzletyr-xlcvpetyr-587[smnct]
+pybgmyargtc-zsllw-jyzmpyrmpw-366[zutsy]
+kfg-jvtivk-upv-jvimztvj-997[xicjt]
+kpvgtpcvkqpcn-hnqygt-ewuvqogt-ugtxkeg-388[gtkpq]
+ktiaaqnqml-kpwkwtibm-mvoqvmmzqvo-564[asert]
+mfklstdw-uzgugdslw-dgyaklauk-892[dgklu]
+gzefmnxq-pkq-xmnadmfadk-196[madfk]
+qcbgiasf-ufors-dzoghwq-ufogg-ghcfous-714[yiavh]
+veqtekmrk-nippcfier-asvowlst-958[thmsn]
+iehepwnu-cnwza-zua-skngodkl-134[naeku]
+xfbqpojafe-fhh-tfswjdft-571[fhjta]
+laffe-jek-ygrky-150[pjbaq]
+lxwbdvna-pajmn-kjbtnc-fxatbqxy-459[xbmlo]
+wkqxodsm-bkllsd-bomosfsxq-276[isaey]
+ovbunmneqbhf-fpniratre-uhag-qrirybczrag-741[rabne]
+xjmmjndqz-mvwwdo-kpmxcvndib-395[hyolt]
+zbytomdsvo-mkxni-mykdsxq-bomosfsxq-276[efcvd]
+jqwpihizlwca-bwx-amkzmb-jcvvg-ivitgaqa-252[dsmej]
+dszphfojd-sbccju-nbobhfnfou-805[bfocd]
+hwbba-lgnnadgcp-vgejpqnqia-830[ptkvu]
+wfintfhynaj-hmthtqfyj-fhvznxnynts-125[nfhty]
+wfummczcyx-wbiwifuny-mbcjjcha-864[cmwbf]
+tfcfiwlc-avccpsvre-uvjzxe-269[cvefa]
+dlhwvupglk-msvdly-dvyrzovw-331[nmeji]
+fnjyxwrinm-npp-orwjwlrwp-979[tqyvp]
+sgmtkzoi-hgyqkz-xkgiwaoyozout-904[ogkzi]
+qjopwxha-oywrajcan-dqjp-opknwca-680[qgsnh]
+oxjmxdfkd-zxkav-pxibp-185[mtfwl]
+mfklstdw-wyy-lwuzfgdgyq-814[iznma]
+zlilocri-bdd-pefmmfkd-341[intay]
+rwcnawjcrxwju-kdwwh-cajrwrwp-849[wrcja]
+xmrrq-uzgugdslw-jwuwanafy-372[uwagr]
+kzgwomvqk-zijjqb-ewzsapwx-278[wzjkq]
+lxuxaodu-ouxfna-ujkxajcxah-277[xaujo]
+nwzekwypera-iehepwnu-cnwza-fahhuxawj-zalhkuiajp-186[nbzay]
+vhkkhlbox-ktuubm-hixktmbhgl-943[byecg]
+qxdwpopgsdjh-uadltg-prfjxhxixdc-141[eqzvr]
+kyelcrga-zsllw-pcacgtgle-522[lcgae]
+qzoggwtwsr-ksodcbwnsr-dzoghwq-ufogg-zcuwghwqg-818[dzclv]
+xekdwvwnzkqo-lhwopey-cnwoo-bejwjyejc-238[ksrhc]
+npmhcargjc-cee-bctcjmnkclr-782[tgrxz]
+hwbba-ecpfa-eqcvkpi-ceswkukvkqp-336[kcepa]
+uwtojhynqj-hmthtqfyj-wjhjnansl-437[kylvd]
+sxdobxkdsyxkv-bknsykmdsfo-oqq-kmaescsdsyx-380[skdxo]
+rmn-qcapcr-afmamjyrc-dglylagle-158[aclmr]
+raphhxuxts-gpqqxi-advxhixrh-583[vuafx]
+nij-mywlyn-xsy-jolwbumcha-760[mkhgy]
+lnkfaypeha-xqjju-odellejc-680[ghsol]
+ytu-xjhwjy-wfggny-zxjw-yjxynsl-931[tynvp]
+myxcewob-qbkno-lkcuod-nofovyzwoxd-744[obcdk]
+diozmivodjivg-mvwwdo-gvwjmvojmt-161[vpsib]
+vhkkhlbox-cxeeruxtg-ehzblmbvl-787[behlx]
+iruzfrtkzmv-treup-tfrkzex-jvimztvj-841[xmwvi]
+kyelcrga-cee-pcacgtgle-730[yladm]
+iutyaskx-mxgjk-yigbktmkx-natz-jkyomt-436[tznsm]
+hvbizodx-agjrzm-ncdkkdib-421[iqnst]
+xzwrmkbqtm-kivlg-lmxtwgumvb-252[tkefm]
+udpsdjlqj-vfdyhqjhu-kxqw-pdqdjhphqw-439[dqhjp]
+mbggf-ibuuf-mpuhujpun-695[gnpdh]
+irdgrxzex-avccpsvre-ivtvzmzex-997[stcvr]
+sawlkjevaz-ywjzu-opknwca-602[awjkz]
+wlqqp-irsszk-tljkfdvi-jvimztv-217[mrqcl]
+sehheiylu-tou-sedjqydcudj-192[teamg]
+ajyqqgdgcb-pyzzgr-kylyeckclr-470[cjtul]
+ziuxioqvo-moo-bziqvqvo-278[ixnjm]
+vjpwncrl-kjbtnc-nwprwnnarwp-199[nwprc]
+wpuvcdng-gii-hkpcpekpi-986[picgk]
+dmybmsuzs-nmewqf-iadwetab-456[mabde]
+rtqlgevkng-tcddkv-fgukip-830[juyzr]
+votubcmf-dipdpmbuf-sfbdrvjtjujpo-727[rcslk]
+vhkkhlbox-wrx-ftgtzxfxgm-163[txmwq]
+zloolpfsb-mixpqfz-doxpp-qbzeklildv-289[lpozb]
+rkpqxyib-zxkav-zlxqfkd-xkxivpfp-393[bpquj]
+pbafhzre-tenqr-qlr-freivprf-455[byihv]
+kzeed-hfsid-htfynsl-jslnsjjwnsl-905[egluv]
+nlyoj-nzletyr-lylwjdtd-899[ymzvu]
+laffe-pkrrehkgt-sgxqkzotm-800[gsdnt]
+ynukcajey-xwogap-zaoecj-212[ewjah]
+rgndvtcxr-bxaxipgn-vgpst-hrpktcvtg-wjci-sthxvc-661[zwgis]
+ujqgywfau-vqw-vwnwdghewfl-580[istzh]
+jyddc-tvsnigxmpi-fewoix-hiwmkr-178[idmwx]
+fab-eqodqf-omzpk-etubbuzs-430[befoq]
+ibghopzs-suu-fsoqeiwgwhwcb-792[qzyrk]
+sedikcuh-whqtu-uww-vydqdsydw-166[dwuhq]
+cjpibabsepvt-qmbtujd-hsbtt-tupsbhf-467[wsrek]
+aietsrmdih-ikk-gsrxemrqirx-594[irekm]
+bwx-amkzmb-jcvvg-bziqvqvo-694[vbmqz]
+ixccb-exqqb-xvhu-whvwlqj-647[qxbch]
+nwlddtqtpo-nlyoj-dezclrp-639[dlnop]
+ahngzyzqcntr-azrjds-otqbgzrhmf-833[oquzx]
+xcitgcpixdcpa-gpqqxi-ejgrwphxcv-193[cpxgi]
+buzahisl-zjhclunly-obua-svnpzapjz-643[zalub]
+excdklvo-mkxni-mykdsxq-nozkbdwoxd-458[fxjwy]
+jvyyvzpcl-jyfvnlupj-msvdly-klclsvwtlua-253[injkl]
+emixwvqhml-akidmvomz-pcvb-zmkmqdqvo-434[mvqdi]
+dszphfojd-qmbtujd-hsbtt-sfbdrvjtjujpo-831[ykcho]
+kwzzwaqdm-zijjqb-camz-bmabqvo-902[zabmq]
+nvrgfezqvu-irsszk-jkfirxv-789[neysm]
+yflexwxoalrp-zelzlixqb-jxohbqfkd-679[lxbef]
+wfummczcyx-yaa-nluchcha-344[rmpgs]
+tcfkqcevkxg-gii-ocpcigogpv-674[stfma]
+nwzekwypera-ywjzu-ajcejaanejc-316[xoprq]
+qzlozfhmf-idkkxadzm-btrsnldq-rdquhbd-105[pawus]
+uqtqbizg-ozilm-kivlg-uizsmbqvo-356[xhvzm]
+apuut-kgvnodx-bmvnn-mzvxlpdndodji-473[dnvmo]
+wfummczcyx-dyffsvyuh-guhuaygyhn-500[yufhc]
+cybyjqho-whqtu-shoewudys-vbemuh-tuiywd-842[huywb]
+sedikcuh-whqtu-tou-jhqydydw-920[dhuqt]
+zekvierkzferc-wcfnvi-ljvi-kvjkzex-815[ibzsg]
+froruixo-udeelw-orjlvwlfv-777[zyusv]
+oxmeeuruqp-ngzzk-qzsuzqqduzs-222[mcqzj]
+gpewwmjmih-ikk-ywiv-xiwxmrk-568[uszki]
+aietsrmdih-jpsaiv-wepiw-334[iaeps]
+joufsobujpobm-cbtlfu-dvtupnfs-tfswjdf-441[fubjo]
+xst-wigvix-hci-viwievgl-256[jnlst]
+oknkvcta-itcfg-wpuvcdng-dwppa-qrgtcvkqpu-414[dcxst]
+rnqnyfwd-lwfij-gfxpjy-htsyfnsrjsy-957[whlxr]
+sbnqbhjoh-fhh-tbmft-181[jndic]
+slqryzjc-afmamjyrc-qcptgacq-236[soytq]
+rgllk-qss-ymdwqfuzs-768[ynsjx]
+nwilwcejc-ywjzu-ykwpejc-pnwejejc-966[fthzx]
+gokzyxsjon-lexxi-gybucryz-146[qomrj]
+cybyjqho-whqtu-zubboruqd-cqhaujydw-192[naxrp]
+esyfwlau-bwddqtwsf-vwkayf-294[acbmr]
+shmml-rtt-znantrzrag-455[vseqh]
+qlm-pbzobq-yrkkv-obpbxoze-601[lfewg]
+fbebmtkr-zktwx-utldxm-ybgtgvbgz-995[stygr]
+ikhcxvmbex-ietlmbv-zktll-vnlmhfxk-lxkobvx-943[lxkvb]
+rgndvtcxr-hrpktcvtg-wjci-prfjxhxixdc-193[crxtd]
+ucynmlgxcb-pyzzgr-kypicrgle-158[qtuyz]
+wpuvcdng-lgnnadgcp-vtckpkpi-466[sftpn]
+tfiifjzmv-treup-kirzezex-633[gjtxn]
+cvabijtm-jiasmb-lmxizbumvb-356[axbtn]
+xgvnndadzy-kgvnodx-bmvnn-yzkgjthzio-395[byaut]
+rdchjbtg-vgpst-tvv-pcpanhxh-765[hptvc]
+hqcfqwydw-isqludwuh-xkdj-cqhaujydw-322[mzgty]
+hvbizodx-wvnfzo-gjbdnodxn-577[kljip]
+udpsdjlqj-fruurvlyh-fdqgb-frdwlqj-vdohv-283[ktzrm]
+xjmmjndqz-zbb-jkzmvodjin-707[jmzbd]
+glrcplyrgmlyj-zsllw-nspafyqgle-184[ptidc]
+zvyvgnel-tenqr-cebwrpgvyr-fpniratre-uhag-hfre-grfgvat-377[zesyf]
+ubhatstkwhnl-vahvhetmx-wxitkmfxgm-605[qzvme]
+iqmbazulqp-dmnnuf-ruzmzouzs-898[shtag]
+surmhfwloh-gbh-ghsorbphqw-179[sickj]
+htqtwkzq-uqfxynh-lwfxx-xjwanhjx-593[rwtbd]
+kgjgrypw-epybc-njyqrga-epyqq-rpyglgle-600[jkcuz]
+ktiaaqnqml-zijjqb-zmikycqaqbqwv-642[qaibj]
+udglrdfwlyh-fdqgb-frdwlqj-sxufkdvlqj-803[cmkaq]
+oxmeeuruqp-pkq-pqbmdfyqzf-196[qpefm]
+dzczkrip-xiruv-sleep-ivjvrity-893[xjomn]
+dmpuamofuhq-ymszqfuo-otaoaxmfq-fdmuzuzs-482[mufoa]
+nbhofujd-ezf-tbmft-389[cjgtr]
+uzfqdzmfuazmx-otaoaxmfq-iadwetab-820[afmzd]
+froruixo-fdqgb-oderudwrub-205[ziyjo]
+ugjjgkanw-kusnwfywj-zmfl-dstgjslgjq-840[nhxgt]
+zhdsrqlchg-iorzhu-sxufkdvlqj-101[qtzca]
+dsxxw-aylbw-amyrgle-qcptgacq-912[qdwmn]
+veqtekmrk-hci-xiglrspskc-282[tfuln]
+qcffcgwjs-forwcoqhwjs-rms-hfowbwbu-480[hgnsl]
+jvsvymbs-jovjvshal-zhslz-539[ocmvj]
+enqvbnpgvir-rtt-fuvccvat-195[nmrlc]
+oxmeeuruqp-bxmefuo-sdmee-geqd-fqefuzs-170[uenfm]
+wlsiayhcw-wfummczcyx-xsy-xyjfisgyhn-214[zpqtr]
+jxdkbqfz-avb-obxznrfpfqflk-133[fbkqx]
+zvyvgnel-tenqr-pnaql-bcrengvbaf-195[eghnt]
+diozmivodjivg-ytz-vxlpdndodji-551[diovj]
+jyddc-jpsaiv-ywiv-xiwxmrk-308[idjvw]
+pbafhzre-tenqr-enoovg-hfre-grfgvat-403[erfga]
+pbeebfvir-enoovg-ernpdhvfvgvba-793[vebfg]
+wfummczcyx-zfiqyl-uhufsmcm-292[tvcdw]
+kwvacumz-ozilm-zijjqb-ivitgaqa-746[iazjm]
+udpsdjlqj-ixccb-sodvwlf-judvv-ghyhorsphqw-465[kgyhw]
+tcrjjzwzvu-wcfnvi-rthlzjzkzfe-451[zjcfr]
+qxdwpopgsdjh-rpcsn-htgkxrth-947[dkwlb]
+yaxsnlcrun-kdwwh-bnaerlnb-953[zyncx]
+zhdsrqlchg-vfdyhqjhu-kxqw-xvhu-whvwlqj-699[mriyj]
+bkzrrhehdc-bgnbnkzsd-lzqjdshmf-417[izpxt]
+nwzekwypera-fahhuxawj-wjwhuoeo-862[wsmnu]
+zgmfyxypbmsq-bwc-rcaflmjmew-964[nmpwb]
+guahyncw-wuhxs-wihnuchgyhn-188[vmayn]
+kwtwznct-jcvvg-uizsmbqvo-980[ryzva]
+udskkaxawv-lgh-kwujwl-uzgugdslw-vwhdgqewfl-138[trijm]
+shoewudys-rkddo-huiuqhsx-868[tozlb]
+bnknqetk-atmmx-rzkdr-183[zbyuw]
+hwdtljsnh-idj-xytwflj-983[sztqp]
+tipfxvezt-jtrmvexvi-ylek-cfxzjkztj-165[gwmzp]
+clotzlnetgp-nsznzwlep-opdtry-327[khryz]
+mhi-lxvkxm-bgmxkgtmbhgte-wrx-ltexl-449[cfrql]
+hqtyeqsjylu-sxesebqju-cqdqwucudj-686[ngaly]
+zlkprjbo-doxab-avb-ildfpqfzp-211[ponbm]
+bqvvu-zua-ykjpwejiajp-420[mdlgx]
+tfcfiwlc-treup-tfrkzex-drerxvdvek-841[fmlyq]
+rmn-qcapcr-qaytclecp-fslr-bctcjmnkclr-652[zksta]
+oazegyqd-sdmpq-nmewqf-xasuefuoe-248[qypjm]
+kwtwznct-lgm-tijwzibwzg-278[ytdmc]
+wlqqp-gcrjkzt-xirjj-rthlzjzkzfe-555[xzkhl]
+gpewwmjmih-gerhc-erepcwmw-646[stnzy]
+dmybmsuzs-qss-eqdhuoqe-144[sqdem]
+yflexwxoalrp-zelzlixqb-qoxfkfkd-705[gtnxw]
+votubcmf-cvooz-sftfbsdi-701[qhtkp]
+iuruxlar-xghhoz-gtgreyoy-306[fnctb]
+slqryzjc-bwc-qyjcq-574[pozts]
+wdjcvuvmyjpn-nxvqzibzm-cpio-gjbdnodxn-525[pcmhn]
+excdklvo-mkxni-mykdsxq-vklybkdybi-744[vmsba]
+pybgmyargtc-hcjjwzcyl-sqcp-rcqrgle-912[nhxvg]
+wifilzof-wuhxs-xypyfijgyhn-760[nuovc]
+ktiaaqnqml-jcvvg-lmaqov-512[nwxms]
+kfg-jvtivk-tyftfcrkv-crsfirkfip-945[fkirt]
+tfiifjzmv-avccpsvre-ivjvrity-581[fnemb]
+zotts-wuhxs-wiuncha-xyjfisgyhn-786[tzjse]
+ynssr-ktuubm-phkdlahi-579[bemfv]
+xlrypetn-mldvpe-dlwpd-145[rnfmz]
+mfklstdw-wyy-wfyafwwjafy-840[lksij]
+dsxxw-aylbw-amlryglkclr-938[larwx]
+wyvqljapsl-msvdly-mpuhujpun-435[gzlnx]
+bxaxipgn-vgpst-hrpktcvtg-wjci-steadnbtci-323[tcgip]
+oxjmxdfkd-mixpqfz-doxpp-abpfdk-471[dpxfk]
+tipfxvezt-szfyrqriuflj-avccpsvre-ivrthlzjzkzfe-321[zfrve]
+qyujihctyx-mwupyhayl-bohn-uwkocmcncih-708[chyui]
+zilqwikbqdm-kivlg-apqxxqvo-434[obtmp]
+willimcpy-luvvcn-qilembij-578[ilcmv]
+rflsjynh-kqtbjw-ijxnls-437[zskut]
+jsvagsulanw-hdsklau-yjskk-klgjsyw-814[uzmvg]
+oknkvcta-itcfg-tcddkv-yqtmujqr-908[zdync]
+zvyvgnel-tenqr-pnaql-pbngvat-qrcyblzrag-741[gvtck]
+xjgjmapg-zbb-adivixdib-395[ovzan]
+gvcskirmg-tpewxmg-kveww-wlmttmrk-464[szvty]
+gpewwmjmih-gerhc-gsexmrk-wlmttmrk-620[fqrba]
+jchipqat-gpqqxi-jhtg-ithixcv-661[ihqtc]
+bjfutsneji-ojqqdgjfs-ijufwyrjsy-619[jfsiq]
+gvcskirmg-fyrrc-hitpscqirx-308[kwgpv]
+mvhkvbdib-wpiit-rjmfncjk-525[stlem]
+bnqqnrhud-qzaahs-cdrhfm-339[pbsax]
+qfmcusbwq-qvcqczohs-rsgwub-116[qcsbu]
+qyujihctyx-yaa-guhuaygyhn-734[yahug]
+jqwpihizlwca-kivlg-kwibqvo-uizsmbqvo-616[qozkj]
+nglmtuex-vtgwr-ybgtgvbgz-865[gtbve]
+encuukhkgf-ecpfa-eqcvkpi-yqtmujqr-414[cekqu]
+jchipqat-ytaanqtpc-tcvxcttgxcv-375[jnfcy]
+mvydjvxodqz-xviyt-xjvodib-vxlpdndodji-915[spxnt]
+wfintfhynaj-hmthtqfyj-xmnuunsl-151[nfhtj]
+pynffvsvrq-sybjre-ratvarrevat-611[rvaef]
+hplazytkpo-dnlgpyrpc-sfye-nfdezxpc-dpcgtnp-327[uzifr]
+cybyjqho-whqtu-vbemuh-qdqboiyi-374[zlsdw]
+yhkpvhjapcl-wshzapj-nyhzz-svnpzapjz-825[bpcty]
+zhdsrqlchg-mhoobehdq-fxvwrphu-vhuylfh-179[hdflo]
+ynukcajey-ywjzu-ykwpejc-qoan-paopejc-238[bpemf]
+vehmsegxmzi-gerhc-gsexmrk-pefsvexsvc-256[umtvy]
+lugjuacha-jfumncw-alumm-uwkocmcncih-240[bzlaw]
+nvrgfezqvu-jtrmvexvi-ylek-jkfirxv-165[ywnzb]
+fhezusjybu-uww-fkhsxqiydw-920[hgusy]
+bgmxkgtmbhgte-vahvhetmx-hixktmbhgl-189[ebaun]
+apwmeclga-afmamjyrc-pcqcypaf-496[uyatz]
+pdjqhwlf-vfdyhqjhu-kxqw-whfkqrorjb-829[xogzy]
+crwwv-rkpqxyib-zxkav-rpbo-qbpqfkd-289[bkpqr]
+tfcfiwlc-irsszk-kvtyefcfxp-893[fciks]
+lejkrscv-wcfnvi-ivjvrity-191[uyalq]
+ktfitzbgz-unggr-inkvatlbgz-111[lmwni]
+fodvvlilhg-fdqgb-frdwlqj-frqwdlqphqw-205[kxstn]
+odkasqzuo-bxmefuo-sdmee-fqotzaxask-638[oaesd]
+pdjqhwlf-fdqgb-frdwlqj-rshudwlrqv-569[xcdnu]
+ckgvutofkj-vrgyzoi-mxgyy-jkvgxzsktz-592[murta]
+eza-dpncpe-mtzslklcozfd-clmmte-dezclrp-353[celzd]
+vehmsegxmzi-nippcfier-wxsveki-516[vqrpz]
+rflsjynh-jll-ijufwyrjsy-853[taqil]
+jvyyvzpcl-msvdly-hjxbpzpapvu-513[nyxtz]
+iehepwnu-cnwza-fahhuxawj-oanreyao-264[ulyvn]
+gcfcnuls-aluxy-wbiwifuny-omyl-nymncha-526[snoxf]
+oaxadrgx-dmpuamofuhq-omzpk-etubbuzs-638[uamob]
+oxmeeuruqp-nmewqf-dqeqmdot-352[kjtia]
+bqxnfdmhb-dff-btrsnldq-rdquhbd-521[iyjvl]
+joufsobujpobm-fhh-pqfsbujpot-701[obfjp]
+hafgnoyr-pnaql-pbngvat-fnyrf-845[vtsod]
+mhi-lxvkxm-wrx-kxvxbobgz-657[npmfu]
+jrncbavmrq-pnaql-chepunfvat-299[tnzyx]
+xgsvgmotm-lruckx-gtgreyoy-566[cuxte]
+vcibutulxiom-wbiwifuny-xyjfisgyhn-994[uayrz]
+wyvqljapsl-zjhclunly-obua-vwlyhapvuz-123[stmdx]
+tvsnigxmpi-jpsaiv-stivexmsrw-568[lhxnw]
+bnqqnrhud-azrjds-cdrhfm-703[pozyr]
+mfklstdw-tmffq-ugflsafewfl-164[flmst]
+tcorcikpi-hnqygt-fgukip-778[hzsum]
+amppmqgtc-hcjjwzcyl-qfgnngle-262[yfnvu]
+ynssr-vtgwr-ehzblmbvl-631[zxbiy]
+slqryzjc-aylbw-amyrgle-dglylagle-938[lyage]
+vrurcjah-pajmn-snuuhknjw-jwjuhbrb-745[dphsv]
+oaddaeuhq-eomhqzsqd-tgzf-etubbuzs-222[inrke]
+yrwxefpi-veffmx-qerekiqirx-542[efirx]
+nchhg-rmttgjmiv-bziqvqvo-304[vghim]
+vkppo-vbemuh-efuhqjyedi-244[fetmj]
+tyepcyletzylw-nlyoj-nzletyr-qtylyntyr-379[ngrvh]
+otzkxtgzoutgr-hatte-giwaoyozout-228[tjxcr]
+rgllk-eomhqzsqd-tgzf-pqbxakyqzf-534[lzpxc]
+zgmfyxypbmsq-zyqicr-jyzmpyrmpw-704[ewjdl]
+vehmsegxmzi-gerhc-gsexmrk-qevoixmrk-204[tyisn]
+lugjuacha-zfiqyl-xyjfisgyhn-890[fcsxk]
+qjopwxha-ywjzu-ykwpejc-zaoecj-810[rvmet]
+bnknqetk-sno-rdbqds-idkkxadzm-knfhrshbr-521[kdnbr]
+ksodcbwnsr-tzcksf-cdsfohwcbg-818[mnker]
+vdzonmhydc-rbzudmfdq-gtms-lzqjdshmf-183[abjvy]
+wfummczcyx-luvvcn-yhachyylcha-630[cyhal]
+zvyvgnel-tenqr-rtt-freivprf-351[zymsx]
+fhezusjybu-sqdto-jusxdebewo-972[amzjn]
+amjmpdsj-zyqicr-cleglccpgle-106[vdopa]
+hjgbwuladw-wyy-kwjnauwk-502[mrbin]
+willimcpy-vohhs-mbcjjcha-734[vsbfq]
+xjgjmapg-xcjxjgvoz-omvdidib-317[wynjr]
+htqtwkzq-idj-xytwflj-385[tjqwd]
+ynssr-xzz-xgzbgxxkbgz-579[nsivc]
+xgvnndadzy-agjrzm-rjmfncjk-473[toazb]
+pbeebfvir-sybjre-fuvccvat-533[stklm]
+jvuzbtly-nyhkl-ibuuf-aljouvsvnf-851[lmnuf]
+ziuxioqvo-ntwemz-uiviomumvb-902[arxeu]
+vrurcjah-pajmn-ajkkrc-mnbrpw-589[qmtsy]
+dwbcjkun-bljenwpna-qdwc-vjwjpnvnwc-537[nwjcb]
+oxjmxdfkd-mixpqfz-doxpp-jxkxdbjbkq-913[xdjkp]
+mvkccspson-mkxni-mykdsxq-vyqscdsmc-432[stfwy]
+rflsjynh-htwwtxnaj-jll-qtlnxynhx-879[jsdzt]
+pelbtravp-onfxrg-chepunfvat-663[hazbg]
+zbytomdsvo-zvkcdsm-qbkcc-vyqscdsmc-692[csdmv]
+qspkfdujmf-fhh-vtfs-uftujoh-415[nmzht]
+aczupnetwp-nlyoj-qtylyntyr-405[tjvzp]
+gsvvswmzi-jyddc-glsgspexi-wxsveki-646[puyzv]
+rgndvtcxr-eaphixr-vgphh-sthxvc-973[ijhlr]
+dyz-combod-mrymyvkdo-domrxyvyqi-250[pjlom]
+xst-wigvix-fewoix-jmrergmrk-646[irxeg]
+xgsvgmotm-kmm-iutzgotsktz-436[mtgko]
+nzwzcqfw-awldetn-rcldd-nzyeltyxpye-769[delnw]
+crwwv-oxyyfq-rpbo-qbpqfkd-393[qbfop]
+wlsiayhcw-jfumncw-alumm-lywycpcha-344[wfzqm]
+qfkkj-fydelmwp-nlyoj-nzletyr-cpnptgtyr-951[oxpuz]
+qcffcgwjs-qobrm-rsdofhasbh-376[zwyat]
+jshzzpmplk-pualyuhapvuhs-yhiipa-zopwwpun-669[simvn]
+nglmtuex-wrx-kxvxbobgz-735[phwgz]
+oaxadrgx-nmewqf-abqdmfuaze-404[tysvj]
+vkppo-zubboruqd-qdqboiyi-998[dhjui]
+ajvyjprwp-snuuhknjw-dbna-cnbcrwp-667[ziuhp]
+pybgmyargtc-zsllw-bcnjmwkclr-314[mnhck]
+pkl-oaynap-xwogap-opknwca-992[nhagy]
+hafgnoyr-onfxrg-znexrgvat-741[cywdg]
+vkppo-sqdto-ijehqwu-816[opqde]
+jvsvymbs-jhukf-zavyhnl-409[vhjsy]
+hqtyeqsjylu-cqwdujys-tou-husuylydw-686[kcdsj]
+awzwhofm-ufors-pibbm-rsdofhasbh-298[bfhos]
+xjinphzm-bmvyz-nxvqzibzm-cpio-mznzvmxc-161[oslup]
+tfejldvi-xiruv-wcfnvi-fgvirkzfej-529[sgtbw]
+qlm-pbzobq-ciltbo-pxibp-185[zjmpt]
+guahyncw-xsy-xymcah-630[fckyn]
+lahxpnwrl-ljwmh-jlzdrbrcrxw-407[lrwhj]
+dmybmsuzs-omzpk-ogefayqd-eqdhuoq-222[mctji]
+forwcoqhwjs-pibbm-twbobqwbu-480[bwoqc]
+mhi-lxvkxm-lvtoxgzxk-angm-xgzbgxxkbgz-839[lczyd]
+iqmbazulqp-rxaiqd-mocgueufuaz-378[ygdtb]
+plolwdub-judgh-udeelw-uhfhlylqj-309[ludhe]
+raphhxuxts-hrpktcvtg-wjci-htgkxrth-739[htrxc]
+pybgmyargtc-hcjjwzcyl-rcaflmjmew-548[ajlkr]
+lnkfaypeha-ywjzu-ykwpejc-ykjpwejiajp-368[jpyae]
+vehmsegxmzi-gerhc-gsexmrk-hizipstqirx-100[jzboa]
+pdjqhwlf-frqvxphu-judgh-iorzhu-frqwdlqphqw-725[yijon]
+kzgwomvqk-kivlg-kwibqvo-ivitgaqa-720[zjyxm]
+xqvwdeoh-surmhfwloh-fkrfrodwh-dqdobvlv-855[xwtjs]
+xgsvgmotm-igtje-iugzotm-sgxqkzotm-228[ygzda]
+lxwbdvna-pajmn-snuuhknjw-bcxajpn-953[yxark]
+oaddaeuhq-omzpk-oamfuzs-mocgueufuaz-326[odcqb]
+jyddc-ikk-hitevxqirx-750[btmqn]
+oaddaeuhq-rxaiqd-fqotzaxask-586[slgad]
+kwzzwaqdm-moo-nqvivkqvo-798[epnyr]
+fydelmwp-nsznzwlep-opalcexpye-847[ltbwy]
+dszphfojd-cbtlfu-tupsbhf-415[fbdhp]
+hqcfqwydw-rkddo-skijecuh-iuhlysu-114[ynqsd]
+ixeumktoi-inuiurgzk-uvkxgzouty-410[acqzt]
+wlqqp-avccpsvre-wzeretzex-347[bgzvw]
+vdzonmhydc-bzmcx-bnmszhmldms-157[rspcq]
+fodvvlilhg-mhoobehdq-whfkqrorjb-699[defpm]
+gntmfefwitzx-ojqqdgjfs-qfgtwfytwd-827[sypzf]
+nzydfxpc-rclop-mfyyj-wlmzclezcj-769[clyzf]
+zuv-ykixkz-pkrrehkgt-rumoyzoiy-852[yhkru]
+aietsrmdih-glsgspexi-vigimzmrk-802[sgnmt]
+rgndvtcxr-hrpktcvtg-wjci-igpxcxcv-245[xszoq]
+nwzekwypera-xqjju-skngodkl-758[kejnw]
+hcd-gsqfsh-rms-rsdzcmasbh-974[vtsqm]
+qspkfdujmf-dboez-mphjtujdt-935[diolt]
+aczupnetwp-nlyoj-afcnsldtyr-665[zemik]
+aoubshwq-qobrm-qcohwbu-rsdofhasbh-376[wyzxl]
+xtwtelcj-rclop-ncjzrpytn-ojp-qtylyntyr-353[lyris]
+zvyvgnel-tenqr-pelbtravp-rtt-fnyrf-819[fjysz]
+ejpanjwpekjwh-bhksan-paydjkhkcu-420[jkahp]
+ygcrqpkbgf-hnqygt-hkpcpekpi-882[pgkch]
+raphhxuxts-gpqqxi-pcpanhxh-817[qinta]
+gsvvswmzi-wgezirkiv-lyrx-stivexmsrw-646[isvrw]
+htqtwkzq-kqtbjw-fsfqdxnx-307[ytxis]
+oqnidbshkd-eknvdq-cdozqsldms-833[dqskn]
+qxdwpopgsdjh-hrpktcvtg-wjci-hidgpvt-219[tdlsw]
+fnjyxwrinm-snuuhknjw-jwjuhbrb-459[vjwxy]
+egdytrixat-eaphixr-vgphh-stepgibtci-609[vrzoq]
+veqtekmrk-fewoix-pskmwxmgw-906[ekmwx]
+xmrrq-eadalsjq-yjsvw-usfvq-vwnwdghewfl-502[wqsva]
+dpotvnfs-hsbef-gvaaz-sbccju-tfswjdft-649[lbipa]
+zvyvgnel-tenqr-enoovg-ybtvfgvpf-637[kchij]
+pynffvsvrq-cynfgvp-tenff-ybtvfgvpf-247[dcwfm]
+xjinphzm-bmvyz-xviyt-xjvodib-zibdizzmdib-187[gbnqs]
+ugfkmewj-yjsvw-hdsklau-yjskk-dgyaklauk-502[kajsu]
+iruzfrtkzmv-sleep-tljkfdvi-jvimztv-269[vitze]
+sawlkjevaz-oywrajcan-dqjp-hkceopeyo-550[gvitx]
+wfummczcyx-wifilzof-vumeyn-ijyluncihm-604[lnmdw]
+lahxpnwrl-kdwwh-xynajcrxwb-927[xykwv]
+xekdwvwnzkqo-fahhuxawj-oanreyao-836[xnzsy]
+mbiyqoxsm-bkllsd-bokmaescsdsyx-718[thcfp]
+uiovmbqk-zijjqb-zmamizkp-746[xpstr]
+nglmtuex-vkrhzxgbv-xzz-ehzblmbvl-293[zblvx]
+xgvnndadzy-kgvnodx-bmvnn-xpnojhzm-nzmqdxz-577[qgfhc]
+zntargvp-ohaal-jbexfubc-975[vflzg]
+vqr-ugetgv-tcddkv-gpikpggtkpi-830[zlyxv]
+qfkkj-nsznzwlep-nzyeltyxpye-847[satrm]
+dwbcjkun-yujbcrl-pajbb-fxatbqxy-225[glisn]
+tyftfcrkv-tljkfdvi-jvimztv-113[tvfij]
+hjgbwuladw-ugjjgkanw-tskcwl-suimakalagf-450[cneum]
+vkrhzxgbv-wrx-etuhktmhkr-397[fnspx]
+elrkdcdugrxv-zhdsrqlchg-edvnhw-vklsslqj-933[dlhrs]
+etaqigpke-lgnnadgcp-uvqtcig-752[ojdgw]
+nsyjwsfyntsfq-hmthtqfyj-ywfnsnsl-385[sfnyt]
+bnmrtldq-fqzcd-bgnbnkzsd-sqzhmhmf-833[jipnm]
+fkqbokxqflkxi-bdd-xkxivpfp-471[rjlxc]
+lnkfaypeha-bhksan-hwxknwpknu-316[nsoam]
+pelbtravp-ohaal-erprvivat-221[kdvcs]
+dfcxsqhwzs-qobrm-qcohwbu-ghcfous-350[choqs]
+ejpanjwpekjwh-xwogap-ajcejaanejc-706[dtcks]
+gzefmnxq-rxaiqd-pqhqxabyqzf-638[yntmj]
+awzwhofm-ufors-qobrm-qcohwbu-hsqvbczcum-454[tfiay]
+yknnkoera-yhwooebeaz-lhwopey-cnwoo-klanwpekjo-420[fqbwp]
+bkzrrhehdc-bzmcx-bnzshmf-cdoknxldms-183[bcdhm]
+htqtwkzq-jll-jslnsjjwnsl-905[oicay]
+npmhcargjc-bwc-sqcp-rcqrgle-834[thaxs]
+njmjubsz-hsbef-dboez-dvtupnfs-tfswjdf-909[qkeyv]
+qyujihctyx-wuhxs-wiuncha-nywbhifias-994[hiuwy]
+vetllbybxw-unggr-phkdlahi-475[rqpto]
+etyyx-dff-qdzbpthrhshnm-313[zpisy]
+ijmockjgz-jwezxo-nojmvbz-993[jozmb]
+xgvnndadzy-ytz-mznzvmxc-343[uhztm]
+pxtihgbsxw-yehpxk-wxitkmfxgm-189[clynd]
+tfiifjzmv-treup-tfekrzedvek-711[gptfw]
+sedikcuh-whqtu-rqiauj-iuhlysui-660[znymv]
+ktwbhtvmbox-ynssr-cxeeruxtg-tvjnblbmbhg-813[kdico]
+xst-wigvix-wgezirkiv-lyrx-tyvglewmrk-542[igrvw]
+gzefmnxq-fab-eqodqf-pkq-pqhqxabyqzf-222[examq]
+ncjzrpytn-nlyoj-nzletyr-ecltytyr-925[jybxu]
+mvkccspson-lexxi-crszzsxq-588[jirxq]
+zbytomdsvo-bkllsd-ecob-docdsxq-640[getaf]
+willimcpy-luvvcn-mbcjjcha-552[snrxz]
+htsxzrjw-lwfij-gntmfefwitzx-hfsid-htfynsl-xmnuunsl-307[fnsth]
+iuruxlar-jek-jkvruesktz-306[btnac]
+cqwdujys-rqiauj-efuhqjyedi-166[rgncm]
+dpssptjwf-dipdpmbuf-sfbdrvjtjujpo-623[yeftd]
+pbybeshy-onfxrg-qrfvta-195[wmjer]
+laffe-pkrrehkgt-uvkxgzouty-644[kefgr]
+rnqnyfwd-lwfij-jll-fhvznxnynts-723[qmybf]
+dyz-combod-lkcuod-wkbuodsxq-354[suqhl]
+gpewwmjmih-veffmx-ywiv-xiwxmrk-464[zyowm]
+xfbqpojafe-cvooz-bdrvjtjujpo-363[qgvxl]
+wyvqljapsl-kfl-huhsfzpz-435[yomjs]
+hqcfqwydw-rqiauj-huiuqhsx-478[kxtls]
+ajyqqgdgcb-zsllw-qrmpyec-392[nztsu]
+luxciuwncpy-zfiqyl-xypyfijgyhn-838[bzpxo]
+kdijqrbu-fbqijys-whqii-udwyduuhydw-556[ihdkv]
+mfklstdw-bwddqtwsf-ghwjslagfk-450[esbmd]
+lugjuacha-dyffsvyuh-nywbhifias-578[snqwt]
+ibghopzs-qobrm-qcohwbu-fsoqeiwgwhwcb-298[ndtlm]
+nwilwcejc-oywrajcan-dqjp-hkceopeyo-394[cejow]
+vqr-ugetgv-tcddkv-ucngu-258[xetvd]
+rtt-genvavat-975[taveg]
+willimcpy-dyffsvyuh-xyjfisgyhn-656[mrjtz]
+dmbttjgjfe-njmjubsz-hsbef-gmpxfs-dpoubjonfou-779[yakzv]
+muqfedyput-rqiauj-kiuh-juijydw-660[rkonp]
+pkl-oaynap-fahhuxawj-odellejc-342[xmeyn]
+qlm-pbzobq-yrkkv-pbosfzbp-315[bpkoq]
+wihmogyl-aluxy-vumeyn-ijyluncihm-292[yilmu]
+mvydjvxodqz-wvnfzo-nvgzn-291[vnzdo]
+ikhcxvmbex-ktuubm-hixktmbhgl-215[bhkmx]
+willimcpy-vohhs-xypyfijgyhn-136[pmnwz]
+ynukcajey-xwogap-skngodkl-394[enjif]
+ynukcajey-xqjju-zalwnpiajp-394[kzjlp]
+yhtwhnpun-jovjvshal-hjxbpzpapvu-539[ycldk]
+nglmtuex-ktuubm-ybgtgvbgz-397[qvtsp]
+cvabijtm-rmttgjmiv-lmxtwgumvb-174[zpytf]
+fnjyxwrinm-ajkkrc-mnyuxhvnwc-459[molxs]
+mybbycsfo-mkxni-yzobkdsyxc-614[ybckm]
+ugdgjxmd-kusnwfywj-zmfl-ghwjslagfk-840[gfjwd]
+wbhsfbohwcboz-dzoghwq-ufogg-cdsfohwcbg-766[obghw]
+qekrixmg-ikk-qerekiqirx-334[aeldt]
+ktwbhtvmbox-mhi-lxvkxm-utldxm-lmhktzx-657[yqjuz]
+ugdgjxmd-wyy-klgjsyw-216[gydjw]
+ucynmlgxcb-cee-pcacgtgle-704[tonxb]
+nsyjwsfyntsfq-hmthtqfyj-ijxnls-931[rdmog]
+enzcntvat-ohaal-ybtvfgvpf-455[cvmts]
+aczupnetwp-nsznzwlep-dlwpd-483[ticoy]
+wbhsfbohwcboz-pibbm-cdsfohwcbg-350[oebpc]
+shmml-cynfgvp-tenff-znexrgvat-715[fyuze]
+sedikcuh-whqtu-uww-huiuqhsx-582[ytsoz]
+ynukcajey-pkl-oaynap-xwogap-nayaerejc-550[mnfkp]
+ipvohghykvbz-zjhclunly-obua-huhsfzpz-851[mecug]
+tbxmlkfwba-oxyyfq-ixyloxqlov-783[woqrj]
+zilqwikbqdm-kpwkwtibm-abwziom-954[yzmul]
+kwvacumz-ozilm-zijjqb-apqxxqvo-590[dojfm]
+bqxnfdmhb-bgnbnkzsd-sdbgmnknfx-547[ajynr]
+sbnqbhjoh-dmbttjgjfe-dipdpmbuf-gjobodjoh-103[bjdoh]
+jsvagsulanw-usfvq-vwhsjlewfl-268[kiwfy]
+mbggf-buzahisl-lnn-wbyjohzpun-539[bnghl]
+htwwtxnaj-jll-ijajqturjsy-411[zhgpj]
+amppmqgtc-aylbw-amyrgle-pcacgtgle-496[agclm]
+jchipqat-uadltg-detgpixdch-895[wogif]
+ktfitzbgz-unggr-tgterlbl-605[wjmxs]
+yhwooebeaz-ywjzu-ykwpejc-bejwjyejc-498[sgtmz]
+muqfedyput-fbqijys-whqii-cqhaujydw-634[pcekt]
+udskkaxawv-mfklstdw-hdsklau-yjskk-dstgjslgjq-840[xeguw]
+hqfxxnknji-kqtbjw-qfgtwfytwd-983[fqtwj]
+veqtekmrk-fyrrc-eguymwmxmsr-490[stfrm]
+awzwhofm-ufors-ksodcbwnsr-tzcksf-gozsg-298[sofwz]
+tinnm-gqojsbusf-vibh-gsfjwqsg-714[dczyw]
+nuatmlmdpage-ngzzk-pqbxakyqzf-456[azgkm]
+htsxzrjw-lwfij-kqtbjw-jslnsjjwnsl-255[ldqwi]
+zotts-zfiqyl-lywycpcha-136[fwujm]
+odiih-kdwwh-ldbcxvna-bnaerln-927[dnabh]
+nuatmlmdpage-dmnnuf-xasuefuoe-586[atenm]
+qxdwpopgsdjh-rpcsn-rdpixcv-htgkxrth-739[pkxqs]
+iruzfrtkzmv-sleep-rthlzjzkzfe-633[ykopj]
+ejpanjwpekjwh-nwxxep-zaoecj-550[ejpwa]
+rwcnawjcrxwju-kdwwh-cnlqwxuxph-979[genou]
+rwcnawjcrxwju-lqxlxujcn-mnyuxhvnwc-719[wxnmk]
+qlm-pbzobq-avb-jxohbqfkd-601[mzylk]
+lqwhuqdwlrqdo-vfdyhqjhu-kxqw-frqwdlqphqw-881[qwdhl]
+udglrdfwlyh-gbh-ilqdqflqj-439[otyms]
+hvbizodx-ezggtwzvi-nojmvbz-473[isoun]
+dzczkrip-xiruv-vxx-ivtvzmzex-763[yblku]
+oaxadrgx-bxmefuo-sdmee-xasuefuoe-222[exaou]
+bnmrtldq-fqzcd-bzmcx-vnqjrgno-287[odhcx]
+wifilzof-wbiwifuny-lyuwkocmcncih-864[iwcfl]
+ynukcajey-ydkykhwpa-yqopkian-oanreya-654[cghze]
+egdytrixat-qjccn-bpgztixcv-349[ctgix]
+slqryzjc-cee-kypicrgle-210[gqknl]
+jef-iushuj-rqiauj-iqbui-296[mzxhd]
+qcffcgwjs-gqojsbusf-vibh-gozsg-220[gsfbc]
+eadalsjq-yjsvw-usfvq-ugslafy-vwnwdghewfl-606[kyzev]
+willimcpy-jfumncw-alumm-xymcah-318[mclai]
+excdklvo-bkllsd-vklybkdybi-432[hrznt]
+gntmfefwitzx-gzssd-xjwanhjx-801[xfgjn]
+qzoggwtwsr-xszzmpsob-fsgsofqv-636[cthmf]
+houngfgxjuay-hgyqkz-xkykgxin-332[spxuj]
+oaxadrgx-eomhqzsqd-tgzf-qzsuzqqduzs-638[meluy]
+qzoggwtwsr-qobrm-rsdzcmasbh-740[fwsan]
+bkzrrhehdc-sno-rdbqds-qzaahs-vnqjrgno-339[rdhnq]
+excdklvo-cmkfoxqob-rexd-zebmrkcsxq-458[xaqgb]
+oknkvcta-itcfg-uecxgpigt-jwpv-fgukip-856[gcikp]
+shoewudys-rkddo-qdqboiyi-530[doiqs]
+mrxivrexmsrep-gerhc-pefsvexsvc-828[ubzia]
+fydelmwp-mfyyj-hzcvdsza-769[anbml]
+rwcnawjcrxwju-ljwmh-bqryyrwp-277[nxatm]
diff --git a/d04/src/main.rs b/d04/src/main.rs
new file mode 100644
index 0000000..2369431
--- /dev/null
+++ b/d04/src/main.rs
@@ -0,0 +1,135 @@
+use std::collections::HashMap;
+use std::fs;
+
+fn sector_if_valid(room: &str) -> Option<u32> {
+ let mut letters = HashMap::new();
+ let mut sector = String::new();
+ let mut checksum = "";
+
+ for (i, c) in room.chars().enumerate() {
+ if c.is_ascii_lowercase() {
+ // Keep track of each letter's frequency
+ let count = letters.entry(c).or_insert(0);
+ *count += 1;
+ } else if c.is_ascii_digit() {
+ // Store the sector ID number
+ sector.push(c);
+ } else if c == '[' {
+ // Checksum is 5 characters in square brackets
+ checksum = &room[i + 1..i + 6];
+ break;
+ }
+ }
+
+ // Check if this room's checksum is valid
+ for c in checksum.chars() {
+ // Expect the most common letters, in alphabetical order if tied:
+ // score = 100 * frequency - alphabet index - constant
+ let &expected = letters
+ .iter()
+ .max_by_key(|x| 100 * x.1 - x.0.to_digit(36).unwrap())
+ .unwrap()
+ .0;
+ letters.remove(&c);
+
+ if c != expected {
+ return None;
+ }
+ }
+
+ Some(sector.parse().unwrap())
+}
+
+fn solve_part1(lines: &Vec<&str>) -> u32 {
+ let mut total = 0;
+
+ for room in lines {
+ let sec = sector_if_valid(room);
+ if sec.is_some() {
+ total += sec.unwrap();
+ }
+ }
+
+ total
+}
+
+fn solve_part2(lines: &Vec<&str>) -> Option<u32> {
+ for line in lines {
+ let osector = sector_if_valid(line);
+ if osector.is_none() {
+ continue;
+ }
+
+ // Extract ciphertext from `line'
+ let mut ctext = String::new();
+ for c in line.chars() {
+ if c.is_ascii_digit() {
+ break;
+ }
+ ctext.push(c);
+ }
+ // Ignore last '-' before sector ID
+ ctext.pop();
+
+ // Decrypt ciphertext into plaintext
+ let mut ptext = String::new();
+ for c in ctext.chars() {
+ if c == '-' {
+ ptext.push(' ');
+ } else {
+ // Apply shift cipher (shift by sector ID)
+ let old = c.to_digit(36).unwrap() - 10;
+ let new = (old + osector.unwrap()) % 26;
+ ptext.push(char::from_digit(new + 10, 36).unwrap());
+ }
+ }
+
+ // Right name found by inspecting decrypted list by eye
+ if ptext == "northpole object storage" {
+ return osector;
+ }
+ }
+
+ None // shouldn't happen
+}
+
+fn main() {
+ // Read room list from input text file
+ let input = fs::read_to_string("input.txt").unwrap();
+ let lines = input.lines().collect();
+
+ // Part 1 gives 158835 for me
+ println!("Part 1 solution: {}", solve_part1(&lines));
+
+ // Part 2 gives 993 for me
+ println!("Part 2 solution: {}", solve_part2(&lines).unwrap());
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn part1_example1() {
+ let lines = vec!["aaaaa-bbb-z-y-x-123[abxyz]"];
+ assert_eq!(solve_part1(&lines), 123);
+ }
+
+ #[test]
+ fn part1_example2() {
+ let lines = vec!["a-b-c-d-e-f-g-h-987[abcde]"];
+ assert_eq!(solve_part1(&lines), 987);
+ }
+
+ #[test]
+ fn part1_example3() {
+ let lines = vec!["not-a-real-room-404[oarel]"];
+ assert_eq!(solve_part1(&lines), 404);
+ }
+
+ #[test]
+ fn part1_example4() {
+ let lines = vec!["totally-real-room-200[decoy]"];
+ assert_eq!(solve_part1(&lines), 0);
+ }
+}
diff --git a/d05/Cargo.toml b/d05/Cargo.toml
new file mode 100644
index 0000000..38415e6
--- /dev/null
+++ b/d05/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "d05"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
+md5 = "0.7.0"
diff --git a/d05/src/main.rs b/d05/src/main.rs
new file mode 100644
index 0000000..25986ef
--- /dev/null
+++ b/d05/src/main.rs
@@ -0,0 +1,86 @@
+use md5;
+
+fn solve_part1(seed: &str) -> String {
+ let mut passw = String::new();
+
+ let mut i = 0;
+ loop {
+ let data = format!("{}{}", seed, i.to_string());
+ let hash = format!("{:x}", md5::compute(data));
+
+ // We've mined a block, so-- wait wrong software
+ if hash.starts_with("00000") {
+ passw.push(hash.chars().nth(5).unwrap());
+ if passw.len() >= 8 {
+ break;
+ }
+ }
+
+ i += 1;
+ }
+
+ passw
+}
+
+fn solve_part2(seed: &str) -> String {
+ // We'll replace each `x' with the true character
+ let mut passw = String::from("xxxxxxxx");
+
+ let mut i = 0;
+ loop {
+ let data = format!("{}{}", seed, i.to_string());
+ let hash = format!("{:x}", md5::compute(data));
+
+ // I wonder how this loop affects global power consumption...
+ if hash.starts_with("00000") {
+ let c = hash.chars().nth(5).unwrap();
+ if c.is_ascii_digit() {
+ // Get index of character to replace
+ let k = String::from(c).parse().unwrap();
+
+ // Is `k' in bounds, and haven't we replaced `passw[k]' already?
+ if k < 8 && passw.chars().nth(k).unwrap() == 'x' {
+ let s = String::from(hash.chars().nth(6).unwrap());
+ passw.replace_range(k..k + 1, &s);
+
+ // Have we replaced all characters in `passw'?
+ if !passw.contains('x') {
+ break;
+ }
+ }
+ }
+ }
+
+ i += 1;
+ }
+
+ passw
+}
+
+fn main() {
+ // My personal input ID
+ let id = "ugkcyxxp";
+
+ // Part 1 gives "d4cd2ee1" for me
+ println!("Part 1 solution: {}", solve_part1(id));
+
+ // Part 2 gives "f2c730e5" for me
+ println!("Part 2 solution: {}", solve_part2(id));
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn part1_example1() {
+ let id = "abc";
+ assert_eq!(solve_part1(id), "18f47a30");
+ }
+
+ #[test]
+ fn part2_example1() {
+ let id = "abc";
+ assert_eq!(solve_part2(id), "05ace8e3");
+ }
+}
diff --git a/d06/Cargo.toml b/d06/Cargo.toml
new file mode 100644
index 0000000..193d51a
--- /dev/null
+++ b/d06/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "d06"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/d06/input.txt b/d06/input.txt
new file mode 100644
index 0000000..c223f71
--- /dev/null
+++ b/d06/input.txt
@@ -0,0 +1,572 @@
+drhqjkbv
+dtmukohn
+pblnptvr
+rggqrqre
+ihknljci
+ncoeigib
+qbmbrgzv
+zfahdmvg
+mblaahfc
+irafzbak
+wghpbuwg
+pyijzopp
+dxpqsjkd
+nhrosahg
+ekfkwiqi
+khgwbxsz
+fkkinvci
+xlmjkxql
+rvzsdcve
+josyoqlp
+wnyzmbhh
+bvkkwyxp
+zdnlhnlv
+hbgmztkb
+yugdjalz
+ittbvkxm
+pbnxevdt
+fptnvjdb
+dsypeozk
+gcjmtlcc
+pqsnuztm
+meilciol
+uolptcbc
+jueofzif
+mryrumjt
+jxmdacbz
+plraftrm
+ljgrwfiz
+ligncqig
+hrcmfkwa
+kraqruef
+mawxovke
+fgwermvq
+ipfzrpoz
+rhfgebjy
+ltqkdjag
+dvgdhywz
+ojnzjack
+ktnqjzlc
+uvcyfogs
+anqjxrbb
+rqedwxhi
+iliuzgff
+lanioopk
+kbcwlndi
+wuzfguwq
+oclgdxdn
+euqmnjxb
+rwgdgwac
+gepgmuuw
+xmsfhugr
+cmmgvoza
+mrdnpirq
+muorgsxa
+awdmmpth
+abwkhkot
+hlztzuhm
+qwbxfktf
+gkdslbhk
+rqppdpfj
+juuuxmwh
+sprwgdoi
+eptrqcap
+fdtoubid
+lnkxrjrr
+yxxiuuzb
+kcbgcuno
+ssszanxv
+xajngqze
+dqprwcbs
+tmehzhsh
+eeooqhko
+eacbmenw
+qpbwiznc
+hoofmvah
+noicaaqv
+reqwbpnl
+ctfbzydf
+kkjvsvob
+pwkramtw
+txsebrtx
+wpxomtjx
+xwcxfihp
+iabaswyj
+ubvgfrsw
+yhxvrlwg
+kyighkhi
+kfmcjeci
+wtxvnufi
+eggyqgwj
+azywqbdk
+egwprvgp
+gxtgzqek
+hbypquhd
+oqbpykib
+bsaybmgo
+ctzhjzgf
+uqcatiea
+fkquufln
+mzuepzcn
+rwteqddf
+uandcifd
+chqjvavf
+xrugbecb
+bynqmlhg
+keruzmmy
+tpxbrwkw
+czawkslt
+duunzdgl
+mhhrgsfi
+lhiorqvn
+uroxbpki
+uyqvmdvr
+wbvzxinc
+hvjbywqh
+opztxiye
+jnkvbsss
+awfhhjuh
+wldwnsms
+vzdtdfzz
+qcgjdsxf
+ncungtbd
+bsfmblxe
+iztafyde
+omxfacnb
+bfjgzohh
+idowhvnt
+etxcropc
+dlebejbz
+dpgrvvyg
+yyetaiyd
+zmvvslxw
+iolevdzw
+pwrbpwyt
+ncxnbdcs
+bizuessl
+csomkqnr
+gukypdxo
+zzazkgze
+mhygipbc
+nidnvzql
+oblusiue
+rnuvqhpy
+ybeycdic
+sbzmvzxq
+gvvqcrug
+zkdknqod
+zkztprqv
+xlprotcp
+sndzhrmt
+cntdipcw
+siiqfres
+pnfcbzjo
+twbgdnrv
+zzxnngor
+nmcmxqgt
+jayxwvrm
+pahclzsw
+ztddtnyo
+odidwauv
+tzlaantg
+nttefszm
+jahhbgpt
+pvxsgjsl
+gewlnlqm
+bykgsqzo
+zqrrhrkl
+isxyqlbv
+wfzkqgvt
+mcwizlzj
+ugtgyrez
+qfyzoall
+cfyqxoyx
+vdszizjm
+bgrcpovm
+einnyfdv
+uugncaps
+letylmon
+ocltwlem
+owfskawk
+hvripclk
+jmgrulzy
+kjxyhhle
+ionkwbuu
+tmjsudwf
+kxocxtoa
+ejbuoost
+nzqdzsdd
+dkuiiisp
+dxwhxbvj
+ghipctmd
+mwmcfifl
+vfptvuxo
+zfqsjsbx
+peazobjt
+nlwomnpb
+ndxbvgqn
+zonnhffl
+vjnyiejx
+ghrcsxgl
+fsdiwdmy
+jmhtpgis
+sscjmpev
+oivfuctm
+zwtllrfo
+uuzpmnjx
+wgpccyiu
+ujhilevq
+hjjieaag
+dfbfylpe
+ypegnmyg
+vjnjrgcu
+enylcycn
+ptlneeqo
+nfiplyjo
+dxcrmicb
+vdxohgvl
+iycioixk
+rwqrjyyu
+rfatusnv
+mnyvdlhu
+piyhcljq
+edcykiom
+wrtwvqub
+ejtepubt
+vegruhiu
+qmrlbprr
+wntjsebz
+hkdkuasw
+jxkfblck
+knrwttyx
+pmjitnry
+lrtbermt
+qkhtmeoe
+skmqdpek
+fmxlqqhn
+ureaitwq
+qufcyfph
+wcidvwgt
+ybkrmqem
+qhuacrls
+yvnsqqdb
+xpjchodx
+lcwzkemd
+jokzbvsi
+jjbklvqq
+xfswceep
+xsjwsymu
+slmsyksa
+oaquyavd
+zxteczie
+yglonpuu
+rdfvsbno
+wgxhuxga
+kvpetmdr
+fjeoobow
+atdqjabp
+prjazwst
+yqkisdog
+wvswvdtm
+iogvloma
+srxeqnqq
+ipjfezkx
+joonxwtz
+yjovntqa
+svbbkcvw
+mgyseuqr
+dxflpkvp
+gqbiytmk
+siccxtsn
+oepstegr
+uwjjhhqb
+eosfjfhv
+dsaqqhda
+vudzwxak
+njzjiowv
+anfpqwsz
+geuqffcr
+vhhbkgeb
+flkqpzbn
+fgtdspvd
+yjhxwcps
+aimfdnpv
+hhvklxlo
+yjoxsxhj
+bllophbc
+ntclfhgs
+gtnsuqdp
+dazhoeap
+klczitkw
+tlkedeuy
+cvbuidmk
+vjubfgqg
+qimvfpxg
+hnqegigv
+cppyezxe
+czcmiytj
+ypvezoca
+adjxiooc
+mdshbmjd
+urthwyqf
+dhoijcrh
+vxnnyszn
+ttzkydfs
+lhnbywji
+tyiuyhxa
+fyryagxi
+hboupxaq
+urctvbue
+cirtbbfu
+bkoxlmkm
+rdeoosjs
+qemhixen
+zqfioppk
+vopwlhhe
+gmpihxop
+aamsrrzs
+sdyssprk
+hmrqkghm
+oevtvzwl
+bqufyyuu
+ennrxvaf
+slmshjpz
+qgraeety
+mczjxfan
+wzwmupvu
+sqbkhwxg
+abbotwty
+trafaoli
+bkuarvfz
+wuffaong
+fqevpper
+eekwoblz
+spsztgee
+yjfbfeif
+qcjdtsez
+omujkwzt
+vjpfndxp
+hkpxvjix
+eiigrazh
+jmtdqwuu
+jnsfvufm
+xhkdzgjf
+rvqigugc
+bivqnzgu
+ydadmvyq
+ghsohaqa
+eulugttl
+nvhaafrh
+ikdtvxpu
+fbmztykr
+gmhluyfq
+biovnlho
+xinmgiwl
+xsvlnvnr
+gryuussb
+eeqmavbo
+fuftdkgb
+wwmwybtx
+txshabuj
+ewxcrjmj
+lskdajks
+pabjhzen
+xzfmdhaj
+gojxghyk
+iyqaryra
+bnlovokf
+mehlaadw
+tzqhtnhv
+kgacrpdt
+qxawodku
+fcrouumv
+yzqxkmgi
+xzspfhmp
+omhlnexu
+olstosyp
+gxslgwcn
+juamcglq
+irdvybpr
+ncsacfpd
+hczoulhg
+kqjpowtq
+bzefqjnj
+qnrtwygz
+rztxjfyr
+lcpxloro
+gdibhhkc
+qgwuyhea
+uweyjukp
+hsljwmyy
+ayhxycnx
+klzvtttr
+lgdmpcww
+cqvtjkyw
+rfyjuybh
+tskdjzrt
+mhwspcvf
+xplpnemj
+lrjvgjgs
+crllldzy
+ikczhybc
+oolwtfoj
+pqfgligu
+cdgktmmx
+jbpatjkl
+keqepeax
+qfirnsdi
+juyzjarn
+tuymbnri
+jijsmffx
+xfnbxvzo
+oxmscdkf
+hkfcgeuv
+mkkuxffi
+vjmccxrb
+wrpagtbd
+wcnmlred
+pafkwcph
+tcvjkxyl
+stvhdkom
+cfzhzuif
+avdzxwyd
+wdoyqfpy
+gtolniag
+nvznsjsi
+cabyykqf
+bxfoznta
+mobkmnwc
+sauywroh
+xexkiuyy
+oyevexto
+vqegjclw
+xoifoyic
+rshyscwd
+hvreaslo
+negmieaw
+dmfggrux
+yxmknfpx
+ttyuarnj
+tiwewqnv
+fgmplqux
+fsdeavfu
+uvqczvae
+dydssjnh
+ihlykqnj
+xygdlwae
+usyabtdd
+yqikfwvv
+nvqrjqzh
+rexbjqsu
+nzerccmq
+apzjtxxq
+dgnykfrj
+izahycnb
+ruubddeh
+xkrbsmak
+eooaoaxz
+alwnxxey
+rpxrikkc
+syafkuqf
+fqwavgfy
+jlrielnd
+ylmuftje
+jigqlhyu
+fdbusljj
+ltsvqjss
+ryzsnxja
+sdvtoolp
+ttvfgkan
+zzbzmsdh
+oneyivvm
+lmkooris
+qbwaumyc
+upooekoi
+oaplwhwf
+zvvsffan
+hjujkmzt
+ksocowvu
+xmaxctph
+uohgaowz
+wyiqttrj
+apdmkleo
+ngirmkie
+zdmekxlr
+zghwmffq
+kkwtxmht
+aopxxxla
+cwaxcndp
+mchejzuf
+qiisajma
+paqlvgwk
+neepulbv
+locpxcge
+zqihibab
+mpwwkcnc
+acltdkmx
+tsveirfy
+oyqnektx
+roljqjyy
+tppfxdlm
+pdkdgzbj
+hqohdklw
+ffaqesqq
+cluhwwfj
+bfwsfqjl
+yxeforet
+auhwgphh
+wqeumebp
+stagigac
+typntncz
+hdlxeizg
+daaredsw
+tbgzwdkl
+jnncvszy
+vzzojziz
+uhuiphch
+sflgjnmx
+zjcebfsa
+psvusroj
+isyddacs
+qjnifltk
+lxsjtnwd
+gfrahlus
+vvzirpuo
+zxscyfrr
+asdpeiwa
+hzrjpvlj
+lubqxhin
+kauqzmng
+vlchbkuk
+baivdnom
+cuwbwhml
+inwmiyfq
+ywvdnsqq
+sohppxig
+vnvqqmjy
+aaekdkci
+byyylakp
+vwctbbrq
+pguveyxu
+ccbkkuqw
+qmtotaum
+bbghdbpn
+miuprwir
+lkjlnmus
+zhvpqpwz
+xtxzqnix
+lxckscjy
+lkvlzrta
+feoujqdq
+myecxjgd
+dwkmzbor
+gfdlcijs
+abwlgpdc
+vwspenjl
+cigbugvr
+ugjalecy
+klbkpbsg
+qraxrapw
+vyjcmvmy
+ffhvruro
+eluiytkn
diff --git a/d06/src/main.rs b/d06/src/main.rs
new file mode 100644
index 0000000..e482735
--- /dev/null
+++ b/d06/src/main.rs
@@ -0,0 +1,63 @@
+use std::collections::HashMap;
+use std::fs;
+
+fn solve_puzzle(lines: &Vec<&str>, use_max: bool) -> String {
+ let mut freqs = Vec::new();
+ for _i in 0..lines[0].len() {
+ let hm: HashMap<char, usize> = HashMap::new();
+ freqs.push(hm);
+ }
+
+ // Count char occurrences at each index in line
+ for line in lines {
+ for (i, c) in line.chars().enumerate() {
+ *freqs[i].entry(c).or_insert(0) += 1;
+ }
+ }
+
+ let mut result = String::new();
+ for hm in freqs {
+ let c = if use_max {
+ // Part 1: take most common character
+ hm.into_iter().max_by_key(|x| x.1).unwrap().0
+ } else {
+ // Part 2: take least common character
+ hm.into_iter().min_by_key(|x| x.1).unwrap().0
+ };
+ result.push(c);
+ }
+
+ result
+}
+
+fn main() {
+ // Read messages from input text file
+ let input = fs::read_to_string("input.txt").unwrap();
+ let lines = input.lines().collect();
+
+ // Part 1 gives "mlncjgdg" for me
+ println!("Part 1 solution: {}", solve_puzzle(&lines, true));
+
+ // Part 2 gives "bipjaytb" for me
+ println!("Part 2 solution: {}", solve_puzzle(&lines, false));
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ const EXAMPLE1_LINES: [&str; 16] = [
+ "eedadn", "drvtee", "eandsr", "raavrd", "atevrs", "tsrnev", "sdttsa", "rasrtv",
+ "nssdts", "ntnada", "svetve", "tesnvt", "vntsnd", "vrdear", "dvrsen", "enarar",
+ ];
+
+ #[test]
+ fn part1_example1() {
+ assert_eq!(solve_puzzle(&Vec::from(EXAMPLE1_LINES), true), "easter");
+ }
+
+ #[test]
+ fn part2_example1() {
+ assert_eq!(solve_puzzle(&Vec::from(EXAMPLE1_LINES), false), "advent");
+ }
+}
diff --git a/d07/Cargo.toml b/d07/Cargo.toml
new file mode 100644
index 0000000..903d267
--- /dev/null
+++ b/d07/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "d07"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/d07/input.txt b/d07/input.txt
new file mode 100644
index 0000000..d50f36c
--- /dev/null
+++ b/d07/input.txt
@@ -0,0 +1,2000 @@
+wysextplwqpvipxdv[srzvtwbfzqtspxnethm]syqbzgtboxxzpwr[kljvjjkjyojzrstfgrw]obdhcczonzvbfby[svotajtpttohxsh]cooktbyumlpxostt
+emzopymywhhxulxuctj[dwwvkzhoigmbmnf]nxgbgfwqvrypqxppyq[qozsihnhpztcrpbdc]rnhnakmrdcowatw[rhvchmzmyfxlolwe]uysecbspabtauvmixa
+bqooxxweoytjghrqn[hkwwukixothfyglw]kpasnmikmbzcbfi[vlnyszifsaaicagxtqf]ucdyxasusefuuxlx
+rxpusykufgqujfe[rypwoorxdemxffui]cvvcufcqmxoxcphp[witynplrfvquduiot]vcysdcsowcxhphp[gctucefriclxaonpwe]jdprpdvpeumrhokrcjt
+iungssgfnnjlgdferc[xfffplonmzjmxkinhl]dehxdielvncdawomqk[teizynepguvtgofr]fjazkxesmlwryphifh[ppjfvfefqhmuqtdp]luopramrehtriilwlou
+mqxqhcpalwycdxw[fkwhjscfmgywhtvdb]khadwvhkxygtxqx
+ihekzgbwpjxgbau[eqpvqxncntbtsqn]mbtbcujdkbrhxdu
+izikobnovmjzngo[ombcpcvshnedtndu]lnnmdkuapgnxpgyxcmg[bgnxdzmiolfvvaizu]tcvnrfufuvhgmlxcm
+yhrowrreplrrsbupeor[nchtznfzbzwnogh]rynudxihckzattbz[dshxeaqusdlhydtm]rvqzuffgqtysfzxp
+unfjgussbjxzlhopoqg[ppdnqkiuooukdmbqlo]flfiieiitmettblfln
+hgtbgxarmgbxqrhghxb[hflfvoetxfisqsj]syhkugztqkywetyhad[fmptjuaqittvvyooda]cjkxbnylglnlfleelzu
+npxhwtitqnddkwg[gmzggwnvygsroeaadtc]gudnfyefqbbgyspdxjw[ilthbdqubqnveowv]xitfldhfjyjsomygjg[knmrlvoiqyytigytlum]dlfpsnyzmhkmeevfwsf
+wjzwftiuixvwyzmgoe[jbfghrqhyywwhlu]wcijbojvlgjjdtowzpv[lgfvxfdusgxddsppbxb]pagicuiuerzeydww[wlpjklgzyilrifonz]gdicckmxibtwwoesaxf
+eilrieezaciolhnhrc[hcisnfomqiiaculxfv]bfyxxhgrakqogthzft
+xijomgpzpilomlpy[sfgwaovcybyhoogrxsv]ufncwrahejwlhyvz
+nojlhdpfkjbhahgqo[lqrkjabuijutlcbq]caszlkvkofxjyqzsttc[isqicyomykudneq]izuzehgtmwnnvfrlrja
+qwfvuzrogqzvnhyqdv[qhnjhafmrtghosbmskc]msmwswtgzlpmtmzne[kovzhefjqtqadhj]myqisirynftmtzvxvvz
+frfongnaecavmrhj[uuptwvcqozxnglsd]kwpovfwuhmqjkog[phtrgysxaltvbohmv]abhuahonmbhsmfglltm
+wdqcwcbtpexduecepe[zwrcpctlwglgfpappb]zdadimzdcpxhxwde[yquulvwgyyzwcfsvkdt]thgziwclyxxfyjpbpc[ypkjfrfkxlkavboh]hxylcecamgezuoljh
+yqxkafpkuuxfafe[zehlwtvpprtiqbl]qswqigaeaneovxm[bqoieihtxarwyrqegb]yzdopgmqklqaizxjm[jhrsftklywefyevvha]xuvydwcntczjvuduj
+judhawjtmpsxfocai[qghshlgvbitxevt]xehceioknrewezihnb[jvrzemakemtgmqiqmvj]wewpjflvqmottqx
+uhokpvanmvdobqitn[eosarcmqnukoczgz]rmoowtgbbyimkptlxdu[rqhewmnpypqpyosgehz]nqdwglwscsizxey
+sbnojmynueuyyutr[oonxqrbbjxwvwafad]krqlneuehyrghmkrq[khsckkfwowubtglegu]xweufrmlufamzbcedk
+nmgjmbwyrvcbthw[ogtvotifzugvvrsfe]jucqbvfqclkuxzumoed
+uaokpcytcrfpitfursj[lweyfahryjfprulw]dsdutsxdtugaced
+ahshwqihivxlgsj[ldnmuwbrmoxtypqluyz]intafryfavcnotgxu[xjggdyvoarfajgp]zhfgnytzjhuyheqdy[yeynlfshsyrhjxrzguu]onvyhjfwooikmmqzwgc
+djkgxfnfojgjpxec[ngwqajfbywoxlbm]oqdqigzeqadgqjt[tvojayieruftbjokeeq]gxwtruomnhorqqrpzt[bxppvnbiwhkhdka]rhpffqekyrcgwqmoi
+aasbwiocfkaahrjwerr[dvlemehlhfzxnzymqn]okxibfrlswfvmreuf
+rwcjoknjvyufkrp[hsqrwhdlwrtlthp]ijezyezjdrhzgltliq
+azawpddzkqbosmltyxt[zoaaqnowmmwkmfkq]lgusvzwnimvgagupkt[scbjhqdftzssbvnvff]coiaslgcrwvyioxx[jouvwdiwvbsembzf]popmlnhjkoaeahcny
+snucfdhspcbcsgjnmcc[qbicureolmbzhsy]cuabqhzbcbkezsumkq[cnggwqizurflommitua]ajtxxkqwqynnwroi
+bsxzwpiauwlqelesq[uqfdggoirtlucvedpl]asacxftfqfswiapmj[nqohanbbzodfgkxihtt]lhshhkgjvjkumja
+beewgulkwnmwxenstrz[vybrrqhcdpkhfnshccv]xdfvqzdslwosulzatc[kuknmynmjntvtyduwlh]trfvychdobyghnrxrfy
+oxrwmqpvxntdkohmxb[wugyubwxumwnxlk]jidpzvtbomuymyf
+pqzbwlnmvtytsfre[pmtmcnxkylmqaeb]alfdaofnqpohulpmfoj
+qopdwichdepaubxxeu[ifjozmlqttahyugyt]mfmlwxifscsnuom[kiyjlqqxunsxfmht]icofrxpdpsktwiifyb[hetijegmockkyjhhc]aarioqngqmdpkti
+klumchkwczxuuekdb[nlalmjunselydybqxdj]alagfcxocldfyzdnzd[abfnqrgrxbscagj]cohrecgrcaxljkz
+djydzyiyydcneoubp[gorqzujuwkjsqhelfrp]pvtvbhztirfzmwcopfv[wfjumxbfvvgvzltlcf]ergdkkakrtfzcxmqcc[vwnkrxhayzbvbauvn]yjoqveipzibbmjq
+qbdruhoywfjhaljfkoy[tznfejprrnzrrewdx]jziputgqfcqtbhvhlnw[ikahxtlheeunzrdq]tmoanjmpioumvpcu[tnmcvxkewovprxgzd]trnmnhdvtsisiujqjk
+llojixxpxtvcwxaxp[rurmhymwuztchngs]weaefxdkjmofeydvfy[hmbracjdcwxfeva]jkiybiomykfexjlyg[pgrlrqgoxqqtoio]rdynpcndtqarmkagbw
+kislmybuoblnpsc[dvsrnwlsvxxmzuu]jakczftcvijbavhjgb[osdyplcgliragfnpezx]kihkywmwgbkjtgxn[tdsgdadcvcaxfrbur]lzyjmrjqztybfdmm
+orfngwdzlrucbkbqd[ibvlkwlnnzwkhnoad]brstantuaxwkibofh
+vuumejklanuomqqdbva[mwjzrpargsphzkkhaaz]lkkewmbrvuczyyu[ebpoqgoifelelzzhd]biflvclnnimuojihdmn[llrnjdgzagktjrys]edtbmzmcbthpixhwwyz
+ftaciyszakisxhzjhbo[khfshezpopvjaki]pdnnsqmgpgatvubllrr[ovjrouomglbpgvtya]ifwcvhascqptbvbums[cfpimraygtnuimiup]zeykmilehidtlstjux
+nzgbxxiimmzsvhe[ixypsgextxvdckbjelq]jpklrvkhgzprfrsv
+mpdlsziccgzmvorvm[vhxbfkwfwbxqbvxp]zbsxgodzhgmrhrprpu[pvawdsvqybgdncgxido]zuhyfbmmhzegohu
+rdkteyoeleyhxdlfa[nrrzftpiqatsnnnsd]qwelhxwbpuwjmrjxmgq
+vpdhtcgjpkrqmrt[gozqldncggxpvou]zedtarenbxskusqk[mwpmzpwraryuqqmdhrd]eoculislafmbqzy[okpddsvrtyrkbjtihhb]dvuadhnaxkfewhnksl
+ivjfulhqfbdqiprzbbe[ezhkhqxcviwxbwmlnbb]ttekmmdrphuteslzwcj[iocuduwexawydww]qmrfnnedqtqezclpuq
+tksplumjkpsjjorux[dpffmbayilzuszc]rsiowigabmredkfv[aurieaasmsrxufpo]lbwvhcrjfgomkff
+uwuobjzxkgeugrivc[biktdwykzondbwiko]nnrtnqzhdhdwzkau
+cjjawanjvbxvmvdmtu[kubvvkuoynaawzowphv]ssijoohfemyhrde
+qlykdpnioshrexuw[tjwoswemjxylnqupgv]ymovhecbliuuzhjwu[ghxibaaourtzzogrynv]hmlndovkousrtbomlnz[nzkdpmqrqovnvskh]vdvntntzrqrhvcaxdov
+tdhrefyrccgkdquxz[jqeprpsvvkmmldlwyq]lwhnimtgegsziejeh[gyefzqbmfnhzgtq]fmbcvbjtsriuicde[sbkkbqwzlluccpa]nwxmuolcbhtwcllmz
+cakfzlwlaxgrzjpgck[toihlzbehdzesbt]azrsizelgzczqxwejb[ypecquckfavmixeyjgr]njiyddhuwlwogbnpt
+jadaohixgxzjcopk[wopcnehanaabtklxnez]jgvumwvmixxxwaolxb[lrhmslkbmylyvlkx]tatmsbtlbcutcydlrf
+gelrpwfiyiszejt[skpclwjhzgwvfbbd]ibwzelwwhvudmvoe[gpdveubkzkkxvtjn]khmkjslnkdlmefcx[fcwhuyiyvnjgfcva]qjcfuqxwmkyvvzuj
+pbejigkioxtdjjzbl[uihultqxejdyegacm]fitsnuitopdzrxskz[shbzwyodcotpvoixoz]qrhuyetkmnnljfqt
+yohbaryhrhuobkf[fmfsylvacrgvpnlqdb]iucbpagpbziaqae[lfcjrlbgxiytord]mhjlzecyrqcpbxsaq
+vguohtnahunrvrfv[lwbganvrrgnasnkqjz]yuoncrmethwiglfiy
+pljibizefgbrfauieem[yadmbpkftrtwjrize]fuzpxdpomsdxfocc[lvoahklovaxtucrpwhj]newpgoizivpqkpo[uloztzclhwixtcjhyon]qyzzqoyirejavchy
+plinqqpqghkeuipqppp[rndecheohrsftgvku]ogsyvyxuetmdomwdmx[lumcfskwppjacuddm]uptsydogwyqaupdft
+ewvtreckmjqvkvwgtz[leisttvtmrxnzjv]bfzzponjsjmepqjfs[knbonuuuhvtvteiov]vaejlijsnrpqppo[hvwwdxernqcxtxe]ssznbkhfmchmjjiahkk
+rrofpphpfkeeqlxcev[ierkxtuduxxxbilmg]vmipzdomogxwiazla
+uqmllifxqxwcskoj[lwrjkmxgwxwvkqrsajx]wpbkbsohlaeskzbv[boyvlwxpqpppcknocv]pgsvgtugmxmoexrvpkk
+zupunwchccxqggie[sdcdhzciymhppyaaaib]izbizcvzvbcnofmqt[lvvxmcmydxruvudsar]gnspfiadqokusllygyw[wbcpnuppeugrqobtnu]mcvfhylypayxquurcv
+ngscsmmvttxjxoaniu[wsfnnfnkwmjxjql]ijtqswaevexzcmgime
+hkmykmrremccqxvfdps[izfaeewfadfhuwwd]yffzgiqtmayebphb
+znzxjrdnxhfydrhr[kwafvmygvlylite]hmskvvpqyoblrygj
+gkxzweijinwxyajq[jzljdfxlossksqa]octzjmrvxkumtpn[jypbqguwpybykguwn]ngriygtjydfznsf[cpwtojpifkhwtfknjsg]zahxvqxjtoutvvsphh
+kmvndjahzayidho[fitbtgfncjvmbyrbvnf]fodwrbklqhxpsrqwh[ccwvgmocbtbqvwzu]uuidhylekzxzvmce[qbhkjfhnczasecv]ctsfirxwjfvrmayoeb
+oktwbkikybfwojcweal[pnhqkawxmfxggabhgpa]kdjghdalrpgsdhqj[bxjcqdytenfjirvb]odnhihekqyskaoedyor[pqsixozypkjdnnntbng]negjtmkqfykrjgewt
+hriyrcurqmacydyay[gfblxaovvngyesfa]tmftedgxujvmjze[knivpbneiuxdsowcxdt]zzncnfcouzoppog
+edabqgdgbyjqkzjvzhr[rdejmmymhnvfrqvf]zknrxaqjohlncvwc[lcpuoqnkvwgjycfm]ohuebodqzydltckrsb
+rxcyawcfxcjtdshxg[zvggbsrobekoxidyx]zdpvqowndwgdubbhst
+qngajrgvzuafovkr[kracjvrryquumqerjev]mqddkdpqmfgexahczm[psmbzonkrrtlqdpgqci]obiynfssuwhprevmzm
+dihkldbnjicztjfrvga[qtlevmacqkefjomc]opjaojctoraohocxaca[ojldoulpocpcpexnyx]qnouppkcuggjmod[oeiywfzmbjrhtxz]mvhoarchbrpndgwhxga
+qyncschbsnqwgvfu[cscsfdcfbfqiwgwqi]pqzbontuospgycwzqn
+lwvovybfksidtajq[vrtqmrxzouplnjogzk]gailtfjtszlxzwhbs[bgqzyhgudphwgufmg]levofhjnxjqhkcy[wbffnapyutukiavenm]olkwwlrbbobqudwvnur
+yeqiptxuczuxzeatp[upzutosphyfhuho]jehejxjvfpqeifogn[odhltqvdcwwmshl]coezfdamogigspon[syppfhysfwfkisltwr]ihkaelrbcelykby
+nmciqyaovpdwzldwt[zoaowvxkrpfuwnyepcb]yhqlmmrxxvguuajawb[rmilfmqzokaeabc]yhmswnsiyrepbudi
+pifzooabiqmuicfqi[tvaqijdwxsbamxzg]zncutzbfmraagej
+jpgkrbovswsjnbcj[bjybzimnzszdkqj]mvwmgdithrxecpselt[kghbhnctqnhhxxhdro]drttsuyvtuuygdtfaf[zohajxyfyjnqrigq]gadarjzfafqxsjxk
+wivyofwdmipecdxuqu[trccnlbsvfbagstm]xajuejldffxzxfygsg
+qsuxdmtfgpmlgkh[gisuuzaglpmbmydtt]qzyfvzryxepjmnr[mgsjrbmtxxzkadomelm]fqzjahepxspwkwpwd
+pncauthrouncvjkrik[cyiovjnoesdgpeyjpvd]ajhonypsbifeghxi[wmudcxwbewumjbegnh]qetzbstgmzfruzxqln
+qmkcddrhexvtylukq[nwrryzbnjnhvvgm]edxlyprwzzhgfmhz
+iuonniejtavofqdqsln[ynjrsfsqrdsgydhpdvh]xvqtjledtcgkjkealws
+fhbxdtddlvkjrmjyae[nwwjmjvxtabdwdezfdy]iwnsmstiulolahbxka[lqrxlwifzndbeid]jilfjomwrbjeniwybv
+iptzrdexpfzabqcqkm[kvaxgarrbrobtmu]fqaedifschjkoepn[widcirixuswhcvcqywp]kpkxphryiwwnkmb
+zbeoanntetxhvigve[fhwvhghpujcldib]ncrcyvevibooqesy[ougjirkquasabeqad]ydufeicmimcwgtbg
+jaocnzcwgxknexaf[cqykwbyvxtcwnurw]udxjnumyhelfogapi
+sduqgjoijyfrcnfencj[uxuiwklsiuqwjjrzcfn]epnvqcjspwopyffl[mwghrhtfclodjan]ghamugnhrrzjwmnc
+woygyvtrlmjzaeteuj[vvvfohavzuuzyzgu]xjjcxhosambmkixiie[lqholbwbktlvdljmapw]diufpkdnjmjnmyc[ehjexwagbmezmpj]czhwzecixzxfykaiafj
+nkijgkhyilzqvtgj[llydwhyhnhpcracxxd]zgtsspcwpyujndbxvp
+nawnrsgxqpctinyek[ieguugfkwujnymij]rfmqypeekkdsttdw[rfuanabgfjgctueaaqo]vranbomhrynvjyywmh[zjncmschlfmkvhd]gfeoftxsawcgrzvrlx
+jgazasxbickiiiz[duuskjowanfmieegl]cwgdwtrzpbfemqitbhb
+lahkgoaoeofjlocsei[bwxyguvgmenwnpwlp]jigdlgdjptkimoyipa[zlcyjbqohvmlxgxp]bmovqedgchicusqzq
+jhkxinkbwhpddvjzgod[fypyyhptvewejlbwdmx]teagznqhjydanxxi[wkppnjsyzhwshtpo]piaqxcwqolwklwzsfkg
+sjedigezzdkqlxlcnr[xanehtpradlngiob]uonmjrieoycpthh[wnsqwfubwxkqhlflzv]smrebfwpnhskzlknva[pylbyttmhyggonlk]dwqkzjmatybpmgeb
+ktfcuvnwueamlwvgwmq[czcgevditrtvddgfh]djmmelqewdnzrlqliz[fkpieaipgyxnkmjp]rdpkfzvqpfpvczv
+tixjemagwmynkihelk[bnwfmkugsnivgdmvskc]nlasqrjqrlorszi[kbatouwdhejxchpdhd]etmbkytyrpnrpgqvel[xahfkfjmsqjycaq]mispsimhcckrhqvek
+abudxncgozbrbnx[fllpjgocynbuyawgs]hiphrvpugpfnnppn[jhmlgjsufflkdgw]ldmdclrkorzjtbjqcrn
+aljahmvdrraiavzv[tevjntkppnjqwovvuuh]ozmgagxzixxyzuy[zgefziawisowuyqra]nrqmsbwgqbfrxqvzu[zvzglmnjmjpmditiodb]odzbozesvocemfyis
+zgdukwtswaosbrossf[ugdnezayjnbjuhpeh]knkvomcsgfptssifni[votpmaaohcyofgdz]skbvfugaaxutcmrmsc
+ywiphurgqcvybiakgok[cscyksufsduegggw]rtvvvokrvwmwsvmk[oqvdxhoqfsfdwwm]sbzajtnbxzkyiwrj
+nxrvrsbjsrysysvftoo[qowwnvlezexjyynm]nknzluizyzjpbzpevb[adkqviapkjbmknchtb]xsgtthuifmsqidyh
+ejrplkjjbnjjouesaph[bdtybzkfyictcjuagr]ivtcttyunertnzgmpqv[roikukeznmtkqomqbk]lsxzsjrnsrdlxevj
+qgcebktqtyjjwsav[naozjsnqufkkgkp]evimphuulhzflub[weanrdvlsmmypnh]rojhwlyxtszxsjiuai
+zludmyuqlfpefvxcm[hejpyhwaqdndtwslan]ldtxkxxtegoqpntsnwg[olhtlkpvkdgkkxkisp]hursraavetjgloks
+rosuljoqspxeovaqr[ocjdnpuzmwioylt]txylrlsndrifxiuxuyg[jnubpcjyfzhiwul]pdtcjcrkpmzlayzcty[gasynfnouxnvrplkym]naxwpqsxlsbvyuavty
+oxbyqbqmpckkdpfjtr[ggnmfcjtyfspqrqkg]tzapjijawrabozckadp[varichgjrivmseddxv]admqmnzxzqcbapdquwd
+jvhvqxvhqfxnjzmv[hwfwxvwhxorzqizc]rpjpwggqxqkaznkuqn
+yrsucbqcfaukancrr[nabtowgijsnzryuvbiv]sfpffzxrftnrkjx[qfyfsbkyhetcedf]xdykjbymrqgheanxx[oxchcwrkbqvvfeyi]bztjlknshikocxztjm
+iniqqqqprdeznwhr[arooglolfjgprfrbhbm]sczcmpftuhbaagwgedq[yutgzaqyxntjxoglmb]vswbhlspwfulowkif
+bjcjrdzwhmssgoinrcj[jobrpyapaxkasve]hzacshssrxkdtrlqhr[yygotqrmvhiqjrja]ljwfwudymzkpczysknf
+lrnqnaxtavkhwfebb[vwyqnqkveujnlzv]coizhrfmviizxgz[zklqinvtnwtajyjx]nxvpznyebozrosfgh
+ccjjszgrbozbpopagns[abiuzirqfzactus]eemrbqrkhhppvan
+xeaifcibybamzzzic[ymvsqllvremyfify]ftgmrkhzswdpbmukcdv[fbyevcnnwtnodgxy]slfjznnldyuvair
+ajmeryqwfhniqenmi[bdzlgljpkkgsvpjcy]hqzxecqxmneterlqizz[pzrbbprbhujzpcxhjmh]lvrckyomhvidbiapikk[cyyapugbrwlubpmn]toodggarcneobyz
+lehpdvqjccdfpzpo[ssunfejvfxwzlzqy]dvhwfrwiipveqpb
+ijmthhifxtkoubt[jcgoxkntpnxkmdp]rzsfekfmamzddgm[szvzrwthulqzcorhnk]lmgsxsjjcagkaysalnj
+qmfgzmmoylbruqxoh[uoyinkzbglorxud]frtffuhkchkrwbxfx[urlwigeirzobvhir]pqrqujuwxueommaj
+tzjhaiqumjufkzcvphi[lhfohqxxuoqybomckm]qjhpjkjljzekboyc[gvzfehzyrfaarfklybg]fhurcpaukztwesz[lhvnhfgpmunjukye]mdzcvgeehmchcqe
+cbyyjbdwzgdhveyw[ockkdpwglixvbom]ozezplbkvaulagw[vmzfmqxplwaqjrf]upytqbnzjrclzfvti[hztxfkqwcuypqyhsfa]sfwcfhrnccesyncbg
+zaclpaavkxbpjxse[dmuzswkobdcfmrejhaj]eqdwvpiphijpwrvg
+yvectfptgdasqxi[rmpaospaiqhwpjwdru]ollajqbxmfnqmqrdce[jqixwgznolbepskpm]pmyfsrnbdcqdrhplko[pzblovbmbnbwjzsxrk]hgwpjhgshxoozdu
+gpnplfnpnmdlhehgazx[gkgcsjdcfnxytzp]wamlpixcrqvbtseb[ijaxccauotewzkgu]usgmgqmezufmgqjslbu
+jgtqghpjnbjkmajymfw[isxpkhlvtuyqpscvm]czbrsyeqmjnksov
+fjsepwfaxbbsdxlcz[efiljmecvcsybpj]fsvcvvewoepnvqz
+nxzdtgomsakdhwefrn[cobjsrlxnkxvmhk]wkfnuypvsigzcnswufj[ttmtjfkbnhmmdebtr]ffumzvnvgitjccgz[offnegtizuxhpqmic]lbhljegbjmldqbzryis
+gnnsvlcqoatssjuijb[eaodophfeufuvdodj]jplhbuvzqfgvrqbuy[ezxxqanlgnxdkohew]vsukbzhjshwmmqdkzdh
+shfhzsmqdeibrwgyr[slyyksjeywcnuaocadr]kdwnsokrwkajgnwi[zsfujtkhknplyieg]kijuvumdqvjyjpbhl[qyrlzloooajylfrsfk]gwqdkfpitiitrednt
+zhmwbilhpywvxrza[tgnybotdqixzolvn]ptxzyjbayyevmcqua[hcmgjpycosutmqbtkf]tboiprpyhwgjceu
+ejuvrirctrlirihunm[nfjigabdmqnkfoauuyg]rfwcumqndfgotyx
+cxkwlruaswigkrtxxch[fjsovwltjonhegm]zkfawxnzxlkaqawq[rgfftbipxlmelfnpf]qhhslyyiluvowxz[bgxutaxmhxyxxdob]hzthuaqpiyeomlgqqcn
+qyzwezoszvwrwiilglw[opryawlpulfkpkmuave]taxeqyunnihulfp[vzxzosekvamoofva]bbtonpohbgdwfmt[xwzkmwrwruatcdqrj]enrapbeqoxrufgp
+lowqonzaekybouni[uehkpbaxwfixuwlj]ionorsihznoszwzyq[cnatlobscugfpvpbw]lnsmgieepzvmhvbz[lsjebmtctttclkxqok]jwevnfmcrtmgjyniiuf
+ltxumfyzdinfqrlf[jyiwmlpqkbnbgmu]bnicegkghtwivvyozea[qhgoiugrookfmdsln]fpokyqsoknuahpmutnm[smzqellevlxgdbbet]vsadiuyglyyuccgkrz
+fvhanaukvcjdkhsydnz[pbjsoundyybhvaqglj]esjjvkdvjmgmlox
+hcckhzdfmmvnsmuzjg[uuajvdzksgilxpjmnv]opbmjvfljnqzxkql[pgdelzddxqrfdoqnit]hqrrfnwrokufpybg
+ovtjlczqesucgox[kiqphngcbakoelqncyi]jhrwrpwdjxbhnqp[kqvqdyokyuxulxidc]qumskxudarjyagegy
+mxrxpfkynragapzrmdv[rdhsbrxgeywqbqh]rpoerdiwdisciarhl
+ejbdfeqrdsrijztlibc[beglofnxveiorftulay]jslqibpnunabgqmi
+uplsbqledimexhzwnkk[sfreaeitecravsu]exfxqlrumxaeasi
+gicahlhkuxbhppe[cypyeqpzkrggfqrielv]pkuwwtbezndgtqhbz[ojnnxanlkamvmpqfj]eozgnkxtbtyecuhs
+jtzwiyeueztuiwysyv[awibgssyyssrnuxrvuw]mmyvqfgaaraahzzen[rhscfvdrvagricw]qsqbnurcszgekmp
+dxkeveuauhblqnq[oksqvawybtejxmdw]jrbwmyxdggncxitwcms[fvhnmupxnynxmprs]odbifiqqxskxaqn[xwdwagplcltcepjmtf]zsfevibkmzwtzoq
+kflcnlkdujmtiug[rwydvjaazfgmfcn]qolbbuxzxhoizfqcwn[tprjkbylcrlvmbggae]pjwhgcmgxzhxbxdceme
+donbjfkqtygixfpaa[lhfcyuzcmsgixjbr]njvgmbwgzimrtpdmvf[eonodblqfpgtmex]rkakjzfmuyeajvhs[lmgtvenasnqbyby]jdbxoeqnwoednoncq
+laiyueskjnlltkwm[lzrgjwrjchpmnais]pqltpskalrwtmtagvm[luctnpiuqvulmtmw]awlqbuutunlbpusn[hdetxhrtzhkyfktmfn]qpmezabxzrtquidbjc
+hritvdzjxipitctgoex[jtbjcyaysbefjme]ebbcyqglydfhqjfa[uwuwqhwanfydpxqk]enevryjyzduawrfc
+axxprqpxpifqnwte[qwkkhbywyixngun]ufwcbmerbqiblbdmn[mguzyerbfhpqnybh]gscgmmckgfxvvwgxxm[gfjzckcxdowpwmhmg]hjblyfatzhxjyvlccb
+qzzkrqfnnzvgfmrpjr[sktcrqxcctcduir]vmhsrsedrxpnrugm
+mpxgzowtjabzwfcbeg[olgfqepvinejmstbrj]fnqxcfzuxojvkscyk[pxbyuusrrbjwrygkxm]wiojjquwvhineivnkys
+vqcisychxuswbqlzdkj[jetvpggxtqqguuh]tyllnzfyfphoudijzj[xlnznxybxscqjktjn]oysyrlqascsqbclsb[rzhxpwwrjwakoldm]mrwzibdjlhsdsbew
+rttdskfweqmkjolrgsd[gmdwcimmgetwiprem]wkyklvpjyhpzvmsh[zftyxsrvhnioomw]mrvoyvyyrlguwedz[xyrajtcatyabfqigup]srjmohoxwdybksfv
+xzeexlrzdznmhbph[vobtfjuyowqppxw]mjxwhgwveozusndvi[jthhtubbkbmdiepfh]gtedeqwesiwzlrfny[tppxuofhnwwkbkysg]aygwlnvczaarhfgkw
+zxirxtzlqkptwqd[vwdzostlmrbjclfj]aluxqfcdbjwbeerhr[nsjcafnammlxjafrzaa]kipaqywrtrpkbcdtnyi
+vovbpdgnfhmeuadh[bcgvleartfaspvvjjz]ajyzrbirtimuifvs[lykguucpvkxuupcbims]qplsipqneiycefb
+alqzdecagmvodcigcd[atmngaijkfehfbc]cprsiaclouvtbpaab[lfrxlrzuuooqdtfirbj]olcjwtrkndcvykp[lelvgglysdxycvk]uyakjndqzxtzmxs
+syngsortxjqcdwcz[qkiseyvolwhibxdg]ucuxqdozkfgaxqwovk[eqeessuwvcayhpc]wkhzcbkxgakgxnmho
+bhtxesznfkwqbodb[ptpuhbdsvbcjpmnsl]oohvgktjsjwxqgyxov
+udnbbnkojrdevgujkg[cramyjeuckywtuw]qtldussgogyblkm[yuwacyafnikvgbibmwn]xvsgxmywenrmhdctxg
+uzqtkzkmmeuttwyklv[rgnrxkbavqabukxvnp]whhgpmwocfmplba
+kvbjvjxyqiqitikvm[vkzunkivwcpvxng]totvodotoqiqokouz[luzygityrnpuiih]eadddxqveeuujmvnek[nyxhwlkatungkgm]bdhobvhktlnfpjelr
+inmnseeoqimzjwzhltk[ntwlsdvvybtdoqciu]jaurhomtnyudxxmslj[wqygsctddywlbxg]apsdlaftsghmhtj
+pxieimaprtbntgvm[xuvwwsinhwjjapu]taeomoijctvzyeijfr[gitzztxejfefzvepf]udobxonjlqagrkpaehc[fkqjhfjicleroxp]hxpzoklhbgtngtagcz
+lqmoxvnknpqzcgs[zktsmqcgzqjponj]wfhhzvqiqkxfwrrw[actbxtcdlogatfkprc]tvzphmtxfrptzlopv
+czdnqiwqhighizbmivy[tptpsvsahslbsovazkk]ycppvkqvuggebgxibe[qutumfpnpzjkgqyfkok]ixywxvmvliftixfie[qipgniycxomhgmwje]vnhxbcnofkcnzep
+igvdicnzsefxlgk[dzppkxdievabwyh]fvyywjzcyfcqahv
+bjzwblslduiolbezybz[flvsgshhznvzmrxo]lottitaizuksqfihn[kgsgzawzjlqjsep]ihadewtrfpsudggga[oecgswhnbhslysd]flpdpxndzacxeskzmn
+syxfjuakhrnntipfpb[xmntswflflstndkv]lityfpfignnxsyirja
+unggjaqgvzrckyqx[llllagrmuioghea]qafuiwqpxcljhvf[tevtmuvcyqqrzvrduc]kqnaadyfxfyyzjuco
+cpjvjnocqphsagdizq[rzfbvtnodwqrqprvqh]rnlzshtjhrevjgdu[lbozqegfwoaikxbnt]cqmzymvkummuzjfx[vtknqltevighwfdnjv]djhfeemiljlvkgqkpp
+adbbbgxmiqomckxesb[dmwxvrammletdiim]eiozjsockohijbiinia[zyjjubdniurametk]ajivyylxbhvkktrzdg[byxiykqfbvpfdzdv]zborzsvqimrhyoyhevj
+frshflyhzegyezg[xxaoqtzxuqbamukfxed]klyullmlailfvcz[boefzsdpblwpbna]dbnxivwobykcfwogv
+xxycwortiwhndrvlr[mspdwmhyqdwtctlyek]qnzfcwwvvlfsael
+fnekkofpuwhttni[mlwvhzrwfdtfnvof]gtlyjqokjymvtkiqdl[gdjobagxsuhudnoi]jgcgyusdyyocqwwtatk[rjujihcuqgdpcbdnkco]iewvagokrzdhhhskv
+dfadfbjefyinccgzt[gzoojtdlvqysetfihg]nlsriqansooflahzhoa[vlzwtzgipbaxudxg]htykxxpfmhigbdqsu[pzipnakgdfpajkbqowq]zrwedqiuobogirulfwm
+wevlduhhsouwlqxdcfc[bxcvjwespxdkulgun]hfuhwpzgdgqsujeex
+zweayhrezaoqibgvc[sosownrvumzvynfpvr]lzubqqqepwraqqdxxy[bniazltbdanpnjjjuox]tulybfbbzeiyidrv[zbebbcdzpcvegcms]jdfofmnlgwrnvann
+gkmbgzvludgmjgnrkck[ijywdgxetrginhtaa]yiokddkvhxebbuyrwoy[erhxxldeegvsebr]ujqickibpbjpizhbjw[mtzvltxionpxygo]mbcgbublhkajfdfvf
+ddjzsqkoizakmeifr[sigtlzmyyrflvjowj]dyqyfvpkhdulwuj
+jivforicorwbkmccpgj[oviyldmrjjzbojbs]wpztdiwcdrwttmfdw[jgylosmbgxlrogsa]htkvwsfczzoascpunqr[uemtqxhcvvphnvktio]xkghvnicljrlndjtsv
+zkzjccnvukaraob[asytykcstvxtkvermx]lqgjlittfqpyxcq[dwyrqfxmwryvxjzr]edufjnmxhzxokjgphk[ucthvgtgfpzxikmnjv]yqumujliwpjujnymcen
+bhbndmsnnbhspzjby[llodpdecwrlspsbhbhm]zqulqmxwcerescalp
+ozkoqhvatxmivox[qffeloluwcgsimvcrnu]pweywrdkmtqjiflvcm
+rznstgdzevfsthcc[jpgjzgeibmumtatu]asgwjccfkwzaigwp[soegoylmysqcequdsw]pennknxcwwasonjz
+afniplpdesiwqvdioov[xfkwuijxjgtqbhqow]idmgzrcmwzmrfbsubkz[mjwyiznfpjztbfervj]cythmqghdkjcfrt[ekhpwckuwduoexycc]htaeivvotvlstvsrpj
+gecbcvpiswzjjeiriav[ivbfdesbkamvngogjb]xphdszgbcburesbfi
+uldzgctwccgqdbxrmpo[guiftcqomdqlqua]dmxluytucnlndazic[mhmdapmemlrwmvdzwkn]oqyvwmhlabcwxpzioz
+mganrfqbsckpjsnvlh[vlwmfxhxlnnpsghrhmr]eqyrkxjcwpkahqpxeqr
+wpbzefalgkbnrke[qruzjqtrkbzsvfgwz]vahtniazgsicquatrg[zzslttuxbwolldy]cuejnzjsuwgkobp[yspyowiamjpzcaqwb]vhakhmjrncjoroe
+ycxznczxbzrprsiw[oggkqxyiyvsrmxck]asjjivqayantzzfysr
+ewbllymppqrdnaeni[qkytupytcgsftpprv]jfepwibznfbypfnf[lrparpwtkrzlxwep]vdsywhvslycyohef[lxhwibvmyypfrkdsley]kookbjfsapqphmywuu
+cfpbgrwdsnrgddzzh[vbqzujunswprxyxnk]efqzsevzxurynhnm[cyctdnsmqdssnmzyrg]vvswrmqzxnrbkhunu[homwjhndwctdbecwh]cdvggafdchgeuqy
+lihwrhvzkhbrgct[hmwzxlaycaimxchybqf]ruvcpltuinwybvv[xjbzxcihznlkorih]zxnxeqobqveujyrdnur[ijhueqaqprdlrdcjsh]blwxhcuajnskuntgo
+iroxkwgrjpzdodvmohd[wexdltrhssaqwqnh]ynvmdpomrekdsfrjccp
+gfusgnroizvfwwcsc[jgvlrznerrnjretc]dcbnruamgkyrowpglv[tbusonvwwycqtfk]oqngfriboradzof[yosalcuxlovxpjnoss]teunwgykswgulguic
+bsjpzlhhqvnghwnp[gakhkxegeohljlwz]hfhculyhgdwcflbdt
+ataqyejfhrpvpagptx[ufqdptheyevtxqjuqsm]tekvtwjvapcyamluzbn[xxktujajfnprffsvfkc]espinhantulzwpqug[pamkrynxvlrwccp]bgzabgrubbhhwwanvf
+qkyfobviahzasbi[dqhxzkbapqmrubogqg]aenfdyclijdpkeqzc[fbetcpbytjywomh]mqzvwjmgiexjfehor[ntwcsnflvlaxmfqh]uvubufoducqwacwio
+zvygygjncwkyceve[knrtgwmfgpjlqdzusvb]denyidxiinzvmhkeads[nuqpppqdsbypxncb]pzqujhpprhbxvnuzis[zxyppxjfqtzdplvbegi]imswdcvwdghzhmyyoci
+mpiwlfpsupluuwzyqte[mtyfeccxfpcorktwam]jtmnexxnxsdutfve[ktzdkimtvwbcjrr]crdupwumoriklqckirt
+clubjinwpyiguop[xummstkqfygcnsu]rektotfjzzguums[hcxlqatyhaqponifaa]vdzuiclpdtepfqmbdiw
+sswrlfxpvbjntaovr[cajokjrogvtnguj]jsyxzvoomnfbtcc[lgpureoznbgrfwv]rbrwjeeiqshuvkwub[gzvyjbprnocmpkyk]gzibarcxnwnvuymlxpn
+wpdzryxwfahiwguwvtz[epyjrrvvjpkuogtflte]shadblrllcaigwocsw
+osmgewmpcqugjqyddn[omtivijufzacwctoaf]rvlwqcfmfuazwlas[wbpvzrbsnzqnhygpexe]vxvfjrrcjutfivtxb
+unyfptkouxbhwwur[atheuhcficbccfur]djycwrtnlttopnjcm[pyocjfcogkyoogo]uoogeqkztdvsgdj
+gdmorpdnzddjtbzo[hxulwsrafnvyxokoe]flzcmbhukjwjfnxsq[bzqqvrmxihbugam]kwwzidcxteeodrcekl[vtjszsdbmsxqouutvkt]whnkvoierxzhehwcjh
+laswazcejcxyzcocca[utnlyecffzypkiocowm]nievutnusvrsixk
+xlcgrfodctfmyxvsms[bgnofwciyllnekkiqf]knqjmtgrurhsjrwahoz
+enrcvyphrazilaqswz[gdxchlzickidnqfeo]wmadrvyuoczftbdbbij[jxlyycfmgmbujmas]gsreebayzepseakylr
+zeenyzzskgvaysxe[drhsgkqipilrdmcl]xyhouejaqgfdhoshp
+sclmsgjqcijlilhtyn[tyxuebqjqjqdnzg]rfeqmnwynyzfwsfq[jnrjwlqvcnvziqjqnz]zjyeqebxncecsykm[jizuywrcdskgjpv]nkogvpblfiwwnynxf
+rkklgzusmfikiyxsk[zfcqvybbvwxwxlosyhk]pbcybycsiegagdr[jfrnxtonuvihkiueuhz]xlfvapkzcpysqoi
+nllzirippgseojljl[oahmzicssbyckdhyb]qqaeuleefpxlwfl[orimgxtsfwsplrbuppt]eyzeliykpnmmklg
+sypyjddvabqnknl[zfoknkriiqmevubru]rcxkbkzngjzzcchl
+uveautnfudowpkocevc[xqckexnnmsrzxwrgnwo]fbrkssqktfmvbebfs[jmkkvbmhembpojk]vrixaskbnwyzibmtux[evdzaxyibnensgkua]djjjewnszeukvelm
+xcidhycxopgdfgzxp[wcybbxckgqmwttrrvq]zjynrtlsoibooaiqg[zzsjshnyyytzmrcskh]lnvmmzokrgnyqfvsi[kjpgxjqiyimfzec]bpdjsrxzsbwigarmwi
+zytphsjaeavezjmtjf[ocfrxoepijrllfc]gsnkhdomwvsrvmctk
+hjrxkkrrutrkmsiax[zwsclcwdqaukxxwmbgk]jjvxzyshctodfeeonp[eklzpyupurxmcvgndo]neaovsspupkhdclbo
+agrgepnpjdjmmzxtoz[yptupgqukzyiwko]zegusqzhdpylmvhgh[ftclkimlyjeiqxymyc]qplgypcugeybdlznf
+clmaojwiieaxtkf[hybxxzkuvyvljxs]nqyvgwkyfgwgpvjix[ffrpmlqwqbfqfpyn]wewixukrkkavdgpr[zabgeqjcvdsvydus]crgezocdrhjcufljyf
+xwekgqqxadszfqxp[xgftweqykbpaqymyaev]aawdhgjkmwqayhfuja
+tynmzjhrddacgjexrr[kgxebvnmaazmffon]qercmbticxiauyauxmp
+ueswrzmngurxaqja[yzlfxoaxangzjbyqm]zrwxnhpmqiespczu
+caxoesrhrghfcyunxkf[lmalmkbhrhijrvmafw]sdbhqytqtaviurkzi[ozohqgqrkgcbhet]wgwgtjtcfcqzvymnp[zxuhhoxlpsgrfcrejmn]hkopyalfpjzbptgetj
+osmyszkhkpaedzdy[xfincacxeotivra]lksiavomozgiywoxrdu
+fzbuakjjvpyjimycrt[vvbkutdqqtyjgqz]rxzeygtijyrfiqm[qxcgvagpoqyoxhziej]tfoadqfiddsurhergel[sxqvskkcvlkpavpls]ivztxqjuntogjxx
+hphqkgxgqhazalmlqoe[ovhvftdmpwudzdicfkc]tdfnmaosfddlzbhv[obkkfppmoqirgmih]xrsrqaohawnwlxpvq[btfonxzgatdqmohserb]bukakcwcagvcuuwvhtw
+cknwenzzehwdrlje[sctyfugmaxgbetxzf]fcsbyyqvoowzutlge
+gpjdtjgclynikoh[vicphcxycqsiiiglrsw]bcjlerxdimzupbpnw[waevcaeooffjikclq]nhajkvqepdnzgiijfrm[lvmtxqhswljuvux]rnmiklyolpctfrfgxs
+weolymxfeyqemlpxulo[ifjuypsxwrwczhpsw]hziolxpchkfouvegj[svfsshaljdhmwcmu]zqbrupsvenlvvfiuhf
+mxvfnwvzsyldqyi[bvfuwmmrksbxbzcmzrz]wktcxsiresexdodbtl[hijoaneecbrhpmaa]xajfvvnvwcocpcbrhbc
+pboivziugjszfopvkwa[kdcvzroeislbcymt]plydaqvkrjbbtlutgvv
+dtzdswmudibubrthcxc[vgmrnyfsqtutxfq]xwbupswdznzazrecwr[ijppmhwabxmhfgcqu]rwvltmqsymbydmqfnzp
+agaxfzobcsjhyutfk[ftmcykjveqrlmvizdt]agbgsgsmhehzvoy
+fbgqlgcyjmcjajxgq[xrxyfyshmvxgquv]ubfzmnkgipmqeucbk[ebcveyedtkxwqcni]dvujsyfjdfowgxfh[oubuurnpwusoxrx]bzxtjgpylljsuruwlq
+nbctombtbcumuwmay[pryqddzmpxgkjlz]bwwebcrzdpkqlex
+pvwqgvrjhkhjycm[luquegjefcvhweovots]vddsjvlawwxvkcepqx[xkomwqdwvymcgtgxky]tmjyqmzqxuhzxjekwpw[jdszwjkhkxkkpjjwkvh]jnlsvhnyijndbcavtlh
+ccitzedsdvzmktzl[qjtmlhlgdmhomythbe]skkosmhqaqyxvrpwyvi[toqfnarddgzlwhipiqf]vlallikphqpggunc
+aapudqmdqsoadhf[bptieajhwtguxpprkdn]fiopmsokjtonmei[rdcwfyvsmtkqwtpzwcg]pmgiakezkvhfiqxw[bmglrvzatxatgooc]jdkxirlaztzghpcgiot
+csxohvjhmjbjmsw[zgvrfjdvjkjrrsc]wbnhtwfofrquxtzynmy[smcwkfovyaozfhhf]yfribcdfykfzsig
+mzvhznqsykmcdgkphhu[cmmcxolosuhnkmuwhf]gkzgbqwzbzzurzehdm
+yecvknvwvjguxlytj[pncdvmrcqcjmsyix]nvosjrornnfgznaby[tzuoscqaarhjnslab]whvfxspoocikxfkyj
+guaouikkjfrtolsug[tzdjiielpgytyhis]gwwwtmdeetytmerjk[sorwxqfcsuhbvecom]wmfmxfovbdjhajcaxyx
+ouvjolrkjyetsqlo[vnadgdxvtdkqlgi]pivwtbhwibflcoh
+puboxtiwmmabyqgn[zhxzdcswdaavgdaly]ksukgpnictzfxxsuqsk[feoibpurptzvrqy]tytogwcrtiofplr
+pyeiwajmvimttmi[pkvpbhnufrwpwdwy]dwdpuymdrskpgfwp
+uwctwjpjojxatnyjwm[utlxyebxsfrddigrjh]rwepcpjgrqeafmr
+mcibrhjsqyketegjx[wjiejdvcjjaijnmoy]lsjoughndzzedmblz[ovdcmldcmntnxwk]gtjntfaikfbfhuercc
+xkcadobnrwjczwpo[izovquqhogzhtajgcfu]feiizljlnxughttxhy
+zovyoejioovblepnri[wpjrezfxmhepyyhi]lissctcyvfbtuklymtd[vtakkwrsocdxmyqjkl]idfjftptuoiheqi
+fjylzurwqfvphvctbn[wtraagycimmpycsbtw]zdolnnawyfkozoduzht[wqccswxyzozewtayycz]zngifgtxacyrwiacyd
+mkdselqpwqchnwxgydj[orjtmojhzkuxfbpmxa]udrbphkhzchgiyq[ckkhkoltyjlfzrro]kdyudnkzdsjpvonrw
+bpjaenogjpzaxxkejpa[jqgajznyesxfcdhph]euziwygknckkkkunxux
+btjnlodtnbaubkvb[topsbnzgxbfanulah]uksjmxxfwfzxqfcij
+zkfnmdwdaviehibtjy[adnmoctsyzhtangoxtk]rjydanokxyuxajmnx[rbamopbudxevhpoezc]mzurnxtacbelmitu[oidbxqghkpqjzyqrrox]ezgwbeyokfmjwblqq
+nwefqukauecrgki[ofkmtkzupjriwlml]diautbiayphukxvmhlo[iggbxeudmmbkayonzyc]hkijrjxiffmncybco
+ytgimnonvbqexhbabc[jbkbctatpdataxjqtee]bxzwvqoqyazdgoy
+bjztbbhxzzuannkyvet[mngxjhitobvkzvls]abhmarswjsswftn[ihxeotxkwnknkbmkvjs]iovgdoevhkarwuraoef[wvsvcnptmpcktslrn]ldjniscnknkjaheayp
+avmlgtbubxrilqdbvd[eqaifmlaniocwybqh]juzknvgrahckcrhagh
+dyvzlyoefrbtxizlod[ussgexxviaibhrkb]tcgkgkyckgkyewp
+jvrsopjyjarbkenouax[gwyjvegfpwvjsdl]crgcqjzhywhasbuzdji[wqqiwpzcllmnopvbf]hpirheoriudpernd
+cpykkvqvowwhoiys[yjoethxfromctdkog]cvlcjvgbugyqvqxjbc[ipyvfwhqyocrksd]dsvipsvdgzruhsli
+gsyxcrknbxxyhvnss[zymlfgpcupgtzycu]sjucevsghhzpuqe[qldvqrwjankaiexmj]cacvncnvtlbnxfybngh
+ndbxeywazfrnghgdjog[vncdnjelecbwcnuecit]obhfqkcyucffwbhk[wiboksymurccujv]kxhiktclvdsgbxt
+ieqiuumamwhkexjene[tubauuniiqmzdntax]kxiqlujdvpjqqrtkiy[ubnpvsfjutgvfhpe]fnwawoyfoqqdgyr
+lromgmscqlmoqtqrr[wbndhgvivyrvevwpbd]fjvqzyqdkqfpica[isfiiygygruduhleff]lbfsdwsbvndxjord[zmgvcnxjevefjnqx]izvrxpsfekwsaxhzg
+vfqitwljrqvsyilpb[ugzycuwrexfoavmalm]dshatbrosrihtwpf
+hduooarqszvabcwukj[ajuwsrthbgchctbyuyj]tpzioxoqtyfuwtdccn[jisrxrmnmzhnhotwra]swseywswdlsbzzqqlv
+aarocdgubnvehgg[xvfugpdczaccgttycv]nhzocbyrdhlppydelyq[uloucbldnjeulomssv]ayxgxkrslthaspz
+dhyljzgyamlcdmmz[zdkwfrroodcyfnfie]zkwhzngaidridcagekh[emzeeodcnuvzddnbm]vtwokrqakoovvcdisvm[nzdlsyrpcsicoedyx]rrnfnhgpaeqtlxv
+nxybztwairyftfvig[syeyundkruexgbwyvz]pspeqstftxbbaevhql
+sbbhfvvgyscleyxzki[hgjoiilqwuiiogtt]sblfjsptehcxdilpgw
+fmynycbkkkiwjllu[iolpwypqrdrnkitax]fwfzssjntanttkkboq[afgwfwvsudpprmpne]fbzhbkoxpxavaskchfq
+jcyrspmtzwxqtomkqab[xqivjfrwadfvtfmp]fxkhdbiczckphwhil[ztemqpsvuwhwhfdfip]zxqetcaulofvxrsak
+ozgxtokkrotpphxsnt[txgvekxlxkhufcwi]hspcyxwyijgjaqsyfw[bcjgsvsfzmvjklh]bxjmkqkynrusvvq
+wofaptbytcugaluqc[qdgdqupqigweysdhq]saaeqyqazqqaunofl[iorcsdtwdhfmajh]owdrcjffsvszwflax
+icrmudvzysqefbfgpae[uypfoutavxnzfpcfafy]moghronhxpgorkpypoi[ayrgvytktzzwtfuvfxm]ktoiazynmsksawusbsv[vypyasahxszocsfrcx]wyodebbscuterfrji
+otrgqclsvnjpznt[dwzibvrmtngomacr]xtqtbpxdtejwbstddr
+csiarmhcmunsjogtwp[nborrnynefhrgwy]lvsacfkgakkbjyny
+ijejwezkizvuswn[zfkgmewadvwroqibng]kqhmbrdzuvhcwkwxfwe[mgopomvjdemllzygc]ivzzvgcwpmgjewb
+jznavprnlcygwvvj[eobpbcbuqceogtei]jilcppgbqnzzjrjjjx[xurpitsmdxtiihb]pkwkdkckicticboagma
+hrarppjudvbccxdepdg[ksabupqjypyrwctd]jzmkavpyparwxrivfq
+kjtgdhvqyzisomc[koywiyiymrrjpbqno]vbbusjzesxjpwkrh[zfalkzmohlxcdykl]hdctcfabyzteadzofca[vlbsevgalpsvreryxda]oocgdkoeoxgepsikokz
+nckfsyxjdgmgcdyqoaz[cegnbhaksrdfaokttjc]rmfzhgwbszywwzbzpe[nofsbyxiguiaxju]vjjitkzyrugozdspwjy[gwkdakutwllydivtnns]gswugowdiouemkrf
+evjgxyciglvcnkjdep[ixmlhpvkldxvcerjb]eqpkpmyqvctcepuljz[aylvsdrrbajlptvfeo]nqmtctitzqxeluw[pkylojlgnaunmolry]patyaqnazqoykcls
+yklraufwcbbewrzdnl[dfsdynavgwiwbkmmpo]atqaaprzieowbqafr[udtaocwgbvqqztkykeh]eyzakgtvzrmejksf
+gplhegstsxbqvxtnp[sheoxtsrbdxposgmtx]fazbemqbzmssyce
+ulhekckzsguaeuectg[msnwinlfedcaqdyb]przurxwotscdzgtcjv[sbqdcqeculwutvfecqm]mjosilvbpgaawll
+bjohxvdcujujaoxe[buibijjxplrerpiphn]eorjpmrcugznwsi
+yflomjbhtnsgkkx[hhpskaiqhzlmbnpv]lgsdbeankbosyptonh[vxodyzameaaajwc]nwpmycktztqrgmxgbg
+eajkclofrzpwbscfuwv[vgcyrfqnycmarafkjc]yfrtobkpkwlmgyckhmt
+czamuejkegyxhetxmou[edrrdhmhhtxvpoxvx]wbzihlibvexqyvclzml[dnzwkagaeyicaojzg]wkireqqnngbfxsygz
+kwbjoaorrluxekext[ffjrmxvgeqyaoartr]pwxypyiquumrhbz
+pyxpvbqfwlpnawrygi[dtqrrjolckhpczlk]mtknbyltlictunxq
+cgwtgnafiflwgoims[qdbdbgkqhmtkzmmyuke]cuhipgoscmxtoihh[ieqobhwtcxsehgils]pmtyremzeqhcuinxs
+lmcuchgkedjkgbvxjdw[jxqmqodwyieikurcwf]mkfmofgbnxsmluu[rymmyeyhyncfnzobk]jnwjbmejttstvhumye
+qsuhfviyinfcwufzu[pqmeenwhbstgguzs]ypqszcvmaxfqwqcvqro[xiofditiroisnpbx]vhftrwgnrxoxciva[esrtbbadduxicftf]vcslxziacmscxaxvnbs
+bbfcqaoedfdwphomkh[jnslunmdmvkiyup]gfnnjqweocbybtjdtn
+srjpaxfvehavomsjq[nqqcwddbzqvxdacdep]hhpbhajjqaazpqyo[fclqwfkctufgmkqm]pzkwekfirzlcgduifqu
+kfmoszcssmucztdn[tllxhkubjuqjmgfeqw]djyeyajqakxkoxpk
+peeaqxjifuloiujd[tgplullzdgeqjononx]lsmrbynngeveozz
+chytpljkoqzhxfu[izwdbatnmmzzttst]pkfsahxrlgxedvsev[rcxdfirqmtavigilk]lvrudkskrxxyulbjbe
+iatlnhdapqsyskgstls[nqzlofurrzibukxddw]yxdwqadthjynwvatmp[bdkndmhtngzerzwqgmx]iclavwyossjrhtoqf
+vvanifuojsytdel[dmqjrwfgjqrcyazxa]mivahklphnoapabp[tlwiiuvxlonsucr]fccfhxkvvqeqvclcnr[rankwbxciojgzdhuuu]eycbcqhnkawkwmkxb
+kyqnkbwfvcarqcrcfua[toxpqnxiuyvfjlekjk]hfponcmqqsfdzqtlgm
+ksrmipfvtrgwofiqxx[dxncthyfpoivapdpf]tzlnjrfggtbgdxec[tmlpzqicqjfhxwjcigo]uzmkhvbltpwdbpxzfpi[yfkkmkzokekiidxpugj]jbmagsjlfozkajt
+xhrfhwrsgduyobjodd[pazkwxnflbwbpwxych]yvasgopohztnfcsbc[dohwmwtdklyjkbaqe]cttccmlckzlioizfufc
+lygkfdlnlrukwjskxqp[tcskymqclunvdqywv]rhxfxbjftjxdepuwax[eoqchqlngjnnshc]gvjhyrvjgueweik
+cehpocjxzxkpnxglhzc[ltjmejyuouzkisdnlah]ytzdlqcewgwzxdz[hcupzenhdmtvigdodq]oivalfgkscgnaxih[opciwwcvzkrsehcznh]iveqylobdjvqqrbb
+ofluwuxajcsnkanvg[vwpsezopzkpvhlobfos]gmnrtcprhthefopis[yvcgpesbspnlbvdcdj]unooggcrpjinkxmqsg[stfmzxmnwkyujhwqilj]editpyjnpwaefawwq
+cdneyarppztbtwsaqy[euyswrwxaaolxkzgcx]cqqabzealhvuwzo[hvnmwoqlzyjguvyy]goqjeapcwghvfszwsc
+hohlnwotueozwhyfgg[bdiawrubvrnulfemv]yohmiujjdfjexybb[uyyzvnainybidqfmll]pyybgwdxcdqdgjp[qpowhiuynwospqdgui]lqdoiaufqbqljkvhgjj
+tirxyuvikznzsavp[omifkdfvljmhlrk]ouzmaxynnznyhfrud
+iyoipjyrywuhpipcx[zkrusibgupcteuls]rkwpwfppboaxzgkbwuh
+yebynyhsovfufkhwoel[rqgwgiuuztoboxqo]tbcahalhrqzpqxhud
+mxvixuvpntcsxjzvpy[jnjtyjwuivtsxlko]zugkjugtwymssxd
+ddxewdmzqrmjcdx[tehlbyapxxetbkp]lkfkrutmzvjsvynmt[aryjfitktobzfnhcxu]rrbqdbzhgjwwnfpkxbx[ggbsnbwuwlduhlfp]bdniebubtcxsubscaad
+osbvoidqyhsnydypy[virseojzmlplzxfwcdk]qyyespqaegmtzgckltr[kjowbsggjlyrbtcxj]poychjfbatvhkrs
+rlvvjqnaiasedvpjbr[fufrhampzwdniipjc]oqjmidcyiekvayqfl
+hvtczuskhiykvchxno[benlaiuubpaghzlwbf]tarjrksfzvilwquxj[wehwbwsxfuaptyty]gvvlkkyayfstbcut[hxnojqaxevtbvmaz]jnhvumhqfgkaqhumxt
+thxtkuentusmryim[hzgibspwboqacdlwc]clsunqcnrlgldjbsvz[scnclutgijjilirutnn]izdwhvipobyzirg[hliollkyedcuomrwyyq]dpibjmbezvzyspmkgwj
+apezafwfsqifmip[kuxynugvrndkdifwhd]pixpqmsbuqspsdpqnzw[qfiqdwcdzbtidgm]otzbkrciacwchdnqa[kiblvlkmtkqjzyyv]hnucmptrhrodosk
+nuiovzzixafjgvl[slswktlejrrsmxujjrk]cjassomselslooj
+vnlustrakmrdrkjwju[nnlzyowyjshralbkgo]jpwjwpehndfweegrnq
+hdiueeojljpcqrdkdfk[aseznfnjilqktdx]fubppvpqwksxeiwpm
+kjlbdmnhtzcagcpc[wybonbamfkugypt]gnjrawnjietdzhaf
+ufmoyzcmcxoqqpsg[hkdzmupftmazbrhul]mypsxfpshzcirslsq[rumehwhrobhrjstjd]tcdatsxbxwzxseileyd[iwyafcoefsrbynl]vedzteatonqliwgyj
+wtmyhvmsfoxphqrusjw[ozpswsyjxemnczhga]xeplvzvjzdgqspqjv
+wxyocgbulqhbzyekcln[dijevkhdfkfwmppnert]uuxxnhhkbmcegbtugap
+ijgtsfvyzgrzjonlq[bxxhmrfelsyxkyxrex]pimhbbzahddhwrhudyo
+ydjcoqvktwdjucx[riqvhezqqrwpizvn]pptmsnmubbjzwozxy[rbzbtfnnkeyuvjqhjhu]hnqyyqccouflfzmk
+dordtdxwtwahcjcb[gumvtsackxhwojebt]gdzjirhxegmrgishf[ueivwcnfptgagdj]kzqyptwgfykrxqsc
+yovgolzpfuxumuusnu[yzmsckgxuxbcfhpovdi]ydcgpjfgjgstljbkc[jnxpktvohnxeoett]wijsttknnkaxhyx
+xaajqzktqfslihurb[ssufsbsajcwrysbaweg]odddpcsenmcxilrkp
+lhkzyewhnntocluc[witlpxxovbpaeue]zokmfkrsuzblnubzq[qbubewghnsjcnbku]xicstwzulnzadvwgv
+pzuhirxrvaghkajqsg[edyrpkukyvidoqbabcu]vfqcnorzlzxypla
+xythdypgcqkccfv[zrbuwbhkohddkmbj]dbkreagpyprchmoktz[mehstplzokdjkasge]bypysrypwfqaupkwmad[ywkktyjruqqoexms]xdvcvnaeuiwdtcjcwg
+ebmymncvgrkqlusommh[wtkwqtpboedpdwaxoxv]iezxkyrvialjrev
+njvacohjeagiztos[afpmzgmxbvpzrkpikb]cxbsozlksnpvdxh
+wnpqmnhzhaclqkn[neseqjerkxmpddehzpv]buwoodytrhkaffpb[zpqzycmuzkevvyl]iqdqjuqnmddqdmktojn[ocbknhhzdyzcpzi]srfnmfblqrqzwtusu
+paxcryjinpwgadnzgdn[pedljgwehinbuvueies]wykembvekyliivgd[mjonnndjrswlfvlo]vuanwryeqmmovavhf[pouuyesundysqaxzciv]itixbjpcioinvfkh
+vmlgtgupmvpnwkh[cpuwomxbeionmrkx]zwjdjcytxjxbzltbp
+gxbttoltnwfholw[srbxnbzsdlwegml]ufeghhwivplxych[kesniuppshrvbic]ongllrrsyzxurhxc[ucssycrhethdlhyzd]jvhniomjxluggwtcv
+kpwrbbrusxmusejnwz[wbgriazubzccotlcdbh]dxnvqwslhdxbbufe[pobrzwumffnjxfghv]qplrnuqjguonrpmpv[xxwugdzbckpvhhr]vbrmirtrwprtqli
+mlonozngubrbmumjxb[vzvxodkubovdionkb]uidfhtqhxxsetsnvy[spdgbqevotzyzhtyy]mjvctpqrtpxrbqeckq
+wftjnmpwffdunhwr[nzepzikompkwgje]rahnwuphbxpmwmtwboe[wcwxzwqppyaeihnxrvi]wozbvaemreqcvsoafr
+lmfgslqcwpzvgxgmgty[ihjhsbvhdnsbkroszc]scwicucudbqrvtygt[iomkilvjwsofqnjqtd]amzyfxiaogrsdikrgye
+fcjsdhrxjiuugivwyk[kazerfwbmgeiituwksg]nalxpcedxoajytfpg[lldrwcgzwhmukpmsvot]yzsnbooxncfhjdqi
+ljjwrowxmpvvwvsit[lhezgrfdcwohtllany]huqtnutwnuamaahpwa[ezoifbtagkrzzjybsf]fehkkskjziztlravf
+qggqdwibskgshrkyc[bcqhsghufawaskgezjl]tikipezkvitcxtefpg[rwvlyjcgevwbikop]ygxubvtkciptbhi
+gmlqugapdwdohic[fbxygwjlnwqygmnxma]sgnfeprkyxrzspd
+gtokbujgojpkdtrvt[hxtbjjffjwxnpco]vaxogwcclwrodfdxlfp[hihtvdymxjotbfuyfr]muubeuzwzbdsydkkss
+rpqdqfjuutdfbaarkgb[nihwtvhhcmxwbgr]evovoyejllhtmpv[qvkudqduftuvccmeby]caeupguvwobwkccojl
+gxqxcqpcbqmscefvj[jodkjejtlvhhyrw]ciduukfamepbpemyol[uchoefnuqlolilidyp]rsjsqlxmjccoipqueq[qlxonqxtccxuwcnrizs]plzdntlmgcnrwawrxdm
+jvbbytsctqrwjrdr[xtqorzwdmhunrtevfb]qqxbyumulbmrsbhtx
+yoenmlwliczccpkolc[xsolpcnqbbkrani]tzczkjomtarfeqiq
+ogxowfxoqczptla[ayzmunzjrhsyyit]ckixtyzdkicgemx[hhubqmeqeenjuwuclx]zjhusfgvemklroia
+wtnnwdcuqnxduod[nugtcdeviqkajsqxgvh]ujsnisiydziqndzgtn
+eylerocwshewgerk[szefiobgoejulsas]jxmoefzlxhchgmspo
+nnwqedoiuhqmmbqewzx[ocxrbmgeqxsjeorfrde]agqexvigcnntkdck[vopzcxqdokfydsh]aajrpilxdhftxbprqn
+gieaqwfwcaktnyrak[ckstsfspnaxvkkecu]nywzcpsrpeypytm
+nlsmbjepecyztmhys[yseyspewhduijglnxs]nmttyybnzhxcbuvcm
+gzimfexrobypudb[fmrtikpcalnxzjco]qbxokzuhvtgzerkwgig[otsumbzbiecnrsfvgox]pnbeigikjxbnesh[ifovbpoycogawpmbtuj]qjoaetsrenrirpvb
+ybjllzyznkniidrl[txlisrbknkopgbgutv]rspeuydexyushei
+nnigaodunsopocfqf[fdkbcjzyxamtnwn]obloxevzqyrmswtc[jkuniykbwsytpivsh]ceuzwuogyqxferdic
+gyuypjyncazpjtbni[aietrzglhhgxscvnwvu]ccqmabbzdawwoctwywe[fassebimijhpenb]bwqtcbfdilruikksetv
+ldxvntffkplnjgt[lhwtwwfoyuoumxngqbp]eyoreivfgqwyfet[ylipomgffukvmjynvu]npvyofzmqlyboidqya
+tpnxkxbhphxzetonae[sugfadsgjpdwxup]jainzhhwfvgcljydo
+uzllwzqtwsmvdpoivdm[geidfnypnnnszjjgc]vtwpieaxgzxbslxld
+lzeizipamzynfflhuhz[qzwbfnjeulpgjjn]aapdqkjbpljvnvt[qhauhykubojxcoyuglc]tkflnjrdtjgwilk[aorfkrzlpuhgozwyhj]kmbwxqqwfjxawbj
+ivqhauvcbmbzijrl[lbsmgujvpbayaoy]kteathfvlzvbfzdgw[xkpwoqzbkbdgrsjzn]hnihhzpetldtahy[ocottuvddcefplijb]vfolexdinkkgmcdwfyc
+vqblvnbutgxixnfcwc[kphevjpgctxpkavh]riyfeqvpyvgckaselrb[ryoltaxliqsnlqdagr]shrflexwtlaivfow
+lreoiyjedxzdyhdnlde[levshlupfrkvdfdeav]ehfmfwbetbsduiudzr[uoxbgzrwlqkbkcwo]wjlwlixknhzeuyw
+abnhwwybagtjfrh[jaoeeifkdmlksncnjp]rulgazssxsmrrwe[hisspgixyvssxiumqtj]ohkxzqzkfnkvvgvrhgf
+drtqdxxqsrkujjyyb[jxitdcumljupwcmxx]kmzgykavruhbplvjjp[tjxjcibazngasivc]iuhgnmtzaozykgtedes[pproeupegraihkv]vuptfrfnrwopiczzkos
+kbkxcesohyjlgyynpwe[bkintqjcoqshvve]torkeaaagbkbxosriuc
+qklkbdielutwmtwkgz[dtruujvmzvmannceu]xmrwrcevkgapcagtuof[ebouhjnkpgmqairnh]trgbvkjhgjvqmceu
+xcoycanpxtathanw[xdfzqcekyrgixxcc]zpbmkgrykuvlldgzh[zltkqabodeywxhtyfkc]jzetstuqnplogpkjyx
+pirttznzezsktas[ogefjszaezeqipdhy]tfzgyjkulhtyuhnvf
+kxyvrtcpdqieyro[wnvmnmiobotxsispv]qyvdfrfhxkjuqwdtw[qolhrtzasgthtplihxg]gfjpittpnbsymvnotyj[znwgxnufnotguzwgwxd]rdmgzgfprxmavttnoz
+mubjhrjxqggcrus[ammffdekmguajiq]wvtsxaabnjzbekpx[thnwbdcskocytas]yimpbasvxqiylaqn[mrrzwqztanrkdqwvw]uvtlhtffzkcautuvm
+xbnvzradisweizc[ogurjxmpvzglqbgjlpc]hhujtmvfmcqqcukjvjp[wgkwvyjkwkufvventj]ehdkswmxyekfimbk[ovbdceenqmnrjeqvf]oqvujeqvjlplnzgi
+ggbrbreeteveahudoxy[wuvddvvvugkdows]ftzrwbghewsdfqaigt
+shelsgoglooyenhx[lylymuuhrtnflwww]muaexmsuihzdiyly
+slmxqaktxwfpfgrqv[ekjhbymdpfpiqvm]zybjhwobkrylohor[xflqcdxcgvqpzzdd]txshvtkbijbkbnsh
+bpocmihqoplucwnvyb[scxgrmfmuycybgura]yupkvewviiggoszst[suowhbqfktiboyik]hqqmqjvjczoxgeoqof
+elmexemdeoaajpjhu[kilercdwmwidrkpx]pvyefsmytxvaxuzsq[xyyhrtmwtglmcqik]spnsavadaexrodemqbq[wzzqmadwqbqbuvdxpmv]tuvloljoyhrqccyd
+rzngofliosgytzkunp[cyjzxhswcqeeqhmkjn]ymhsqcfuowylqtjrb[pwocjlxtfqsmelq]ezhrwjlzjtsdqorfsn[iekekpprqmwpdyl]aduyoxkvlkxejyjnqdz
+yhwdblscdqhpdbthaac[xadcyjrkldvjlntkxl]tcohssfmczzbomezqdr[wspvzvkctwmmhfujxm]fgxpvtsninxayplzlas[poflalkhzwwqwotgldo]mihbeaapilajefhlxs
+xgwckmpjphdwvzujv[svfqqafftzlgoifup]pezixwriwatkcez
+mfgtxxoygegwmitbzkt[qxivglwljmpsfzn]mfvhkhhddithgxaokf
+npkhgeapbthebsqk[bwoqhnxqzhkkwcm]alwpwqgoitrupvsz[yqvcrithxqfdgzux]adoiatxqsplvllzivzb[fcfyicpoiqaagrb]lummgoxyspqibxaq
+vikqemveklzlaqdxvev[tsqfmvvhysvdmlspknc]ejryfsjgnpmxcvks[ecwobztvirmokwcf]siwzbkgxlniwnmhzyhd
+ltlhegkfxhbndmfcpo[pmcjzvzmerxvsdo]dijdhpewjuwnatewmg[ylninmvyjhiqvicagy]cqrtolyldnbzfufnju
+mxsbpkqgsuhpvsrwzdl[dlrlhbdjvmrjwwthq]rqowmkoukgclzrfh[djjugwzxaaqtqavlo]gdzvdzibnckhkqb[xvfheuckvskmouv]uwrmeqlloqbtbfc
+emfplgnlzranlwxnk[ubuhxoejgoxfciarjtr]uzcfagjxdfnewbxxcb
+tlkmvlcqcbaqozlwn[lbupwjeefgtoovnrkkh]sdzgkexzxzcpdjgaid[qisspueisheejzkfxdi]inhxlauecmmkpenqqf
+fdtrgsgechhugwnidpi[dtwwiqlxgtadmnrtej]hdgoyjhlzdrcjzvl
+mtglmkersierfaishps[gilijizfqdzqihkbsd]ieqqthavsiqbkxvrmll[oxznuqiocyxjzymxm]epuxtetrnfrzrlqd[gooprerdkioisowygrb]zzowrurkwngpvvh
+tznoyelqlffpalatbs[cmtlsjviihyavtxz]lphzihbzjykeuhuzpg[xqfwolpahmfquhuh]rpqawvkxodxmvfhswz
+ybityzvtpsfbovx[yrggwxpkqjtzdvkr]gphdlfythiokoitpcjx[wmfvcehazqfxesy]utjcvxaybxcikaqgrx
+olqndwuwjvfqhxt[qfgqmmyeowawqckfh]ngkiagyxtqpdwbrwlm
+ukuozdurxxrvljkoi[eysjyckwyiyuopa]fconkkukvvmgnvyn[nwkqsifcwlzjurruho]ryslsdfmhgesmdf
+tlchnjfxtkubrlta[rsqsxplnikmqxsyhyoq]xcytyjjduledlzhuh[qudvljyfmodytzaw]hspqkfbkjtsvcwpl[ptfjakjrpvqcqcuhmf]inxwobxnnzfirnvgmmr
+gaviilzxljsozua[vmqvdrqoqnztbdmzstt]ufxaggbphqyxgnpcgzm[zglcpiqjhahiqcb]tsiqxcvrwvqistphkj[ebajnjrqotekcerg]kciocwshxzksmunx
+cgpgikxsukwvmwi[janhpuvmccsdahfk]rrmkjehchkefwnz[plbujeqhgjvljzkwg]ttwfjicxkkofysgob
+girkwjuugyxtovkjr[htizrvsispydidi]wqdtgvsfnuisigmalai
+ajbikjzwulcmizeoasw[pkkgiucjnrubiwqoll]gscdqocmpsuvfznqhah[rztusgyvsxaeqfmesh]rarydwrmadghrjtx
+hxpxckfcwipinrxk[morfsambyhipqzwl]wzgttlcuikfpvywm[cyebxypkgvxhope]dqazfmcgyppybetn
+nrisbenoupwrstlxy[uewucgmzkoyulfbt]bbvorytlrgqknqz[zwseofceynlohaooxzm]hfzyxxxfpjmubbjysld[tetgwcwvhctlndovx]jxflzwtuhkltaqmnuh
+nmyrirhwawjtgcgma[ilkcycomeqvcsuwmmq]iridicawanwkaeumbvz
+sunhpdrgrjztzvkxnl[mtztitboyfmtysqeqzl]unugkiwrweincocilom
+jhoqhwlkzccmtrlrs[tazackiqztlndogrmgz]zsfezvlpuzwmfwee[vcfxoionmgpezbalm]ujdbonopokhkgynmhp[pcdhdmwegmihhkh]dgjjkcyuetspltxpl
+siocivjbvwhltkyk[imgupkeeknlltlk]qxfcqnjbjtenubcjasr
+hswgnfwswhyngohhyvo[vamsrkcpvakzvbsvls]ehqrevmxiccgfsq[pffckymkoredwdpcmx]vjdjsrqxttbfjqf
+qemtumhnmgkgfzfzqho[wfluvctfqhrwznyzfsa]zriirahfdpleznfto[dugecvltxsfumxvjaah]lvudvknmsbudzxoadg
+mvrjzvsrconakgifqj[ehgbxxxhfqcigyhuyya]eqofdufzntqtsjukffc[hbzrfurkracnfeig]zmahsqiqbinnlhnvrz[qdajsuhymeavrqpdoy]nspfggpgnwnalzuk
+sejkhhjswpiqukaddwc[vwdsuuxtfaxqbrcne]njkrzolxoqpmmua
+fumcwsiexfoqklovype[bzxfxytncrmwtfrojv]bfvsmplxarmselz[nrnsymdrakyaqzwivoe]fpvboftrzvkemjgqt[akiqkjrmnvhucjcxk]ynityzhxqopnjpslhg
+msoqujlsilpcgchprz[gqdevmuryxipqcgfdwz]wxjkmuhjootmigfietn[flfcoqhksuopnwk]cewizdzpgetongprkb[pqizytyliwhnetg]uknrvmoahsbicmeg
+evyofxtcsyfbjtbml[wjqpsedellhzgmvk]emdpcwxuuaccubksbqb[krehpfhgyibfxepo]imvfvflnagwulpcp[cldtyjrcehkgtfyxnws]gaicllkdzufdmja
+plinmvdjkaswskiw[zejltttlwtcetjb]uqkwaifdtedvcmiqcs[smlzeqfmbhssmvvmvh]lgypwtxchfxksqgmeb[fqygohnnxmmvazctrl]rwbjopgpdkeejeb
+hgxczafqluesrmrtuc[jkowxyxlufhgbmk]zbiycjiafsngeoz[mltnmcbnsrmdjini]wtokbcbelvzibjncpat[dmjqentqrspifbnind]drpbucndawosqjk
+hqaysnyyigyfvzsm[vrqjwqmhiywsbblfrq]wseacbmleqwlaci[eisrrgcmewmlsqkremg]hfqkdkghomzddiaeq
+qrcyyzpfuupvipsuor[ujvnwghyvsujblbiwy]uofftaesrxvghupknr[divaemcywwpnkeejjo]dmgdiifbkggxpzmfy
+qjttccgwnqwdehsoz[dfbrkdapobhqvzom]hqtnzkmtiunvomn
+irxyxnmdlzgxmpg[ityfjgihvzrylygz]qollizryghyxjglce
+bnibapdblbaoehfbvin[kmummoqopswsmvtgiz]isaumuoiybqckfvkhx
+waimkuqinxbmazab[foxenwzsxkkupwo]yjelgjycvabztzb
+exxvbdzpyswekjnfmef[tjmrddaazxyynamc]nambmdtnmfhtkiyqqct[patbobzwiwlidazpoc]nzbneeilwcjqnxqwh
+obtckokgcgcwbtyww[gxpfdpaggfbadjvdo]trethfifqwrfexv[uiucztyublzgcky]msapdqrbpbwxkoeuidi
+yfhewfkbdwvgwvmhqbd[fqginmtqmkcubfvci]aidxbpzcktshamejexi
+jjjryxfwjklxrkhhcxu[gwwrmyzrpjmjtmfl]fvjaxkdviibxaodo[csagiwfbhogtnpixzc]miorozrdmimmefh
+tzpxkatetacnqzombnn[bwzhrlkgwcolxczvcbg]rplchqjvjthsortjqb[oyqjdlyeyqhqtrfbfh]munhcovgrhuwhvkjzja
+slrtmwlceytivwzb[xapqxilotekdngaekz]rzohiqiljdhennylmk[whtwrgrfpxkgqrs]rtlehyggcuplhrfwsvs
+vjregfcqrdxbfntljq[xpfnzsjsmphfbppf]kwfjfcrvygtqwtdgh
+mnrnbytuhhsxrzgz[nzdxekogduhxbpipobg]ydgjseiypncodnm[oylueeldnmgcwmqhq]svqllgtwmhshzqaxf
+xhcxtoxuqumfxatsl[qlkqdcziwtbclcph]ysfpbfueqmlluib[jjvxhqopyhgxgvb]flovcgpyjyubpbdmp
+nvpcfbzmykatqdpgpv[eywcemzcjnlhwhfbjv]gcnnnrxczlzbtufuie
+rhikymyqgbqbwgw[eeitheuwdamcndqibp]aiikebogsqexfbob[tcsuzyilztxrrqa]wutfkolihzuhbvptoqn
+kokyhjebbwniohsgrbr[ggsocxmupmielega]esekvzvbajssesin[ipwqyvkwospydzpmk]byhqabwpjuihcpgipx
+pizgcsuyqldtehjc[utwlsnwndcjqnndpppe]qxzxhkayzcicvstxiws[tjqhoiifvxdzdkigtb]zjquhrplvjxruwjpyl
+oadivwkprasfyitu[yygivqpjckczybxrq]bezhtnyscekflpszt[eqvoapqpfnmwddehqbe]mnkqjstlvogsipe[vmcrcaytblgxyarcrx]nwvjubzclcaxtdmgl
+gimpphsdpyklrcsbk[qphbkjzijutqysed]fpokchopspibqiyyb[owxliqxhpvjjqjzvs]ttjeutzqspjqklxsx[nvxybvsgtxxwagkvg]pximctvjdqxbodwbid
+xmgqacsovxksrfnypy[jjybvmwissplkcttnp]ksakyoqvswnbrezeze
+xoxquvrpgiiopvepjd[xakbfdhgtdrxixz]uuidqssmeiardumqppv[ewdkbrnwbodzzyb]kuyvmhqxititvvmf
+ujuuypsguepvtqiurq[psgjujogkcbqrtrr]ckjvvhzookepzzwyuye
+lwnhrcbjrjqarzdx[jezkqlffqqbioajjbnl]zssjjsdouwbegdbnxx
+jghqoqlqghfqdfh[jswcksaiwouxhnssqin]kqcasjkrnihqmenbqbh[mgpmbwkzuduzsmnjb]dxsvhizedmabyjo[rbupdqkkgeihkywitk]pcgvmkrlpkbqfhune
+eopvqwwlvntomltpv[bwkbunwyjojuxoteyua]arbceqrmsflnytkl
+rcgjbumerakfnebou[qimexcxydncncunkhv]frixowswdjgqndoos[zkjdmnsofgvagtnlyph]efpdksfvricswsrn[vxscblhqnzquxmxw]dxnstwznvmwyawith
+zjddycxtbubaliviw[cwmjgucnnrbsybtpxu]zhmadkawbwtdlnjwb[qovxqaebehomoacpxyw]qctfbtyvbabebup[bwqjuutjmbgfdznqfa]jzitebxzsshsmoge
+hogrxyrrvjayayny[kdweaxnjncgvxhpud]orhfjkslldcjiokooob
+jdduztuhjzvbooejd[mcudzrhxonujxksbibe]ybhfelrayyxuuhuwmyx[lgshxdlzxbzcwhuru]zdkvnjkyhausdby
+xsuzxmrqkqtxmchz[dmgddhaltnlpfzkf]dexcfjfqdnajuzccluj
+ezpxycrcxzxycllpyc[stdgybwrxfzewkqqvzx]sxivpekfrrrqlfhg[nolxlfvwwqvkhou]psuyhkfiyohkogwfmt[zxwiqmslanvyrquhqa]fereljocexswrvs
+aeogravcbprgitmqedh[yjqbxvjwrcrbyneghi]lugbamrjgzqaixjxpa[zpvvfxavievwanxkedz]zksdwfkwtrmtaoy
+mvchajtfbplmslzxhk[pmkjinpckdvwjliz]lwigecrikkyoijkeow
+fnwfspmlakldfdhc[ujbeoudcbtqjmjy]tgitkdutjdhlrkwbts[upqsuxqtzrmwgmbjqyx]ayaivsgiqcuzizeau[fiqnymhyqjapvri]eioouxtbfwduighy
+dcuvsezsqwjnsvlqzah[jjzbyxctqhdxfuqer]wztjqxgjynojjur[zkiosthyfrroydaykyc]ocihuyyzvwdoixygzk[psaghlhtqoptvsldbdi]zxqwrhusqligxnoa
+tjzqnocojjzktgk[omlfecncaondrqrvwyw]dxwuwvsdiehvzqmafo[ihbhwnmxkbkypmum]enkexramnrjguwuxq
+ftdnelzrwzvxobrhjtb[kwnjqdhwztogpvvt]frxznutubezaczhwucd
+wtvnfoqoqvuioaotdqv[qwzmcsqjvpkrudkdu]vdcgzytjsihjytaunui[vxnbnlwvtribvbzv]lclrytcczbraubnr[fptsjqwofyngtnurf]izhrnmwjxwvsdcfai
+nqmhpgsurlnnjikyotm[nxxdysiylpgivpuc]uofofpqgcbojfofja[gmborbfjvlfokmkjlx]yptrgkpiarzgsgl
+polwihnjvtlojae[iyjbafwjoxqcjbwn]ecidvqragdcuotbw[ununcsfdoxstecbass]knnitckftuczdpblih[wylrqjxehihxfvzjn]lpjuibfkwrcmcijkho
+gsvfujdbedschya[owwscbzhfkkymsfy]bbxedxnzigfiogb[sebiwzxbshqohku]wqmnnhmldplmhwnngu
+cvgevjryjbmodqfw[jskismdjblbsjgmhilp]xhjlblnepxqayxpw[pmifrcxnxmadetumwm]lvjmmbceghwqdmk
+jgssirdflqhglgopgx[epcwzeqqkidejdrw]mjnozbbmubmqooiqr[wacqyepsgljjipi]vowguayfwcghbghhoyp
+tfkqxobejvvmglhqrgw[ddleaoforgpypavf]flnaiggwuxdbldb[rqqrjlzosctaouurtsr]bduvfxlomgfdwhxj
+iwhaxbggngkgdfi[xklwprhyorwyfcyo]lbrfcbprxedylzpfjk
+ixorpegqzuxidsasn[pwuwcywpavudpbkmdrk]stfjklbehmjdobcr[ziugachuezezjsw]dzwuijfiexsbbxjcga
+lcstmefgsfxelap[iaroxcldkoxjprhpni]erzoueqtwtyftuvz
+gsnvneyjuacyhipd[aglvnvpawajzbbgk]ptnrpilavksgzjyyo
+frxawoaynynrnxzk[agbtdjypjtpqskh]ljshzsnnynqotgog[ckariglbjzvbcedrap]sqdkygpetxuwfnk
+nuxleplcklptuce[fxsyqwfblquzwqjw]ndnvzriqecbqphdoc[pmvfypuinsxgglg]vcgzvoddzudwrapmyh[laengialdtihgzitt]ktbypjipfpnczyqw
+snghsdifwlabsbpzw[xgnrqjnhwdqkbhowzaz]cygljjwohwpzvxuaw
+hhxorrjxjnhcavt[lkeigkktbiaquqqh]ernbnsmtunqyccft[jiespyeonlsjliwt]vbhzvdhvvgsdgijg[lkxvfabwpujiaeaidj]dkilxjpizbzeqxkzt
+ukgapmfifvftpexnr[jydugqlbqyhvbsmoxd]kwvttiyqdmyaxidts[lqfofueuycoihkxig]vqbdiqazwnqetguq[fxhgbqqsilfcaflj]oissblxkisbkmolspwp
+hanudfleaqpnnykwfu[kllfsqanmahiwkqz]mkyztkpwilxirukacz[vnwdxbzbjrcvmmbx]lsjlgrnzdilnkxp[hhepketmdumjgjjsu]zrgaagprkrmgggpk
+qcaodhkekjwrjeu[bvbkikapkhneodeaqox]xxshbrfdxgvyabbuj[nnyshhdaogsermyisk]ieutdajlitenkmoh
+ryfcblckaejcahgy[kymhoizkyffsxybzdta]olmhiudvbcfbkjb
+jryuwyprwczmcczi[vtijzvfbpssohcdgv]qizkalsooznmasljh[sdvwxkvydoikgjtomxh]ixzqpazdakfwczn[tyjorxvairghzrqi]aunhzwxnkjqryibre
+mlcynvuzmmcgoqkft[fkeqzbjanvjoieooecy]muvosxtjytdkhuh[gsdxscdehocmajsnhn]kvqitwpizpjwzmeb[kpnyyoozocsxurfl]obfvxcgoavxoiyy
+tunaljqogcgofeh[ivxhcnvflsbnmktk]akwwtuwpdpbnesmrklw
+hicudrdjoglrnongron[mxaxjxojmjgutxg]tbetamqqcheyjbpa[itozzzbcpnyerpth]brqcvektqfaxazdfivl
+pdyuonakwvugssuduom[swhnhhzcbkrrpovuomy]ecfconssgftuhtwswfd[mjdgnwmncbjoxlinm]oklhmwptexymbgyfdaa
+hcxljuahgmiolty[kulhszpqyvsurma]xwknankkjfsieauadw[anajqqpwdkodeaagy]iupvtabiqsykmohiisl
+qruhviuomiixcoarv[idffbgdhamsshlinl]ygsinapdnmzvgit[xinvdhbqhbvqrjx]zdamlvlunjkkhof
+zyeynxvzdmmiybab[vhgjepcwqjbolwnft]aopzcryhnpswgmds[yynbcrcgegnrpsk]munxtddzxyvzwwcosq[igdwjifdopnhwzv]oyebiutkmraayzr
+onkgxvprjaynfipxeum[jjwmjcepwxbleahq]ofvhiwoyxmfnjbn
+jdwjapulavrgiviora[vnwjfwpsfcdkhamtg]jqcgsuleganytwsm[qajmdsarjnocjpq]lxpalpkeehxjdslu
+mzyzoemluwoovah[bydwxptnmzqxdqfgdgk]hekhqzpgilidwvpey[ouhnrujqyhnlilh]qjarvqynycolakyiu[wzeffbptmwixrmr]bowqsnjgurjpkuc
+jawvxlepzelbjymcke[atwksupwtnjjnkwe]xqqcmguandaqptp[yqsfhnssllituzzwa]xbgaqeuqtnclehgr
+xumjolgnaowjdoq[obqxrncwytcvrsa]tivvsxdntkrivblx[nfiworqsxjvwyki]nxnpoipcjqeeukx
+svkoyidvkhkvock[htgrjltotuunrwka]uqyezwkltzsjtaysa[tqaaskeswcllblpnozj]yizblbkqgvblvqghvk
+lfqasqaubbgirmw[xxpjcwlwjsklklgyrk]fwckfwwekdgcesswh[xkcxlxtanadezjpva]naodeooepetabkh
+mtbhzeufmgeskqsp[deibjhufkntahso]oxebgcgzvpudozi
+epuzizxnxpmgjkabqfb[fmteazugbgjgozgsmhl]conlsruhnwdekaxf[zimnpzazgotaghhaq]gmkwnkivobskmeafcck
+epbvuluuhaazalp[dtsthsijbzgbvwzwgpo]blfatalfityajcpmyc[bbypikyeizyfntdt]tcnzahhiwutntyt
+vailqzvutssuxjy[llxrpxlpcojwmab]kqpqrpogogkpefajeuj[afzpfhjmpnestctyqz]mdggrbuuglbmweujgxl[qhheeepqrcbdfhlxoo]lxvrdwpugjperwt
+roreocnumcerxnrhr[ricaoyebqjpgzazssc]xzuqnzfgbrcvfnmpcgs
+uludakjsmsamkpmy[ropmbbvjvupftps]swngrcigiqzdkie[hjhbsazzxdxrseczxyi]pjymgjgdksaalxbav
+ftvggoxgdteaxbrq[tifvvmwnraoiprgs]xopjvpddfjnbmcuxpu
+buzursiffpqcwnlsl[plvkitdlxiyiotdk]anlvhgektgbpslsiai[gdgwwvjcdnywwguf]bydbjfxclhxyfgruke
+indbphvhghzxsuy[izgrijghgwhcooc]gkaqbcpwwiyfwmv[xxlzhbqmxquoawq]gbazvlthqbviupchz
+qofufmkbljfygwxym[egvtczslvioufuzsyk]uscakosnjpjbcrggach[gnyghyvmgirmwolh]rotkdpwevcsipnxjokp
+jwaktcuuojllglwmr[dfntqdtznawzmzgwbj]gjykvnqmtzelkaus[eghpxrcnnhijhev]osfvouazhsijprtbtnm
+rqrtzzgqsnzzfntl[mrleyuyknyxyjhoibf]mwxfdxpeiyuhjcbdyi
+xgqwglrrdtupbjlmy[ayygnszmebgddghqg]hslqxsvijohmvklknkz
+sfqhncgimlzgjqs[vsudwekhrjuwjgig]fwkpceyrznigiwq
+bellebgmjpcruwv[njhctgeptjieourukf]sgybshminsxktqlfxr
+mpwnzwvblaseycnljze[qhrfygccokretvo]ydomrtoamoecceekrr[lgslvkhwnmsovxvhqhs]cbyuvbrusqqpvkmlhm[wrvxwjyyzsvxvxwpdq]amynjoncmemftlnqa
+iniemtnmqwdmxvpicqn[drdrbflsylzhzltq]orjcjdsbzijkfwhdhz[mrfovzdsugacpyvlaj]azjikxjuaszxpapss
+ynnxsnsrjdaqbbaa[lyifxbzcyzenzpzzulj]xejnjfbuykeojbeatvf[uhpeylmwgllqxtj]hirppxrtcuybulsuek[tzbdcyvsbmqtrzbakxj]kzpsdszfyuvgbtlksus
+ujrrrtdxpyhlpcyxs[molsrkbbxoexpbqhnhx]aesumqacmujuchpxv[jlwaktyumxuiyvt]mmwjujsvuvxsxxmsfr
+uehksybnnztmczl[suqgywouppzavyoi]zbndcbjuexdgscb[cliuxzpullifofbhgy]kupndcjvxqiavpk[hqgafivwddbbepkvjj]lrqalseezuhjjbkese
+djidmbcuqbjpfolm[cbbrttiwmetodejw]ghgnojuvsogrchwfp[qpikwfkqkfphshxbmxm]gsinzrkbzacyutlxso
+nvvjtnsnglopvcmna[opnjujeqmpgipfm]rudoacagklnjajjye[fqrtapichjqkhhf]zpkowfxfuoecvzq[juwjiqcolafbxzsw]fogkbzmrovqvbxbxeb
+ixciqkqggdxskbso[wkjptmoonusnkzyadmx]tvbhebhhaqhopjbjqht
+gepgaafxcogfkyecgs[jdqmpkhjkqefzkwxglq]zfpkqukaelflilmzwph[fndatrnmtrwgbwpj]bndevgsiouveums[fqxvkjthzmyryobt]ywgqodizmhsymako
+gjlyyrwgrugaulnj[zwsmlmyahggpvugef]ppqrrbxasqowhwz[ngwudjmonpelxhubwnj]ucfcaicagnbvlboiwky
+lfckmicaonarlbnu[qnigowwaziwjlmf]ihypnqqozcilwpm
+xmtcgkcyfjppjwaa[jlzhrxmfyfjfmadttpo]vucnncbadihuewzn
+sviknjiphswrawyskzz[vlsdhjduekvalqgwy]qlvefwhnwmxrzgxq[dwnapnjsuiowoqjts]pnepuekbrlbsswijr
+fknvwkusyvzledp[qzplkidoxmvxrxcfs]jxdhirqylkerndfd[vlqmngoqxsbmljcle]rtwemwvqkpfwfri
+cujhxofpcjpskrgn[jxxgrxhgnutgsusruvy]dewdqleqewbqftd[nfjzhgvvqummwzhyd]yrccepfnpbehqei
+dmfygizbsbrtgnzam[xdnnacheufcqahvx]rxtljkenkwxgkhrwos[xnxicyqemngzgjp]slcfzksterjpmiz[okdqdoipoqwcoyfyamu]cmoedniphnfddoywbne
+oafdrqypmxjzxbxutj[yzlsdipaswmgyay]xwllqynhfregxpwc[tjgxnibylfayarir]phswgvlkkfjjetrhdl[pkcutagssxligtwbd]xrvonaibaytcqnhgc
+ivalpefzoxwoqycavx[wnrysytaesivblx]dblopqsupplgoom[vxtobrfntcvixltcb]kzktacrarmtwuhkcoin[eviwodeyddmsfkvhzue]drtrnlgrndrxgcp
+aygkprnkwdzydlmww[firwrjxyrnqlvycccg]lcqurfdlcrvbzctz[cxzfxjybrqysasrppqr]domoafryutthljppcg
+uowwwiqusrqkpamdm[cppbcnmcxpecyoey]ndmdrcadjoukusxjfl
+mueapqgbxuyuttzaw[eojhbogjbfdbhyqjp]sxsjeclolvcjexxvxij[zugkiortijshaocu]mfayspauxoxdwkbj
+swusnwjcduzzhsjhykq[jhweoafdbntsmxcg]fwqrvlhlltfeygpcnyi[wzibgavydimypgdao]ocomuevbncyimhlbppq
+vzatvkicsxcmgcx[lembxneuonlldqupk]svfxiuungebjjgfre[ijwzrpepzkmvdwrjck]bhjiggmcfirhzyjljkd
+nlauzkixeqoldqwd[dwvmcwkqnwjlzqscj]hnnwnarbtuijzys[umpmhpnsrbypmpulhf]nijrnkqfvbyjfvgseaw
+gefcvkqyyecmnorr[unfzknqltdwwrejeix]quyfoemcjnbrarjuowo[znhhaogjluucobyvq]nozfnuqwkqrcbtwujxt
+keerveohuokinft[vtganysszjzosaco]ufsxvtiyupbeddibmt[wrlgimiwaspamrdp]wdjcaxuqikgauum[jpwldupwbuuufjnx]tumqrmftbkrmohls
+rtgtdqksqxgvgxadbjy[uclopjtrzpccvdpjq]hiqaonacbzvgvigg[dirbsktzndttpzmtznz]laimumxqrcnhoitaokp
+iqthbpkfocdhsvzje[jbxkmkvmrbnqjwlp]kycbbizaasoayspojv[iojspytksdfugqsqhvf]dlkjrsotrfugfft[zuzflpijcwgbioujw]tgyhlfclaxcsjnavdkh
+lmekqqiuknygtdo[ramnjnqzfihksfpoqsv]jhhvgphkjifxgap[dmpwxrhmhkwfsfgtn]mfzdjfhxmkrascd
+fywgfyehgheiqhbayw[ntuqlvjvldeyzokdepc]jrqpaluvezoujks[ijkurhccihukzuis]cljvkxweuvldevt
+udnphzgdlussuatatj[phfqqkmuhvlehlo]cyvspnwlrcmatbwoua
+lozehtimrottjudo[krocuifdrqwhsmm]uhauuuzfssimtfl[lyshrfrnvlueierymi]xogtepsflxfwcpau[nurlztguypvwjvoldsn]yxwnuqtvewgmlbfj
+qkioxzfrxxwbcddg[iecvjowpxnrevqrhl]qxpciafqndxasahsvoo[adfpiuoapzqsasajd]lduzndmefgsvzzdpmcg
+klfxwvnampkmmqjmfc[pcaeswcdleyweirmxpv]jnwkgamdjeoakjcnuep[hjwzdndjlvqfzkarwk]ewwgtcnyjuczgmyif[eaaehzgwbkdfbcgbz]eeioocxrjsulyuj
+eptlgbashiewmonaaal[ohtsrundioavfrouii]aydjhcanascnanbfzvd
+ikhfkzncdqyitenbg[ldqqsrhumdmiraztslw]aydpjfypxqllkevec[aponlfgxnzgcaddwt]yxlzqyhbilnsgjen[dwdrsgergyrzumtlpvd]srlqivkdhbdbevnq
+xpjwxwgiyzqfwajto[msisxrvzebbtxiv]zkuujbuznilsymuuxq
+vkmqsygowhcqzdxlslt[fnaztaplxaputnm]ykkslsosxwczlrwbpmc[orlhcrbdjuujhaj]odtfvozkxuwqdpsm
+qqxdpjpmujaveczctbz[gulkmdfhbgvyxuyd]jtxafmzqwqxauaxjt[jgfnrwhgdtkwdfgt]unidfciwdvpazpgfa
+lfcczmpjpqgqonvcvb[iflurylkaiuflxp]dbepqquyeagxsmrhbwr[vjjohmujkozstni]suvejhnfwknjusxgxwr[wkjnfmxxzwulujmw]qyawlzkyazbwftlw
+uwmrxdaxrlsvujdjrm[dmdnqcmdmnmnhhwicwk]uowycyvqvjwrjgtpfqu
+zbxlifyzwnwujvs[pyyyjxylpmpwgbh]iutvnonqqqtbxisfopf[qevehnvgqgkyfuqr]mqrcuibiihlwdrzd
+rxlnsbgsuofdjgifrnu[eougczwqhpbyqjpo]rokdsivylwcqepdyhfp
+yhzwpokjwnqbwtsxuh[ekjrlmzyakgkzlemnxp]gbktdprzdyhcifmigxt
+ewjfrgfxriqmbvczdtw[wlbdrngfgnwdvkt]vxgbaaggmwndxlms[vupgwxfgfpxtnen]kfeekrdualqqnril
+awkkejmtiopfrqfasgn[alciuobkmtbxngulv]qlowmadlrlapsquuhw[hhtlyfkusvlwunbbjod]seacetmksrrodjqdffk[aunntgaemlyoabfgpf]yrlrzbdjfejbmskdtrz
+uegpnmuaxvvpcsuzi[pxcbpsgaecuqyhvov]oiyjoyraxkymelqg
+ffpelsnrffyfzzfdb[ymtulkndbgguyivf]uauzvyseztbkdvxow
+omolchhfvuuzzbodx[zhvhxrqwbdhfwlnn]wyyrsjfjsfyafjfpoe
+puihcjkezjyjjfl[cornhtqjyqlebvqyl]dbemzlxolqxpzoi[qeihkchqoewcabbwog]rlfloutfwlcjywygd[glqjydslofkcstjxd]oxcycaaadlnxfkl
+hbxhlyelfyszkzyc[cdxcsyocdiifefpytl]wxefesokgwwvcrp
+vdqcqggyjstyefs[yiskvcmdlbyuwzdom]cwmntthjhfyzlus[dpoubuwkbwrkpfvlgf]zryvvtowakcyclcg
+kcpbllbamycbuynia[duyxsbzyzibjwejygq]mszplxmgtkqorlklg[kkbpzdcqtwkteqfpm]nvgoipyzmaxtizqkxk[dkjpvseaxvosmsh]ourguqaabxzzovsn
+ovojqexhiiwdqunfvpy[ijzonrwpmtbftrqgs]zkmuxgcckijagmj[oygvczrrilsowmxrcwq]jpwamodaidqrzmal[yglvklzzljuqykuxte]cifhyowckekufubnmu
+hqsemgdtjpiikngtrd[bqryvzqcejlkziqbeg]gycysifcawyjyeu
+tgdpvbxtvxlyqvouu[xqefdugumgqctwvihz]yxymyatxjpknmpb
+mghmbjssqzjlzlg[kilmyfmenoqjnmwg]hzuujufmwyperhvdl
+ieqarqlveeycgazb[azjmtbkbixtazbcv]xroiknhtlbefpgh[xnhgnpluemfqqkxg]okbkpxswfoikufwzazc
+phtjaokeiocojxb[snjwozbjnpwckhr]cjwsbiopkgqjjaz[rxkobmvupvjvobifvx]edubeedqalxklpb[nyfuqcxwtynmofmfg]zwdaaonmcoczxvfr
+fddrwtloipcoigpruvm[nmnolrurottdlkhfwzy]dzztqofiytbyhhzwsy[ovdmmhigvmzuuji]jirdnbaefkkdpgi[orlijsvzupzadsvi]mnmwussnnikjigkkr
+gspafobrohvirgeaxdq[igehxnlnjtwfcuc]aeibhshuiyekgcymyty[xhoayxpksnfvdzjwh]ktkoteqwnsouvwcftyu[eqfnhshsnakdnxwonzz]wwfzvzaupuirropirue
+bpyvotpfgrefzidpn[pyvnycicdpcutcayrv]twcjgpggepbtnute[fdumsgxervdixwv]ydccutccndbxxfjrxh
+okzxxrtdrfviychsj[ymguzlptohblvsj]ofquaojgbjuxhkrm[ingfugdcfpjtyoj]xwplthdujgksrosmv
+jbwwuuqkuwrrzxmuwh[hxqptnyqwndsntckqex]mgmaotcyybmuihu
+rojskmdnydeouqz[cdmuavkcabowcozhe]znwaohorcanpbyhjii[gkpcxjhxnhligil]qbzwurxyzdakgsnwvh[ettfivzqkrrenpxmsj]dfbcrgpjbivcpcpcoqr
+iztjhisgpskdgwxwfdq[avnaibsrkfmlavnyuce]innbnunmtkplvdhq[lxexsvmjqjzpswjyrju]adcnelughetzceb[cmafkyaouzplrel]iqhabfxgwxdrqojp
+mcxijhkidamijcggv[buvpvujncpcwxvvt]xortwrcnebozerevim[ylisqiexudovelmczm]sophxrbvffupehspu
+tdbjhtyvoiflmgdt[lbwyayxikccooiw]rbhpfinzxpaayibe[twvandevzmehmiiot]npuymvedotdclzovsq
+jtfyyycvwwukxvfbpq[acoshjowooeituuy]xicaiqqcrtpkwtu[lnnokqhsagantfsyl]kchtjwkppjyxtwjh
+vfzsxxvmxhdpjrlm[wpzhdncopnapfijmlcr]lqhsravxxgptgjs[wwyuluteptkhznh]tthklcbbtbvhauug[nfplnscrhldnwtdyzqe]ockiyqmpnksijbf
+dlnpcnognelscok[ibbeqsbqltfskgcgqb]htrpytqxmucqlnane[vtltdgsfjrwohtc]sbykausqnffmqkv
+kxnaikbdqxcponrlivi[pxltpufeegjrawwanax]apuwyiawecyuqhgjc[vtenugjmwgebqzdt]jpstgvxeivppyaqwdbh
+bjnvrqvazthxmzqe[vhhndcvzvvtdjpu]xvyoyqrjtbnonsstb
+rglwwateiuipzihomf[rvlceqfsjsdeajp]umwquiuviykogvs[nyxtxtkhyplexemcvjk]kgqhfvraxxybvapgs
+jfhopiiqntjmgdsj[lrijxadhlagitvp]uiwltkpdmqcvklmj[celhtexfpelokeyl]jucghcilfpxmuhsxlj[lnzbuosgycapkcujcsq]uipyywsuzrkxcxma
+zbczjtvnmirbqohanm[bssrqrthbgrtjlfdeyh]sajloorydqhdlpfx[twqasimfthlutzbvc]xdyjyaewqxknvdz[exppwmacezbuavlhe]cldjcsqujgldchzigys
+xvhlvnfixnvekmxfzr[mnmpxowwvahbtuiltn]facqroxwyyelgbeupk[liawlvgwyfizmas]yxgndlsxircarikrb
+yjisbltbmhloiojwzy[uiqmflerfnevkzvnfmy]kecwgynuudxejjvth[joscliommzmbkqcqa]pwypdesmkawikue
+hsiwncahwnipmmjwspf[icngtprynzjdnsgmh]htclvcobutyrczggpic[saypixczichbjeve]jmpwkwrnvhjcpglrul
+aagdbakqyfriiolq[cjlhszgovtyhykgikl]excahvgfswdnpezh[typkmvlnkgjkmherbx]zuhrtvvwvcvhuzalde
+qdunnnxbbpkljlj[opuhjxcwbtvnyzd]gqsaxqcmgmnagnim[sbbkqokcljlriqvwlj]vvgscumyxkrpmyrwz
+drtuyztubzingcdvpy[ichljckfcgomhcfah]wpkgosokfjvzabii[gufmzunfeecjsbgg]pbtuedlavgbxdqq[vbbhreveuzdzbjygt]kglhdfghynsujkvnug
+iccedgowicdllievwww[jrxauxixbmexkgfvvz]fysjaucelduzrxp[kubsdwfsoejcskemvl]wszejdloyalatpjq
+oujirnbrjgnlqaksps[lphfkzalpspyhuxf]kuscphbgysuwhwyhot
+vwpxodocwmfhzkhyf[srbxugrfpcalangfdj]bopxssvinpngkthdqyw[vkkyaqsjhizvounptrb]iiwhyeuatcqnojoidrn[xiuphhwusooiewosd]gggtfejwtpburzqyr
+ysoiymdfphxmwlmlbm[nudcbwwqdfabqxc]adsnqcsxmpxwrhdwp[kullnmgtapmantsqr]ykmzsizznrmofzmy[cxnrxafdhfprlarkd]pffnyurmoaxrpvd
+pouuuowcgcsgvuznt[wvbnsxurcwwxhkpdg]oncpjgpynhzxyvi
+vlyfxbogdlwgzbuy[bkgdkemihxctcppam]ckevcpesenqjadifwz[smxfhxaidkueomhxyc]qwokiceophbpdyjovvy[tmzeqvagzhvviakrh]hionrvofdutctqdb
+upsxlrmcnqiikdzhlcy[hehttqfmtzwgrmxfo]irippmddtqadjgytw[zkxutgforgpenbx]coziqjvbhjetosrtek
+oewwtzgqsoedpidbn[rjmmegjghjfposhp]tgddsmuqxnvfpopcg[iwwvjgzvbmkhcmlhm]teygdquxhyhkrtiyjse[sknqnxtiutqtavvf]bcqiwxuliuhpeto
+pdejprrltzgdddqhod[jgwgzdgvdopqgknwbqt]jaxeauvefzuvvgxlid[fpahofmhzzirjuw]enbiyknxsjhuxzx[bicvtjwkkhelcgebywj]ldvpqmpgzvihjkejl
+oazlgrzhvtekbje[rcnbajbbtikrfapsnuh]gtddpwaqibjnpmfhp[zxarpxagmnzespusnm]svtfacsjwezouqnyfa[ujbucyylrrvuijybde]bgumlrbysgompdeo
+eyescsulrvrxyngf[wpzojptmtmqywwvdz]oicscctycvplkhsb
+ecwhdlfufxxytti[tjpmriwkymqufurtux]kvcdcihmfxydmxb
+tmlzauuiszcwimcvli[vnvyjnebqbpoaotvcre]eupqvhojcmoweveps[cmjkegzrkspdwmdyuo]rjcxvzssaopikbi
+wmgjjrccewrspnkcdg[kqagiunuhskruqpsmql]histajgekuklfzmu[caldsteatfkgwqogjb]hwweftyntccwfmw
+lvwovmvymkxwcvuvuov[sxedhxpfwkndxgtwn]jnpctsvjkqsybbfy[coophwmyxhbhjjzvf]applfppvbrejnvz[ipytgyblyicrnet]ogktxhleyrrhjwqqt
+xuiednrxcdyejmgcsg[mlmhqtzingaekkj]xmvjiydsuffmteb
+zyweldtmlathqbd[zsskrkndiopdfqocigx]mpflfwtncuwjcnnvhf
+chmlgfccuyimavif[kpgcuavqzwvekmahgxu]zrrkiipozbierayt[ooxqyjdkmmuaonht]qhifgfwmnavhlgnz[cnbosuyqrbqiuye]ksvsrroennhnxup
+agxsrnpuwtpthaijwgi[fhyxwctpsxqkkypdfie]craulpcmyeifxluxu[yypagmcumxjcraxnvpz]zdgmbgteapcjwwzaive[rowspqgmcvqudjxm]qydbkwdeuraznvzzno
+rhlhblmxdccpvudu[jhbawwnkolhlfssiw]rahopqrzbhdivhkrl[sdyjjbmlxlpcfabw]olocfasvuwqfxbbynn
+xzbhnrzyvfvbrodi[kikpaqjccdhwfmjps]tqeliktvbjjnbpxwtq[jqjvumyqcjodqippp]ufaxyqyvdhjxccwbsfe[pxiqyqpvccnocmbinr]fqjralzkdemnowygd
+lvbihonzfclpqyijtk[tzokuoeriylwwjahfud]vqbyrpbchllhsmeodxl[ktbdicmiebbpuxnyi]guxcypoxyjhshqgshs
+nnmyoxtukxhrsgt[ecovrntpmkcaekonw]ncfzdxdlawbwtxqpkik[fkkkkxidubuatpihcnc]wqxmtvyakouvijt[tjvyhgempiufanh]bcibhdmbmbmmbyyi
+jjyiltmpfvlkclthbz[icijdepekvlffegr]xnmbqmdiaskvieeudt[clfecicrgtuxodur]kqcqrnvwfdhpibndt[xsieatgypudmiedmfo]eqaouqptjuohpzbxml
+waqqyhmfacfjbfasug[mbghdrtwrqihjje]jczikhpsasvutpmb[obwkagptmpwgjbhev]ozwfarybcfhihoku
+tocybmyipesjprx[jdsdjyflopvltwsccxe]esswfgrsjawbduxuu
+qwdwzgezyklxtmnd[uikylllxmtfhnwh]dmozabuomdvhcoz
+tffooggeeufibvgyy[walfmmmfaegxaua]woxfjealuwsjajkk
+aipayrjoievpqkqcb[pcnirwsnebqijke]ocpwinpdigoxudcksgx[vvuxytomiqmmacndtk]lkwmarnwqvzulsxofid
+jwrefdombiesxvvap[fwhhajyhfaqzgym]gersxvbwsbqezoxcg[iaetgujgempehiaxx]llbgjukufbvdfxvjs
+hexdafengwxaarjkqhe[brxnqkfcyltwlxc]tfqwhqspdfcgajfzlak[shtfaywffbchkkk]txpanajvkwazozn[jzfxmgozivlbctstlz]paxycypplmjazycksx
+rwttdrhdouzvmhalwc[ozryzmmhwztywhuif]favxmwzmgawjdmcho
+sndufqsbyhdkyathrxm[spluzodshkuiqhrm]gwctupgaumdalep[urynlbtsukjumpcrgar]mvgkstgtaxmtiufho
+miypgghnpfhpcndife[uogotzsxnulstsucja]wrdogybnlkagqdtv[uerlwvvqvxrvtsaycg]bxpngxvmakjdvvdqfed
+hgcyvldphesdmdma[inomdckqkhupvxmc]avlnivtukipmdmts
+vgjaofvwaodncajhg[wmqzkrqiwbxdfsgdc]uzsywyzfptypsbto[lwfowjvhczggllfrw]nwchgcixmkxheceuq[eanuozoreimfpjooin]btyiwwfizhdbpfazpjx
+ldsqkerydfisskoimys[ltqspskmalvyujfyrqt]dtyknopltmnvdtc
+ekrdpdzvkoxfkjfpx[dpskecmtgjtwkhi]nidanbsojuexjgife[pgpitenqczwzafdad]mfcmnjodtkvhbknfto[uutgojscjiffmofegr]rwirhlyejxezndbs
+mhsngxyweukngbybc[uiapxfrpfptauhiw]ruywrhlzekcudjgkw
+urxtzdmrfedalnuuha[ioeyevidklsxpqkaahw]jhcrcdzwljhnudk[dfvcwbualikbxihqg]rhhwlhcfpbkexewpgn[gkgaygbsxboxypxbq]trsaulacafchpndootk
+jmlhqgixgtfbcxyt[vhwpsfjufpbampqyqa]wwzszedhhdmztex
+exilqpohtavxypsco[wtjdsrkpmulcraoaooz]ozlzxumlxhyyvcg[btpzjjbgjlydtfq]suniwwnwobellpbwd
+glgwpqmljnfxjwsgae[hdnpgizkkafrkqfalpg]pskoghwqhabbrazqtgu[howksatecaqyemgxpye]bvrcfhawviubspmkeon[qciouynjddffdlp]kruofqzvhiaqbtm
+ekyqqslkiuaxpucbsj[nsltoiyaeyfkygmtaul]eryfelvxmeekndddu[waprjreciavpzzsj]cppczdrntzrrqpk
+draegnpszalplun[jwpjzjfpanpyqcxnu]lddilnitonnehft
+afwslsdmylslwvekv[ngnsirjimcteduhmbia]utirtwchbjinjtkp[xtdywavaenpcexfi]fsxuipobvivhpowgioh
+zpjzyqnadncjcbgulq[wtwvealiuqmxtmgbsu]wyjqglyafposcrwxue[xqmgfmbrcdcjfmazd]hjcjhoqisrvxdtiefm
+nlchdiedtvmvrwq[aeqiwviurvdlsaxzdy]vrjrsalrqznvzhwxpjv[ghsoysknlxlzbqjv]cwklpwafgddnupknr
+zxqjiqwrswpnotkjm[vdlwfpqexfvgzxjbsdl]avnrytuqubaojek
+oklkhatqbeccsctaq[jfvcdwlampkhgkjw]hwnefdbhaixemttbk[xbnquvzqozdzbntm]rpyliiqlbmravsu
+dazldpxyqjgbihafnl[udnqydjynzfllmxayne]oasevmgbxuvgxtmurus[alpxiujmrobllilgb]rrgekfumvabcjzmh
+zoojpgbyojsophrflji[bobvppelwuyynrwinzj]kfsldwgeqtbvtsfy[icdvpxikjxhdaipte]kxyxztmtqiksvidn
+ensxpontjxipkckasr[bdikuxubzmiuhsb]rffefjgowtxzjltz
+suqgbqjkbymetile[jmgtojqeprpffkogv]pnffnorgbyrwddlm[pozvbivhruebmmjwogs]fuleotnbbnpuqre
+yjwcijeeaqhjdmu[emqntgsefvphvpc]hddshsiudkvrzghal[aieudiuufjmtihwli]bbytteummcluoygddky[fbkfhkdwubnigzvl]phfapgcqrshmwis
+fbqpgkdmhvtjmkepui[harjpumdzotcylumk]fglgadntxizpjsy
+iforzbbzeepoddbalyb[cutsqxklmoljnexuaxo]ajmokylzrakmmlxcub[rximbemhrndnogfzf]pokqtdgeipqlswvrim
+umtkjkgoyutnxym[nizqgpcfftiydbqutr]rzgvklegcqnetqkg
+zdykayyaybkihcyc[qgmrngcbixqqdbvx]hcicjeavoycywax[bkjnxvfknauougpe]xjfsxnxlgixldzb[thjemtygmoazibfsar]qzdtbduakjdqteckq
+dwwceyrsaqrhiadehmw[bushvhvxdeznysxjr]hnrekmeoxifqrsq[ynfaykimagehxbcxhka]ucdpjqxgcyyhvhobmdj[ywcjwcveqtzgqkzx]poruhxqfxuyhgqog
+mcxpgupgbiznbdjjfzn[nxackwalqammtynl]qnrwciginnlyfxiyiv[hvovgilkgigolcolf]fyqfptzmgmzbgkh
+kwzvwimdnfngglsqk[tvhytletnpwmogdq]zjndivdpftqyecxhnyi[iiqioqsyphxjxdy]diyppzzxximnlgyhzh[ylyboefbsjwjkkxbar]fuvxtvpoyomnkwjwsg
+vlcyiigmifwxnvcdw[enlnmvlfghlbwib]lwsaxkcpgluzkmx[kglnyaprvaagswvfg]vvdeqkfdrjeqhfp[fcqxurkfmmorcenve]copdpqayaaolcox
+rxjfsazvypysbra[pwnsoibariykvjgubu]nyuqsygdavnxfakwlm
+kkgyhdbiwyexyhxgd[aigctwltgdrvyxbs]xypkkzuhuzpxygupvcz[lwjjxozwzniiywpv]koyfescfdlnyzhcgxin
+cmgqspcojjombguppb[atincfnafdmbhtgzk]bidgxkkmgvgbeilvk
+fphcdhkhetqucchmtm[ieoeogxnvdaxsayhc]xeigwycormzmwgf[cllkxjnlkjdinvouy]ammsmdyoyvlpldkgy
+pjewtnwxajalxzrw[sreuxtjgiwxqmsfkj]nghqriebzmyhgcgoks
+trtaefztlkjjzbxpip[fgpnmiewbmzvqfxoikc]wpemgpznkrerwlgr[ptjdchwakbcdmrjwxnf]unaxvqinaglgfeoi[ekfifzrybpfkjiehpsi]bxkuqrbzgfctzult
+oyuobptvcbpmiiw[fhefjfnvmrpohae]uykwxrtssawavbuk[cyabwfmaxwqgmudcmpx]vahdtwpzvebiypwjvq[twtyrryywtwsckmff]vkmzcehpgydnorxo
+dbgblaadftjartioq[avryclynyjmceujmy]nsqtusikmlamzfht[qmvmgeprwbsokvbzmmc]ddeuxmektypsukme[gqzmpenqiqlihjqoceh]fmsjcayltvsxycmzv
+ixacedvqlzvneoqus[zmgeugtrxuidpdtzzn]besixpupznfgvqelwxq
+ausrpqkpblrplbq[pzqlirofwbtvjvoua]yljvwgnjvjehsyjd
+dmreexcoqmzxelfjeib[zaghgfbihozktuebhb]vdwkqxzetddhhbhhyd[smjdjtmnswvdeuyt]noyncdtfrtokngqld
+akpixaofgmscjdmr[oiothmxmcgwvxmx]yjiwdlhqlrqerce
+deyrfnzcctnmwjagql[qgcmtvfvpvvdminuwa]tynjoikfebqrxgvyehu[qhyenmsqmxshkvcmohh]llpblusdcqfywcdq[ikngnvowhnvaiwno]ixndafincaxkyqwimq
+rjcoodvjnnbhxnlo[spesoflcmfcoifzosgs]qauqixapgyfzvtjbpee[zzxomezynqnoeue]xpiblpyghkxfueapcm[qotnfesblvvyrnsu]keguppozqkwfxlf
+jgrowursqweqfwxbg[rfyvmzbkacqjzooslnr]znoeuzryfguydetugz[ssotfccqiuilzfuexd]zqatqqmmdnuiicv[mkijjomihqrtuiuobl]erhrjzotwvvpqek
+unyrjnckltxyfxyj[vdlbfpobsnokudzqab]dhhsatcnsuifpwsqe
+iscfknfmwdnipkvxcma[shkdzhzbrpdpacel]nrbkhvxfyoslwfhkldm
+poxfvymkfzuhovx[wyjhfwnozjdghzuenkx]tpldycstgwuagjrz
+taqbysrkuxvxncweld[vquzvmysufavywl]irixymrfapfwvnorzx[wznvlqeltnvzjhd]wgpdkhhoypflubfznpa
+veeytotjubsezxvh[mlbakwdftkyfbpid]qehdyxzxctrdvvmpil[cfnhvbvjkuqwyzgie]wxbvbxibaqoefhzkimu[vcdhqkaxllbdmbuxowp]ifrawmsqulaizxxqytk
+pbwglxgdiijskqrksnc[xryasmfvaqakaovslr]wslyywaninmrddik[uhieoolqnqxdmmltpyp]sgjoghttawugzcwzstd[zwhohshbhultyyoti]anvjcthgqapmftxhe
+wmqxexytqfmdfgzkw[gbjexhyoufthdghiibi]ejhfohkfsaixzvtx
+msrjuadzrxxolmxfxq[slurgkvzzfgqpnwdhxg]mhvtwtqplrxzvrmwtw
+vzrfylnagvwqrbukxkt[wofldsbvtgzqsfxbl]scrfvyjrwyqmrsbot[bngltozaybaghfij]msdphikahbxebdar
+cqpwfhfmgioybwsq[judebliwtcirgrtjcs]zrprctntnwcrszilkws[qwoaitshrtavmpse]zubuyfygpgdycnytnt[ctkvsrkjluwdqeeyku]ksncsilzwvkwtmn
+lwtwlwmtqtjqiym[nxfgdevoxcdimcnb]koarjfajilpityyhmbc[emidtlwzhvfmrpqbhik]gsefmkukbjyhgdclj
+fesirdkrgznhplitqo[erpgpujpndzzaho]wqzethjbporhxokift[rwelvzaswcwwstny]xgqpqjlcukivddrlv
+zozyeoozrjrbdccroq[pffesupjavtnanbmhae]gatiaxphiwsrnnwloj[viampjpkjyrhypjmto]vsqwksazgcaggsv
+fycnqvxfihmjnkjogf[jjxnxjolrlkbcqp]pdqtmmxyrfzpbbdm[fdaejpjrasjphazkc]hntqbpjeliiqmtne
+yeounyqfhbnbmjc[mzbietsligfkult]bywnnvpavyhinsm[xuwaqmeiaffetkpkvoq]ufmjhazqnhdmqyecja[ztqflfgjsoqybaf]pjnbnrsnmfrgqamxb
+ycyxnmxnttqiqnsnmi[wkrtuoeddszbizysqv]yzbksxesoscmlzquqfp[unqyazgxjzdgvhjylfd]kunijisskcelgtxzp[ciyxcpyyefoyhqm]eoqszchkgdhttjn
+evecetgcdniectsnadi[skxzpvvuabkudplm]zqykqoduyjvgssjin[uyojccqmnfbztpdnwvs]uzysyjyjvowlsvpqa
+cqkietrmjexdkqb[rhubbesuoeclwmtakqe]ivdnvnndssfznwmhbrk[zmjmfprnnowiedabycu]rmgmbgvihdcuzarhbum
+zdhjklxbktkqeglhts[iqagcckadjftptawh]ezdtjbiebkjvivekdzt[gwehifbjyqnazsgzziv]fhdnwvcwnamqdaeb[rgxvlygqlocpfgqfpd]kkssrbltmsamrpiedjw
+jlttcsywphepmcike[kufzshdcbvfvkwsahfu]ioqzvlzvjqnavymv
+cfyvaasepjmgtofy[hhoqwyrkhuweoetwtir]fvpxylsiwyinialjsg[hqahlwsskotrjlid]azfumcjerwanpukap[iqjcxdwtvmvjkoukcvq]koeodiiywozmrtktxur
+llaevsbyxpkahrii[dxfpfzvxwpzedtvhtlx]corhjnbybhlahvogj[aeukoetmokgjlswve]iwamrxgeszbcnzsxy
+abxkqpiyavrfgxjbmx[uqzsbujxbmrjyxf]dsiktkwxjovhabuir[baqaipezkcvfjyqc]svvyuknankhxlttwng[kwsoccnvjnctnxa]zgnsnelphgyhfolihu
+oquaqiwlkhwwfxnox[rifozvbwcclekccqk]mmmgicxioqwhlvjpsu[tndpmsoarmdojex]spywovxndxncbpshb[rgceaghxxvddklc]osijkijuctxjhtbv
+ewucowyzjaqacfu[hruhcyudsttblexjwy]mjxsgzalkyasstkuzi[drnyfhqgaemafei]uuimofkacnittaoorr
+nyzetoiyaqbsxum[jowknmpjwqdutjlfwo]oalwqxqoyovfjriwb[lvwabzjorjiiemeaacg]znsbvpusrratzywwwyk
+lsjzqfxbbuihsdx[akccvjqdtzmxywakf]fkxrqzurzmqusrx[wmkamfvugczykevpq]avcvjbiwezkocfvo
+ohoszcqvqivamuaisf[lyyacjpyelrsgafmyl]icwpankirjvekeg
+kruylpszzrkzbfxbmk[thxwtofeyjsijenmom]gjblnnkhejpqdomos[xjfzkxpgfltzzfdby]fnbkcvyhwtwmvpykj
+dtqrdvxfjedeydhdsz[depsrsktdbsiwudc]unbdedwnchjgetnwf[bhojevqkvcgacid]jmyzzhyslvuhnaizc
+dwlyvffagjfzbevant[baalozybgljljwj]jomnxqrlanqrkcjds
+kjdsccouzjkqxgicub[ghhfptkxbsgatseoxgz]jiqgnfilkycyuvlwbid
+sxbgpazgvlipytzq[fixpxpdcuetwlqprcs]qcvdieujpvhwveur
+gerfcffcrfrwvsjw[ypgmjuvhhzvvavtyulf]cjhqxizulglhcvy[mpjpctaxpnlrfhalp]wmhafecpyzjuagisv[aumyqoujcjkxusu]skhuivrgveucfrfzb
+rqkibcopsltsjwq[gmnenbrlgqtvqflnt]xuczjcgsxmtbmeaysdk[rkjjglznqblxednxx]npiikosjigixuvlnzes[vqdtacxnqagckmz]bnrzgyqhejnbmtqa
+ekzqugvzksupljx[hsjwrqxwwgcdhqhhzo]cqnomxxbemqmhqnnw[udcfrvgkcibabyssusn]zfuxkqiwlbbhssd[pfvscossyfdhjyed]zlwsqyhygkdgfah
+uhfxysjbqxaerhsanh[zyuotxgmbwkahzyevkq]dricwyfpfffhxncjn
+cmccqegbarzixhqucrl[ztgvmqmqpjtfgfuqjjj]ubawaltzbmhdhqioav[sszfycahkeptflx]otogjwoazgidspib
+fgfdvktoaiucefhets[qwjumhonvmtimauqsy]zkzorsvmedrlycqel[caaejbjnvlaqlqonk]ndndrqbsaaweqoyi[ovnpneqkmsbqsav]cepurdlgjkedaaeo
+nfhaistnlhzethu[gyozecvbgbkutaiuiiy]vbmcwkesewbbcdvw[zxgnhhbnldllaacb]kbtgbqxtmqtatjc
+nuxiknpvosedexey[gfixiukjvovooybkr]nkprytbsajposdjcv[ahjzndfqmisqonz]kzybggzczcwhlnrerfd
+puxghpwmypdrhykyd[xioiypketoaohdxa]lybkoxvoraessmzzztd
+qwlzyfwnqvxylbttyy[idtjcszoblpujfkf]nbwtcwowujbgzsz[mqckgqkhmbzpwtuekcf]xyquvnuptbiwlqdn[gwgdvbsouphvvovkg]buqxksahwsgvruovojo
+nvjqtzkgoenxnismrq[mxybkgtvioipfjecdma]wtgqwbkpqfepskvvay[qqxflmtbhprambdu]iqtqqujmqrlzpdwbljh[cmdesejkyvjzwhevg]qkclggetgpamrach
+ntxnwuudhhghcgd[rlyqxrlsbpsdrdlls]qfzxlyrfjeshhmsyz
+rxgpjhpklloihtpptpy[pcbbsflfkrknahkeq]uljnjuavjkhklwwcm
+byxqwjjdyqqsdnt[nkxqnfrxqqjtwsnpj]xstdzfnmxpkyszg[yswyxmgmqsrvaxdkx]sjfpeyrrswxgeflbncz[likexnumjhlodzimm]crnvrjyaumqgmjmy
+skwhvjyhmosrbbziiaw[dbztswjofjvkcbjtapg]yrzwevkwnjjefwzl[ifwifdeiaqpvuyiidrz]kqnqtbvgpxkejxvf[ubyvhimnnmhkbbnbu]zsqpbztopdvjzbpj
+jttcdvuuyawsjnode[ahfzcsoxjswcdysclk]ubdipqyzzhafcdusjuf[wtsiychncfnaztdn]teqnxwryvsfwqbbw
+gsoacpemvpypmizazb[rzluiccnkviutvg]bxmhsnyomypyueyhqbo[mzxxtfjifzluckdypta]qlirsetsxpkgewemam
+cdqotetervrpkaiz[tohfcmgrtozdfduhk]mlgpfaviqgvzicff[snphhquukvzrgqynfqi]eredworrsugqqqowk[fvcdlekaqtuqhhchh]hhrerrbpzzarqnxiwwk
+eitniklfnvnilfttm[qduauheufxnjowyar]oxizltxvldookdlomn[igmwlbhxgszcvhshy]knibbdqqnftzglqjodl
+ibypwndwhrbzbowoa[wyrgxqcbqoqayqkf]rlnhzutwptjhfwrsme[cfpmzztsrhtdcgy]tdvricsznenkyphwzt
+orvqewlxihoswvwlx[ifiaqweqqmaeasrkvxt]icmqkogypgrbjoij[qnkooyxicmbjhormbu]wkpucublpyqfkpjewzd
+lzshelyjacfkrkykwe[jehbtylsskmnxigkrh]wgnozoomyzpbyrytrme[uwcvshtsdstibykyrnm]nykxibwjjcaacgg
+fgdrabfqaogxyvpqfgs[bandjgjgkuuuxfuh]wwxxsusuuiezkvojziu[jsprwhpeictwield]tbpmjxfilclfrqx[zdmxvurgzzrompujt]ausuaokslerjqiveplk
+jyhxxfrgrdjjsorsgu[uxzaififwgjnklvj]uehxdiantcneqrxeqi[nigrgktauzcpyazs]fjyinlukaspltshmhlh[mfvrnccglqfrdbk]qrmbqjtcccjrsrdmgs
+nltgngsggdruwrahzhq[gvjujsgoyasfqql]btwmnkkccdcvuyniu[tsqzwyypufxxjhd]dvqickfwnoqtrhokrud[qjhdfcdcsfvdgkotq]hndylujuuecvakzmrp
+xyvhcwkqkedbjzarfht[njkseezhzjrbujcdjs]obghjeljjsjksswil[mhfukqardbaypasf]wjcerxswmwvghjortxs[ghqmhxisgehdsyb]ysvgpyswsdfkomanrtp
+wdwmhahsrdjogceb[jdwdpxaeemsjficjz]qqysutatflhmanx
+cpctsiwpwyifqkk[eebyeqlgxyvaskcoda]sjayfoyavfkaydph[aztkadhyekpqtys]jwzqgyewxxkbisw[gvlxjstngthhsjeybv]ponztgpuhfsndjb
+fawvrgcdqdidogtfu[yidikecuyabulhiia]fxfmgcpdbdzdsfkm
+yjateqpywpcjcbo[xddnertejcjeedjulw]humaqnneeeynnpp
+jutrwhvpaknrwoxp[ajhencapzncoyszy]qyhbpivdpqjeebsirf[lbsqceuykthorgpk]olrdkqyikfzrdzi[bmqrmgcmvqcgaxosaho]dkejbjzuzvyypxz
+rhsdxnktvyiully[nciwcjzdccerinfkgi]czljhsizretcfuea[gudarsiefwzfdvfqsip]tedaanrqtnfjdvgm
+grkgawgbvajxlbmbgwm[dpfpvpbrcwxethiu]rpfkykrvmatjwkd
+daemahshxyowxgjuio[dwhknewdrwoxbgk]vggqgdzpypjshps[arwnnbysrmyfijttrh]mwuwdtpqmiqgfkntqm
+ljpbbzgdgfqmvis[zqmfyouebpfvuscncay]omiockdgdxibtmyfwsk
+pirgefjkoicryrcgu[qxkwrjfuhqmjzzmbc]jrofqkmdftjbupytg[mywqavlapyesbfea]trqscgjokafiarh
+qsycbrrefosycpzj[guklennkilcmomyngzq]numvvwtbyvtfarlt[frfzzodqottlwzj]qumundqekohrpin[rsxaymghybsvzymhac]wkmbavpbqtoewxruut
+erpqoualxstxkzkwgf[spsetkclioxmkpobkij]mocioemqrazrpexy
+ryeoamcyfewnjlbdfsu[mmelohdonphatmxblhd]wgkjtelxmbwunvaxfne[xgohvvrmkweaabsd]dkukcrasqoceqjyehjs
+zkmkqzphahjdzwot[objfpvwrjdcdxinuvi]goabmmhuvavbjgebdow[jbqupsngpnuoubvn]xofdcclnjyfofxnzyvk[mkmshdjabucvgpkteh]kqxuwhyogoxhgwqyyvf
+yqlzjzpztzgtpomj[qcmfrvyamtxxtcv]hupfwqhpdvdwfvu[edoxxlncqxfxpsls]iyflxxkaztzxodxfd[xavxxfdkzquifiwuu]bkjzjuxybfdjcqw
+gspnkpswktczjhi[pkpwicpaszrfnsa]reqjlqsucfsixykwmg[matrmmvriujnldbcuaf]lckpqdyikkaprdje
+pbkxtroofyztckqg[arrmawhzlhytfodqb]pirguzqkvbgxznqnn
+mmybfuxiqgljxdih[dzgfakmxryeoylimdqp]vizjwwrhnihcakb[njplrxabbturflf]qclfldtmazmigmd
+exhynsvqvhtzexfjt[rdzxptfigworypkcz]disdlwcxksxjghkkbqe[ktpysvjomszwxdmqdv]cmwenbksdvfihvxvz[vrxbmhxkfjwgktuy]xpyefktsqohxwkaowk
+iiuuszfrkqjprgoumy[svdcdtozwwtofuizxg]gkenicdslqaemvwlov
+mldgparlhmdhgvz[bexmggptmuvhkjj]hfnccpxdkireolxpe
+tzyrycryhzonuxekwt[cvskbxzwbuotnsu]pvybsdovxceqjfmo[oxjqmhruryormwvgkc]kiygcylmgxdjubtefiw
+egklopkulrxyltcpbnu[nmbkrgnsjyfjugcx]bufmkakubfrwnwai[pprytunilpvguaen]bceequilwywvtvmshg[aszamqynotadciwdwzk]uivoeunohsbulzpxko
+ubhofoouxcmdsqqkjbv[fdvdmyjaukqeuaassk]tjajanohfobuhgih[dfscfkxpzwoqobajau]aspwsctdasjdjnqbmt
+urlkduvyyyatpkb[zrolecowduswyfn]bgkveercmmeecop
+aitmhwttzyrqwwk[lxntglszzkyjrqogob]exmxyvhwwcopudfekgu[fzxdevariaovvyuof]almvqtftjsdqkevnw
+ftftrmapzrqqyql[fmxcumhriyippgxmy]igyxwlfgcjfwwwgpy
+ftkqjwepfbngstefaji[ekaiaqtwacopwxfcf]deswaixrljslcqc[nqwlvvuuziefvrd]pgfvwqsqxeqamxsjjw[zispeamntwboenxygcp]cwdhurmclfnjjjwjygh
+fixhqdsaxorgfndumt[ccglwvkrpbwideuhvx]fgsxflvifyrzlznwvp[lmebhuhqemgwxpuvb]psfuyywbujlpwcekwz
+otmnqzcbakdxosl[skiwodrlvhfjsuqfsma]wtyrxmotiqdinxmrbe[lhgprkzlguroolg]kjgvxaekydqxdepu[mvffwznlsunzhxknier]irzzbykjkzjdoybqg
+aauhucqygvsgwdaqfa[leenmhlorfgbyorrd]soryphiyiqsoydfkwzw
+aggwrqdafwtwwqjr[eafpfpxygvnfblxikwm]mlgoiwxfigmduubsr
+rglpanreckskdaojotf[yuywsgztcjzyrfqawj]wzwtndwugnelcmxpyme[uwcqyuebxpprisdls]kjisjtwisxawsufrd
+uqeuvhdoyujlazejbix[wtdxrqucvkbkavrvor]fclqcjvpxqgnkkhi
+mgpszcffmfxeacayj[eorkhzrwqvxkrnessk]wykadaapxxqmohwriin[iwfmoieivcljpem]bxhutydaznvlbuu
+vkvvkjckohpxkolpff[pepxkcsneexhhlsjs]mffyiopxkqdnwlg[qmkttuxyhvemywmu]puqepezxejnldtlf
+fkyblzyluhloblrlj[uuznhpsjgbnzghjczsq]ekddnoeylbefgmpwjp[gbfxttshaolcvhfsl]iygnwnznafbluanu[mnylijsqhwlhhbq]ultecropzmivwizl
+rwpypdkhndrotod[rganbztsadndbxr]dorwmwqoeppdpoyz[sefhqmaxuxqwjpgaofp]kerdiohsaddctmnj
+hlzqtzrmmgkudvsaxn[wnujyposfazclkutfq]yugpiuxxydkbjtqd[bxeuhvpdnzqzvrtynq]nqcwrvbzjijfjkmq[gviaheipjpncyxq]thgypvingfouyrdexu
+abnhtjtbkrvmukjsbi[yivolobglxbtivbmlxe]gpoearvtfhhjjxedpq
+uiubiwrlfkwrsnewvwz[xymjmptyaoiartx]lkyzzzynibifaahjewx[ijvyqumtxyumrnpyfz]hddwfrbrgifyegaji[tguxrbbrdvhmssvbopf]ykkkdwtdtlajkmbgnww
+omqzieitwyasnbuae[citxwhjdkqyzmfotup]enzrramzittuhgjcv[fierpodjceckpxwoiav]edtoxignggotlwka[sbjkaiypsozrukh]hdwihijpdemzcdvlsz
+rummzhhnmypaltcxrja[nbcaecgbuslkyfar]hhfbjgrmbmjexlllok[swzivorldyknmqbnmtp]yjimyhqwgrgdphl
+mvpjigwjeejzhnr[zmxoaofpatkxkbecaq]szixqtsjizfgvfioq
+umnruavumjfrbywaswu[aeypnvqccjmqfflsyyn]anbehjastasljxkg[kwsjaebdtuslcbae]corzitvsrhthwmjsny[gzojgomcsqjubqrwor]tcektreziofkfzlyp
+atrjsjmfiyyhjjpcq[aygsawvwkgmvjly]nvxcabdkjbowvfiuqim[nxwlnfgnkfmmrdqwva]bjqsncyahbgqgcck[kudkiazyfbbvwvae]egtutxkpkpibqcxd
+yyxasjrusephnhgz[tbgueaajlxklmqfzfxx]rbirjquhusiueda[wwyfqgowviapcam]iwwwfcjtyuokivtkaet[ojcechttmtwizhjzb]ilybbjncssrsdpyvun
+ouzhmpmtsxtbpgxd[xkpvjnalwhbhiwl]dohtpyllehgsmfqwio[pswfztwnlizwbhbopug]znhnnlkxrlsswkgrb
+wdfqtfgtawjujjnipv[ffiedysbmudjwegxa]uixjrzxqsqknbro[uijbgaxqvjeiaddellx]golimewbjgojubbk[cmkrjtwjwjndagjoidq]kuaetseghitsonmjxez
+hinvjpjfkrcfikcsnk[neznqyunxrviafftsv]xxzaxudvxzpzayzu[igikyqxlllewgxp]bbrmixylwkvzstannjk
+jnfqvpcsjlhmsgttoo[keugkkuywiztndixql]fwcomunksourfiufwgf[vwalfwhhknnkmlelb]lxwrjniskrxyxxfgbj
+hmxhwwoaovcmrsjng[caxzefbacuvtevwsn]lgybmbmfeizwrbfrzuc[usgudhgiwtuirjfkpz]dmohwrrvvujowdchnh
+suctmalsyteahln[iwbpvohjintrccllib]zdppjeyrkkjlwgfp
+hmnzkxvelkvxzminaj[llmbrsvokhyfowaimt]otgsfjkhormfnubhirp[cbycbwoqvdgyvbnmkz]gnnjznpxfxwfvaoc
+jniltxvpjudmaao[ukqflhglxrfpfjg]djvtunwwabljjdirgrj[zkfyhzxkarvjfrbzbhx]zrrzbzubefvchvrpftc
+lyqyzdgisrvolizgkvq[fcdlhezvozbrglr]lcuqsfwchyucocowuz[acdcsqmgffussoy]jlnuxatzdobackkwgwp
+gwcvsoqytskjaqo[rfzimztlooyjbodjcud]ewbpnbzdilxvjmwy[ugoqefqofiwkgnv]pugnbbxqbmpephsby
+bbzqqwyepafkukwqjbb[sprroemdjetnbhdu]donxkujxpajsakirfap[ybomycmhvmvslykfxuo]auqvkrofncqftmjshtz
+qbxmiueonhzkluju[yocqzkbdskeisgvm]kaasgmyupwosdzbumq[lkqmadnwplwlawznb]zxldpcgbouydtatpo[dqdshurolnithdof]sscgvlgvpgthgkhtszr
+uzcvcnjawdeonomhoh[lnckzlsxtxekacx]ogcbcsdksosgbdlrexd
+kiiixiatixklryllfyd[bdtcggfxvupbohvclg]rxwnmgvwphunygx[jisbxeqdcnocecrtabk]cpbsvzurbvmtwucvhk[hlrjqjldshzvbrn]wlmkcxbepdkwafeovn
+xavkcpvzdiowrpduy[lujfjaxzrmxxcnxfrlb]szegppqkdzrwkokbi
+ojlbyagshifmlrv[qexvdlykxlebrlrjkg]lvdobhyszjfkocbmt[uorpnorysdsqycpdoje]tknlzfganuxeulzv[amollnzxactinrv]unmkoyxobuuzfwduxa
+pjhpwsfoiufywtd[pzudakbhkrvzepfl]cnmjmtmacyjulpcu[yvevxufpkzfrksn]qqdusuumfgtaemuscj
+ffnxshbygoxcatgz[byegatenneixbjbrri]xrxazipjarxrrjj[ilvdkjlixdbdieycbvz]lvngjqnhjjhlvki
+maocxpwqvhfgoaoy[jthtqiiuukttxhh]qpvgjokizpojnsvgg
+vstmpuwjzkvzxakgreh[vwxiygqjyyvmgvjdhz]yanevbmxttonaonlgeq[rskehprefzmdfujh]kddqkrshtgymbyf[tdciwdrqgnrwygvlqwy]mwyxsmscrhxowaezs
+lpetegprilvnporglm[efutqcurzhuymzl]vpuzirgjkjkqmpglqoc[ynrhizbevmuobpyduap]joqowueodytoothjk
+uovjoxozjbjgjoedh[hdufcoupnwyqzqsdz]bfkcibjpdceeawfsxnb[pmfdhpjltsthickltq]wnvrznraeqgmhfh[zqsykjfanpwhdbm]oltzbvppyqrhmom
+cuptpflteqvnaexzwj[sokwgqieratedygx]tlgoqkfvmifmdguz[kfiwutninqxzwie]dulfdtlbltfjevgp[oftsoxfpwolpbvflmvk]xfbcennewbsxcgin
+xoajbdvgnaxyewthsyy[gbvxbmhptnkenvoef]iyxfsrwruprnhml[pwrbjucvopfozdjlg]ntsdilgkqjkwifjcmqq[gqtizyvtmqydqdemxx]llggegbgpbiebcsg
+osoqemdejeowlmtbr[gvnuwetgdhuzlfoyp]ynbzmlvpoydjaix
+xmtosmglxiswygqd[djjpcftewakmxhe]cxrcujdbpfpmpqaqp
+kmffzaniobvxkqobrz[xemvsxzxpikkgnz]coopvxaqcwwvcpzzbwc[frbwadxyrqsjmeb]solyurryfbhunkug
+syuvjlrlrotbcxtmqlh[plnbhkottpkhbgrmmc]tpkceggxjkkshgovp
+xypvptyubhdywjddc[dkdpirtrddhczvbi]gppnmtijmtndwsd[jctdyzyrapkwpsudre]ofnnmlflpjenwqme[wjlbkjvlxuwubdkskq]zmhodofehapyshkw
+zyfesoxeyyvugukolxq[sduqoqepedvxiaojef]ujbihfjhwwrxjbmjzwo[fjbbqkruyeexkrk]fyjhwioedesstjkw[nyhqlxexvrlglwcqbi]zgxdbhdcqgccgodx
+kbgeflyhriyaitjdw[gkmsfhbeeftzvlkkxd]leroadltgqyqepa[apzlemfdxyxhyqy]bifkxoyxysldsif[bypdkygwlqgxlhmay]odffxnaayhgxkyjsyg
+etnylemzuybethsak[rbqwbwcpspvwcnrtiaa]cxdlfpvaizzsiqy[cofixscwpmoaptvu]tuvmcbkoqlfljpc
+nafgslpawkgystrbu[lholsrbjchktftlct]cwxorzjqzuibydw[wolwkkqcflunakpsf]ftfjgybmpgmpzjpxok[omccjdarvniomtniw]vmtkovkvuahhcgj
+arfxtgjhwjbqqpn[ozbglzichfmhnsrmc]sxwomutyoliqdfrziy
+yrfbyqpslcykicx[uoxnsxbpkzuarrmhesg]ohscdwcojgysjov[epkotielizvhfbauf]kdichwakhcwuitdohe
+lxdfxhtcxpaqfgud[kietvvqhjbhmbdjh]rnnxrywwubyivxj
+wwqhnufhgdpwnidwe[trkijfvlemsenfvm]hwhzclbeilbbpmbdgvy[kcqrejunfyofjviz]ymhbanffstqwvlkczn
+bemjirozvmspfrojywv[gnkvjdexdgqeqvom]akfgpxfgjwsymkegz[yrbmhgnacpufxmilwbe]taxwtqhrfqehzvndlix[ndjuozknfyplqafyu]bwogrlytfyopgayph
+tzrwkqaembipwoyysy[zmjpcdqtbucakwta]eelwgobyifozmawhaeu
+pxpftlpvkjcwicy[ordfpujlgwgxccjcvc]ghrlgcktvifkicv[kteuygrgxnqbaagldhw]elebyndnyuknsxwsz
+eoayeeinavevnkocsh[wlhcijujotnsmyfwrg]nsghlrcpvhazacbriwy
+myqilamxvrkimzrypsq[dritxccifmrgnynl]ahpnxwgmmlcrmtujqv
+prjupstfryhiyxjr[nznibizpdpgsxozff]omzpiwgyqqytncz[ixhfkzmhfpctiaflrsg]fkxetrnjkjhwmbcs[mgfwcdxioxwsbpbxg]pnmcyowtigkikfbqem
+obihtythngvjelm[flrqufrqlvaamtlt]gbuppvlrpotvhgoivu
+wdovdejwygfyguc[acoacyczfmzugdiwfy]hbboqkjmpktiqigkaxi[eirojscvpewshvdslgs]oloathxikscihfpy[vbwlxhdnmpcvhrdwm]zxwsxrhoksbgnyva
+vuaiucuvucxmowfvdc[pkwwdrystnkynnfonv]bkguisxgqtsizbdpon
+nhegyhsxwcesxgagl[jsdkwvzzfvxuxsmkans]cwhuierxyqjmueehii
+nmtqqwclrkwlikw[drthkxkyfxqugph]bbneldbvtittaydbgag[vviulwoviezlxte]oqzoapkqstfdxbxm[bmhsjxwoxtflbqeo]hnsldpfruxcdnvz
+xrkijlvluezxevaye[erofwbtsylzfvyrersj]bkvnbppereymraau
+jamtmykfjuhzndgnzrj[ezhkpcujzmcdkkjjfbm]yojgtkoobnwvgendjt[jkeeulmfzdbfwnohfaf]cudgyvipscncfbvmlh[kxikmcqmpounqkwjhg]emsdqszhrpxpwcwb
+yywwadanokysrfh[btwstuwbsdiotcudf]qrsrtonegzitpgnzsvd
+hrhfutggyymxzgyj[agqctqvhyfytwsdmzf]ozyonngtqdoaagdl[uuykvsdfqdknray]shhtieifkqfewhopney[ydgftitgfmfdqwh]dfxovuekyvtaddh
+dbsuuitjdsiymhek[jgxxnjjzwgwirdlgwg]xwlvqyufgiwbwyfhqn[yywjhwiwijsuhlarpxv]zmpooqvlrrnwdfhsheg[piwaxxvwgzbbruij]izqwldwwjvrxmzuj
+nuxzejoidicdupcgdum[nelehvehbccqmwnla]bhazpsnmekeqkvr
+evnsveqnndjyarol[tgeuojqlculphzfva]rilaooxfpwyreyh
+hhwvcwpwgzktzotcrx[khmiivstojdaciyzb]xwaeqbqyqwqltdx[rgwirleearklteybyx]ckiyopbgfygyvui
+zpfozblbuwkdkkfsuft[lccwcopfworwnry]srwrcwdkalvsnsu[jmgukelsagifrhkxqma]wtrtztsztpnryaqw
+iszcbgumuoarzlkblr[xphrddxkyclfvnapk]rzryxqdnmxplfiu[plghrphjxgqlxtp]cxpvhwxkzkeczxcenm
+aezqpvhdbflknptrc[zykqxuzbatudehe]lugjrgmxtqlxrvt
+jsejnywikaohtarsxmp[whmztgiaadmiarwlbj]yjrgwesrymvzhlades
+cxmorkzlibiuyjgs[nyierakbbzkhvyizl]hmtqhrxddgdwmoayyse[ldupkxzsfkmnsfdnzsl]sfpntvoniewgfnyfw
+rtlhvogqfabwioi[mloxkofbaemaxcfzdo]ofeukqafbxivgvygl
+rjnyhsocogdwhswqonr[jrwafksjhfamqvfjk]seiscoezqmbopqryc
+txdcwwtcedbymvxy[dbhxqovjeifzsuvm]alhqphxcmfmodeb[zdzxpgxeezjaeichq]ggadublqxpfyoyc
+rvoblfajodmlbftahtv[dgglfidheitvcqob]uzvojeukksuthhlpyoc[ovnskmuaaxulloi]wqhxsjbtaqbgjpbw[ohmzmzpqzevicbzmtk]yjrbmkldmwmmcndia
+rnsgsacbysmwnhlqjps[hmjfyywxcpxwsicxit]rnikgavmgagtsoqjnfp[qvcofkevjqjqhiqhzek]vlhfbggnwqwohspyig[ibsdkevufgsnowonkj]ufazmdkexffmxxfwf
+qkcfiavyhcmknbqcjtq[lknppgsvbdvpftnzcgo]qswbyhtruabsyhvz[ilrimrzzjctbbwhc]knpudsvkdphxsuevep
+wmeryhgvkftqiyctbt[terkorqjaagtbsp]hilrpcfcjsyguukcehn[scmgvajuiuybvzt]enjhgqtdjabbkgh
+kvczijzgmasricwj[xhgvyfhnaxeugzje]xwcxqjegagsjbvnuskc[iiokktbsnmwxknkqch]vtuobocpydqweamu[jgmazxfjiryndgtcqjx]pykbsnsoxbfgacvgpz
+guthejosohmrswzgk[uqthzxkpgxlcmqyop]fxedavqwkrmzbfr[itsvdugwjezrjtgqmua]yotsdzczslbvzatsom
+lyltslrourlevnxw[dtiihjdbejwusjmfap]hdmttxgttdqytvdfpp[qhdrjcwprncegzdfl]iinunfljrfhgifws[fvjgcqtqgxqtgca]bzlvdtdsxgrtzuvh
+ndwwncgabwoynmn[zbxvlpndrsbczbklwrb]bkcrlonwivcipxe[eoliublkzenpeyxfk]voydcapbmbsiuvqfywt[mmiirgxvnbpnkyjh]pgkocrralcozybthp
+lvrcxgzomstmslr[vczvuydqcmhfmlt]gmogxiffrfsazqbh[yvnoqlavmbnattcrgd]tsbkxinrrbbxypwnafo[pgtfpwnnlxibpjchgd]hznabthirzxjipjd
+jtczttrstcpmsko[mabkmpwpcytkqdmhjc]jntwxslpyrkrehj[cqbvlkhugmarodmoqeo]weaiacdfakrkuizqw[uiwkgtbzmmffxrhtn]lhygapgcdaszgoyy
+ahnbwmiwwwivkykv[pcsiuyrowqrqfxcvw]mgksjiinoudrumr[ocwtmprzvamougd]lvqqlgaftlflllvqo[akvkgazplkkvqshgbk]zvyvtmxkttxnxxdy
+tsbifacnljabpczi[cmmjarpfeeyoeplv]zsjcjdfidfjvcgdd
+vaviqqmsbqellpw[xjjzxupmjbkyuzq]putpqaavecqypslf[nkyslewbmmsxvdy]maszkbnmujztqfbzq[hjwtywxdrybhcvplncc]bvgsnjtjidiuvggo
+jhejwzckrrrzcjgs[vjkxxdonhncwkykwi]kyuvbdlmkffyzept[jloktbqtmtczmjbdord]uzggzgltjzngpsboyxy
+rkrntmebnqrkoboby[gujdrcqoqatyewm]qhrzxubcwkrkqibjwl[hvnezryivakciaoukrd]teefauinxaijxil
+zkuajphbyhsxocacplf[tqkosililhbxgsgp]xttqprajeocotwoixkw[hdmduoyjxcizwpa]cihkdwlaxhjzpjw
+xzcmplyeabfrcpfr[qhfkyjzmivvhbqeblph]bkwydbvhtutbtytnrx[oslchcvrlcxmsnbqoq]zkggbeglckihzjuq[lxywqhpuarhpasbul]vqmgizoanebmehzfwyt
+bjrvsfwownhpxsowafm[dtmxsbtquavgypbizrj]boqoiajglkefiwaj[ycjpupieshgdmbwp]riufwociykhnwdsci
+urcrpmkeszzuctovhqu[vsutbxseevalnah]rwrptzraxwhuskb[inpentirbmcxdvof]nvtxiwtlkeknxfl[rddddhtpudrgpjafk]cojkmbekefbmuwev
+djavlwoikblvsufxrb[suujlpxslswxgfmrjj]drrpikhibuvwdlhvt[iopyjysnsjpyyxngdfq]sijwvhrwtourowgv
+kitztjpylzlaposkaun[szjrduixywmdpxbl]kaltysqcxzjrengtkwv[jhsqhlzxzayxdbebu]apyxjlaydhhokxacq
+kvzdgclklqsndxdo[kudsmgggtnwtxdnrev]quljmegosayhdwum[kklkxlmmmtjcretlyx]dtsexdvvjndpxtggjlw[mpcaczddrmktrpgngw]usxsptmzgzqhjaycg
+oxvlhxlmhhyqgwlao[wiqlkdwjluvqwgqp]sbjmqvssbwefsvq[ocwwdefylfgvgsygfbr]fbtqyawdbswjpux[loeconwsbvgbccoz]cdotdnnkzyaupynuk
+ykozujsmdopwobif[xaupavllckswbcyszd]jqdeagvmvsxpumvmu
+naxhmkdggymqhjcycw[xkhrapbevbaiwzdn]etnivyebbwvqarn[dnskxishknmcidwv]uctdvqkipycyzhgcp
+uktvpthtrtlgmwofun[rmevlwmmvzucsuxqx]zokkayofazorjdec[ickalywptsyxrttbynx]olddxeqctucllsvrvhn[pxfftvrdqdglkvll]xymmmimcqskfozlkyos
+rlqkqjeaqkqkdsfb[igleoesoxntrdwsyoz]ujmbnjtysangjwpsod[nniriilejnvzrrnn]mbqjytlwauzscjj
+egnnnubdxhgpiypsha[byoisscizhhpsjy]hmtbmbgshscaxadry
+qjafhagbtdpvszwlpz[ipehjbasniypubhfb]hreoxsqzigscxhnaf[rntqxzmxfxdldnpxqb]jriknndggvtkifa[kavxsbypdwmsildd]uisivvrtykssbvmsm
+rwxhzignxkrqeuy[memzudqlzcfrgudefyh]pyoldsepksbcbthfdcw
+jhgyboztenuwlqu[zjsmipieimgaypipjm]jbjlglomhxosmwypq[lvpsqwjvzepgvzbfs]ergqdyrvicbsgxg[ugcuougnecjcrpav]pzgpppoonvamxhkbg
+mdmifuoicysmavfkvtr[rdcuzujskhncvsy]ypspsiiizkvopyb
+tlwbtllklxrkyivnnuw[zqphdjfrntryqssd]uuefrmazhsiqdbodatx[zdptibmcvohmnwrv]jofpqdvwggfsdkz
+rkgfksxcpqkspdsx[zubzkcjhpvtdvow]bkbmwwrfqtmaosodlhx[shxfozufozglsgfj]tbtwcavcbvhjourcvu
+ayayqmsdvbzfnut[nzwcajbcbcduifari]eazisrtfqhzophb[zkgweftquububoothq]lrpktclkzizrutnybq[guuneltajlsxbbx]rrakswukxamcewdy
+dtuezfpubkdvxojau[ipzyfbjcwxazbqeslhs]nelubzldtozljzyj[uqkgjszhpokhonrpg]pgaebrtqevqblaxqa
+bbduqlqjpilanyikfb[iwngaxahwxongrgf]krgrarolzgmzdtj[mbsttcbkbedkcmbl]whecpxbvhuemjloxkcq[lrtaeothcehqsmbes]chuesxuwklohzrvgjkh
+sextateheibnehs[ccvuuyctlffatnmhie]xdrwtaeangizfxkt
+nayfogrvrhhvdfqf[upaiyvrvkcygazw]wtsawgmklbrjjhc
+qumnikpzpmsjvfiwapn[fdqlumgxklzlxcm]dczsgahneieodmhgvgt[babaxdoljtacfza]teoddbtcemfketpp[vazvzbcnqacbwcx]fulxjfohtywgtagn
+crcyymrdfaawflxfmfg[ovbkvuhdrxdbhmyphao]myqpzivnpjyjkogknqz
+xfkrzuoeclfphdae[wfuevmepzjjuzlbc]icytgjlzxvnjgugxyv[ppqszfvkmppjvktn]cifddqrtlcodiincw
+gobxpjjturfsgzell[rfhdgfzwpfoztzgcn]eworfqsmysqolgq
+laagoxczwfikjawci[sljddbmwqdnwxlkhdi]hwmoerlalfpjshedio
+wyomncmyxejknhswjv[awtbfqiarnoabkab]nitvsmoxyfdhpcdiee[sipoxhfskauxfskix]nktheznrekmrrxl[gwpmodgajfihlnad]pereyxjrernitwktv
+xxkbizhzxvqxbecadt[omafffruievwfqocujp]zpuotjhjwsdbsxteza[otcdtybhkqhjhvjjz]zjrkvtevohcfvlvq[yjdkpxspyojxstjkv]fbccdkbjrebcrxyrg
+zrctbusxagvjendfdf[szvxchrhjussntb]mzhzysbvlwwflpx[heijmktbzrbgqsklhcu]ygpkfilealopaixduvm[rakktnzhooijvydazhb]msnpudxdeaujqysbje
+xoemgrrmqqtfwtnwnyt[jextspoeediexugdgc]foyqnwnwstrguzk
+siuojescxsrrhvgpeoh[dnizqgnuprmevtqws]jtrkiydptijrwewcqz[zkvjwozfadmizvhfdk]kamauddrolxbdrn[yzfffqfeadlyfje]qanqnshkelszldi
+wdiojuevpybfvdp[zxyrygvkvufixzdwds]tgjzjufuuwenexe[outgdpnnysadoyeon]hvelposyxhlvfmdi[gazrxuhxrfxofsrxq]wpkujtixgvfrdgg
+pufjsqcfddyeghd[iylozggwqlqevyb]cbkdjgvbrpmrwrsgn[nuinkqeqchwluhwye]baetibebzmndgrulqdo
+rwwiamjdgdfsttq[xnsuyncklmryvumrii]qtcphhihqqqqtntvoev
+bwhfulscfcqggdswt[ostyvvcpdoyzvuhodeg]ekpjrxajoziohdvkfco[tbbppuyifwtcgvci]lwjfhfqfmclrhdhplbs[pplppkgrmykhtfnq]sfvskkgimpacxfam
+jripvodavtgdgkv[isotocixmxjmcldpx]oaptjpebswetmacnf[zdlipacteuduvqdhcfg]chciftufaejhxkmpozz[cmnwvdkbsczhekzwi]ovnjvgsuxmszncr
+ylpnqmqhlnmuxei[cyqofexibcjwunyl]ettxreudzmlhgtha
+dhmperfgtcbqlipcjbr[gkmgkletrzhoyhfcwb]psllsosgwjmtrvfanv[fimdtpgcoolukvvpu]ccqgkaqltrreqchxpbf
+huvrdvtjmncbokh[mxnsccgwblyahbdao]mpscnoohrsqideuhf
+pfvpbqmyapypiubxmt[kjfhekecjzzqftpj]sybxxlmvzhloooom
+iicuihjkntpnytg[xpzlplwvgwmzazj]dfiftbbvxbztjpx[patfyqrujpvwbsl]mxgsntaernztshbi[nfwhtuuwhgsljivcrws]iwzqwnbjapcfujz
+fdiifotbpdpfvedsfn[ptkzrnhuybmhzkh]rmxekkyxbqxmxccc[icwqbjmjtakfsqbd]euycnuevdyommhq[dqfyackkxmvbehucn]aabiiukaxiowhbtbwpj
+ofaeegcqivqrmtz[nyotqurllbitpijzdz]pdlsomnmdsbfhdzdh
+yxihvlkrcvzxhlmzm[asvxysmyxovvxdvv]rrwmvextlthjopu[nuaoossiaxivwwxwpa]xgaovndeadfyofish[dpdhiwlsvntqxypdpy]ddmbndbjtnpazhj
+kfqeicvkuvmsljtsez[vplnucnqgngsbfv]ycjwthuykmlfejqepad[ngklfmgvredrinryy]snsxjeqdinbbapwuno
+yznxssrnyacwtxlfbab[mpjvrwoguxgvcbtbmdv]uflsilwcemofepjghvh[cpprubjartjbnrdo]pocdfdephebcdavrxpo
+xkiccyvosgzxwtuck[oqqbviclakixdgc]kteovpyjbcejxui[mzuzcghrxtkssnrsqy]hcdpzjidycnlowgvaxo[iawhkiyhbswqsibqp]ltyzmuplqyoivgmzfa
+qllumnywkyqjpfv[lgkmvmbdwnkhlhqfse]lroouhapmomchyeghsp
+egmftdtwkpmhdpda[jlxrjvldyikwjlcwx]inqnhjexcxubtzbx[nxiniqbbzoedxkyc]siepprpdulpnkrussom[srrupzubqhkmccxcnas]qylljcyzwypwzumem
+ikjwnxkhkzqmppk[tzaysscnyqriqxcg]miabsouchfluijdwa[cmxeoduyguwjxqcj]ilprgkdcvvopotdzzon
+cauxikrtpgqgwydmagf[nrnvqarumgmthrf]xyyopmoyoampemafwe[jwjgmglxphjkvfg]oxltiecspkarhualt
+pjzcgmqitucfyph[cxxlbsznvwpxvzghv]woqulnjvvfjvjzy[wgxczusgzxnpkakki]fvtepvwjkaozguggqk
+fgwvbbyiyljwmkgcmic[gnohlyijeqfjldrpqey]qbdzxnxuiprcwjsn[ogtlzpxxzbtgfbjx]wxgaduaiyihyumprhe
+mgemsvccgqreluv[qrlpjfkdoinuyou]ovkiqoqefrjmrzgb[fzmqpuzoufcybpucq]aaftwlldjkholezzpk
+vxfsphugegtougthxk[lkvniyzlltosedmpgr]tomgbtfosxegecoqtn[mvptnxvxddkaqnjvnue]kclnhnpveadosfktw
+ltlrncoqeeupwtoxv[yoosiulyjjmwacymwfk]vdgfdfcjubkcbhiixv
+ediaeekjpbzidrfpu[rowhynyrchamhzrp]wetzubsftjwuksnd[yqbtzngplxcqkyxf]blzuvnektffqbkf[egmvyplsbysvfjjkr]ikrllifuchlkthknpqb
+ohspsyvzulzfsgghvbu[tvtbzqptcpguecpgb]zyadwosbwchbgrkypj[cphkhvagaasozym]tvgkhkooyejddnhv
+uxtuhgkkulhrvowswt[etzltbttiofnkeyh]gsgnleidfbomktjtbrq
+owccdxohulgarvvxx[pbbuwbbkrgqlhxa]lqbqozlyegslpxvr[arduobjtbducuoiwykm]tfziqcucaqjcfrc
+foxbwdzngattycaunku[lnkqgrufdcqreruqp]otrfaarzydubngucw[hhaqnaieublicggcep]jjvurleoxyatgtlexjd
+bxercunxdkmyxoo[zuvlzxstpwfmbnv]laszhsamraptopjmfx[syvqwydkiawwwpb]dyrhipcnwwbhmcotha
+mrcbhykyikojmqmxr[gijdvcjehxyzlpxms]bkzqdkykgcvrlbdcpck
+dqdrhkhanojahvaof[msammceatlnnwypjnk]yxkhkmiroydwvls[bgxvfxasrtzmiqpueoy]esjxrbelpjsvdcdx
+tuxcluskqsebpcm[xplkqkfmkdsjlgnome]qkweswhvzqmpkujows
+nbpwnioczrkicxddphr[zmtlntcztddnmcl]gjultcfncpmekcsosbn[pzwvjmfvfkanhxbhcy]kafsqjaraeicizjy
+drcviwihoplftyb[xykuycwejtdqehmuf]kfmgemdaoetwhczw
+iuqdiepdheskvvgvix[ayfqccpnsyzawotpt]xjmljfmrhvqedfsrdg[rvdqhetiopoykpopol]lnqyxioswrssucownvu
+umqpsyqwafisrktta[eqncbzzavysoixd]wdtnkvsvsfcvfks[opjoivoqobrzeepln]ziqmbmxwsppwzfro[mkhssttidvdgsvstov]akkdvcsjflhxllpblu
+qjlmfjwtglolrdxvqk[yufnmwyfhjrqzrxrddv]pzcaaeoitighunvg[eamjujwzolooemhj]mxbnbjvuikcycvnfuh
+zykdcejnrxpiimmbf[ofuzkgknvcexqzxpu]ketlytmhcmzvwtssaq[pgruobcnyaqmyjvospf]jkkvdoervshvgeqwj[fiexihxudpdrzdwp]pzmgprenvskgbgupy
+edesihewpfcjzkjhhk[ydoqcgosoyuebpoib]oaxftiagsynwawlukdo[pobikbzlxzzatth]tzvwglytrgbmlsdikum
+rvdcduthikkjrfx[oxwihjkewocfvjpq]wtpoobflhevxjuwnqr[ltfcdcjnkkfetnor]obpzfslqfunurzhpr
+ihikssgoutovoropq[nitrordhoxvqfbjfc]lxnjmoufkqnxizdcthn
+nsnkrlllkoyukbkwikp[anhzfrtqwndvwcndm]xyvidixcvjwqwxbsctb[awnmlqopvrjxyvjlbn]ldmgegtwfkvwjurzk
+dvjmhdavqxdhnbglm[qopsknwswyqoqccp]jycpmzubidfbwsskm
+dstxfmmohcyoivxmci[prdroxyvxqzdrdsu]qzczowwyxtufoewluu[ywzeufezgbazekly]tiifyttcldlhravctc
+anocufhbdffrnyhxt[sopxugpfxbbjlsgtdc]nvnnbdsjqfevwbgbaif[ljuuwzmlrnpjvxgbp]hoeejpqdkbrafcmv
+mvoaumknaokkjrduxj[anhqilrxkkqawmtdwhd]zuugnxwinmpwchymrx[ftylpriufvgtanapyy]xnizqpmgcbbotfpru[ilovypboxtuyozqag]aldfcdeyubuntmvyv
+xlvezhyhuvbnhgezw[yvaxeeokyjwjgzr]hqtybqtojttsyhycsy
+bjcbsmjssbubqixiqmu[uzycqzxxixenmtvz]ykvtnssyurdixcswneu
+gwcwwzlhdufsjwaxal[howbmljowljdsvbm]jggvldehjwoafvshlw[bfevufuakhrccqcc]dfufvaxzavehxgwb
+xuigvxgnmagtmdke[nxkzzxieoqxbaei]nqnpncmtrsiytxhy[bqpabinchcjqcjy]ysktjdirrevjyqyc[rwtodjwpnppdvig]cxedadgimutpobykf
+daqanavryjmzxflo[vcpyomgckepdftz]tizgysgskfuntqedhp[bkasgyhpytrbqvgf]dtjwyykxvutfihl[dgidcqrglxeuqmjvryo]baclxsovuumhgjffx
+lpyeghloevhgthedzjl[schxctqynpinoswgvwv]jpuvctsvrdpdhwsh[xdjqrqfwodmrxta]cmeizobaqtszfini[ttbvcouiaworjdp]uwfkbkxwhrkeugsccp
+ctvifkpejmwnuapjpjh[glykzeqimofbvirvv]kbzjjjxmiasijhyak[ucyzsvtasjfewtbm]zbhktdmufikfwsiqyfz[kolsqantshbocapum]jvjtmsmzjvdyawlrrv
+zbxgniymzkidlugns[xsyjfooxpsbhtjvjp]lydpcozhcmkdiactgsu
+rzsziayhprsxlwr[szdcnmcdpqkwlmhqlp]uctizqyfzorwogahopa
+njpfvxluupsvtbenq[cgenluehtxacymtm]onnngstsltmtobh[jkjpmbsumgmtkbyg]uvsefrirmvsuiff
+qukyshliwhitgmyeb[eikuuslkfgergykosp]fthsbtteuspbrqpssb
+xpgwgflgtkmtzhw[prdmpsbkrcbmjfitdyn]kqiyknqfoudyfvdmlhz[zswwgwvjkyvrjlg]zzmkyxkalhbbgcouvog
+dgxbmggkttasrcjotn[hsfrmfxeeuvovzuij]lnbdybfhkdsrymhu
+ryjamwprtdolosp[nkucayakarxezyxpgkp]qnezibzbjadqvqzz[kehgcplpjdlitdsg]nagotxuswnxikkicoi[fbpbayqjockutfqu]gnylxqhcacwdrdhlp
+quayrjbyxiviwukq[mwkxplqhlociiriaaao]lswnrperjoqewphn[nmwqzenrjmgikodk]sagkvoqqoayykkzri[uyenuakxyohedlz]ffzfpyguqryzodjwqxj
+fkymdwjnylzqnxhl[lsrorhrzdxpfkmai]vfytomporosnlpzc[pwpodimqjyfmczra]nibuxkjazxghetmxe
+vlrxyrxugxmmxnr[gioetjknstpngomi]jgzsfyvgbteacpupi[aeyhvaqkilxenfy]ezhnkbgkqgbymgzolq[dkzztikgwfghpltsd]nrslpkmvahlvwfhavn
+xpjvbcihegkoyjg[ddyxkmnhpnucgbeu]xnvxewhefxmfesoqkfo
+qgavdsmekecmyuuxln[toczsvzymwfzzrxprb]igonrcvkpxvekefo[abktdknxsdmpionl]uhhlekwqmalhfauva
+uveiuvjjvxlrlyxpc[ucbsqehsihiilfmxz]nvhvrtaxdpiqpbuyj[rhtfedxbiqutzvaucj]dxtgbmuwqxxqpfbohfb
+qerjjnnafocowost[axrfofdityutyzgv]acicnljrpsxzlcg[dhslugmdfaxclhrdecs]ekxnsbqhlxcfuron
+jknvvunefcyqagtj[zhgsvdlsfrlcfyoqt]srtokcehvdjwwkcwczm
+wwwyfmlxivfqcmnwtw[kaeymickhvsdlqkfuqc]dyzktnegiqbohljysa[qmnzkoqxsgtpattmt]oxxczwgodhiecoyp[swszkqetvvgdctkhyxo]qrjhaothcmyajmpy
+oldhdgmnxrbjncj[kkrntxgkrpbrsyi]qjronlhwmcpdnpp[ksqudrshtdnenqxt]wzbkmgdhgylcfpberv[nyddphsypgzienevnmx]memczjhmgzeyjchv
+jxojiumgecewqlc[nmiruhzcybahusxwt]pqlrbrwjitwylvzx[rjwehkmounctpcecz]jbhagxjlhngeibhh
+lbpildbxlosyqfun[razlyptphvjizuyonoy]atrqbzjakphxrguvmbt[ybdqfljkspdlgisypun]xttstfdytowwtxytsn
+txrzvdxevhqzpkb[xbsfvyjkimceqeog]ilzhcjiezytvmdd[kuhqkwaweasjoae]fuyyczwcpbdblxtxjgt[ujdwvuypmibgdbdtkij]vhrvswtmxfqkwmtjjld
+zipaigqfaywgroxzyh[nfaubfwofvgmjrlxw]srjdkzejhrpctlhbevh
+mtshlkbkfdacuvtjkbk[qemjvtgzaxmgvojtfl]emvduvrdlxnwgqrquk
+nekajppmdnadytnn[ynkibteahksyzvpenmp]jqxybiytpkgzgws[whyeilzvjokewweunf]ndkfvbdnbdoszwfugue
+fwfviekoibnqhpis[esurgsppgqchztm]vaxsbcgtqipiemvreaw[ytkxlxyzfifrxgmbggv]tygxkuusmptxqyl[lpuxifizetrlbsefado]rbykxursrelvgiilrai
+xyniecftatconlmstl[rpmxaolsbezfwzof]zvcmwpmmcszbaimwhfj[hggnwfkyexqkdancmc]cakzrmvvnmyiyzbwx[eizlhdetlkmzlrob]elvcwtpqtdpqxwdgjd
+yfxqriltoucrnfnj[zlvarepakboasju]bhpvqvllpphryccbjz[gilhjdjlsinanvhhe]rkypfwnsrmshanawlb
+cffxddoarujtkpwt[vgtsjcyuqgpoklcem]enplegjrghgfkvaqhtc
+kybnjsgrfnckxytl[obtlaqusuhkyeswu]vhaghsusagftgzxz[ganwwupndegfgxbckde]ncgnimjtllrpmajya[dmzimljmhjkbyozpmk]ygyhjeeexzqadcdyhf
+icjonhtmvgnwowp[xdtgaeotcyiyzozqwd]wudhamantwimysgpu[wjeyfkqluqgmbspxi]piyixwwkfdbogwcmtac
+qextqvcvlshqhbunkg[ouypttbdsycmscqe]qpxtjvipjkrbasofu[lzonfnanpflaekzhl]xwwxnjgtmzxnhmq
+zbtonkedeacrlltqnl[qlssupkhjptzbbru]nroemsymerldlshy[anmlmugxtrgypsvkgs]wfagpjfzgqcdhslmlnf
+dpjpmruktkfkpurvcks[mcdigtlyilcdvykpng]wrbydnqwmaatgjpjnew
+nhcyufcfcqqsxef[msqbqdsheiodqzpkcv]qlownycyhpteerrdfid[geiuncokzuwybrefno]mgugljgzgtdvyhpflbk[kwgpiyryqpdmphcwk]rghcxpkbbmimkui
+yyutoljmokemaksyh[ofyxkifbjqhrdklh]ltfjtukyeekhbjd
+uolodqcxatkpbywxs[qdpmghhjdsvuolwk]qfvcnuajofrynqndg[cpojwkswcxdorxvknrg]hluvdzuqsjsvhnqd[coemqesbuoorqrcht]oymvojeakuzzydb
+qrghrzhmccfpfymd[ejpldprfcjwhfthnli]wayofelvbtvjfesq[crskpxtazgepeguyywt]hedblyskngtnxnchdz
+gvebyckhjgfmqrxmmd[eklljmmtwggtlqdq]hmxazjnitvfcjmlactd[qhlsytdoiaksvney]jsdeegafywarxlsnkl[ycoyqpbbwsanlnoes]mnfxjeakujicrhn
+ttowopleauigqfzpuws[rwaipjqlxeajbszmt]ewurrgikabumnsg[hqhoudrdngplyncdoq]jvazavwibnayzbkmei[yfeaerzswqrhjiiqbb]khsqzfojtdimvcgsxuv
+zysbeejbuanxhomwne[wzcjovlgygbogvj]wqqbmqmudmkidhnm
+hzetqrjsokpzsfe[sfvglwbyaoczjozubjo]fisxeqpvyscesgy
+txsslfbzdakhenov[pdzbirgfxvyufuz]mwbclrbkpszfpgbrhu[ozmwusngkhbkluzvgo]wuwvzagakqcmcrcq
+vxmeolvgvkzdbldvid[ebhmwbfcvzykllewj]ngsvjbjjbyyoybnai[vvhfsezmrbmdkoxbdmj]pxxmcprffpzqadbu
+kagnhnyzbognzsmifby[rujzhkfynwygbcpuoq]wfgodhqkdextspa
+meyjysyguijkyen[vjyhsmvoyoppjknvivn]yuyroikrroyknlkgfn
+yrbljqrlekktwvq[ubrwbmlwxxtxnwa]ekompfyzprhialu[rdglmpamldxxxsgpmwk]atazfgcgkzbjydvf[sjdezkpgsienutudx]zuxyrrwpglvstutp
+yqhreymyqostwga[wngmbpfomuxgcyqdl]jdkppprtdctuyaonlqz[dfpqdidzlofdishhmot]gnifxcpfecsxdincqib
+xdfslzwasuifmmi[lbvuxnulhamtgfyhwz]sarfovphjgpdckkrbgy
+bzkfxruybgbjsmeflp[ubqugccjulkryeh]yaldnucjnxhktrgf[jamlgglyzdlaidp]dsvhuxerhecwhjslfk[yibicfmmkiugttqi]byyytkpsforwainomd
+asxywcdszmdtdndivdg[qkyfhaxaietrign]sjpliketcpjxkwxaoo[vmjxfuqxqgscfpd]mnpdsyqpnhlksmrcpa
+gpgcqhpkdzpmjoxbjvk[stpachxjlsdooglph]jaaoaxtyaogvmuhl[yochbczehvuvauxj]zatcmyzbmktdoohzgx[cbwozqlvqfssqaagyf]dkeooopvydlsoakyc
+blfmanmskfsbhnj[qurkejaextecwkh]iekzoszfdtcjcvqf[cllmensfekeoduop]kpldtlzhhnyaweelg[duturhserahslsvavl]tlscacpaddzunyhknql
+fgtfcerscppphulhdpc[cjasnicuepcfcpwwq]ubfqrgkjexhpcpdh[fcuypvlkciryarmpsb]lkazlfdxilmfoccr
+jaytjcjzwzzrwrosfig[bjwjolqvmwjwehvkyqm]qdrcohrlcqldwsj
+darwjaqwucpzrgob[utcloaeoixtgcssljwg]daazkyzlexvrwrvcoho[hesdrjjliusilwgn]kflojebucroplzdkid[mxvmzdobkvksvvzg]mllhibzchrvzahrj
+umabodjruykdkzuebe[pdyqfuwbwbnhvbgh]mvwcfyrzvyzbwbhen
+uuvjgoiafuuacqj[ccihiuugtipqyyve]xmtwktbgcgwvwchsseg
+oldckvjhhtvodiljhx[nqcvjxjohtdbukds]qsspbsmfdcamiwwr
+dzilyknpfbgtdnvntf[fzelzighvnvvqypxz]ntthcasrqrblqsk
+hphpardvfoqnqncq[ppvkmutvbzybiwmmcuz]kgfwazxcanccijxdxr[kvvrehncwizamjfbv]ptzvpznypbvmrshiq
+iteoprxpltaartmz[mnybqocmkusetlywx]mxfikdltxvgvklaxzqt
+qxldpbwuuyarzvlokm[peamzjnqawztknvnssx]pjacikdaebekzndkqbs
+kswrzqhftfhqqgetg[bplpppimgpytieviwci]gfeqifrktgdqxzw[ylzjvdvhoocfxoijb]jhullyfbzrzbtiujxo
+jbyalllemspbiba[fihpzyuwtiisvalzl]egftfecpkrowpxz[fwyjugfywhzgpbgxam]iuwakremprjkdfqep[cwjewifgwauyxaqa]gfnznfakypqatvp
+gtdsifvoatfwztxsgmn[lrdwcnvmfiuzxuyad]alnsyodvmgpdxqk
+ffyhycigkhlyiopmdx[yuuvtuoepntnqhkof]atumrmkzfhinoqq
+wrkcbbifeyemfppiaga[msgxssztbxvmdii]ydxtnokgvpouvcuk
+xivexjhdjysgmklbjp[scteqtgrnyuxsonvbx]kzbopsageoqsymtcfo
+jtsjoerkjzurnysfnwe[jqglomdcjmtvcwvhir]rozwrmwjuehpapebmgz
+qnscyvubszfeloscaez[povhdeeifvqfpyd]hdpspdtgtqpklhwqjec[xtqeoudrdzirwfxrowf]dllykbtfgrdwdlchn[fsjzptvngbbulfkpkh]nvyonktuxkjzpsciihm
+jzrrmwegexitufpbx[orlvlpnnuklsapk]kpwkwfggbcxwdxvp
+hfvhjwieruryoqk[qrtlruplpqjtwpuhhoa]ddbsdfqczwrmnrpm[hjjqrsppkjnvxmjq]juvwgpsglqllqhrc
+wogxentwvncxpjbntf[lunrnlkbjpkqcxprp]yanygvijbyhhpohijj
+kjwqxolclqanoyfes[oeasucvzznhjxkzlqb]bbxecjmmedvyfzapfif
+hfdiajyktrmlfzfbv[vdnyppvsruscsgvji]opwnmoadgirnedufn
+mrkqlpkzkhbfncol[huvazflnaswuhnv]pznbrubmgazkzfvkltx
+lfqfiunlwragtrknwpx[quvtbwmfgutkzaeng]kcdzgwyybqugyfgf[mjngrfgzmtbehzxzsbg]zjvpmzakgijjfyz[ghpyxsxuycqgdipdua]bjqtbqlzwyinovhnmmu
+ayagxnelxjvkqkwhax[zlimrxwrtlqtkvdny]nosfkooohodpzjp[hsrgztcucnuagedqoz]aujduldshdugxgbszom
+wkeqhrtgnhyektefk[afuwzaqdvmzzzgnuvw]aaisrnfyhuifpglpgp
+kpqqecovarltptjfdf[fwpprvpqfsntlobpdm]dtnujgpbbrqwqdyzs
+alnyvjvicoigistbmh[ueworbfuagjnech]dpzdovbhhbguxpginqy
+eiumooyxoukvaqoiv[qrygigmnybosyay]byhcqoggajjtotnuw[wpgsucwktfgcuhhi]hwoelhsxarzriqxtwao[nvemgikmzntrcfr]uguazrjfisipwrhcbn
+ghierhnuwvmisxxa[cmfxbenynymgvcrr]oknavjpheqtlsvwabd[izrzgzwvdgymivghdpv]fbqrtbvhcjgvbkwjs[ivdprbnygkhgzgaym]ziwhfgnbawgtpmkswvu
+pqcsccgpceupnvtr[bzfagcvmbelgxyns]uxkvxgveigehxsugzj[oojovkdwhojqcbilwvh]xeamwxhelypwwefsabq
+iltmsmcvjnhczdxoti[umsmolikbpmqnsyah]tdtojhhqszysiqkfqr
+eubknijqrihrbulq[hfmdunzrzrgseunf]qgdasqmtmgoacfid[duazrfhejbzxepx]apwgpewymhnhxsrx[judrexlgitldqqlnrpb]ynfdtcugmjvpdajapon
+lqwdkmmktuhdbawow[lsrovmkjyktyduf]utmrjitsbijombwo[abvvufjkwoxsthzbao]wteqdxfhbqrakiqenh
+phudxliosbjdplwzx[wmreutzkdlbxfksjt]onwnwzbffksdsrrvxuy[fuklieqfenqwinbmf]ckltdwaxzrpebmksn
+mldqsgldkmerpwqlg[thmshstolghijyjy]xzhkcpjyjuydgxjm
+wpsseyevqcibokcb[hnqscfwtkqckqmao]jsnvfanwiodlasx
+pomqeoawmwhijaq[ejtmvzlmidqwcft]hkeetgkruqgmnpoi
+twkcrdetwuxaxucnjv[xffwyrqfcqouyxmkrro]ezewjlxapphabveea[jfyjgbpkflijwvreer]nesuewscsclvwiwkn[xxjkzrpeonyctow]yclvbgnwgcarcxos
+ugndgtdqyxtplkdz[worxgglrocgtypfvmb]lcziijmkjfdpghkjqfp[qomfivwilarizmq]dnglkuyyinegywu[batxtrembnirlwr]ovrphoeyxqnhcvmts
+zgtxjxnktlvldrxpul[rviiugbdqcysxijrc]kyktcnhhtompktirdjz[bkusovlvbbigibd]airrtdvywvomcfrhi[xgapjazusatwmnl]usdiffjsbadtdonojs
+mimjtxkzfsnijawjrey[appuokfywghecatbzwo]aovbqviminrwaszvo
+kcmrpjoggjmfzwezv[onaeglpwhoxczbw]totswqmklmzrwmxdf[befvnijunppmomoduhr]wydkdiejzzdppny
+fgpjujczabbtkxwvfd[cicmceziihzlkcwdwhr]sicifccwrljuhteondz[qwtxzkpzaspfynin]scyjunafukgggpc
+buyslulsiiwxkge[ypiuwaxgxsqpbqqx]dwsyrzemulupybvx
+telsdbhziecdqvmyprn[hqpxpfnttkmchynab]wvopujdicijhmttrn[orfuzixnlfdimtsc]jzvuxsquolwwtzr[dmiytgapehniwib]zylakfeifdzatmqpb
+klvmlkigwhcckkyx[qxriuexxfsmfcpgvlzb]ygklxunjumjcmoph[ychtcmyhbyipspnnsr]pjqqgfbcsqmmrxbtj
+ugulusabrxqyxbvv[atgfhjdhplritht]glsimouvohndboxh
+fatrlhuimyqjjobdq[xvvmkavirljwcgmkvx]kbesaoxeeabtywsxcwr[pmvliimbudlzabbz]vseagltcmulcdib
+vowrlwyrxwivzacnop[fegbzczrceczdasjr]orroaksljdcydlk[clwvvrdfhommqcn]yqigbtlwvklqxxiors[uliodgyotgxdymyi]lqverjsyuxifpjoru
+wevsnwwlgslgxsof[eyjhzwdmvusnuerbqmh]mjzmgpkhaatmwptbo
+hljbwkfykqbnpqhkfuv[uirnlrjpryuhtqztz]ackmzmullgwefgug
+lmumdzgnhyjajoazd[yksltxstrsvugowym]xcmwqzbluyzdlbpkfkj[sbnktloqdabygsmyp]pyavvgzsxokeecxh[xcoublhmghnexnts]sdbkqumfdezjvqp
+stnccrfzofqwbcafssa[toskkshmnjeywtuq]kbkyxwghqfgrtxs[myvqujeowntxqiekgxh]dplyqviwehtzoxrrix[covstbqzxjrditsf]qxyocadbpdqqqpadl
+evgjdjnbnzmbzjpbfm[cxhsxvxtdtdowbd]wceyuozkwdjdsrsarl
+rbnbqreygxxaufhws[alsptejilzoslxfj]xirgkoxgpdsolbhqiqb
+kpzbxjsrsdgzstpc[jnpsoqmjqnfzkfsgq]tunpisxseqxjtyfwij
+kegehkcwqdyujtyv[qfprszwdyjylowrl]yqhpsvfmcofhrfn
+usfdjspdmrsmwotku[phpquxkrbrefnesvoig]vbrbyhzjjueflzur
+ahcrumgrsucgvcvs[zgiwqzqxdocenumve]wwmkejymlaysmpr
+egorqvqrhdxdcwglb[pewidggmjfdwchmpuxq]vfpginbbwnzhzutt
+rbwgxniblxrzdux[ctmqwdtjnnoizpfxkb]cjalwfgvfvehdshc
+grpqqrkmvatjnpe[fpuzplowwtztimw]zsebojrxdfyouujqu[jieuliemrlsrrhaaral]vapfxmifbvtdzjpqfn
+kxqzgqwklgxylpccai[scugesodkfdyduxfgpq]qeoajrdmbkawsrcde[yhplavixoxekedvoq]oefgpvukotfhzxvdpt[vfffrlkuirbixakjbg]shhslgefljkjhdu
+xltaldprsvinvsgfg[korqzbyuimhrmxg]pamxettjpfchnwvxfb[secngupffbmiekzfewg]jzqfwquugmanazihei[ldhzfrgdbneaxjjndgg]toefzbwrdaiqssxrbqh
+qgiiylhrxzzvniaegfw[vfxiqmehxnnjheiszxb]txrwpqbqkdbnsvt[voiphlhjwxrkcyrarwt]lhlhcobxijaoosyx[dyqmagxqryuyfbat]oovkonlsaeiqnil
+cwxhidoqdhxragzpib[hjmpsaxbqpiwqhy]csdontizglsbbeh
+cvqlicsscacfmuugq[eejkmtnhdfogzpbhygc]hsqpgofmanfemhido
+tsbgyswofaablrj[kxsfwmoymlmvxujvqc]oiatufqeigamjtqj[lbnetvjnhlmvyjs]aeeetvtqgykzstpt
+zikurkodzkxzvjucknr[eeldigjdnjetqzwtl]itaxybvtwbhjdci[hbkvepoewuzexeg]ohfbodukqdlanpa[rlxoscpwxfbemxvye]ydahcjuodtvinta
+dkdquuhvndpmvudwjx[hofzlmhpteoarpre]sdvnkykpcblbaardmf[hdtnalxmijwrorx]ixsdqmnoqrieeqn[tvyurwrpjzolmoqn]odvpdodyhdjvcaqi
+leufyoljrgauyshjmdn[omwkxoqtffghqvn]iqpnagprpvmlsvo[glbhtzdectgrymdzxf]dwgpfoqsivjdvpiidzo[glnavlopicrpfkc]nnstfkiqjxccqrvmg
+jdpqymeesiieeeb[iwrygkpzdjttxuz]qqrbobabyedbigesuh[tmfkwpopdgcfuydhukb]mzldoxgjdeckpdvu[obojbnmmlhdwsman]nssaclvkjwmoozuissi
+upgpcxmqbimkrcvcmp[ivnacnyueiepraljdh]vfagabifynlpbjdc[dobimimkhmytben]pgasxhypmszdnvjwnwh[nvcvwfgrqenthqcqlw]cdvvgepmrqskpffhw
+fifgarfuqaoifkymgx[mvgawkhnxvgaqdmzat]fuemwmfadtlaxwyslr
+bcbtmtmkhecpaemtmec[apsgtrjqwqreuntmdyq]qecxvrivzvlkwwnzcfv
+vslhwcbtvnnkfge[zbotbapnldktkexac]ieekqwkifqtpzwsb[wjjwgvhvnqaqmrmath]aeauqxrfhwdlbsqx[ijqqcgxjzepgnbru]uycbebwrapkiobz
+fgfxlcgdrvbwkhf[gcdnlfdqppnocayj]kgluimmxtrnrkxxy[ebmozaizcvfxamjfgfl]zxjsthsrjazocerdybe[uiodgjwmepojoaswdqb]gsywzobidosuauosihp
+jocqkcfjxtprwzxcol[jomzitpuxjjstqj]jyaupzbknhzvwkwejgg[frkljzosjvpzzffe]najjqpukuhkyseux[obvojkkfdiawyysye]awwxmmkvzedenpagx
+wnjitpqtpbywfdfzqb[zsmozjfwpksophbzrp]ryxeuskjtgqxlkqinbl[jbenmfsdrvwdjfxhibx]vdwygykkkqqzoueisnu[xgnqjjcnbpugkeuaon]wvyttauvhjmdqcbmfqz
+cjikxgbzdupqnoq[khvayknbckfnohcbc]gjsqdwbzsjnwjblbe
+sknizlycschmfbcbo[glptboptcwtmwmyj]hmgkwtwaifrmzxhee[dxxxiulybtkhkstynq]mjntafrkgppmgisnz
+vbijkdmufqxhuinw[nqkbpwcxoozkrllibiu]maiisvopemncukdedg[flspngjuzwaveawgk]lqinchaieoizrwr[tuyuxyvxkesiktilna]rhyincnkvnnqejsoxp
+eehvafmuwihwbizcao[vnktgdjhjeatxeshjh]taoisnoyefbphntft[pfzlfnftyvfkkmau]gxmhcurnvyqxgffll
+ytdqzmfcxjezgvr[yttnwhebnitzkmpvg]gnxpxseopkiwdwq
+tiygnypqepfcbcqasq[qoiylamohtllezrd]hieijornlrltkvvf
+gcolxjnzzqtozkqlo[gwiytfqkewszkddc]mervsuxdbxtqkclwli[zamcpapgayrobsrnros]skfbjychckenvdnk[msqqgpdtgzpbdsflgo]hswedrxeichgpbkt
+aoyzbbkhsyzouhf[yuheesbhrurspvkoeoa]icwrvttxwvrjodooy[lclcdnulwihttoo]aheoekyzcrdbtnkdn
+epqxzqeqfqquuvaxut[rvniqevejzxwbgdj]mdozdllbtyxiessvou[ftmdtfmxjktmdjrp]rbdfhuqvdzpiyaw
+fvfozofyprhtptnvfvv[cvjusvxzqhknsrfuw]wwjlogceospgxpoq
+lboiooritgdlzti[dcvmycwryuiwrxuf]rgsvwmbouwqweusdsrb[ncalmljnmldxtgjyn]digztuhetumfrmzwg[jxhgzioinwtdfvsczf]ormtzakkenigohbn
+jjgkkenzhjxreujjury[oqbhgbvyvybhznj]lzzpsybrpvmfxftasjv[fajchcbbxzyjzdmzju]jbyovxsryhenhqd
+kimqpwhmrecjichuf[biclfkhxsptyasun]cykzrmdsfvyszfldtxb[foamaxeacbbfukrav]kpdkasbbrjuqndsjf
+ixiemjwdwfauydlzrf[ehczcannzlhrpuu]zgmsdfleegepchlbml[pxixfrfqusymnyad]wynixqpqilkigha[ujtjksmgswjsqlt]uabmyxgfqtqxbtggvoh
+vvxrjenkffmjasf[zxizrnxsywrjpbsy]danlwskfpxmwozazt
+hdbwqsphlabkzxxhrgo[erldraphnhaevid]ynkxoezwjpygvftw
+eynyhfzlfnvsrguftv[olhsgnhicqlhqcopiai]azubeqximmxxruopbcv
+ixkfvfumxiagjybsn[frwibevmaiibyzd]qzqfzepjziatdpyqmr[onsezbgebekxybzzqzw]yqotbtwhsuxraexdfes[sqyxxukeslhogqaftl]kpqsxbeawasfnbwm
+fbotlkdfsscgahhtbvr[qzlujuyglqbktek]fitzbfribrvygprgssx[ytfthkzieycghddhs]twelmrjujaidadamq
+nuxgihsikrkmrydy[awvlrjbdobngseyw]owlsggrmwypppcnkmws[ipqmpwdvbohtnbs]nutezdkbigrjnveau
+ftxpxuuvsdipzjvmy[zfrkyfvducmhwzfdxj]ycyrhdiyszpbldrqyqp[pdhfnaicafoldftflv]rskyllsuaaxidlokgxz
+gqnlikldqbizpsceti[skfmnlrtbwyqrwpi]ubwivkayvgbhnixj[kmlxwcfmudgamallj]tfwinixbevrrgzozw[iufudfqiwsyjcyqrs]ujixfobkouvxhmvcql
+iddngjedxnwlbcxhkw[yqwiebcdacegykn]saybhmmqxdoxrrzced[bqjiuuqpbxczshymt]qagtwkbyyslughgsxrd[wjjqtpphygirijzcnun]lvwqqctdkjvaatovttj
+qzarsgfojoaqkzb[jiuvvyihogymomqddqs]ekacrjmxsudjuvjd[dkfjwxmpbviqeuiotlu]tpmzbyfqhelgtpic[xcankncgcyaixxcuaj]jsieyimscyfvaeduf
+epqisdvjvcpyxcwxuu[hhdspwfhkosxunncv]iibgrkioklsoktfp[kjvjytinytggjurws]oekjstnakyoohller
+yidewjsqwykhvakby[ewhvuvpzmeexvwtd]mygypbsbaabkccvslri[dgaksoqgxghazflkn]kpdssbszxhpltdxht
+ijhcdyyvjscrvhh[fpobanqwzccnyev]vtvztxptbegfabvm
+fcicsnaoileyhlta[ivnthhpicibzhtyfaf]agaffazyjidivabel[zprfefitivfahmsx]jxfvpjrbftgokdclnw[vfmlrayxecyduau]dkuaarmbkuqqjuva
+wjhhegqxpegrypjlpvr[orhbboezmjncmclamy]pckznmicczddarise
+ccxnbhlsqrtqcbrczci[zwbnllwffvdsmmd]wdcyuartrmykqbvmlc
+shpzokvkrrpypaohp[cdbxbviwegleqizw]dcilynllhnasdzaku[brkdsnedgdlzlhxzlzg]ygvficcbzjonmzh
+vzdkvwtqbqsgxenb[dfrsswrrxxxlpxpgp]lheiqkpbahpgjtvax[lbfhfdztehvveioipoj]xkpbfwdxvkcndrbfgya[qvewltgemzljlokhjxi]bufpvhmvhrndnkmjsjr
+mynfnfbjlwljwoqbenl[wnuganfnmpqrgcdxvn]kpcfvfegyibrhoeouiv[tmquruuijoivdluhc]lnspgmbphvhxlcw[slrraibkhqkaupb]vxwczoqsrepmgzz
+eaeovlebqlahuiztd[dngzrklmortvzksk]atunvakfxeqeymw[huaccbfdtygotzubrj]poeblqeqsdqpcbqd
+gzbgdqlebuwepvx[qpajreszsyyluwi]hymkhgxqpabniqzells[zediljwkqfpvblioz]zguladbcmloyugl
+cvkyjumasouhugvvz[dtidgtxbbufhwyvob]pdmhzqubmdreglyy
+tcxjcacxysuimczi[uhflafmjntxmsaf]uexrhinqroupcbksrsj[nocrykejeuzzigkyqxx]crwdvpjofxynwft[fmxkcqrsrpdfxscabs]crbnlnzoihruuilu
+notkmxwmhfptgfpvntf[ucdfxyikwxtsumebhj]kjhhkgtruhuqzsl[nyiklbrbfvreipanby]flesvbofrdsclfvm[zghcpgxoauylwmlzfl]vwotzewzjzpyccl
+pjrbmasdillqwdkjfni[lalstrvjalnttmwr]xbezkjpklkrnlpzjjn[wbpwhbukoixcfsqnu]xknhkqjktuybkfnz
+ykvyxzavfcirelraq[itraxkxjwslzkxkigcm]ndbwcybrgayecrpjao
+jqwujyllrskoetkbz[akunxyvvaxrysiygb]ynqqotupdoqbfwncn[yyszfaxjmgqmwxrvdx]zeacfwrreohtnzvobhj
+fsfgewroujqwaek[mryrrkeqgtpibzn]vlmavzfvsadxbdiph[tdlovgncglhaoqafic]ziupjyryletstrull
+fosmjgkqrqvjjigrtf[ejrefcyognxkuvlwl]bzhpufedodqwsztzng[rgxidklqahcldewgfrl]eodokojqopkrrhfpmmf[yqwaeuztmjkelpwlj]zijgacsyrbtwkxh
+cehnutkhbzhfouyk[pdiacmcgcdpmsvgvkmp]uaslakppkycqbzn[ldbaomdftjcnpasl]fgdrrrzumavxzlojm[iyknsyaoypsbqicx]ggtbqnjftvmqkmiu
+nmezigjskmagkzcsyhb[rfrggycsxoxxnxrhyb]zjlrnpgxzgljzfw[ztdnrdocidkgbqmmqa]hnuqryossbzlfaivij[dkaufcpwgzsxztpqsk]tzkdznvnizjtbrnqosj
+zcdfhyoyrbwonet[otdhxcbmwxzgoyoo]kbkvqasgmhmuynqth
+wajbfmurouvueehl[dvyueqwzbqcpdvbjfr]vkujmhhlqbdaqcsvomz[wlekuxdiumhnwms]yzgtuwxfirpmllcek[tzipbxbzpxcvzxzmtr]tynktoelqfhedvavge
+hueffzriwkhilam[zheswsymmryugjawlxy]rptwswnecdpsdjujnt[rjyipvpqzbnvtugvi]xkicvyasotmrxvqj
+rqbhugeaozfjbqm[blpvbvcvrytbekhjfo]twsrzdeuojhqpaa
+fymuqqbklufqakg[wfsqzzrvdqcubxbdr]yzvdgnwitopzvtha[vhrdzzbmubhgovut]tfkcybfbdsxbxaxnmm[ruvfmuciecbfoxbummm]ysaeetmynjhyegk
+koqhuxoxhzmsycbr[vbpklymhqueodieomz]jmstuovitaskfbay[mpccjuzuqwkhvnzlbl]jvdqgfkbyzaaeaxjfcl
+sbryyigqipvwczxty[ypjxmlzyfjkfqxyxibv]ktqvnmbdtykqyiu
+vivvjcfrqdbkyopqjdd[wkpuxloudonlcsutb]wpcbavtlbxcojarsj[wxihbnghmpfppwqlykz]dpyadzmpvgwtjoiz[jgagjiqugqvjnehajcv]tvrrkzjwwxaswbaz
+tkpkdqijrxmpddkkau[yljmixrzauogowt]yngihfgazktusprrt[ggqtnksekzzypkpud]rxvvuhfakfcxjieaa[spuvyobjexcgobltmk]radfcjxnsgsntezrerl
+hywcvnclwvvcmkdk[teiryduhljxirhrjbt]brkfilaybgtdkdh[zjqmovlmzogwvfmmi]czmtshoirukgjgeug
+sdbxirgqauygushqq[itvwniqwuzmpzqbuug]dnrxseaisdgklwodsgq[euqpdyvpyncxocy]ggchswamymfpxaiap
+nzteyxnakzfebtcszx[uctynyhtavkzfcudvke]uasdfpeleelxacxq[kyqsinbcwbvlrmr]zelddmnaqlkhmbsw
+ttzhosgzkuxfwsy[carsvskefzrusoihqw]qiuobbcgndqqukuvbmp
+wihzjoazedelgsojb[ftgarhsuahimrocy]umttbzcrvgzroprh
+itojzylgycblvbao[xgmeltpmzvzvyfnso]kuohqnawebyjdrerwty[oslthgekjbgpsnkyk]jifnogopgpnkfdrwi
+nvyowfknauliiht[tskhxdgvaggvgsbk]blgylrovweecglu
+hvzpbfqqlwjennnj[vnmqrqlfiqeqdmg]hfofuvqicttlcxka[ievkgdwazpamrdzz]aoofvzixtqamcvhbh
+yuxckarjmwgyvqjl[nvlegkojdyybpty]hvkrieawbpkcjit[tewpyncidhvdtomjq]dtgggmzwogtyoxrepi
+jobfkxxyhcfvetxwuc[nreuagzglpniuwkvui]seztmibtqvrdepqyt[skrxasyhbotymilzgzr]jnhqwvcpirmpnltnyn
+hoqhdburqwecnzksmd[gnegphjoyuvflxlujbs]zhuvrcztcfgorbwuc[pjxxfqyqmnhyopaeh]ewbvxrexhvdawazw[kbngpgqwtgkzuwupwj]kmatbuqigzqrzmbq
+ltjrhusfbjbciixg[swlhqxnykjxumuifqdd]romkzpszqgaflgbjpsp[lbaqcvazaucueltnp]wovkfmiuwjdqxovf[vuundonjprqrxakp]wxeulnkckdufqjy
+xkdmgtutsfumpzteeh[yvkilakqbawvedm]dwwaexrzzsyjpzsn[pxitznlnnvnjyrs]kcnhpbkzicorrgncowu[ogyvmiykolbwdtv]vjaksxdrtpuuyykihe
+eyzjheolvkemumxpo[ipwxnrhyldvgewl]zbrzwobnthndxxvthe[gkfleabqwkpjxbtdlt]wywjazwwxwmuqkpwj[omgsyntzcnhjvsu]asknyjsgbofzyfte
+kxxpalmmgdqwahfxs[zwafxcjjypzibafhrag]qfnbakvxozjqgbnnizp[bqhtnoqzctknrmmh]zvmyctoitshakgx[dzatbhonulhknbio]eufzjykwmqoignzm
+beenkdmzqibirws[majntndkzawkbfpi]biygjiawnioazizbt[yonbljzgueyiuirtv]umjmhspfocrpobmrfu[dwegjekvrmgoaqc]dorpbifeqhmtglavx
+sstlfeielfmztngzpbl[alzfrbyqiqangbkwi]qcomrirvulgipuk[mdvsghpkpisxplgit]aykwuhadobubmrdtvvj[pqdycsmawculwsz]oemcgayshwppgbwanxk
+qwhfnqzudzysqxwebj[nhsrdvugubbtuuseux]etcjsefcsjblcjgshh
+cgagbjtoxvwwqonb[crbqhpfajsdwtudybm]dquyiuqtarcupaeujhk
+qjsqqlgdczcqarhftri[rchwsuodsdofjpd]mrpwnlqgetejijnwnr[lwusdojqkioapaxwc]ioumfyxtwspuyztz[dgncyjfldlapoasebgz]raelsaeajwuhnabrgw
+tihnitxxkxjvudnrj[neqbqspcfnldrna]qkkcggwjgejtbmggemx[ffhkzdeopnhrdfpbrfn]rucxwfyfiavskfahg
+zralvoiqdvpvjkkf[ttvdslqoxnlvnyyskq]joucwcxixdqsagu[tulodbmorpbjnzz]qkknyrgruwgrgupgb
+fgfaohmvjameqyl[riumppkgphbaziwbfcn]gspevtjsfjazlolblh[sueqarjummrmwdgzsr]szmltztnwpqshlr
+lgcudszwvsooaxhuz[wpnexmkikdsfquxleu]icefstmmxwsrzqoiki
+elrybwwbktbemldjqeu[moigtqyrbfwcdtjkm]cfquoomooaqrsuomty
+rihnsvwngkabincos[hrafbjoluwrkoaqb]genyvelnsrwqpljgdf[ytnarqybnwaeawssx]bdhppadoofmwwbcbl[acnqxbqukongbge]tptnvsrcborwgumweyb
+sesxnxaikeytqds[groytsrabjvakklwp]jzexhtzpseseauk[sdndnglavrmhzyjdh]mpsxlaxqnazayppc
+ozkfwwrdoftbpnqwa[mvzpilxwrdeszungggo]fbjxevczxrypzzegxmv[zvzaovlhirczrlwnvk]yulsjotokxaurjibuk[hygvqlsqfygujup]ijtuoskhnrvxmmnety
+ssoavardlqlejqfndz[emljlpogavcsyvavr]izdkqsihedwjaxva
+wixidnoyhmsiuzwbm[jgqpnkzbobknrufgif]yaarbsalkqgscyv
+hgcggfqnkhbjlhhipc[cgcrrzyspqlllhee]czfvtkjhfgnrwwua
+ggnsczivqxwhungxmb[foslhzlzqyhcwepvhga]qgqnwrpvfjilhnttbv[uhuhvuqwbxsjxqbmqfs]pvwkiufdudmyabq[ffqrrfjgkmegfls]pvuflwvnbnllckrmdas
+llelndaczjibswzoaen[dzvunuujhpmgqdyond]slkfwoyxpgohhelexsl[hvtucjohyvbuihbonup]mwatlwbwxntozpiymy
+epjldiafxyinaljee[zfgytlqlzoaauszrn]gvyukiahumemeqnsy
+vldhkwyfpfssriaiwe[yuluhcsjdkyumyhnd]wggzcfalpkmnsudzr[qisyeltbpzmkvqr]kmbnsrdjgspckgmwfj
+qkxpyonwbsteomlyhxz[wdkzqjywdsbiccr]ojkvswlubvbbskvnbdw[ejvtytntukhcuuad]hspfdjitkfetytyb[hlgziyjqrulvyaoco]rfhwusvjmkzkpmjvrm
+lnmjprwzvaboyyobux[lncninvpqfpuaswssjs]vodhkkndlvixtbsdfph[gdufsyhihlynxuluvx]oyczgnpmusuvligf[jqtdbytmuyavcyfaia]mcdloputyodiezffqpd
+awulgpuvbkountidkgx[rzatlqccygoyamniyaw]zmkfnkaiuzjgdsxd[dornnqierejrlxbitfn]qyhlxykziurpdxpz[fjaesxiowwxjvoxzq]oujzxyreqtbosriwkl
+hcycycsytqzpijy[pptcwgiggnlhewdwfa]aqrsokplrsmbzzovz
+szlezpesytqglub[hlmouktdjtcglvvb]wgcrjqyvabgnnirxs[cafdqrjgmugvsjarx]uomjcavfgggsyknjge[syhraisenfpvlekk]voyezwktjlqoirx
+ltjosfxwsqmgdrnpyav[revxajvfbpuqqscgxb]pnjpsoikmxwrpbk[frqghuqvbomoddukohb]egfbhndnpnlxjhyv
+ydyzmmgkrvbycjgeheq[xmrcsrshrtogjfez]vberqebkqhindvsj
+usczwnycqbxdrcfr[papmzhuxspnfexyr]pwsybmexcdgfztkc[jmiatnbqkxmarkaeer]whejsdpzzxkdxgwm
+vfiswfowhnwcuusmd[dhhjzfujepawktlh]quzyrwoerrtncnnxup[ekhrriqhoudhiwiju]exzcmnyrtbnxlchf
+fmobpaevmkephhfuu[pjbpnzxkqpvoafxj]ickqqwfifesukyx[uzfultsftvuzbipz]jgvjewotmlkzqhvvc[fhfgcekzgmgxosyuac]gwbmgqtvkhyqidnehhy
+zbwadipvxkyqwsaassl[wcojcviexybrfhdfc]euliyskdckqzozfnlpn[fsvqspcvigzxlzya]vzabwryzpqlmvns
+wavahkemgrtwnvbocse[hnzvxqcxzisfehcy]mqvssniqlwekgowu[cusnrkcbwuichekh]cfvncmjjykeaufknu
+wvtptjerlrfvtbywes[ciopqzpfjdoclfyxxqy]sleyhkequxorssls[weyxuuiigtkjsmnugij]onxiowvkwaaycpv
+csanwgypabdqhiinan[gujzhrxowlgejtk]mkczaemurigewvqw[lsqtuuxcsuphogl]acfqrkiewfykgnx
+ennvxqkaqdppzmj[litdmoukvydtepvji]hfuqcwyuufmxcxy[bilbdvnquchtcjquymu]yjndoqqpyzrjudd
+vhkrlicuffddtktngy[opctcwvtlypwglpaoi]iscxtzlmlkjdgty[xadnwdasnszzmwwid]uijlqxpfgkkcmwga[ykqorpoxpbjkepibk]dmuojdumobwfmkvqg
+wgcihfnjvadtczgqbj[psdtqjwifivgbhp]ocykhmjfvbppiltqpvv[ermpbuyieexqujuiji]vjioxemsjslsdxso[bmsocpaehaeadsaqzbm]hqlzlnedzwgbxbcacf
+reesvrozyerxeid[ymtiurpepvrvnkf]thobixnwiqrdkih[uipdwllkuudcydjinew]lzpxeltetaixzfjxvf[ewlhchkdiewigxy]wfeiqnngnifjzbpikb
+rxgukabwlgxzaxjxch[ljrblzdmvcwcxdoomq]ksidvuwcwvwlvrpe[yrnyjokakcbwdxh]nertnqwigrzbtdmj[gxbsdsdmishqjeswt]dsgnhlagonywspbr
+jjdfvvurvfljscocvr[ueywpzuumfihiocoe]lmcrxdlkqsouhpimc
+qgelmqtmcfsdugg[jpbrzcblivebxazpamj]jpkxrusyqkjnndao[nqcxhhmkpfgrcwhsoyr]wvigixehqklwvrscmz[xutrclaofzczcvfnxll]xsyxrvfnovmohxfbt
+aqhrsqbyxtxhsvmnz[pfpclhprjghikyngp]krgiznxuehpzeiy
+trqnrkulbvipvmj[mgsdnaqnayymjyp]otecdnzhhcufrly
+illmnsgqusbqybiso[fxddafnnoholnqjotb]uplvjosscbyhwmw[jsedsarqbralzbjmyq]sdwkyeychcdpqvfup
+zehmutjhkodiqpi[usuretqrbmggvlvr]dewkdjmtingkzuyq[pmmbbozcvplhejh]jzasjfqvsusgnkfegad
+ljpcpqtpcpcdttjo[qbmnhadshlheoavsbxi]wnwuahdcagpellgs
+ayqxaqtrqzbxyhu[wkplzaetynfxqzhtkco]jpgbztbvmojlflc[ojmgjvfxdvlyzih]levvkelkzftbzwzkow[fmszxqchzjhxtwfm]vihmoqcosarkzsad
+nigshquyfjlleujdtw[qmiqiabzqiqafambcv]ywbltgpjxcwlkyahg
+vmgyovkavazsxwed[anpflkjsqieufhscn]uizulvgasvsstuhfn[ygxgsfldybdnsleqy]tztuatotreocsrfevpy[yxqmsidajmknyrae]whoydkufyieuqhmqv
+jyhhfbftixtntuozgfl[ffrzhxpaezbspndbo]sbwvaoziercfpmeo[tzeluvflupgartnyjes]gqfmzvmpieczbjdsr[zeenwxfhhxbdgjkr]ojqxbcxciclzwthvqyv
+olhruodhjmaicslbgw[upvujuuazyolckot]gcwfjukdneuxqreeg[tnnnlficumlgwkdsxus]pxrxdntakudobpo
+vdowqzktnmpimsvok[gggjvxecgicglrkuvfb]xtsuhbzqpovnoqhnbs
+hxvziijhffbzjnjvgoc[sealjvjgnjnkzac]neuhdwcgtjcvpku
+qryaqhtnjvickffebwj[hcgzffksmwbqqdm]zrwihiolnfuqzqpkxn
+egbqexgeqnqsaxdi[xghkrttlbmkxgfj]rpulxldvweijplm[dldqxbqxenksncnwhxo]steqcncxfskqcfwfnbm
+dhusxmzjdacdrqor[tzblogyadgggzbi]vssexeogwduosdoeo[xexqnjrctzlbkfri]dqppelyoecnnacs
+tkrkjtgdhxdcyapamp[gvyyiztulksqxosp]voudpakpaphmrlebpj[vghkfcrqexfgoguvbxv]yronkwfpvrwilnuegkb
+yiuhvglusvqtzvngzuc[mfvcrgjuywuthtprxe]vjrrmtbyppmesvorp[ucqdvtwolrvpjyhiolf]eazedskopeknjcqx
+segabhonjryukdicj[zvjqilxyvwjnjgjvrnf]gxibvkxslgkpfdhsn[tlbwwiypungvwcvwngx]hhgglxqosunhdvgr[mrjgltlfxwsznpnmdox]bqsgftffsibfruyz
+hrtiuksavtjzekgf[vaagjkvweeznlshs]ntotbakgpxpcmqanhab[pqvkabybndisouur]cnjoxldhauoppnqqk
+yizxcouxlbjqbijqmj[kkqvlcusdkmkbmuia]pidiunjwlkapojzzmf
+dfzinzasgtnjdbdh[wyguangjweruyqm]jfpqpyqydvbdtgqpqt[eryvzkaxiahxekwbp]sywpjhgufixvhljk
+jkmabkiiltlvopaxec[utofhywhxjucodwke]dwxatuzwebnyulyt[iajptbioysozunsws]nmfnmtguoqipjmigsyn
+yxletutyrgisbrm[ljtuifjmgxupgerhuhb]wpqnfedngiollocqbfh
+zszqqoahkvdvpezddea[defewzqptytvhnpzcdu]cxuavzeyqysdynnr[gvmfnqnjwrjrjzphei]pelrqmmykeiamnh[jrjqavultdjecnghoc]ekxawogufyfdmltveqf
+morsvbgrpgqiqeplgg[giswwkjoxkgkbonav]lyhrrcwskwjjflawgs[ogjazoccoomohhalb]gjnkzumbxtojtud
+gtgotbovcctgtwwc[owthnyvlmcwnctlkilj]eytxalpmzywmwqc
+ikznlwbayqdbhusm[iqstwodfolztyldh]amvvpwqwlswcnut
+kumjpojktwxazwtg[idtisckrbetbaye]mgqtwjxlbdpadrnxg[eourfrbwgoeoqrlvhv]gegegzbxfyzpbij
+mxcepmkacvzxddcpnsf[jviddcgbglreegewbj]qmqdhescnuuswkhpvxn
+ltsouowwsvovkbie[huwwuaptbopxsixrb]skscogxrektbbmuwqu[niaczcnnxkymnnuu]sfczdkldegoynqw[mrjssleiutncang]jkfgyuzcaisvrjekiwe
+mfqowsxqmywlvauv[fziifhafjuiwdizvm]gmaxzryznwavsaxsv
+okmehkbnqsegqinj[dxddmmglnqftiunfuea]todmrlalqdfqfkbq[vrktligspzyclnfz]jwdvkpuvhpwffrnyxw
+mybozskxkccdsuuptc[mrlkqwbdhhktuxpzjxi]xrujoxxkxwqcthydsw
+jupphmpmynzxsfkr[xhvcemrobysjizesgs]ijjlrwbpchbbiblvr
+vpabzrcqfzsejjgln[segfzwfyprsfqskhop]gksthicdjyagobs
+tuhzaznrumhuwud[szqusyzaykegklbcdoo]prwjxzrwyrgcouehrg
+dfvbjgrshvnvfumqxh[tgnhpzveumwngrnoc]qpntyvcxxoofgsk[jibdpycgwklugip]mgkzhcifwyzxsbuwj
+mbdpghflpcondfk[ftzfdsbexmnznqqmfaa]xznzgqjdfkmjzvwni
+ojjaanxihagtezp[pxqpdgygyklexhrpc]lapqmhronwsmwbbf[rzuhtemugsniacn]apixdvsnjpsplmjwvn[iwdpiqgoztjamenyyw]zjyidlwjbvevovgf
+pijmbdkeyhcjzuwclu[onazufaoibbwzepmbr]jhjaqudvrdoqcvobs[lrwjikvojmgdtkwb]gfxgoeihxughdfbetm[yjhxesdcdudwszwv]hgfdxuejwfuedpdu
+hvdutkvozvxwpvx[beubpipzuwaclrev]lqeylkxqdqmcdqd[oivjrkpjzrjywzrxely]dcupjtbrltnguho
+esrepqjymnodspvjib[kwdoleplnoxmntjuip]lvrhqceegktadibgh[yfbqpomfldnbpxsaoan]cheitjzmqwdbilm
+oakpwuuoizfcsfo[csxawuixxvzzooah]dafrurtufjpuetnui
+jmmekugaastsvdn[qoasgnykbkodsgt]lmfvbqomdghvicry
+hqznrdvlwnamiushnou[iufqiqjtaiejfqwns]xsgjmqqsvbctpwqcgz[mvpdchozogazbfywqd]iqimztlwajwbxhr
+gkeetoqftvsdjhhghre[nspwxohslbgkpyyhdh]glknqkzyfmvjczau[zrzurqfppidpckhmxu]rtawnnjhyjnbvnt[deisyafkjnxtcjas]cshchafpoiqptus
+jpkjyjiucudsgjz[mppiltmurhwxvmv]sdhrapccelecuctxq[cnwlmuvyistotoykn]hjzxzneifkwmvumg
+uvzuxzcnipyfyuesvna[ckplomuathpfkndodxk]vrqhbliixmzbefuh
+ionmypunjczxhry[bvgmqzohimrjmijzkwz]qfzsokgukugmeso[uarvxrewouktpgnghtq]rsnccdtstsegeoudngq[hkvkymbbgdyncilyf]zteoiyacrtwykwzbxy
+jnyydhrsrkeujfvj[qmxzqkbwizhvcztzdqr]yllidgevuektldszzjy
+nuylrchiwpfvhdumyet[hfgfzmeldvotgtxqh]frzcopyhigfewcnb
+sdcvojpgatiidjvfy[zhvymqejqxllelyux]ektbysjcypxfjrsor[kgfvqbereoskymyfp]izmdymjhwwtelesjr
+xnelfgdpnrfhdombqq[oiidietkplqnygwsgo]jiltmfqqavrjrvyui
+zyuubhwaovcbnaxrmtv[yefoksxqkrkbmbm]ainfhyuonvdvcyegy[nntnxqkqdqattwt]tcrtyqjhokntxcb
+hxkbhdfwcraxhdcff[umxxccphsddzavdqn]zsmmtgneghqsrwfauw
+kbdughqnourxomuiab[xcjayouykostteh]enwbjtpxpyzaeuhuwb
+cpmzhwxdntahvhl[diddnwirsnqchwr]etsizyoarkawzrpfidi
+xrruvcmbmigmutacwc[owhorlqlgqujvhos]iddgaukpxlielcko[gawcwcvuviuohmda]bfdceclnseehdeyxv
+vlxaputciirctva[qgmwpinixdixaiut]kkoousbfcxganzcffg[cikwetvrztjgefpzsks]jrsyfxydznmupwapco[ooydsykpjwakdep]krlytknowykzzqaafou
+dnnvcszortmitfv[sbnurvnwxwmvbdpawa]ewayhapxdfxplpqudro
+fsiehjchtnyenvmjfw[obnlguwjqsgylwveak]hupypbuggmbkeqxt[ljxbmifxgorvriaj]tkttmzairwztsmn
+pnhgjwzyqnjrkkw[ofyifgmztnzelptkwho]cgnlnrfdgfgjvztpz[wemrlhyskboycpdbzr]azikmfaudvrdhvfvt[chxmcbgineaycjiwy]kjbfttnqgqhkefoolo
+khdlanelfapgxqpspe[alrgipfwfdyguqtk]coxffjtxpbqmxig
+sxobbewirkvducqxd[ubfbqjccnbtkwpbxqpg]hgsswdjiudnvmvijt
+jzbqaqfubdsfinobsdu[rojkizavtvueepedxw]lcsyjeoyieqjcim[nszibgczunpslecxo]louacmgeotayemh[zvpjwwpeyjjdhjc]jidkptxmhccryujojap
+rrofkfoljuossrced[ymvijcmdvrzhcyh]zegkwrmeneexpcnrh
+eniwjwjnmgyzescoz[semlscmtbagknxpbvte]ysqfgrshborwtgnwtr[bossxfqcyadppdflbr]pyiuttfsuegwjwcxzr[yaymomeitxwdfvsr]elhifdegwfstqyniqta
+xauanaojjnhdgcpuwwj[ccitjseyrwjqvaljv]ebbwxnquaqlhgqjsgwc[jybietxintbtpzncpw]wfkwxwffzxwqucjhyvs
+ipmxdranyxbmwlo[ueimjvadwbdjithwn]ifmvlcsneopyffsums[ejornegszbqxtosc]iucimozjnkqkeysden[vvtdfnvjnzqbxujml]klrpisgrmdbrqbupc
+evolkocwyejqtcazj[dzleqjleocyexjivik]zmvqrxiqhsjtoezm[sskndhlmxrucdyqvop]murrraduofedtltbtg[kuzqpodvwnewwqdil]otvalnjnbexltsbitwi
+ppqnetrairzkzlt[hyydyimhgzayzgnxqn]lwubwuvowsyovjjfgp[xbzmifaqcmpyuev]wtgcnccsysrfvbtb
+jpecpgdrvunkjfrp[eevsiosfybfgdgalp]veprfliqlxmoctjx[bcfelthvqqxthqwpuoz]beufleuquitnnsti[aslupsydyktxgqsolq]gctlsoauflrjprdn
+yekfawwakhkqvpqf[cvenkdpepuyimstwmnz]fphlenyhtsxxeyst[yohciybbsiokzajcwlz]vtqcjngqpamsvrchix
+ougrpfmoohiymnx[gorlgyciageugmcbony]ozmvirifntorlvzz[klsgbagukrnbyzsez]rdzhlkpoucggkcdqm
+gfhrcutoyproiww[nzgfaaccfrgdbcg]fcrtnobfhhyzmadxjv[vlbueztcxkkbufljse]gqpnxtlrrhclwuaj[sstrllihglystknh]alxmlywxfjwnynbwfk
+opeacxklhjwcefmwrwg[mzqwxyfltfqyepcgnym]cpziqpjettzcnktrqi[mbnwwhyxebbececc]tdkduejetkrqwoxrsoq[ncenzwgjnekbobv]yxhgzizqxwaihedda
+svatyxdgfofrrkiksjf[mxmrficzxfyykqekorr]qojleucutcqxqryi
+prrhfrigzcmemou[zkhokevqzcspzoyt]tytqcpuucppiwio[mogedxwsflwocpkdh]kkqnructlslbaked[sslztcwiwkudgtji]djssvabrpmygljeh
+btundrdlcsgtilltpue[jiunnaqqzfgxauqjes]wtdxsfqroorcghqk[qvyzuidvkzmomfi]cgckuokezrtxrgdlo
+tjcpdjzfllhwugiy[vxypwowarlatqjlwq]wnpwefpgpfcqqwwrsq
+zfduowqkrccccgggmbl[iwwfgrhmjxgljwqf]cminvjjyetivkvhvkdy[ismlcjjywxxvaehvhhm]eojlvocbfkftjkapzs
+hzkrcmpwhfnbwlisg[wxwoegwncugpcfwywxe]voktthitecybcfpnz
+dcsrtgkbstmkwlzy[pcnwmgmcmpsiyizqx]pzjcivraubvgbkdahk[yydvhvyumdzfmjuso]bfljbkwodikjenu[toxagxhnvgkwcivpcuc]sanysdrigussqum
+lpcxkqrspacyzrqhbhr[vdcbkamwyjnxpgjpm]afxbzzxzrtaacbypq[ftbpiplrdrreqesthw]tidlvfojrlctjkfel[iibzklhicpqjvzrnza]bmekkyjigxxtegqbait
+duchvjohwoouxgmmxds[qscgkenygikbdrsqc]iovrgoggtgiebylbu[iqqrytrhujzcywwq]ybgfnnhqwfpfios[dryqypecmskrqux]klqhpvydovzggsqo
+gwgojmuthbgcalzvdxh[njicnwbqdckxtyxkj]rwyptcssdkdqthiydea
+yokzqvwcycvjgouoyw[starlvyjnijeacjseo]iehvlergdbswibmzci[ppmriizuqubzfehcz]jartjkmqzngigjvl[izpxafhxdmckrcuufu]pvkldotwdzdluoubpnm
+rogyxrgfqivkovtna[xtahrogngfeygkasq]kpcpvtirxettedux[cdlnciogkcsaras]bupwazalrmfnjufn
+eaeubxmpmymzrfleut[eharpivgddyokps]wimaximeayrixnts[paysmyvjuzpjjqr]fcqykmkzbcbyrpy
+exvlqvnfmpkxfjwbhol[utjaefsandulqaw]xjrjchxifscadbld[ifrckhdhmptybkhrj]ykcqgygngiwzzyfnxg[plfhikkzndknbpdeeu]siwtfnlbcxuqkrhwj
+ljihefaqagbmffbcr[ccmafzhpsvluglwsgh]jioaeefkgujinzlgn
+rgysyaquiuyvtojxnaj[gcygzkwqdebiqsr]icaeuutjodsizqzfvj[qapmsqsaoniuinsz]ppgtfxsblzgtqtaiiey[xlkzyyvcgyhlmvnzrpr]htorgwwkbhasrsbvemq
+coiurrjhxxkcplh[nkusmllwtsuddqasyc]vyxzujqohjyctyv
+briulribegnliapcimw[rgawfayyoopbosvc]owgryasogyewgxchxgr
+smseegsurmfktgmefhw[paopyayrwykwdvcjjhp]byayaatpurrllyzd
+mvgbtjdigbhhywarz[pfrhqtizabthnqrvvw]azdztfkkfizbxsy[jozzjtzkscklmdt]ucnptpblgcgmkeojpl[nqsybfqdphdncqgigis]yecpixjgagdgkbz
+zyuzikehgrfaztne[oaxgeczbaafnottqg]kuuggppqtgrncptm[tcfnyqvqcijfcfdljh]pwntuaixpqfvyoatk[mowgvynrpbvmqlpucq]vgopzmyigjbqlismti
+ostutlkruoevsjr[qnvqsxlasjyrdyyz]klwvhuhmvgrlcdy[tycmevukacjlveu]mvxcfqojmrijbubfm[rbodtpwkkidfrnhayj]jsbgdcwbfdfflvupn
+eaiframmiukbcixxi[bmqaglfamrqoswuhme]lxvkwmzgauwmabu[kxusdngtifhpmplxl]sfccogjqnblrahch
+hcjmrcnzrhznwvtjby[lxmehjbnudevzmhx]ukfmdplzriyztnioty[lqjesrsxjozxcgfaknm]qifmjftfaswtrjblzf
+xmhpeigrzvrgknc[drornrcakzujdrsbrvj]czapwkwkwwnkwks
+sfdyqdpsfcxebamsf[vehdpjffaqhytqhhbi]urolmsuobvbecvcnv[toagfgryhwfgfwxmvs]btjwiwdrxnpzxlxdsdi
+gnjmrczrqiryaodop[etlqbnstgjysesf]ggmbohbzrtfbapbjg
+wwkqbdcmlkfwxwdu[firsfuftyxwxpcicu]cntzxuydyjkgkkfvdl
+cvcsgxflnidiwtvy[hhzzbmygwugzsfnus]evzlovhsgqumejki[btikqitubnwzkhfyhh]xwxvlgyojlmkwljv
+bzuxzgeuobcctajvva[lpqpidtuzmrrnnlgkqu]lhyxsevugkrdimm[umbmngadfcujqpqr]nizwephuepdykbgj[hfheiymxxfgyxyl]zlurubnhkwxdrwllatg
+gkwahvrljkerohucrty[lgxqhorgrscmkjqcziq]otxkbzuzncbznvr
+hpoehzfotnjpnhl[yrkyqbolznetbgxmy]fblwkhzfebmzavscyyl[lxvxgdkjvtoxjpu]oetusxkoxlpceierbt[faylwjcdxicxbqr]ledknznfnaiaovejww
+xifdyajgrrrhakdqhg[qtzmwfjraqbrwstiibr]juciognmzyafmai[lgbmgoxqtjngqpqkwt]zzkhrunuborvoajlvul
+ekecthrkwdbjhsy[klxbdnucasemwhlpjj]jbvenwrnvynlfyjybm[zgfxxurrduhtlmsbelf]lxuxlahnrqvjssffj[wzcpjiesgsbwbtnlrs]sofzsskbviyfvlo
+jscqvqqdwvkvrqcb[vzfqbgopfnjcekjs]dmspregwlklxptp[lsxjobfksvzwshdre]yqfwrvjrykinzeon
+rbtqjtepvufhwpjugj[vkdhjmfkeocnauedxp]vpoqmfpnmjdpcxw
+ihhaztfuasflyghkndl[vseslcbeufhmrpyfqb]mtcgpfjhjeowjpqc[cabeopcrmhjhudob]fgeutfapismkdwqxmal[wldzeajldxlxpwfrb]rvyuojjnauuitoofgcm
+ixrzwptyltfshve[xwlsfazypzeuauxpozt]nwfgkbpuxeauadrgbbm
+vppgbcdybisarvokztx[yuykfmzxbgfwzdohup]vlkdreyqjihmdksxih[iysfrpczrirzbeirih]czkbhrqlrovfkmlu
+iaatwbohmiosyiqfq[imajfecefyujhwg]aanaybxebrfpdfxxpgw
+qgomsuglksqobwhaq[fzcrputgufyvnesoqwe]ipziztlrfmlaizts[pulgtrdydqegbymu]pxcyeozdofdghkmst
+tlxidzqdeqchemiqdsm[hacfdsanbiffzhilct]jtclxgjapfmwhlkn[ieafoftblueqcped]lauckblqborgtjnj
+upkkaykvxwvkgwgztzp[jmotfixnvoqrpwsci]wszntutpsjljzmwqpgp[dbnlosuwazvekoplb]bmobthbbmitprffl[qkjfwmsronqjmylzcre]yaulmyfoixmkgjs
+zxxsmidmqxjigkbos[iwsufumylphrhyx]uqmpbcxmvhzuppxqopf[ykipifsdwkpzgmt]zzcwzmwugdzckey
+ciakjtvtrkgrxvp[yhxuyhyxwytquzxujw]lrxibndatfiqyltehl[nnadhofokmcutiyc]vosxtisllkweiaapagg[vwniutthbrvmqrvik]aixaxvddxrdnmmt
+mbjsskcvljlehsxc[cknzgxghehlmats]eqknrogpyfcmtfhso
+lcbrfrsccsbhyhurc[mheohludmokwwjx]bezowkrdzwhssgbvydq[kiwqvuebvywyegmdyy]ioskcrvqcagocnnh[zgttakbraxpcsqsc]hmmqufyflbmjlcciqvn
+ezmqplezxylckxcqjxn[pdzarngoyfbjgyxqxgt]yokricbfoocmehi[cffrwwrwhmilnyf]uaybztxphgccfuu
+xnjslvbmmapiwwpq[qmuxemavopeoiwnebts]xmrajpgpgeojtabumm[tbjjrgipnfzjafi]hcuirvleolclticur
+eltfnqblogwvtjgni[bjfxnnmgalahvpdtvku]eingohwswwabsbtb[nxsqsvleqobfpxlaxj]gfsbsvcbbnwtuktuw[wrgcswhmdtssvxobcu]wgsniklaxmadgnjd
+kxpuygixzfwrwzpzsbw[uqxqvvupyvvajkcysh]scshpiffohigsgm
+ovchugxbmthhhijq[fznmygfcqewzomfgbc]qczlousnoccgyrgs
+imtfinjttxvhtcll[xiqmbmrcqdxlvuf]pybqlwqezwrkvikns[usjydesemedszquseso]fhcgyicfbdrmgcnk
+aqnavkllyitzewgs[cbbqmbtgufuvcun]iugpkakfufksfitigk[lyqiierbjucxbvaux]szbwsttayzipkcdb
+yetucqvgffnvnxqx[pvgczfwkehnfqxawz]vfxegwcevafevvzx[ukcwxvnvfnqvxhfa]bdciuylrvfkmxyi
+yvachrqguvjhkrbe[rtlpuvvfdvmtqswiln]jcyqjdmtzndhrif
+rphybwiwiszwkkxm[waiaqtuthjgfgag]ttlnqhzfagaregyo
+unsmoewlzxuguuwu[dyqsnohyqcommmmov]jipyewobyjdzkgkgo[yphyanakgkgvybsx]pjtzynsvtltzzajc[iweuafprefmbuekk]rwelzzbkbqjwjrw
+kluxazqhqmcrvldfv[dbxzgwsfmxettwmgj]rgvfmxibxzbajitnud[vtlbsgrkhnfpmvvkp]pdycyraaqooszqa[eyliotjigekmtov]eiopplzmedvdvmwt
+mlozzkwmfcrdlvns[wsdduzxzfvlvldpjvgg]ywqncwocnslofij[sakivxaniergaouc]nzmhdlkxeiehdpuok[zfwtadjlizjcauurkq]vlvtdicnyhseqbeo
+ssfmkfdeguuaqdbyqub[nbobgowoboytefejnz]fplpuipnficejfsuid
+lljnuuistrsmsjazzy[vccsskujvdwxypuk]jhqjqhfatmuedugl[hufmsmgjutabctabusw]zcoiiovxkxtualjx[zdxdbmbibryrqaubxy]tyayojdxepcpmwi
+zursgksbdkuzemouhl[sekbvoxwlmumyrdh]yxafewnovnxivyp[ajjditfeeocipuvdl]ygsuxuhtqervumd
+suxzfxizhyzbovsz[dtamgkleqiesxemqkgl]vjuviztkxzchergyx[tvazaqnrstjbdts]wccoiceucunjiuus
+gongygcedfxwncy[lxtpoagiqvgiryasha]elmaiygycycdtsclhpf
+pkyqsmcicydbmdagw[ayulcaspxpbtnegeoou]welxvngiualigfefv[veqtcxgkgzveegxckee]djmbhovzjfexqaedywl[okzphpgdqtpicit]mistlyyaoyphetsxqxi
+uwrxhstckbebnlw[yhflbfhsqhshieo]dvmzzqknrjcnwixhgk[upxuqrlwzvvsgpa]bmnfpjynunfbwunupiv[mbcmrpoxtbzcbijmmu]icdxewwtwcibjotjf
+pscqchwjixrhpzprdla[nzfglspgwpsaiph]xtypkrtleiujsfmcso
+llcxlfghzjvyhgill[vtqyiyrwujkovfctkk]arbtetvtixtnyavydg[ozxyyroceqktxhpv]maekylkkwdbgwgug
+bzagcsgcadoffot[demvhzpdjthrniiuvj]nwwrkguuemsdtvspi[sququtlqggtpszucm]pqaqqxpssdgniycn[lkdwrbxkrkiqdxjc]bqngsdxlxxvxdvqww
+wijjgkptnkbnzpqr[zylewxhygsxcrlyi]nanyoaosbxahyvdsett[kojrflwbltrombqxo]lfdpaptujhwfgrrnf[slsmmogpspgpuwnce]sihedfdnqnejevnw
+nutyeltkszkulqpt[cpgdmqleitivdtr]veieyzmfjafragrcht[nzudyhtmpopacznkq]dmywgwmnrieiohcuf[ctbktcgxznhoqoxczzf]bqzffvqraxpjdcvt
+akgmlcznqnhncjknbp[bwdbsrdxqqmaavngjc]cwyygvcrkagmmrciout[nkpzkdmflljxczogs]mqkafcpxslquyrudeui[clvbdgnkrjdpptqwq]cyygmkgtftxvsbbbfgc
+fxlpnkdskynkosqpp[efnouhxslwitteqrtx]xjxojaxrbampbcknga[ugewjlmzbspxhtejamk]nrtflumsbbtkejw
+vzrzmtwbxwfhyjvcmft[wrdvmieyzckycagwma]izyptswwlzgivtgyfd[jaujtzdzregakjk]cjdnelesxnhmgkqsgs[tjcsmxghgtmstejjhb]tzqsgoiospxadncn
+okgjhnzaxrtektb[sleqpxoqckdrsiwi]jzthxxszazdahvhq[mgxzdqnfscpqdoykr]doyvhvnmbshvkcib[jtrsntjktunoxxn]rmejgievrkrxaziux
+fodknkictemsxiicght[tdltamcatgnknki]hzdspvkbgipuvnb
+xhhmaiussrmwaxcpoq[agyegtzmrcgdrqiiv]akuxocgoidnfmkffroz[lkkfnmgryejzyvjh]ozdzcbsfmllaiyclho[vseayejwmotjhccg]qfqchpalcnaweyo
+imdrphyleudnvhc[lzqochrdcjotjojk]cwsqzuwoflalwatlsd[ctefovkyinrjchrwdav]cmnbuqveexpaxmhi
+vckjhzrdtpyynzbdsad[ehjwlyfbffzszrx]aizjcopfbdgrrtei
+vfkpxnrqufijmniu[wnwtwpmgtjonykmcsp]mhehavmuivmxhdelxa[spyybveheykroybw]bfzudojcjhzckbac
+egipucceijeltfoz[jpyjfgsqdywwjillf]kltttxmvrepsures[asbzcnwdqvfkfkiqqs]usnadxpcdxpjnifm
+svsbijigntdtxph[fabzbljmijzwvjlac]kieomhcpodzimrmqoc[xusohhfobyruazi]wxkjzzpskukqjirtjc[iwqdjijjucrslihqpo]faezwwmpfpxenvp
+sbjgcnwomllqwavkviw[pxekvxjtjbgjuouft]puzjbrwmyzsxclgmqsb[vtpnaljnxkgwlryjo]lhqzwvnpkzsdndp
+fyfyvifiocceoozl[dmjxamblfosaizav]smoyhjbuffpgqdl
+tlbdacsdiavtwucvf[npepgjenhdkgfavbn]hvbffufjyehpsoa[xghicdcxptmipfxlz]lvducqyymcqkket
+nuystaihvpelybkvch[rlqyflvholahkcxw]gicdfjzhwwocfejthx[jpeuakotyanntiw]sfsavxuyyulvuluyur[asngaxekprpfzsvxx]rliayxmjvsrnizh
+axquvvjwulrntbzzf[fddxxjwbdaecbsderd]vjtqwpjlhbdhxjoh
+cgeyfvgczhhwbdz[kgsqgnalsysssiyhqp]wqzhbjvykeuyjxgfzgg[mqkzclianfnifjdql]vbeyhsxsfmoeanpnipa[sxmzlhgrezqxsxzzcku]gwmgkijugjwtutmgj
+nnjlbnnasmuhskqu[shbjjccjlumeuigoim]ndwzzmbtazttjpawtzl[cnkpifihvkmsallifij]ccpzfojfxszmytbd[jtcogseximfojmjm]bgdltwjrqciyqfifkh
+pkdqnzhjzcttkackdba[mucwutymaybynvttts]nndhioamrjejmibag[fndcrctykpehoglop]rgxjwrpzlqapjsv
+nccuyvrhzyszqnw[ogdgzsefffyfoenfh]jnqnhnyoyrcnrowjmpv[wmlihztaoyedgkg]vneeegnosrxphish[uwrmezbsmqbxjpx]jgfoinwzlhyixzjzv
+kriqecrnaeujvuzw[lruowheuwnintaqqxcl]kcopdidcqinihhmk
+vxkblgxcmztnphdzf[ysjhxgovujrpagndi]ezgjwgowcdkfcstfhr[hpxrabjwpymyaolp]itcthqpgksvedadl[stfrippovsfrwglisp]eodicmiszqhwnuymlgn
+jznqrbdgjcokdqdlser[xemhfhnwbftgxgjukrf]mhcovplrxcsixrh[xyswalpqqvgsvmqvx]kjeuyxksnmydfkakhq[zcaydzhceioawvrlsm]wzezpqlhvwcgzjzigtn
+vedqtirgwrgutas[eegbxmhgykfrwrwy]pzslegjrbmdmeub
+lespviexybwomljka[dxvrexedlclnaurw]wzevexsobirvepgpmt[rseoofjlimvxwro]cyojbkugwdzjlxsqd
+fsdyxosfmlqfwoqpy[mwypxaxulrbjsfi]ghywyebrmgjsrshgc[lggfwxlpovrwthxtlln]zmtqqhkwabuhvtnabwh
+smsgvpvsfaxhocsyz[hgbjpapisxsillo]qsgxbvoijxlwhxpt
+fyfpxellnptlqfxvdn[hpopfkwhgcbjoze]sopowsrtqgbpysjfz
+qenbpbnrikfrnwpq[nmkndzwogcgtzhm]zhuslfffixielmjaqpb[dtmldnpqizrcbxixto]wpspaoprebgbksq
+vhjgpbgdoeoljigkqde[aqojnqwgpiredyffb]vmlvnnohhbwzouwi[rldlmezoquqcodxghov]bhwnyaxsnyyihhgv[gjjezirrmfvkpvfayb]uaxxuikjcwppslge
+fnwyhfrnoxxjpubwe[rflutoqwauqbztk]tmbmyhpncgpkzcqvv[dgksjzbgbuzlozns]psdmkqjzxdwvllstru
+vnrsujzctbuqnbu[glgsyfmfeuoloohqp]ybhziayoqxsbopf[vtwnbpqxhgsfguztg]xhgvtoqwouusyahedc[zcchxnllferklyt]avgtwloloznygrb
+rojtxmpwxsledhm[xibuxgovbxiejlegyc]xihwoxmzghhwlsthiou[ywkngtjxrhhozglwo]zfncywcurhmsfxxqjbt
+vxoojfqikhnbnrh[trdtiatykaontxlv]xenfwokorxaeweoz[itbylohijtfjgdtmkvc]butficisomglwjzaa
+wkofaduihyxhiyrvjs[deskgjgenvxxxupntfl]ralmugesymrxreommk
+ozsnpcdvkykxguzltcp[caargzwxildtwswp]capkmhbfpfmdegigg[sigilgehfnfxlza]trtpmbccrrkpggioz
+pfuhqwjjgyzbbea[yexwnbudioaikfsqlca]vaobiurftgeglgrzl[thjpurqfzaezqxfajme]seuekovcvvtdmlixf[mknpvkntvdftjhhhfgh]dlgqajapwlgdjnwybp
+jbtzwsypehgrmzeg[gwskjuqbwedzxfcehr]xpkfcuejevonsinxs[upnrxgjqhohlyeyp]dsyhrudzqsibolxnvw
+skjjsxxumbobzsckqk[sqlnqpubrayffzs]hseibigmtjtcgbav[khvlknemnqiekxy]fkzvtfscvoatsfqrd
+dozlslrkuemgbykifp[bzvnluuiqdffwtf]tignkmwpnqrnmefaqm
+ppxwcouehvqfwoenqo[rzmtyyvedmojatvvq]efcstfsjslpqdzvhb[tvmkwnuxestqxfockv]oqskydohbmayshfcihw[pfyulawxqbaiehqvmwi]wluhmctgrkjxqtlmp
+uvqfjimhzqboivo[buuulgcbqgfsbup]wqnbktwxwslvceegi
+muiuadioyfirjks[xviqxaavhdxjkkccmrx]weauetgyttscsfwv[rzgaefcngzklpjqzgeh]jtnbnuuvbnbjhdqn[idjpczmrbomwipkv]vbgcjfvyvnxhdsmycx
+hmdflkjbenjynzdmeqj[ybyntwgyyptizunn]ctijqxbybwarmfzpit
+khhocslzxicmlxk[xssahaneujvceofaiyh]swrjwipkknbnrrrig
+dvjvkhnqyifqzse[myleyunwsupcnfagq]tmtuvqikqxzdskqcgxp[lblzunblboznidegkla]eaqhztxpgjuijohkdru
+mqcasrzjqmhwbhbuyc[wkfahpqjhtwuiybqae]yzfcavhtmzofqww[goqblpzkmfxynuzm]bysjxjeocperndv[uwpxvnpxqhfnaalchm]lyfynynkovtmfsi
+wnczxavmjnfgogv[oyjxcsvrrgtpkponga]gzhjlzgxxjkoklgm[hsrwppehbugkcap]zayfyoqorpxefqenxc[apojyrhryhfnmksa]uwnuxprqfxnkzkhnbji
+iylrycmvbhpowmdvwy[oepptahrmhsoiskeoq]vtqctnyinxvrvlpl
+iauhsxbjgxiebvfhbw[mnjywcztqiajiqxx]iikcygxzeprjwkoniqj[tqycczkvsvlsjetec]mwrnosvszjhmuoiyzxw[klgtgkaxohfaogm]fsxjsgwondgzpdrbbcl
+bfqtwsviccqwndca[juqvrcznrlghmsiz]yttbexwewvvoehurkrv[mkugsxdrbaktcqf]yrqebvyxlcqjwcewg
+ytoteijopgxfmiokatn[oppmfhkktlewhlq]erycfxfafsiicbtx
+xlwbkbenrohodfnmuv[zarnezgnivnmged]vyumskttvpderhzbimc[hvbbjegwdeeqtam]fopblbizbmbhzfsdnzm
+rgmnnwzikyanthhp[nvnhsgdymtjeqzurz]mbqxtvwhpggnbcq[apeorjqexywhszrno]qaxdcaysefnpyviduz
+vjaljdyyoihduumfo[bpufjkyqjvxoprdwrr]ccjbldnkbzezeznmkpu
+yhbnzbxqrvzrguxcbss[unzjeicvhgqtwek]obuccrvnajbvkcmkzh[futhsovnghajatalva]humwbgtpqzjgordah[kvxmlpebzsitmnjfnz]olxhcyqkvfkqdxdc
+gsojkejbnpgptcgeubr[lgjcwaotpdouravq]neezbmtkclvcvkqncw
+qqdvpngddzjwase[rtgandojrzcpohlpknx]qdnxpiawdlklkscmpa[qtpzakubrncjzbpr]efpxwdvobcigtpu
+boxlzukkqchmqrrpgk[ggylyipkjdmbjfp]dkckhhgapbgpmygpa[yfetxkcehafknkmk]acqmjcsvxzptstswuj[atrjixpyeqordilgj]eccoowxhivjiljegqm
+exjgzzncnnehrto[qnhzvdfprbarmtdpp]rcdxdswituqgnsix
+tokldrsfwqqhetyw[muqzhystnflncxm]pjpmtwcamluvvvdsu[mpfvycofrzebemw]mcyzcqfngdrjaioxzda
+pqhnhcbjoqjvgqh[vqkgnojpmbawemi]lampvrpcpvxludprfuj
+vbdpihaehliobsbciw[cpaudttavwxkfpg]aidtxeypckfsagubro[fpaiuhpggzpxsctw]danwtjnlhrbfipgfbq
+beoecqatqkztrbevt[bdqoxnitxmdqunizj]lgquhovsnjuxqaml[vyfylkbhnsdjoezm]ediekdjfsnsodqep
+cnaisicaronpqbihlv[ajfhzrpysjdkxqpql]dfznlmsbuozjlqvf
+jbgsemiqgxmtwmdulu[ulbyoughrbpthdlvmvm]dyrxsdesjjwwfmvmkf[gogkkkefuecieipe]nimswajpymtzyleew
+haavjxuwhbfxlhfx[rssbpwlffrpnsse]chremerememjcbfuv
+losdtsrwrdvwzbjf[daaxdqsorbsgznm]miovihloamfmovzruxk[horqrumrdnjorfw]shihudanlgqfzjf[kqkwshgnrpwudohanr]yohqqtcywhqawfhi
+trrbdodxpewxgcyryk[limhtndawxliixkkq]ivxmixrjddqlmounj[cfhqatncyqijnvjv]djqfccmuvdnsylo
+yfdgkwopvrudzsww[gnyyumqxrftncsfuaaw]zfiekmyvpseaugfwss[etzbbabtbkdtgbwf]djmbswwpvfsowmqdlw[lpbkaarutdlovoptrke]ukztythdiepqgemm
+huwfnhilneqaecp[hdcrdcipgcaxtbfouo]poacbxvuqwkcilkb[dnpryjlynwgzbrnbc]hxillsnqqraloociaqc[uoyktvkfxkdkdopnbk]qvjeuapououufksmwse
+lfbrqypxgthlyxqzywe[pcxfduxttmzaxtr]gidsxacxodigyok[qyaamzuhjqqnpdsii]apgfypwqjpygzmdtpj
+prkahitlcoynnubnri[rqthrhhudrvryoea]urkuwyabxskqbsyfgm[dyagznreglcdincwie]okvqdhlixssurnd
+qrwefbcelgjgpzoe[aedkjvzurwcrhdimb]eaxqgpvkewmjynmek[nmfyhryoglbtdgq]dfnecedmtcrkfyq[omndbxvzczgnojpl]trcocwxxczcxrvjjce
+pphzgbbfbqmhbysodv[znbyvvkjlacgjrwlnkr]iyjpdjsjryyqsoblbyf
+lziqyyfhruzfpwy[upekwttdqzjxspfzcmw]ptdaapvzenixlab[wvsdrswafuftmysocc]ykzygszayfmgenk[mylrsdifhepnnsst]tqrbrvifghuesad
+jwfyweiiqvjfkvp[gsmzrlbjdpgqtbjakw]oofharmppecdotcw[dencjxxfrzxbuku]ygflsusvcrcdznc[fmcercvqncnxcbbwcrn]lkxshvdqjairdnnpz
+mfspfyoqeyalvzx[zwdzwlsmnktynntn]eeogyyanaydeykwd
+gvwvweokjzagobku[ixdetnocslayahccde]juncfldivihwfpee[mcpxioooaydtjmojwm]satqvbxfkxhfdrgoin
+yncjgygznetzrrh[uzkbwhtbtkrcxcveik]gehtfqltpixmsuami[nqhxycgquaihujx]ndtusluyzjwufzdh[ppvannvzrnncxpcfbyy]kgitvwtucjasvtk
+feushnbxghbeqsu[utnmthhouoazgbym]jmplltesvrbrllei
+ijwbtaksbikedfm[gjckpcivddahwkp]kubvhiqvktkkijchj[qocdkdejflyyzwukfrh]qlnixtictiubnfhvv[ygbwjbjxtvfevjug]dclcjonutlwyqaxx
+vqtafpvexofwcfssx[zmlfsfqivipeumubau]moqspxvivckaesffn
+hphwnfopanasosexay[ddmqqktxkrurcry]slvhqigvbwonriydzb[ynanjunpszocqrjqm]fkdtvygiiddygcrg[jgumgpiumyhktlhoeom]dkvwoureblktplcjmi
+skxhzizzzfrfausiz[nakguftuobnmkoz]buzexokukfscgmmfru[jhpsafmtolwlhvkhs]hznyqntiienjmspy
+ccxuwxzdxtfwbpie[shhongtetcwukjbre]nufocpasneteinfkk
+apfhilvripbjswmig[tzmvefmwonqiqdyt]szdbbwkkgaqmjkhpuu
+gmqjznmtepctxpcfnx[eezqztmqxceenmds]avqugeuarwprizij[uumhklvgcrkfozd]goypuraafiwdcvq[zueuogjqbnsqmjfmxbn]ahgjvoxojaumver
+payebfjnonvscnr[nzubpmedfuvkiwqkycu]cvsjgdyfvzippxu[gmiawxppknjjmvm]spdngdktoclylmo
+ruhhexcfvomrhibmoux[cjkryzqtfkckieyzuu]vkwptpezjrouirxq[sggqhkgstdzqikfnxk]zxfgbatfizeivfkjbl
+qqizwnfaajabeuskjdu[szujizggsbdhvihk]wxjmzdiqugjylejfu[dfygnnvhbvghhyuzo]yeaepigfgdcxbav[schlmqwlcifeqjhixs]ifaxsbjyirgfmwkaott
+erxreojjauvvlbsxomv[xaneipervgreexmp]itfaxjxrwueyrynk
+lgzbkiqfbgvdnyt[milmskrelgdjggvtmsv]clolytrsgczyppvrhkf
+ryvrtxkdydhujxapwjw[ohgtjdaeifxzuhoqc]yflsxucxibqkcpft
+srtfcyyruyxzxum[ygeoeyfnlufgsjxjm]ifwimooynxbrsxmyk
+rqbnowuwuernuxpim[zzumupyxvnbnngmc]uwurpinkjmkckxx
+ikzheexqxrfttoy[uwegndkenfvosfpm]acomhjgdgbuelap
+srookpxqmghokjoegi[lhpppxjenrjqiri]mjlixhnrirctrsupv
+onuiajxptpjwixyvp[otlnjwravarqmepwyd]hmnvzsflzeyrlxgpwwh
+jmpskqdlbuorcpwpqj[sxwomhbdyomudfaisda]nvzxtvytsrqqxbsug
+lohoirsglnfzmslubqc[pxhygduybnlqemp]eulzazwozzqytmn[joeiaeuczyygjtg]tnowqyhlrtmumjyrkp[lidmrorxkpcajufzib]ixxyjcoocfdgzjbhhl
+tmixfdhagahaqeers[ruioctblczdbnusokt]orpjrznwojfxnheoqbj[gbgyexwumyintxi]tznnvbemvedlpriyu[ibseuzmfqmroeeawur]tkggtpbcgdthcpo
+psnbkiuzotsmeklinng[qhigmmuxrpjmhuhxt]urvnxarbhbsouap[chfgrdkbxmgqzdccv]lbopbgjsbykugbzfp
+qcneczsyljovqwlnjz[mntyylfgsuvpjdp]osrpdqguiouevrdq
+xvfraxzgsypwfmswwwu[oyrmndtdginkvlzdid]xgtwrddwmukzxypxl[mcjxgiimlmsnizirzt]gliezwdntsgoxznesl[vwypsvpvcaeyzivjo]zigujupypwjqljxaie
+xayweakpavlylgjl[hxjyhvqwnyixcesj]yuhyulfybuhvqiinlso[eyopyetglenvqzqhnqr]mqcovyockdqdqvfer
+sovuasutixukkuuxn[jlvxhosfgqjcxnlmxql]bekpnvhdbyhmmvdhplp[xohnfpbaeqpbfnfi]eobpufxrrjaajjd[snnfnhoikinfhioa]syhkocukumqrwcgw
+vhgyxqcvafubikvakos[jfivvuhbnehuqbeyu]dwezavodqhdmujzc[naepoqzmbtiraxhskf]bwuozbexnzmpukgu[zyzfttszjkatnovj]sgkrklrsnjzduvvjans
+yplxqjomjxguqxjjix[mvtzncrxfvzjofx]wlhvxxzsdcfptbse
+ddqjeqgctjkvwge[cbgnejudebflhpm]ryzxhqqixwsoztz[hxszfpgrjuxxipt]zuvvwbmdvqbqihy[gjfkxykdstapfhu]bzprrjdyjlljxnxb
+xbnilldcerusgpejs[pvldiyrckxtgoesbti]ljqvtntbhxrryxcka[gdqkfyumjhgbzzwlvfi]uekphsrzawxriyei
+egwrxuedgpcppavzt[mbblqsizmrxdwdrio]dzozhiodhtlvmrjcygh[gdzijmqhitlbhfw]ewvkussgmsnietkiv
+oraksmkemjiapbdvqxc[vvgximcdecwxmpbjsr]breycrlgdwgnbjy[oqqtlhrvdyqesttwieg]dksvmqwavamfdma[fndgywlwmsmaivduv]mfweojoshjwolwla
+pqpeytynxunxdfyxrmr[krtrvrufaemrmit]kcgnivmpvqoagjmharc[pvkuwynulvvuqkif]mvbbgwnmngtralbe
+nsacyqfpikkoqqxp[jdcdddcdcylpjiled]jstcntnjxszhichrkw[vzfusiwojvrjzhevjm]lywsheganczawtqb
+rtcpdankaboogxhbqj[vfamnogaxasxdiiizk]whpyanngpggqutan
+qlxjojmpesvehkggt[flysjbaoiorosmpzcl]wgpxurstlnopucd[ewkgadgmllrewtwse]icnqidtfsqjurnkw
+oifarludgzqkwtdm[jvoeypeqpfivakqyj]dtcboyxnhejlitz
+npkttburtggvbsfuiwo[wvklzpiffhreyxkz]uhuynxjezspazaudse
+etaapuxqbavybsp[mndpkefjvjupccx]pdcnnncxtrzfvlnmq[ioehzamymeougocos]hcuxkuwhwvjvysbwdo
+fjrsuygcrtpzjsw[rhfrgfnkhajlqtqdp]hftckgnarcgoyfkmimd[hkldanmovhazpcpwhl]qomxfqqhkcuqhibrl[tpbrlhcndgbxuuzdng]knqmgdkpbljyufzazki
+zydstadkygzvjmxdhu[qtgaglwyzqncfbds]dqwbpmopxmdtkkcj[dcakbjdwzlglkpndtb]nijwetvoulkydqukzn
+hbxhybosbnopyxpnnz[juewibpcgkchnerk]pvdtzqclnvdbmwjk[wmtpskdcqiiythces]kbhxnzcnjxhnkuxwft[yetvomdrmxarjwsumqv]pgumogczlkgoiyn
+zaeaejxwpzbqtjiutt[eqjjobopoyuoxymtvb]glxzffwpiwoqcciyul
+rqrvuzjvcgaancl[pmxugkapydtxezz]lihcobqbdqenjmxyn[aemdyhmkusmchckzqnp]tgiijsdtqtqomptveju[mvaiexukertbkyinjc]pjuulfqsxhbpdiy
+jjygzflwfyeiecuztx[yrziwmbdidxrjsouxen]bqkyguqcejsvrkn[hzipqxzodrnsozfmta]xvtakmgzpstbsivyt[ieiucrjmzeupsprslje]iquppghgxqhosvjzc
+dwprarljcykiecn[wvdjaraappnffzsih]difkjyzhcyzgzjl
+shsrycjlblbrcpv[drktygzuxbooshwhute]fanflcwacerdevozor[feybgvfyookhlsoivd]ixzfmefkgvcdnxqvy
+rgogoobzbggsbeynx[nlnbqvcwdyzkbaa]prjegdbkocptzducz[tjanhuiieffrdspjf]bhhziiqbzdlkdmj
+yslioeknctqgcwk[szhjocwzxxkbdoykvjj]aowmmepratdcjkgwjhe
+yrfhkqrnxzzyvrocav[rqyqhvtneezcivu]hunxsvslxgfzevsvvw[pyyclulboseqorxoihs]akjsixprdzbyqlbupi
+tcapvmyxklqgewra[pwxrpoxdptxemahbrot]ncwuxwfzukwcatres[ftlzvkapguezyhnsgl]ermejyvoisweiqvi[wynjqudtjghztati]vhpdjconbhhejafgfu
+qkqbjylknnexhcziot[lwjbulvorpdzrhddlm]mvvmstxnwigtstskoo
+wncbdjbvzjvrrunb[riirhteyuokxshfmxed]sdcpacarelkhxkt
+xxcromhxgxqeokih[xxcnkwhvsylkpfbsj]xipnqesaslmeqsnu[rmzahgumualwizqnf]mutxgygzbvgkimvab[jypnhvoztklxkxyzsr]qhuxxsuvigbloux
+yenrilcccypxerlso[dttyspegodnpefcpg]mdhfzxgyoxozmgi
+jndnuwbhvaciqduyfg[xoeqacufaixieedbtnz]mpkkivmhxwxujcn
+majifpotxhylyshir[mhcapgzvvwadphfid]rjaoxsvqlqyvqgtxte
+imhzefgngckhvgqcjr[zysfanhwbnqzysui]zgogpzkcgjeigcwpv[jtxumxvjpotihpmb]zuuueogbabahhwa
+ijrqngygldyukndxhqw[xlcwaqfuzjigxddxjn]mcuyklxezeidilnl[atvcyujrcexfnknulm]txxgigzthrbbqna
+dvhqjqbgudpghndlvu[drhjjaxeomuoxxnagyp]dbeymfmzzevjydlzk[gklvfdcdfmnfvfslpfn]kssctqoyxognwiem[aojhwzwnegpnydzywor]eyrhiouwbqfpeoto
+xznkczuhsgldtilz[fhdcsnfixqbysff]ppbqiltpbrlhjliz
+zkfgueqzataygeavus[nymgcgakmtuwnkidr]ypuhovawsbnmlmpo
+lnjbdjnhhqeifmi[diompfqeocwmuqi]kdawxfqtkschlgnh[fsmxaerroipesmywqa]vqpxljxwpzudocn[sffzifosvfuytvdzb]fjqfwikuqzhzuthxzq
+ecyyeabjhjrfbdqy[xpqhxzehjkjhotrdlk]ztrkutdijjkmgzkuci[hwdxdsprkacxjrjjtxw]fbhbrjzwubhgjdwvpjy[vppgvmthaqkgzrzva]xuhyvaytyufxrkgeb
+tbeqtxhfqbbdrvwn[juqpksgrfsbsqdx]znceqzwqsfrhavmetys[khetxkkpwfmkmlvc]hazxybkgkzrmbtqshz[yavtnkwhxppnqwzwj]hgabdrxubvyvgniz
+rwvvgwyfgincgkurooy[wxcmmmkqpmtghmmltt]kgtqowxiyjbepqnkiyu[iofgybnjrqtngltajvq]mxsbhbkhddqnfowxw[ptqpbwojwfhhqyv]ymflkhgfnlagbxddzr
+lybbfxollocxnfxfeba[tvjolzzkenoxfxqrocd]vkgswdtqpilvbixss
+yurvqideiuqwekwop[gxsoytqhoasfouiasm]fyhiugkvhkbcfcshkzb
+rurapcltqwutrslalpe[wsqprvdmmtohamza]xmkzqeajamyurualky
+buprncslromlgznqper[xjefyfgkufdkspph]wjncmqpgmnjzmjbqc[miovfouyxitayfs]gtrmwhvmgcliwegeg[owvnsvmazybubxfrp]cdjevcehzrminnc
+uxhqucibxiemlbtg[dyshtfhtlbjreji]ilgubuujgmytfxeqzrh[zahfdfyzbhexldxg]yohfxkodjqfdzqe
+kqcxiuftivavvdv[rbijqqjbhpdcrtpcy]dijrgcyuoqfzronrfps[knxiljzdtvauitad]hohafhoofjhhhppkr
+vbanudfbhmhpqsdpdgw[ksrnxrccuenustesws]bgiuwlkckvdplqygpi[ivyzkermofckkcotkj]mhjspcpkcwsbisbve[mlmgilflysuxqmzwp]afixxyabstclpunrya
+mnniaptautqeenvmog[wfqrhlcbcwqhwzj]ccouhkyhrvdcbilshrw
+zankwrrkgkejsfiwcox[gcxocohqugmgpfoea]cfpphqzxdllapiaxu[ckfcklaedfbhgino]pwdqreudlymfoif[nkaiutnpwnsfrbzqyuc]mscstkuwovgypqtta
+dhhvqxovlmkpzsg[loljkdtjkdhgawrpi]ggnnhvbpshpwoloac
+wjepglephkicsoti[lvcfarizbzsudio]httbqobbfjoomntye[rrlwtyngtpvffaanlpw]moqdodrnstpwmhjrw[ujoowvjwddvlqqbbzbt]alyeqayozgbhtpsni
+okuneqgdkcjggazki[ebqvcuzvuqlvptuoqf]wvcvzlzipmoamnvjt[dncwvnvagpitnxtjo]oadxpnnqonbrrarqn[ruogikvmdiporivvzm]vicubwgqcblvvop
+iqwlvhjhfrfeayiclzb[mkafugqikswvpqehb]ezlojhjvdoyzwmggb[mncadipbeamkzbndk]kpewfgsurwlikle
+ewpiriwkjrgicwzfxck[iazlrpnsiynlmfi]srfoarhvphakmcyke
+faalgogxxzuylnk[zsgporpeqifzknzz]mjkbrrvswlbgdwhmlgd[mxfiiekevaaosozya]klhonreqfikygbmf[hhgfoolpnquxfxoazy]vcxscuxdbvevulug
+curbpzpilaczuowrsi[wmyxdecknwrspllfhpl]quuvzoiqziuotvfl
+kugdhavlhuperwafe[ecuvibachziwzefzn]oyhrdjgmqqauqhhg
+kcbawjisdirrwzv[fugffzgwmricsypdz]bouoevvlaykmgve[glivzpgoripmcnqv]bsmuvtuxrrzjaxko
+oyaxoumybizeabdg[quusffkxbmxajbni]lxxqjhqcajdkqszr[cpgzcteolyloguchf]zxowxsyvudncstwk
+xmlnrjsanwjmizgawvk[wlyncljroxswzsmd]waxcvfcwftjxbqxpmvr[spiqjeqpfxanegjxf]sxzszkcgibvfkgtozy[nmhjzcaophbfpil]nrwfxurekvqndbzw
+xunbkhekkwyvgcerevv[bgjzbkihvzlnnpptr]huqryhbrkspzxusu[dmrytcqghtbbhhzu]lasujmpjaobcnfj[ebofoyovhhzsprycn]belltiuhimwgwqek
+ocgmydyjloxpbsyj[wuhymkumnwwcdprxc]ncmkmnedztlutaw
+lyuydomeinqxrex[gukhcsjakylfwqodm]hdghwpfhnwjtmafqt[lqwtforyrybxbbh]fgyfkgvzyooifxa[kgxkzeuijywgdhuryra]dohlilkbkqzjsbx
+zgckhhqwhgctoun[ajftizwahkaxzich]wacumictegcbysyn[zzxxwgjdzicxreegal]pwquqtaijwqpkistf[vbombdxhjxwlboqdbqh]hfyfujedxzoceqewhgt
+rcpaadoewdfxoksbiuf[cmcgotvayrjllxgtm]pmkfrygwrzuobudsah[gonfdimjagiyayni]ctrukcwixqczltol
+jrehwmakkkobozzwrn[beoievlwkmkusjzangv]djpjbtpjpdcjsmopzpw
+zsgrycgmryfdzqyfj[yipsuqvzrujoaqga]khjrvsadupzwwoasmp[bdpwsunstwzgzawlu]wxaqnorkgypawanoso[iknpjxzhmqermgl]zcsakkbrkkaimtnya
+uyuzptbpmmukyrpd[vmbrbmpgvxdxryzcpbb]ltybhrruutchwbuuicv
+ddaeptwdykjibuffjh[ufzsfgmcffyxyyywdu]vrdexhgwtdlczpc
+csivzntivihwomh[nprwknojctjnkov]uzridiquzokufgzgjs
+gcpleovxfcyyeme[crpzfylaxfpuecz]zoomnthfoptieor[ycybuegqfkhlupplwb]qjmvwbggqxwgeuneph
+vwqdvgzzotnnsydivip[ohjqzjuzxyncdbenf]suwfgrjkasvyhzbtfo[qfalzqxllbjohnzvgj]mtkkcwoapdjaysfyono[yqdgnieatutxldqyosk]debyxvqoatdeibyy
+lhljheobdtmdowhx[lrxkzhxzdjmemintrq]jecllyatwkrhfxru
+howoydpdchixptjqapd[nuwrazvltwkshpvlg]havqlubvtfkhsmxwxew
+uwapzmqskzwiiqx[xtyqrsajsrljaajwedl]dgcalrxxdsfhqfdie[svghimwbcbmxqtqhjn]akqfoppjhaadsdbela
+slbymelmqscfinxle[ahjtgvzldgftnkehsr]vaqtlbhritaotaxvhpg[chcyoduevjsyehz]jncoccdngssgteldzq
+mmkzxzkatapuuwwv[odomzyzveadmmicfb]eiptpqypfvfroxu[bxfgwaezkjrbpim]hvfvtenhpyqiohxj
+jetnikaiyuylckwz[vonvdfgbgfxrvjzluaj]zpmcyjvkwghaiuxic[irxghevzlcccxfcrf]xicbllnxpzlcmqbgm
+chvpdcrevaqnstnw[sofvzfabefeacnniokj]qdasdxrscvlmwcchq[kcpxsnydjsoviwwy]bkdprrvzdinwsfxkien
+cwoamgnaytsfeccbqb[vyysuocjjhfoixrtmpr]junwfwadfbyukyvnw[lcwtmcbwdkrqngvqi]vevlawxbwoqcibmtk
+seboazoqdqpckthgk[psehbzatcusxwqa]tiwgrqjikjzwabuufp
+ouwlbqhczqgbljktjy[bubtiannyvmvkekhwbg]xvrlrmkjwkhzjjlia
+vatnmtxixznyvdvt[ftzepafpamiqpjulci]izhqwdhnqpyppuqiv[mjqocpfxdfcgpgmk]yirocnwnrzchhvrbfb
+eehvjfqvnwplppeg[mntocrytmuzmuvc]zsfcohpjfqdrtfbbbh[bqhzekffwgpwsbxd]zlhxmhjluxrjmpwkyc[imisxjdmeqavdvztbd]tjlwasbwbrddpqpgwq
+ygjdaucrxaqjcjj[zaunyucvccyhgomr]ifczoiwclbaryopmfa[ihkdhvovnvujtbasuip]mabqxvuzswimbitoy
+shzlhbrvjjzpyxfqgus[ykurcdmtryyccnysxi]sypivgjjgkngrxs[rkavyufibjkqetgld]foqdqcpatgctaehxi[jpnwjyafgkdytef]apehakogeatmfyalzr
+kithfcpkwdhgqjohr[vvpujusooxkdrmbcoo]tuzaiinsycjujjuw[fqdhhizbifrkpjxgyb]rddsmqvmitgdywh
+gngbozbqsfrigmuq[euutspovzyvfbgp]gobfhihxxwpndpaggx
+dctfsuzvpvttqpgppw[dnilcstcsxxkvwdsu]zqzgahpihqrhohqdtst[eoaatnenejvvuloknf]xwneniznbkjolnouj[gslnbvbmlwerbwvdti]jovdchklafrsncadr
+mdgpetsnkaddebh[gypkuqwwtjrzrhi]eyfbmxbyafuenmjdfvs
+nmkfscflwwiyxhzgzw[cixmvcvloqdyuikk]jprtrqwqtbrnksnxh[tngpiloomzgdmpryl]gwvmzbcftuthxvyqutu
+zkpdrykxtfvqneh[pxvjsvutuauoeducg]iduhzedqopyfgxjwpl[tmzqjdffcpzytkg]zvwkvgwmfhbqklyvai[scusvxtyjacnqtkany]xqsylxxrbgvudrdxd
+dbgodepvweaspcsam[vnqcsulaljbjrygsgv]gmfdwebiufbqkaofraq[unbumchixaeviclyqbn]ekpfqosiklnpdjrjq[nlcbhutxymbumqmwh]svtcirskdgbhfjr
+wpvcqnrvyjvfkfpclz[wogcckufvzviggf]oulptksetgaaholu[dwwcwhkktrhgkahbs]sobrvezzrrzvlihicw
+xlcqxbbegaulczmzw[xcllvvmlrdiamavgvh]fgipexbodvwutyt[pwhoyusimtkyswrc]mxtrsgpuxsjcqmb
+euzbhyalpjhxfawzyj[kqcqpulvktfqwccr]etzsqjqzeosiarij[kinbhoflquwkkobs]jvcmusgezydgutda
+lpxgexsvlfylfjva[wnzhqafvnbcbcoy]wevgfhsjrkdgvnbta[mvmabgghwicirugb]ctcyjxzknsnpxixkc
+hkkbtbsnyzrlsuyhwov[iurtqidtzfwtfhiltt]wokyylscmppxsdqtnns[swtohjqkqnmzxon]mthgkxltaceszxm
+jernxnsovguhkpljxce[twgyaawrcpjpnxp]rvjtstsecwlieaeblp[tihicijqmcrggggrjo]igcnuyrhtaooygb[ntscsypsxaeatyj]aslpawlvpctyjzwxhw
+xoooyfocrwvsumzzywf[rdovvrfjqhtuiro]eudcowqfnmcvpkdpv[hdyyadaesuxiykkiztt]ykgxpvfilimofxfj[ittajdlxgptkzqt]djtaivnjndcktuvd
+usxiyxinxwkgmdmjlq[quaspjeawvvlagjmla]sucqobcfnryoftyttwk[knzzgsqjkwlybeebxrg]juprtecqapdfbkk
+jsbpwwkgsmydnreqkd[abmspggfxrehkgk]nzhjbpwxrvuwrsnilmj[qqtarhezcecijunbk]fzskmnquqoivtsaxym
+mgekjguhkwyfdcse[ydcdycgmcbzvpkesg]yuzqagwvmncdcia
+wrqntmycrllbddv[fzewvpbxklyccfkqsed]czcxxkwfeberluvi[iupovtrukptjstnkex]sukvpgublggqzbecwz[rabiytcgypowllw]dfitoowyhfxjteip
+wlqzetmtxlrkydh[dbgzuittqekewyc]vsrigjcntogidwtft[hscoyacwvjejmwxxv]vpljhuinywgbjnynxhj
+ydpusekwzovghcojdp[dqycroxflpnyqpnai]znbszhqqfkdbrwzrxr
+uzfunassiuljodnjr[tzrbcvrfieeocdcn]bmsircirorbtgydp[wcxinsnngyykaaavhk]xxqbherleuhjskfyu[wfklhczmivpuooytgz]fzxxivrumhumdcdt
+mshsdecfbmkjmbrx[fdhjzahrcoydrvqg]stkkbwrlhhnjzts
+nmbyxmysrbuejutpzn[ruyrvzgagqgybiqsn]atkbnawkdkildlbg[trjlpfbjomgxvvmzowo]gbmfxqgecnzrwowcm
+rtiylcxgfuqngjkyny[mgidqfnevlylaukbwts]vcejabirnbonrowlea[cancfhwbwdlklwo]ifsehqpalixvinbsr
+ifyzslyhrydfxbsb[nigcfrqizdtzetpncxt]svvmxecfemwefpgduln
+rtzslwquokcygmdws[wvblnifrxmomsmdwtx]scpjyfputxvatko[mffinnpsxezowdl]bsmsjqeowsoobewko
+zllghkuucklrmwy[ylrocgxqrlkdkotl]gmmdzctugnusdsrwwhq[cllevhgqwlszrhlbv]prpeirpbwoapvocm[urvubddgwfmmkoyu]ygmtwdiwvuepkcw
+hnqlptboqzzpksz[axumkjmbmyxfokki]oyassusfzvnzhlobbme[vbnbcjaiiuqptfyct]oagongosnahrlok
+vgsfvfwepwufvvqbo[pmdxwkxldxhlqlqrgp]nmkpknxluiphfrfxm
+qypkqkfcicanneyvvr[hrsgqfwjegdzfmyt]hmsppdjbdxxtagyhfkg[ranuabbxvhlszpmlmv]ajsbmdayixczrhy
+oykuwlbsupkaaaioxnb[cemxnilkmxflpnwp]vuvzxrfcfhqvmzlzl[hnvnqhipzparrqm]rjzhvguxrwhwyzc
+mdjjwbprbzhftjae[clpvjvsxatcbzsyybw]thsopmeuzvhcfppbha[hwbfzhbptymaaoywwiv]ybsfudfmveobwaqkul[argjxabjvcalkomgp]nogtearwoznoinj
+ngsqrfixojvtgzmfx[dlttfdsvjeppwweu]ydwjjxycbpopceaj[anlhiebedcpahqihhd]gtsexwhwnpmpqvdxa[qflvviiybebmusv]epuouytlbtacnsnz
+ouccxvpsqnmxezei[vmifqcpthebiklhid]tszxpvkgldobdjl
+pauvqtezlhvjejl[sczynxdhjpivcogula]llemqpnanorgnkmjl[xxtooqiwqkcbvmp]anafyzhbzdtpcxcad
+gngdmikcpsuduzdrd[fchropeunoqkngns]rfdquwdpxtlfxscvhzj
+otnuxdwoeqotcogo[jxyhojuczdysbfvp]upffjmvriabbalmlqmx
+xfjrywdooyrkvifzub[ygubulhifdmoytb]hjuvaxnchbmrptw[txcsgcehrbszmnzl]xlvcnwmeztfiyhlwtrj[twopxgslxaqihinrefq]tnbdtvwxxbichal
+bepzmphvahjuibuvg[zuoplvyeupxvzoprs]qgkpflfygaoxuriy[lgugebpiqnkxxqhz]kqhkfkyiqigodfq[hvaktogguzjumlga]gglqsklyzznufpg
+cnzflcqxgiepnsmpxt[hqbdhovnvyecljhzx]vawynjdylprjdky
+pxhlvphiiyocalr[dfhohrjqchpblygac]oqdjtliamyneclgc[pzanjswflkxxwvnzm]qbbuqtxwodofarbbl[kiqrgquowfurmiqlqy]kppecttggvnsuzaarwo
+dkzdgkqnfjkadwk[bjzvvzwnbuhkinvc]xhiswkplvojtzwwvyph[qroekqfwzfqeqcfns]kyijvgidcjeeenhgea
+mqoqfigmgtagmxjt[qojoaaqyptscsfmd]zkpsvrsxzwvllxqpi
+cdlfgkthideaizn[klvwdqakbyaunqfxt]egotktupevsisej[olkmccwoqyqzsnuv]szxkfqjshuwyqewmgm
+caanbkvopjahzmqch[wylutkdesribnllzbac]fjpryexeaxbopdjhhu
+avulisxpjwlldll[tueldewuwemaihrw]vjzctwcvzpyiihnlrzo[cjdkrvxhmsglzllbpl]gcsruqwlokbdtgucp[nxubgtwzjtwhtdvbjuq]dpghqlnwugoywuiqefv
+rcfjxvabpkgxhlvzf[ftlsstmreroxhmuw]gcacbophluxzofii[vkkogukgydicpvdqbzv]dvalzsrgykitiqy
+sufacmzxrfdwlivdngo[kthzrniwspkdawxz]rudbmasvirscdpkpr[pcielclbxsbfedr]pneagajkflznxdrkejk
+qtvidydakxhrbrli[arccjldfmvtskqtot]uxldrdgmtilrhob[mfqcpjzuqeibckk]tjubrbrdjdakrdud
+cbwxzgidmrnjqukyl[uhenxvxtomizedkxwt]pcpeskttqdttvibym[egwkoivkdehfrlzz]pjueedjamrhpsnuulj[ccamvzizqyunxwbojum]qguxpdkjsvkuxiskx
+ecwvkjdmndzmmivxnsa[unghjtnrlreamcw]fhxvfvlthzqifvftbo
+tfzpfvojlegclkt[kdwzmhrpxckfknvmdqu]gnpywcujxlgishx[mhxacejyvmcleasixmm]ggmuguvhesyqaijlv[fcyzsosernhgawagft]rmdvdnkuaworthwsoi
+adztzinzrvazerolcl[vypxttybduwxgrd]mggcsuuzlwiilaav
+qnamzrfomzqqhozg[zaoqvddnqodpztm]pqhditszsmuiakyelb[sfknkiilewablfnt]mdzzoowquvhayznyl
+ovvwrhkbkeqeatbcke[wtzdbpzbnlkuhwqwfz]tupytpbukmuqytc[fpyravdsbihddaubymf]pjiotvegpewlpke
+lubqiczycurwvqozz[khnsmjxfeogtewtodhj]xhqksdbozycjszipd[zeptjnsjluccoiuxm]bhvktxgvqjkufxhprr
+zflhauqmcaiwnqn[jhyeagjfxbgnzkdr]hdwykmzypixrdykd[zkqqugefunjmuhf]ykufgfmmeaapnag
+eqhnlafwpxhjtrif[ixkfnqexzmbmqencp]npxnxbzhuvwqnxn
+kokxqtbaemcjzlrioa[ujvykzotvzlrnfg]couurswwzchjzbxq[ympswhhwlvpohjg]wxcufycbxuvmrqekgq[wyljlkzgavafrvjuesw]dmgjejauotkmwgw
+mgxyddqzqmprxrdizf[clocszvenjingorxku]zsuqrmnlgyucrgboe[vpenwatmulopddv]expnuzinwtlihej
+xqhirwwuirdapgmyk[snyixpqruifdiqekwiv]zogryeticrubznbumf[yisxpgzptlkrmeevgqj]qrebxwojumgwfnf
+djlypifibwpydcxrd[swxgzdsqfgksqwxjxfk]kbpzzqheozbjjcdpor
+uueutycrzzvuhvniu[nqhaoxpjrlvrtbahncz]tmxvdfxvmctcfzoqiux[gevrghyecnzmkrujmeg]rcyqojjmpxkpeulzl
+quyrwpchownternlfj[qijougzkibnhwzvjk]lmrfvudpzxhshukhpn[jvvvelpjnyxpwvo]ztuckjcxyxjvqop
+ueyerkamylcyhgszgme[kpqbsxegdljldwjdxgp]afoamkxjljqzpmyef
+ryrrppctsvwsxjslb[sbmyepjknxewewrqfsa]gevwiiwpwstdkruplv[ilkxpskdrntqvofj]srpukrzanrqhkprnu[jlujnhxksrytsdazgyt]fcxyuaotwykaosgnvp
+yhjojsuhfhujvfk[nhdemperlpgxpud]pdvcrmhvfeudrea
+merahlzkjieamdkyky[yeygykydcucbambmtz]tbujyhneuvzacymtgrd
+sgvvjpfdcsriacwuyy[rqhuwizydqorikmqqlo]ozsalwkmuodygrh
+jfzfzodtrqrrwvlr[ukxwobjdyhtqrqr]qzmrpkkjzqibwekne
+xbmixvpzovpzydwprwt[qnquthrvjmqtpzb]utnmpbzmurlbpfuaqu
+fkfzgaotoffusnte[ajzqatzkpajlsge]hamnzapphynrppmzwm[teysbhjrdgatijve]aigpcjplbknziprba
+jfprgbpaubcukcmp[kddnrlcjywdjcud]nwzsudlamqhzrwlkh[fuavvscfxpynlxexr]szgousvpbqawlkpcd
+idlhdjsytmzcwcu[lgwbpjcyvpnecsqfhr]sjkxaancdmlpobiwjr[gzxmhvvugpuywst]oodlrjlodknfxde
+bplasvzaijndpfkr[wkvndyztlfkelwckt]kjkbnawptptvful[fmlqcligysmrzes]ujvljnzkznjvkgmsvqq[ezpnsnwrujkrbcmggsj]eghksoebyyfnptgqjul
+bjwqelavjebvqjroszz[jlfwuhjucugbvczdbil]xxuinqhddmsrpukke
+tgbvekwixowohur[hctpawxelfhbtmwc]axirbbtolsqjclqo[xcxiycbryxmpimq]kutifmilczlxebzxwjn
+dvxlbiymdfdrnnfp[nxrzuioymgfxqwxo]qhydikbrlhqldbq[heutjkmrstetknylg]grzklzcisupegmbg[mlvaswdotnzowpqw]inmxskvrovknbngkp
+rpoicdzdnkcxqtqule[gcxezbuirojvwliv]bmnlgvtpiyfhkukpj[gtqavwzdzdmqufnce]nwnlyciquxxcwpte
+ubleorakkrqlakyr[kqwacjjutlifarh]dgijscrhnsrsxqhogb
+niodmrcgcjrihildfw[pmtshihgrssakbouvf]otoaadrggvnzmetmyds
+jczcvqxamrdcpnjl[pitcvywsuryykynqxax]zmojzqezwxdnwrcuif
+nbmlxeosjvvtihmwt[acformsggoqxslahuma]nmezephkdzghfvhiqq[epizeyqkmseenueefiu]alkiffsdvovxmejkunk[hiwyudbbuondtsqjm]wjioowmqljplehwe
+hlcllqbyvenlzcfgz[tkddqsjxydctcrcuhq]lnqsaupwdmxeptzog
+rrkevyquvdogauq[lxscinoclyrawtkvr]mbiscfistpoutkc
+lwkkwxlifgwimrupndu[kglwcbuugjkujltz]rrgozebmyxigvxefa[hxbstqxfjnzvkco]rqpxaurnjtzymxkvtiv[fgbvzthgqifdqehisw]kwvdvfijmbimizl
+yejkpafozbchconq[chghchxxcybtarwkel]ensiprnejdyegqiiu
+gsclugkgowknjfkewxn[pgzgezavhgcfjpi]wttjlezzjwqyyzgzc
+ndgluxoxlnekaomi[hrrjyflrxyetpub]kwpcbjgszdjimqfgat[ofdwoxrgxjrbxhgep]rdaebrkfchddavjeqap
+vzlsrismjdiyfqzcieb[fylncgldcdlrqnbpw]hyrajwsfckxlkhcboe[rxqyolmmgairjktnk]xhrusylermeiiolade[ifiekphfwfzsnrb]szyunhntoeymkuhyvru
+ekgeyjojapzhzaxfzhw[nmmzpmouaheahibz]skhvrmqbvgkbismmmw[lpohwytpsrtegazzkwg]cvyqhgsyodcdoyandpp[rntevuwuoyqnhkmrr]szsrcjzpstfyvlf
+ioykyddusobfdscqkmy[pmuczfvmkjokvnoxrz]osyjyicdpcwzxvwfn[gimnsriontvxypcxnja]rgedrrsbgienkkwy
+oktebiadpwprzrv[wgprjpksbgdyqidklkf]xhhjmhfbhpszdqu[rxjenkcvcswchak]fxqrycgufsqtbxx[pyxvqyqnctpzpggzrq]mmncxhloifiifjpnitw
+xbqdzlpfxcznmczfqq[tpfsrcmbflynynshgt]whfhtgfqobzaolpx
+hfbetzccpyqauunfsq[ihzoakqpjosfmeff]xvgsqfzcgxtranek[zbtxsvwatcplcseik]vaidkyuhjnsgptupyxq[vprljemlqmphnaau]vfgliasxcpdyayvfddk
+jetotpxiincpkjxqmz[sfwjrlxbmpafwtjuy]rasahmylsaswogm
+ipseqmdzbeeqjsnvo[qxgatjiqzhwulhgkjm]syofcufklnbeobppx[lbmkistwoiolecjh]qpznlrllrkhxrnyvf[zbhzvyjqzywdpvh]thlrfwmziexkhxgp
+uqyiqoznpgsjaaftzq[bfmkexvilwsavbrnwo]pwdssrfyvkefanxnlfr
+yijgsezauqoevphn[qboayuokxuaztxd]peepgblucrlstsln[rnifdfjhxdmtfse]qvymgyfdvcpezxdgmen[qyorafkexhajsha]knaylffgeufjxogyel
+qlydmvzjoavamnvot[napvavoknajlvmdd]wbjkbdpjhuhxybgywu[umxthkfbtbevasmekcr]adnybcirbnsyplp
+qshfqvkxfhgsysl[tzlddkjozqzcpcnx]xjkhcdozufunylwdzs[smgwthhegrzgufktc]myfufzjuvrafwalrnn[jhsmzagnqmhzscu]dbqonhtmhhdshdyatcn
+tcdybubnklvamrjlxqo[naocexrxejgekonegma]hlejmizxmhxahxboitw[jteivhxwxftlyhl]kvhbakqlmukgslgvgx[aueqotadcogcmhqeeec]igrfisukejhgfmdvx
+jowozfzspexprygzplp[acahqiqszrcdhsylwwa]ppdmkmcrzpzbflgeld[etwowmhcqhkjkkipk]gnilcosjuukihcwyne
+ynmgkfpaiocmkybwkz[ztxveuhtztuioruvqbr]grhetxxldtoepqtm[yrucewbvzbphefuf]idcnnpztztemlywblpm[ltaesuehnzfrsflac]bbarkjzutumhskhf
+mckdhqphoehsqgjzpzi[eiretkkiklgmfvohgvs]fsaipzocdnrwworpfj
+hmdbweapvrpdkhqhr[xwpfkaaejitfikqgy]atylpiafldvqsunu[dwvoqhxryfpiegidm]dyvhcjqkgspgnpw[nkabxwemccqznbpdq]ripivpqpjrebswqspd
+xdjfwlhvdtcxqvfzrlh[kcjkplfasydesgzkkh]ilfrxwwjtpmshhcy[gsobusiljqgosoih]dgtehabeomwepoaaahd[gikvtnebxclexmsc]nkcvdazorstiymosjv
+fjjpjjjikuarjinig[ytnbvaleddhkesaoaut]eorhszwghtnmzbjipie[fuwkcamkegyilppagl]pipdvxwvkvvvanblh[ipiaupaojxfjukjgk]purmzuzammwgfyle
+qclqkkcoimixsiou[psabxyezhvejtdodz]ejzppqfiokslbdzoyo
+hrrdaecpdytoxkwdynw[vhgsgzqlqemkdkewg]yeqaoolmodchmigyxt[whflgmjarkpzbitpkl]jqjtyhnxkklkzoa
+jxdsjmkuplrowpkta[uzwnxgrrcieqvoz]vtwwzqgvdeornoqxmuw
+igfbnfbrrkfiyngqux[aajdqilzidsasrthcnc]xmkzmvqsexhkttcd
+bmcwxzeodkxlxclq[zvmqvljaabeakiei]xzujkuxdmumimotsaps[xuhocncyjxiyavon]hslcfclmfhfxxwwrln[dfmghezypyqxtwo]wxaxiadxkpvuwdl
+xifaalrmhugjejbl[ioovxgzfgpaqlyt]uayfrtjeutfeprmb[fknrvsrbeucxlyzauy]geowvgcfjnbglmrxp[ocnpvwnagqhgbcvoupp]inzfrbwlliwgcsqgzb
+wccriqkjssvswvpgx[apoeqvsvtniwgbt]wfrmnudgajwhkcy
+mbyargqesqkprhbtaqq[tpxvefsyzwxvshmict]dxpxmxcluamxmfq
+jfxpcnpdgytwhkfb[kdrqmtogtlmxqmv]auuyjbertdteoho[tdendgogvoevpnevzdx]eicpvtgotdkcgwbd[ygcvethlzayahhialf]kytibwtgzhuvvsjw
+wfdfxjuqfxjbnjpt[mmaupydmuixzfwebpjt]kssauqawybxkfmcu[juevujxyjrwzewzua]eladywlrkxglizgc
+qtkmarqccnxwoqr[vzmovjwxsbhtnmjhqjh]zycttmgyujdefxxfs[tsmxkcuqircrdwtsz]uhqtftqwcxreyvlvff[kwsyvatwweenxdvqum]sjmbfsnprqixqzx
+rantzkbrnpwuuvqbqn[qaudnwijvntnxlj]tfdbqbdepavxiewo
+xwjmsobvbyejpyjkrz[ozkgsxhxiyuejjr]etkvofiicvcusmmlg[rmkhfcaxfbdltnpwk]swklpvfmxmlfhls[iexmcqatbamzyvxft]djvoysjwetzhocdd
+iixngfiuncqysuzf[ehzeqdsqwwjrubb]udkdvfkdtxbddruub[hktknkxemrlnbxwz]qfejqmapclbzhhe
+pmviizplesuakfc[woqzewypfpcaiotx]xatiburufdzajqrv[ydsakwhemrgnxgqyli]isubtdzpkcgsoas
+xxsqvodorzrnrbzsvyu[apejbcvdjuyujpxewu]kfrcogbvnrkuykpgx
+nkvsmhvlyyweggw[yhcjceblmlzpgig]smpwtbqsnklgxxbssz[aiivebyzjnbelkphux]wnaojsgmpoiaykznpj
+xcllttmboowsgodsf[dfskztizatqovmat]gpzyyqjotpdkdemcjon
+drhgljhvyonmqzkr[ohxhjhvlrpodxwy]mrrhedvtgdxjhjv[golpxgauowhwdoov]rdmuwnfurqwssgth[atspndhxuuhzadog]qgdswxcwwahqnpx
+uvdajunzymasgjc[onqeemcifirbxli]mrmpwnqojidvwexxrjg[vbpwisdwqtiteawvdw]rpjzhfsfhrzukstel
+owbdsotbsjvrwvdb[fclwyuadozjjeyvkz]uzfygewxtlgjhmfpyfy[qlnlpqspocvcpqsa]fannkpftifaoeszzu[pvwpbdancbljmucxql]tlzusxlphovfyfflj
+mmtmuzzulxmgxsmf[djwlpuwrkdpcbvv]jomhrdgighcolvayu[vdxrekbfbxgdluj]mwkcqhjhlrehesmwft[pigmugayjtdhtpweyo]lemzwycbgzzhvin
+eferdgkfaasmkyi[nopnmqjuuhhkaclf]twwodgunizovyvydh
+baddrprmgewtmypxsp[yahwshbkzattrry]tjjmawkirxcxcpkbdr[kcptwlmozcgjszalueb]msxrkbrbcfnflgnqe[amwmeanfnbrpznz]jkkxzruebylcrqkvyvk
+kjagsescwfjkqrykx[sefltugsdwkybwj]jmebeveaticpwddxbk[ktfnvedmpvqufsi]zxjysrfpzfhngjci[yifiorzwyumqotxoch]afedqtkmzpfwnacb
+lelwtilhzhzslvzo[ehvnqsjxemjrcvbqyf]ovygwyyazlsulyzhjja
+gluywzrxutecuauqi[vyllygndlfkbmgaoefq]cyucodjkxwauafwfxw
+dflaghirjcyhylbcenw[dndkrtbxackpdcphny]pnhqmjxdzkjycmdo[fryelfouoaesejoq]tdhcacxuqwfspqevq
+yjnumjjyewzjnakmnhv[ulycnyiyvszhifgscjr]xheytyiiyilswfhqywd[jxrndqsxmwcrpwrfu]jquhfnyxudasmomnpx
+rspuvdkdzbrbajkj[dcfpcvzpbodrxtl]xbskonezgtixwjfsuq[gubkcjizpgfwqktcc]ddjzlszkolvwqsrnnc
+moobncjrmmfonnmp[lpbevkcuzvqguwzbzb]pacppeefawsktrydyqd[wayxdzsvisprqutg]dfysmjhwsvnavpixfl[aphusnjjnvygqikzbz]qmvbpeopziujlsmgx
+wfujisugotfsymh[juvkyhewsnpzualwau]ljyuwiidwytmvinw[qicxeddblcxrsdrp]khdooklzguadokmdbd
+wdzzexnylrbsniulyv[nbehnwkwkrrkbwirh]ymyaqhrhmbuolmtbz
+hsxsderrtdvolsms[yqxhutbtoodvausgm]eufwcczbwgvzxsti[gqewnssdahkfambauv]hrnsadgqtzcegnplnce[fwzpwvfptgbgaahdn]hlvjzdqpvjezifpbh
+gtnyrilnfgmslzfju[qwahfyniqetvzpb]txlwtncptwapogp
+xblzbbrwjoudimv[grtjaoaytdyffbl]jojuhhvrrgbymoptzi[rgpexwvtgbswbzp]ysyfhclvndltbnnzg
+ggtkfikxhhzevnhpkoj[egndynfnwwogwdttwg]gmdytpspodusstki[zokrsgoycmxdzrni]jjtmaoztqkdpsnty[ishkqeyrmckkbcug]jkkfuvenjvphkmbtk
+aprzrupkmqzdgncwuq[ototomaxhriosvx]zftevshbmxrjingy[vkrildlncmbvbfi]wsqygjuriitkbszg[ncmxdegpxcdvtgau]iauwjlqoidqpkzkeazx
+klbfjwxkpqniguvq[wymwprcxjujljrexcg]mtjifypvknsiogypja[tfbqvlowzqxqefia]azvpxtyghflrgdo
+xfiwnyfpxzaizzzhp[jsfakgounppfocql]gcgjvygypcgzvnu[qmwugdkvhxjknumcr]ftgvxsqochhihwnsb[acnafcpwduptldm]zcstejwdgasnvehwyot
+repltebkzsojvhxy[chzhbjyllumckfluof]lhdibxgatvxzzhzflz
+ilqmrorgodzrbfesczh[udnwlveyxsalbxf]pptfzbjvkxksoarpy[wffmfpwwxmuxfmrvmg]zatihmtjlhvjbzdwr
+gjqtwvpdnhhqqqvop[hafmfvvzhqrnugo]xgrpicypdmzyjodfv[vtykgzaxumptsclyf]medyaqnemgrawbizrdz[ykkktuzmryicpimqgdk]wyxwdmdtrxcpdqhsrli
+hjnariohxtbsthvcwj[jqplvjyvfwbbphien]yyogxtzdtzodxceve
+tqajsqqmgynvntqf[wkovdsdotmgxjmmgmoz]kyffakcqgknonqj[hvuefibelljpsvaa]santzrmyhmmfgsac[xevdggsuztwdjllvmod]osdymicaxgknwafiyhf
+xgangxswvkcjsek[jrvhyhmomvqblucr]mhakwjcqomofhbdt
+vuuruhdlaefeyjtemtn[rkewcsrolbjkvgnjur]ajuzfefffkgdtzfmfwu[ysqkcwziamybbcghjb]vnyxgeftjtrxeokaqk
+ytfkhfnkxsuuddh[uorumsswhfhyjhnoqe]mlmhytefajriiwzln[ivgrtejpggcetxry]gtwlsddrscrxepv
+zhsugwnutzaxunnfbj[oenidjfrxbnbnevjwo]wnscklrurlxquzhuwf[fswcwqtoexgrdguawj]knactvqybzyjdjdkdkd[hwncacnowaliolgzmlh]xcqfyvhkoaxjyrxggg
+vfcdutbbpmmhmpty[glvdyxliujvbdqr]jyavmvfrqjztetyn[rqngwyfxdxofvqwo]xqcpmtqhrkoctux
+zfeyzggpwatzvvr[mwnxvrajqdtijeqm]kyprmauvxauaeuntay[ivwbqplblehbbhi]xfasnjwliydlrcyk[jmalyrxoozbrang]lksylhfvgbezkcf
+trqdnrlvoqyqyvjt[ekkkwqklawagqqprz]zaojypuwvzdghwkye
+bmnmbsogxhtpved[zffxeokudzgkusvk]qcuxjdhqclszjnxdhd[rsjdhjczxtrghlxwh]vpekhuzoamazdzgufb[bgtmhavdkyhtwlwcqmk]qucpatddwrtjztpxvi
+hwqfyynrncmhcsmrlp[vlaqdzxwrpawflemknd]kmvyzqfvlouluxelul
+gnzpgjfxtsaiknapn[rganasfzfnrvxir]ooatokkxjxhzxlpmb
+mpedacmqtzqmwqyfz[dcofwyebgsvctomzomk]vpqmhpoitpubjorx[thmfofpuparhszqe]clvrtngjajielkxre[mfcjhfugpyymytri]moqcfkrpazshwvh
+fxskejrgulaixah[cwshxkapatrgudllubb]vgykjzaukwxoyeucosg
+mgfyakavdeymyzxwa[dsvhoxfiuxixxva]jsxfqsnjgroxbmpiilm[kxkakjvwgwflxnnu]denqicbsmzvgtcxm
+zfqnynrdbdtqblxnww[nzbnvcjtsxrdmasqtn]yoganlahispbjdyxqx[tuqafqcjrxnybeksh]imhkfmqdjiyfoqp[oennqnvdpveoija]vljstbhqatpwvkbg
+lpzjqfcipceweps[indnzphetquilkxnds]oxyivnjttcuectlyfy
+tfhhmfeomcdyuql[ioclczzniueodbtpbrp]wuiujzhxjbgdlqbm[iciypydykxiyqies]ptvkrvkragnibssly
+ybllxqqxzjlhskqi[ytsvahdhxgwnwql]pzfzcnbxiypkpytv
+cchwtoevekjgyqqs[kizgrwqwbhebxlscmj]tjbuacerkadppftxdpn
+nofeoaawaeoepwekxty[mgapdpmakihrfzlfvpf]huhzkicazfkvjhgdvsp[eqtuybajdgdthtz]opgdgjzkrfejgawxn[umbakkosxdtfwcfh]dhukvukdwsevvcmt
+nhzmrmtfyhjpvbsi[jghcdhdrxermnhnrg]sasarolrztffxrvh[tafrflhiydopcqrx]hbrwebrzutugjnj[ejqrvlcpqxtiuqho]xjgvbnuvoxjdcpx
+dkizkqalwbetbepak[detgokxgkgyhrqzzbqq]rmwrqwolneotsyvq[fpffqdefoxfczyfb]dxwsppdngvyskdpfnbc
+ygwbidlvlgwncfy[ouryypomwfwmnka]axlhgqfgvrfsmbs[zavmkhmkjzvpzlxpkag]bfewyvdthrjzmmjs
+jwyxcjasntveqmblff[mudhpflnaxhhrphuwy]yyvtbzbohccozqj
+ckfocickdlijiur[fejgtsphnigervnza]owlznrkbwqhkskgebbx[alnbdcgnktmjlnhig]dpfomgwzkqrpmicih[vovjambzftywljbxrgj]ihljubxxgrxrqpn
+pygdmdnnbvnjlkacjfz[xwefajgruywjhysd]soepimqfbbhekifv[frdrobvsbwwkcytfv]aszgyodinewnrfdhh[wztqipflzlrwmpxefga]bxviyixobyldmkln
+qujnmepaefnkxgrrg[yxdnlyihixwasibuy]qtmnryswxwzkuqw[ozuwcixlzlbiacytv]oylpudpmjaqgwfqvsb[wljtqzfawkmrnkgkvla]kgdvfppcbpyazklfdk
+ijkbhnjcxgsslwtkuca[pxpiyixylcuudtwbt]ooerzoxehuqynhzmhwn[ynmgxzstfawvqihdhoa]bdrhyquybjddpuroto[fhnnpsgnxlnoiiqcml]oaibnvvqupilprgcyiw
+dfqizqapoxvqvqixvm[mgrrcrzvjkncxlmq]xqcxnymsyxbtfebdgy[hfdfaxiuiexfdhy]flyhvoppwzigjxlytu
+qlakotkuqswwtqx[xnpcrmswyqolvyp]limmsdyvzescvvt[rrpvvituflyuhyhz]amdxfzneiggintiyzuv[cykruetmmqucsbwjrh]ymobjslroztxtla
+aiufklgicgwxdlaefc[ofaqlmhnwrwhjlleyt]dixgrgkhhbyopqkzmt[zhqupdyazgumcagdids]mxijcialempjslotrgr[lmwxkdqqijndgoiv]upioecwmfnndajajbxw
+oiwkroaymbjtugfvip[hyqrpfdrfjppatm]azycyfsttguvudeq[czujqevgflhvskaguy]llsuolaevinsabqpy[sivsqswxfxlanvod]sswhiwoaxhqsjnynidh
+qipfjqqbxflvnxgv[cnxuwbvnxndkoxcxjl]atoznchumwauytpqmgk
+doncjsebymuefbxj[itsfdedfjxzxgvj]wpxzcoaybnzzzxz[hfxwmqbaiyiajiorh]einnvliwbxhjzxx[rkeenlrteubkvgrpmms]qbrpoghwjttgawgstt
+tyiexegppbtbxzovpb[yljnqybbavpwbwmvg]unbjhlrkpjrqbxrtpof[bvbfvhvgtawgpydlnn]phdnwsbwbljkqchww[galszmgwroduckhyyqa]wgfbqlipsvntmnspge
+gmnkhnuwwojgyybh[ivxthnkhjaevliiberd]crpicsxuksahuebnk[vogumtrrqupdjhtvmi]pcezvomttzmdgtelfq
+kwvkuklbkgbxoyqo[cckuhlseweoukudp]kuvdtzbjeoormufjn
+ewqcguiyodbjoxu[qgqtmjabzxbzjua]twmhfdmuudjrqjpge[xexjbzjvrungbvvmry]yuazblohcojrddhfzg
+irustuljdmhlqrettvb[dgsukspodhlhcqabx]auntsiybdcfgxjmsiqy[oqscrcekuibymdwfcy]dmxibunjfmqjoeajyi
+ppvngsfdficcpbmbze[gcazeiyfowcmezww]wmphalytgunmpjqatau[qnhrljcdkikordx]yqrsgeczwcwjbqfhfw
+iniqgrqelaihnllono[cydssebiyefnljxfdh]ljpqnievldmltrpp
+jzjmjfifakcsixsg[zmgaofcvdvtziindqe]mzodtodhvkiluhuzf[gqjguyslrtqvcesa]gwzpfqfyfxnncsemb
+gdnmdicwnjwgpjqdw[odoslhoqgocoumxf]vodkzgngmshtzwjpgbn[rrhzqlqeixvxjbaldp]xsvbscotkujitex
+nnewsdtgggcgiawo[kmuweskiapswdskgosj]avjieesxujtqfwpuis[tvulfkzyslzakco]sjhbzevzvglgfreyc[wzxjjpsqmctkyoutau]isajcfzslakogyuevtj
+brresmfifuolfyc[hkeljqzezcsvzrcue]zswubkhczxziqxlty
+xzohgybxqdxdwxfbx[dqcorjuppxguxgps]gltuxzxhdjujuro
+hmyrpjbmwmyzijkbljp[ipbngzbreqoqcisbi]ctdmsssqkgrjxozcx[egmuzsmsaiodyyt]ugjpwtglzvshohbj
+snumfuurpriffdvj[ojmagqzaktihjmwriyv]rgnyhbobphsfqgh[azucllkylyxgrlom]vhtysupgjwbwndwrgfq
+pxjdxiuhqmvwufld[ktpvbdokrtdpxrekaf]mamfsijuemlsyio
+olcpnpmilbzxxvqsz[ervozeicgvqskuenz]gcxvfthottngwww
+hphpdxpbsbmzshrwmwt[sapciwpwuradyvko]dnrhabfjqorseajgr[abhgtcdijsqfndmney]mmsvtcxmoobkkaeevz
+rtvrohugqesutzky[sjsvmjhonskkqwhis]pqjtzpfnvwsigtme[ckthdaxpibfximcq]peoffhphnstzruuhze
+cazrddymetaqdtlwn[tqrvhfevxilaptinubr]opnhppmmbfscporp
+ctclntnozqwmiqz[qniikhszzxbcatctip]wpoexzkaxyealqhcg
+suxvexjrakvhziolw[pxjlsfocisjmwzl]smoqdqjoczuyiac[ojpwtuddbldiaruiamd]upfrpxzwnthfytv[xvfejrchuditjal]bxzvjvhoigqunomnikp
+vjuryymolbathzinp[xrcvcqvbklvqtjnpzh]wugebbnbnzzvdmpg[kzdlfbpqgvbiyqwitga]wztqfradlqinyzfzf[abgygmhhsksnvso]kntwamrohagtdrsm
+ernvshbquyjfymdthx[jjshkcpnxftyopjayzm]yidkdkommeyieirf[zxxkwqqlsgxpcdwlgq]zpjrhkyjkdkxoufwlx
+pnevxgcsnqcdezwf[mnftbwqkrfmwcgp]rkmeslzoffovqheq[vxdcnglifignqqx]xiofsoyrslgyfrxl
+bjehvbcqagyczepreos[swecagoxtwhtmzsjxt]ihbrujlisjdftzpfll
+bdczzogwjpcdwyq[jptlwjoskogbhfcdu]sbfatvcosbvikmvm[njvcfwokqbtynugffu]qwhsgaqfunpacmimzhp[mulicnvulazcycscjye]oycycatwylztksmrfh
+idpyubomejrcwurt[idytppqynyqvdajevmk]mykbzkihnmfcnfg[ghfxtsrfkqppejwgen]rsalcongusjamgcltti
+gutkiuskjqzvbau[vqhivilwddgfrckjc]gpkuhglnqnlzndpl[tywjgkqskbdlsvf]bkwvgkdcxvdlvplmza[yeqeuyzuoqbypnwg]wsqmblkggadabss
+zgirdbsohsmusxbiqm[xnuiyfzmegcwzuvery]mzjixtxtbdruckher[ylfmvkslkcukfdp]vdwcmqmrsnedjnvsomy[cmmaoebsohfrnqu]bzgstdhoneuzfdxl
+wimnreygvgbpvafqrn[froxfavuvgvwirr]avnmgyvkwfnwfgudiks
+edgbqmwalgtiurhmmg[vjzrrmbtvyyhwliye]mpykphdsaunzjkpam[qdcecrxescwvlxmpi]gkfipuqdcpcqodcptya[pmdbisdhifodialab]wjucsoipfxzkkzwm
+xmurhwryxntmdwwv[bveccegjmwnppgio]rbnnbsqzutgyoign
+koftdywagyijtsi[amffypsbtekqlbvlli]avskrcxhiysqqgjja[ixrtkpjnrhljddqzt]ekluhurkjnhlzaudnrj
+vqbrbgtnvazwyixug[yrmuvykapxyyqxus]ehhkvomrgnlsofbd[mgwdwrvjwhhuynogqv]nyjsgnomdxwabameuss
+upixiwerfsjxjvecmo[lhlmklygfmbxljvptf]qnlxnzoekmyoggtsmtm[wqvqbaemhanfxldq]msobqxpmwqyauii[khuvobspvluvghjhcjm]ysvqvfsfyanmyrbuxnw
+xeawztjrtohpimzkw[umvqxdfhsyyxsimzj]kyhlrkyxcnyupqmp
+hqzlqinkcowqqzp[vhdaljgjjfqhlrjj]gmsyhpvpblkaxiox[vhbjqxseofvbvzbshv]ecirxnvxadesrbvn
+puqpygmwhwskicogo[lbkrenbngbzoljzuoo]tndvmvztkssolnom
+dbswyuxfrnypetkm[lyuajkvfqzwpuon]oorgrpkhwwgtpzxc[guszbthjnajqffsofme]vcqjstfdtrxcuscz
+clhtmgyxqbrzeipksw[mwuhcxpahefneke]bssxlwoelrrgsqcicz[yyrkfjczqdsglltdjz]xscwwnkcwstkpxto
+ajsijhedwsivzvngsr[eqorzqparxhrbesw]lyvxgqgqguifrpuj
+sqtxgdsfkbhljmt[ndqljydrgqwwqjayc]lttwcrsejwxgxkuawgm[nefpbdmgtizfijyt]dcxacpeeyuzkemb[otnbznolvwiervj]hdcjffxyhtqdjmaipj
+kvohguactjmqrluci[tefqrqmjpzpsazfoe]ptxqfezuvtxphvy
+wmawphvozqxqtmq[qqtumumswsrpsnjug]wejsdbswswrjitmq
+pdzwixvmkxpsxygxmp[zfxeglxxoxtkkmshin]hxjmzexyabkviollfnk[nfitohyddbdfqekaty]poexvcemyssklhllw
+wyyiqymjavixnwcnxu[xnhhsqavbnggdqn]gymwgjatpsojwfj
+iqdkuwpqylmwhfvm[bjgqryooacvjmxtrq]dqhwmcafwgedohws[ucnjhrhnvekrgjefzxq]opvzmoismjdmsezvle
+ommglribbfvicgmugx[msedauwycskyoios]qrhxlnihnwmktihzp
+laphdvdlixghsmjpsq[blbjmefxvnjnxmmc]hnzsqzhaenlzcvoq[ppyribixnyeucvjlv]fdogfvnymyznuuxa[pelyyutyolblxzp]fqgcltvxupdobson
+apnimgsoqfmqlgmjsvm[rdpnruzylevyuir]wwfenkdjpmqnvyf
+ltskflhfhupifhf[gwtcqaatnfjdgywo]kvguorbhzxfqrhxnij
+kqaeviepbnrokflimj[zqzevrvhforlozy]orzvxhevxtzorkch
+uhsjyhwppwarmrfed[nsfzcvrwjhfuwjta]nlthyhmaeghygqdaxdj[esqbskelpkfswkvwmr]stzggiejdzkhohumob[snlnvsgiktqewvpxhm]ahojfbcfgxqmmml
+idlikoogcxqffrufcqi[vcuenzmwggmbsknfj]peoviabqngzwiqtvri
+rigldzvrvmsmyakcjb[wwsutfoucqlgorxnu]bcuixkbifegcmltqibo[szoqsqlnduhgvhlza]pcvurfgchanmngh[glpfevaugptbhqqrd]vpndxitsihovocvong
+jwfhrlvcglbtbdlix[vmhtfcvzlshpfcii]gosuawoykketkzdhw
+bexfthnhhppzzutg[ewpudndaewfnwaht]wlnqstzsulregcwgmzw[atroqzyofendnnp]idtypgwyeatycgpde
+ldhjuqeykeelckq[qrrabgedfafkzize]tfjpjpzsafansvygor[jpuzbjptblhydidkek]bbkncsznubtpoiahot
+mqqxpkguxlmvyyk[vnxxtwxblmjdxjkhecj]shwgynlewfeegfwo[dgybavttexfiaod]ruobjihpitxxfwx[frpidegurggjllhq]kcfnatekrezeqoqnpqn
+pfelcxohsnhpzjnrp[bmnzwycytvwquengc]weaysvdqdkhrprcpmw
+llmwiwxeyezezpt[densmtrbqpiuwryg]pbgadfldspoahjimq[ugideashgoighvpiwid]pdvxaqoufmuvtrgs
+ynviititdvccfewheh[phaubuotpzjwqfcrm]spytehersqqwhac
+ktjvhepsakhdtvgoq[bnejcglklonqxmygyn]kbywvhkayojcufnwr[ipiujgjwknxzefdphq]zcmnmxqhuhjwqiue[dueiqqteiuvgyggtc]rbsyqjqegupwxbazttv
+pgnoazapsklgvmejjr[hjzazneywdxkaki]gfwcgiyhuaovsye
+qorimqvzoheryivfi[usbcrrdgseveupnqadf]bvedishdaepjjnrgftc
+thxrgxhchpeczth[eneefpesxkgwuxpnyb]efgidnpfdesgcmkqllx[jglvknahzvxyegxxedi]cupoduyjkdpyajhirg
+ltabaysmmffenou[fiqduygbghbczdsjcs]drfpocohdrhunajvmu
+rklvlmyqqxbttuhuzos[bihsvfaluvhdwqwcz]gbrlkbxpivsdykcjx[qoudfwhqcnbrmru]npquvyoxliacxpr[txyzvzsszqedximgecr]srcqshisakuwljrulf
+oiiruuqsdsjguri[qfzwehlhoinyhjv]jwayjxoutcbbsxquluz[kbgrvqmxzsukught]bgspboampsgsivvuwe[swvxxnjbmcpffrayd]txmyfolzjpxdvqzdtq
+resryrrtzhhnpbdrw[hnirhiummudhyylnky]gmwqolwapineiokcl[iqptxfvtgabqyxex]npeatmzdsfknpajsub
+aqjfwyrtqtrhnxdmfq[xacmscejzrlppqhlziu]bxvptkrvkahygexqsub[vrzjqbhlpywxzenkod]lqvsohrjrymprniyn
+obdgtytdzpcbnelm[scsrytqyknxdmzugidh]fpbpxshhnyxedvvna[fgebgketwucucajqip]cdmbxelnfsomsguvxdu
+yuluzhzwsfvngixjn[gjmdiyftbqimhxiv]gxjmpelluljxmuhz
+icsqqjcnwckhskoc[rhanawaofgbzenhxtfl]vsvuwijhjnaurwlb
+zbqzykdfeunfcwslv[fnqtxugkwojhjjqg]vetgfnapdhvbdaiya
+uxpnaesrcrudsmuxvk[zmffkqaufmoxgoelq]jldwuldydprcfgod
+lcaqgsbmhyfmfszya[brvxpxjvmtrdkdmfm]cphjfsilvnsdqmpxob
+cwxycngzriigcet[xltlzayrmdowajvins]rbfmarruugyqhvegod[nbyobbfqprdigngp]nkrwqcyinzutnklqb[ajhqjuhqzahxzjbk]nfyrxcupuphkbxjqlai
+xqwbcunarmghbsosq[jrmjtqqlogscgojnldm]bnzhiagvdwgwhuawz[toxpipinabgmkbwhtd]uxpgoorspsohkmd[dtadhrgzvfownrufn]xslrmvbosoeoeaewnfr
+lllhkodepygrzesxp[zeohwydmclhucevd]hbnsvtijajahmkclbei[byxhckkvqixiwtg]ekezugmyyavcwxtilwt
+jtjbuoavqyjhlaw[vbjakzkppzloxxfx]vibdluddkdsdexqnwl[ofqpidngtagumrk]kfoqunkkvyoassxlgg[ngbosgdywnmslnszsa]hxpciqkkafpdgfki
+nenfymvefbgzvag[wiqscyftlldcvsnp]pchooarrvfpzhwvcjpl[wtitvzxuvfufwviff]opjkauasyyfyspzoufc[pelszbarccpqtxvawi]cmkfptidaetuqkwz
+hitjejomylbutupmkeu[qdzbydybpabfnlkwkv]bdlbevsgqmwnbolnhfi[qeujppfhpzjbtafrgl]zvirtzxdzoojcwfohx[ftgmwthtcanqrxzks]bsafidxuxypaueoxg
+gclocruwassudla[imoknvpznyxchnrvl]qgninncvnnwjovnm[jwqccerrryoiwsqf]chcucyiszjrnobxal
+wqlihvvkfdyrhbqu[vizkatngyvpxuwhsfr]mrxbfaovpijyrmtjxw[mrkexdpmoaarqfj]kmnbalnjnbjcsdulczi[rkidvuivyaequway]jmyicruofboygakaozg
+dvyalwumbdjeaocae[zonftyvegiqiquqac]osgmsdmqoclweiqi[xhgqrjylvorhpfkh]mmpkmrsideufseuyaj[ogtngcelyserepmqi]kjezmzobtremfefqz
+ewovyikmmawzzrf[hcnunsbuuzhvduvyo]pdkiewvktjzzpqwvpdw
+pwfklqtvnpsajdvtyoz[gntgytituioaybkpjqv]wteojggsgedrjqdi[xzvkngdojribistpis]xftjryqatcesygfzoa[zddmnkhceqxmznq]bssablulgiiovynaqrh
+ztqjirnmogqbcfifh[vyeztcrzfxnegdyeed]redtifioqpfzykudrih
+osawcjcmfchcpgyi[ffwhlengegnjvwqehkm]rvtkttwkeoefydz[cokaihziodpeurmbp]spjznidsrkpqhsoag[mautcyrrmxsnrlw]dastqkwpjbubonqagfx
+jctsgqoqjqtodkhvvuu[ylovawrcpwpnzkfp]xtjdibtsmpbidvvdh[mmaecjrzneokajhkzc]wbwaapxadknspjujtp
+izxxelepmvtrpcb[xwoxroumisiqgpqr]lvhyjhchdicledub
+lqvelunldllnngme[lomutagiggypbbw]hdubyftczrctokdhvbl[ymxlvpbfiojaausmi]uqvhoaigwswemktiu[iipvkifnptbwuax]nidlqwimfttkbnmms
+sewpymbrjgtmkqd[tldvdouashkzpbu]qjujogijyyqwbvzqe[xmhewesgbeyrqkbfj]heapyhfvnqovmlkz[sdffbynjptvodwocru]lwqkbkjseujzmqprv
+oegfarvdcswdpnss[xgbroqaseklyoxl]wticmsitljjhgos
+bfhlklvvprpfgxt[wczpqxciyyulsgf]fhlzqdaxyerlulakhbi[xgklnelwoygvyged]ynhbzkafydsmevse[dfcrqsfpouuvsycxi]otcdmymmlomedultqa
+pvyddrxqxuxvzfqfl[nipfbquzzbmecwuu]pxzmehysojqnpna
+vthwugdifklqusu[fmffwynjxyagyycbup]eaompujnjzaowbxmg
+djekvgwpzkgwzwardaq[sjycmrggjjtzpzoq]zgagtgosiowypvz
+bicemnivninwfubpi[enghcgyjwfuwqvfcrh]crycaojgzeqgyxdq[zxgbztjljhdhzpoy]ygxqydxramuikbawdoz
+wdigyfqqrkjeseda[yjezqvkmaqfkcxgu]dwpaveednjywzth
+vjeaiuwrhweqviyv[twssdwyckfswwqg]bujjzsuffbcddcqd
+ouivgjbmmsmiezanss[mltubwnsjkijprjae]dxjbngvqbuzmtnxj[actzjkmbxwewlhmpz]aeweucknsntthwwvkmk
+hqxgwpeaugpibuu[ftohsergcnnghmultwv]oobxyesnifpglsyumqx[wthgkfckhzdlzeh]tbvnqcewxwzutlf[dbsokgifbtstadxjlyv]hcagowbeupbbxvnnudp
+fpgthpsgglztrnrjvs[rznddjrlsjtdrnufotn]nfoxdbhyvovsaratt
+idauaxxyrjljwtqk[jtrvbiyczhqigjxfam]bsmzdrpeytyegsvitk
+poxzegvwjgitaomcy[eatpylidmcjifnbyt]pxsatbkkqdylippyjd[nuwjwmoghmaptwgm]tarinkguhfewrxedty
+whrppysnyuopewxlch[tqeujwwbfviqker]qvintkkgeyiysbl[zmhfxkhgptetdsq]jazfxamrhsjvlcwr[ybdhlaudcktfgpjajk]vnedwkbznnxoegxe
+wmgrbjddretekijeqaq[wxoqrjnhathlpva]nqrxdfrjrvsaxzgn[voeyknzetkswzmonnh]qexvtsdihbxdwzeympo[mplyvliqtgoezpr]bsjrjqbvgcrxwnpdqs
+txicytmsosvlzftbikp[hwjajoqvcmhmitvqnh]gndimhsqdssjugsp
+scuaijeujwpdvdlzf[byroacgumqpoawl]lofgfiiquoftdrrxnhb[vowfcxvalicqrtpvkga]vdehstpbvncodihewhv[tqrtdbglbqthqfjyu]loycwsbaxhkfanhnp
+qgexpbjlhcciuhouo[apvfnzznkuufvlo]njoupqjamycblyd[tbviqvflseyhhsmxz]lvpemusmcuajelt
+jvrllpusmfmsnwy[yqlfrmtxpvwcllrfev]hpuqtteqblrjbnkx[puadngfdbecfuhuvrqb]myxzjgttaacbhzlpipf[gcjfzcrweoksbywfdc]mnchtfuqvmltrxakz
+ywmkwcztiqykpmju[zmkryfneelvtwfnm]zhuiojbicjnfdmsdhi
+jhgrwzznkirrskfzfbl[ftjkmxrdyljxzov]wcszeohqiseprjde[ngrtygnnwfandfuvr]lqcatjwzlsbuqnzyhw[hdhijvlmfotjdaaivaf]glgrbynrgpcxjihg
+ujtcxpupjndfftyfay[wzspgaqtsinvgbd]oskncvkxhimahafzkp[tbtuibverwndjkyrbtb]vubbwzxvzotdhtvvx
+dgjxjkogwuxxgavcit[shbqapwgyduxmjdzs]sqmxfuntsqibnshlszq
+byysjubuacsviouubxd[idvdypsyblnsmvvv]llcmcxizvdvtmksphjf
+bfphxfyrcoddphmhwh[xvbfcujmhltkfiqaejg]wxxbzpwusjrylub[vcxoevvppeirkcl]bmsyjsnoixvozodjpm
+amhqkszrkzcvumwjbr[wgobbxkqavcfedi]blkqusznjzozcwyatzt
+chzanckbvfhvxoikx[jeyndyycqesiujnj]midrrqwphhqptlbgy[dcelctfpcmitlbrdu]wmrripumgjowiedxpcu
+rbpkmcggsbshhytszrb[rjftwgbycnmyxxockku]nrtwwneopxuypblr[hovauqqiboxesfrqqfx]ytyygtytusfdjwco
+ytuvowkwojtdqfjtmj[ssrmnlgjawuaqqrdpv]ugahrlchntdmkwkygr[ojlgerllesmyzdbnvc]zaztsxmsddgciyz[jdimgvtyvojseeavk]qvyupywbpmhgoppfwru
+eirfjumdodlaevcsigl[befivodoxdnhfmqwkxc]qjaeppumixfpezjf
+lqkzkupjsinhxws[oibgvhxxpewuebro]qbweuxvitezbungy[lapasshrjxcjgdooj]hmxejqpigbcprqregtu[pqqqhbjetacltithm]zhectfbzhtyyvkyazu
+ihfadsstuwooioj[dfqkggnfiplpdcsnmx]ylmhqzhlwtxaxhx[yyqzppjaxhmgnlll]orngviyezsyopwfxmhu[pucykxnzcwdwnjzruf]axfmqcflmrxdldubnca
+rsaoluhtqbbhahhk[ursokfyrzqvmjsq]xlniovtwozkeahaydy[nyualslnfurebmbnv]ehgueldltahorrpbbyr
+lviuzeeixehupjezj[gzwzktpbujzeyypbqyi]ecapnyxygcmgfhgmfav[qclblpzrkfredwm]wcdfuzpoxtmzkif[okgiecyymbnmziyyke]zflgxeqtxzeezvc
+wzpeboftsvuwnxel[hmqswpadnffutphylpg]hbapzwwtxulrfaenb[hgsimoxqivllbthuavr]jpxhxohhxhlhlfemuz
+xbojluzthxlygkyzkwr[hjnkqiofmyuospv]gaglxxtcdnnbfvjubea
+uxtugntiubziynpzbju[onxffxfoxibzzzd]wineojjetzitpemflx[jlncrpyrujpoxluwyc]fxvfnhyqsiwndzoh[lkwwatmiesspwcqulnc]cbimtxmazbbzlvjf
+bezefpkmcyawtdlbnmy[yxmpaexxuojocuutf]gybqtynhfakfryzyoot[rzddrwizmjilbaevypd]wjfzotxmdlvmjcklea
+psehcauaffyyegx[pwkfxlhukfaavgq]pprwkzrtyyghtmsciep[rbobphjpqsmeuvgrjt]vlobomuxuflrqfwjo[nijmtbnuuzplcprb]snfbebpcogbvkwf
+cwflkfoevdvovrmn[xfkkrwrohqcdsdyuomb]ohirkxwgudwyepwtvm[ootlpxttypewmdjq]snhujgngvmxwpmagis[fmbwhgzljomkrdcph]pvfendnvzctahabni
+eoczaktxgrdpwordn[rbhnrlgckthgxxuzu]htgvsgazuzqpkjoejg
+wwadqndhcahxivixrpr[byzxpjmhnwsplkf]zgwftzdjcyjhuefzynn[pvifqpqbtfpvxmhma]atwcwmmvncdisnmw
+cjbhnctazhwdvcvza[ydnxbdfkufaflga]tyxejwcbirwrznjbf[wmrholfqzuzmywhlx]yuglypghwrwzmduczd
+sucrzntdgccanozz[dbyodxkqvfamarbda]iwcomrnnifahrolyhj[lldsewtcmdwovjto]kxnjfljadgqmjmmr[jpceairekkatfdo]loulprskwdwpwupvlow
+rmkxvrnxpnlpgxk[ymfqtqhsulsvevgy]mwlnvrwgovdeimq
+cjytdtwgtpfaoqpo[ekwzzukvazymdgcjbax]qmhoxsmtmokxfyggfsl[ghoubcwbxpcflxaoiqr]mhzvuhnaesfygwphehq
+fjfuuxzzuifgatypkx[pqxsrnqgcfmmojf]drmywevzjvfsdwoe
+aaltjjojczwavnn[wsduayllqabakudvkzo]lnkpzrwwahybafhnmlt
+trzcoixqxcnlfmu[kxdaqkezsbtcrsel]aimhkjueidtzheak
+knsjvqpezxmhuhawprd[zfschikoyuarwrpvh]jnwcjfkahqerhof[eiezpktdgiogoghnyq]xumsccawinipdfbk
+qdxlgihyxpurnyesn[uoqazfufeeorudagpbq]doynfpdydwxymmbnh
+hhxsolxzfchrnjue[qibcadmwrkmkbeye]xydgasalivcqoag[oyblkffxdgogkbjkk]denthwhcbyimeeyyb
+oomceudfrpdpinwaw[umnoeimbzecoaprmqr]vnswrzldpdlfoaaaxv[ysmxmvvxuzozxtkar]eatvxgtbqcoquhhzzn
+mrgnhaqqyhhvdfoo[brbrzbaajkxnrbkpsx]qknvrvpfabkczng
+xtvcrctmszksrojch[bqfzfdhhsfkolghur]dwqpjaqisitqmhpnkxb[omfmirdtvkdoehc]dgogacudqnrtshre[nudirbvfeacxjhb]igdfrdrqycnowffn
+vrgmsmohxhgyybr[shaciuypkvkjaqoho]dlwfavdhohiruaef[iowdifdsyckgfaixzbi]rbkuyahekeohyxnyxmo
+giaemyheoijyiqs[dditjewdytotrevtph]nrcosaxnrsfnglxyrbh
+aqpquczuuqsqfmiynf[rytylbwxvhzymqtqal]olufblbfhnqfhbdpjc[njyewyvnezayxeqkooz]yawvjaofjaqcpsaqnlj
+ynntsleqhquylfosn[esbohqcciuuyintjnn]krtinqbvgjtfvdttys[cahezzmqcfayrtijrl]jlquffpwepfjhij[gsryvmkutwbfvekc]xwuhwthwkpiprtpn
+wcifpmwramdtgbyx[mnetsyvjbkzlemkkrj]ghtuuasxyhlhdiqi[oidnivyrbzficmrkxa]sshjteaabilnbbv
+jpzlvsyhfjewjsp[zaukqnrnkxuyblu]itarroefggdtpkwknhm
+nxdmkipobgdhcekuk[edajmdcmxhcxntroa]vgrzzrytukuxdetf
+elfvvedwjbltwcnsbat[wlyogdvixiwmkxvshnm]cwhhqukydgvfwzkw[hendekbuynbsgeza]unurlefaaduvvpbi[uriiixudeogykwckty]tilfmprasfargwjoeaz
+ehllosfwjnemfpzkjbh[paefpdhywomalbjjwco]jynaehuopnolwbg[cusfqbvxlvqtqbuxgyg]dnvunkjnzqnxcginfx
+jfdeexfzxrfxleh[xqkthmkzmmfbesrfa]ddwxrlspxpefvpkhiz
+fpexyleujiphzrejgu[rjjuimrbnfxihopoasz]xiovbrwkxkchdagu[rssesjbgdfwwomrpdxi]xurzdbytoxjkwyzl
+wtudecnnxchnjhuz[ntnjpmwnwqpqqkcevi]xibzynwnkahwfizkxni
+hxvhhsyrupdpvjymv[jgionvwaxuiemcdtvn]riesyfkfymxxite
+ndpfqkkiqgvdiciv[qwegblwhxefkszrc]ddticzcfwxoylaheuam[kyqomblpykgrsofpbz]woykqlgorinilldl
+lupajnaqxzgawmnb[zfmybtxebhkalxwfwyt]sknfwfxgdqpbnqebbt
+qkttfgfwmqxgpbcgqvg[zkftxwwbappqdllajhi]ducnsepawowmjggv[osygsyvnhlhkrzahzoa]iygudcaycsrtbkohbrd
+akdvrmxjbjaahjcfhz[nueiutbritxbampij]vjirxewhgmmwlora[uauyvvwvrfhbxituz]omfdcitqhjhentxgfu[fucgdtoxvryasxib]wyvdxqpofoszluslht
+eorazrawyakawjfxdtw[bpyrfrsjhfualcoyfjc]gfgrienuzeifrfvw
+mcfhxjmwxlcreeloqkj[xlhrkjackiehnqj]iubxmjyssnwjolapvs[tnxnpotyzdxhqamjfu]qakefkzqtcahednybux[tosvyefshtbgasbf]uimrnuvlevqylbpkq
+emyfqgrtebopsxa[qwacgpmlcpoitzmdq]weqwomfyfqhxmkjalw
+dgnbvzkwdnxzuduvdee[palmkulrnlnjdyeavyi]cjgsjpbxpairrderw[nnoxigqxpkjzjhfxgxx]xdyxrtslnpmmtpotla[undscmvmhuxzohsdg]ghxcwnjphcmvttna
+uppsitifhxdcjbn[yiqjsnlktwkbfyho]dpftntebjwcyuih[rrqikyarnxteelpkc]qbjeplbraadbjxoicjn
+mqjlmaekarsttdmnl[cwdajzaopmbrikcv]vfhztmfwqcwsbdnyebk[puetgqkczejvdjbfqc]hdkqfycmizzpuoxumm
+maldhmhtlcsjqyzrb[zjbfpjpvdszrqkpzf]xspijlrjyzjputpz[mcjmewdtmgfqutbah]hebhshxtiedpjpjngu
+hiqikcyyvddlcggnq[ehsopbptguatpmyb]wfayjslqiqivsbrhedh
+zriahyyoezygvjmepy[dujudufydhkqlbc]ndalzjrjswnjujfm
+silotorivixpdydnd[wtsojgrfgugwoyo]pfihyfhusblbdodtej[hfclibenimixyexhble]gaglopphfrhqxikvw
+ddejnfspvmvffpfyozn[odqqmwgalivbswfio]rbbkjhvnszgvfjtgog[fgvufpphptnjcmraha]adsajvzndnajmilk[ukslffqfzyvxyxy]njzcfhdqyrzzctmnxn
+ehdmevcrfoeejfedbnz[cidowzljgyawbjmtzun]mxyjuechgccpwlxj[ynbdkyqvibsfwekcjr]qjilshucvucbebxmeyu
+wfyklfdesrxsopcnj[otmmdkdasnvomdhef]lpbexhubcjmfwlt[maeuvtcgzoxemnreol]qbwqszxalocdbfbtge[wbvswinrpyzjbfrsr]tinsrsxtrfkizkeu
+grorjgszsijwlhxfrjv[hmjhqmbipfjguwkzebl]kgphtaonflqlgbyk[qxnjzdupbhhsevc]tyflwvcpxchibnttwsn[ukpfpknbyacpxmoxzmp]dxzkerytewihuptx
+csyjgthhgyhnjuxxg[sjqffhahrjyoqxncjcj]owwprabojlpraeyk
+ibcaffhxenjnmvrnog[shqpfncawueqmpyj]hawlfakyplonsim
+ftaeqqsyebdeveutf[tnifrefjkddtblslzwd]cbdooorsorxwxugrp
+ioigxerknwyrzoztkv[ffkgwjfeowgtoxnyt]zhkhaqrcdjsvxctdj[ebntbwbxzbbqrdasjz]solgzrowmzozovz
+jfmlobddfxzipyzyaj[qghvghaxzmuhrpifyf]idrqkcfvatwsyom[wncyawwmennmgio]luzaexvwjhxbryah
+pjcydgylusqdexbb[nsoyssffvolztzns]mntwrdacovyfxcqfn
+tagdiyuylrtvuyu[exjzdpmovyftjpxgj]vnswkkhaoldjfkwd
+atowdglgkmbnrvyt[uzgadzquqpggiapdznk]snpqanyoeufutazn
+nltynylwgqezegky[rawbwledrpbduldc]isupsldtvjtahlwjgz[upmovvichcymgwuoqrc]gyjptxtuaqcfixjuanz[cxzbiosnqkeaxlkrxh]yglfdtzazlkxgmrlel
+ezensxwulgqdgytdfo[ozlmpzteuyjqrxocn]crruxzecnvrcpjurn
+ycflwfbhueatnpimmkm[tbcsifgtkkwtxosxau]vsnyspuvhhfozxgjbbp[adcyzxtdknieifc]hjkfmbmxkrnksewsqjn
+gffllhgsmlpxkktcq[wjqwhqrwepermblfolw]wzgcjyrpisbwyhnz[yjvzaqjsmdgazjuep]gregropoulmnagcvx[gfjkkejnxmpfbtecy]ufbqwnifaugffsai
+xfrmlrlrhxsownybek[ryhsyltyflhjbmltndc]agtvigglsugquzbc
+rshzvotgovlabfxr[sbuytwdobnvpwcax]bynmysulnnjmhkf
+cevbpuyyvlutjcuutl[pfwloktlqbxfcogrc]dflejqcyvpasjowhsj[nscuwnjsrzehqamogtw]scemydqevrcuvhwxpe
+nsbvubuyjrzsalkdwz[fooatkopdyvkxjgfho]jwojdgxqtlzxgna[vmkwusptfjbgmhq]xkzpfgkklnxunma
+jovdewpqyfouyzpegwg[eigxaawljopqauy]cjvieeexlyiovsugif[wtkkpylnxtqrepkjei]jrdmibhhcftoeauh
+flpwanunpldmcnated[unzsihvveyitclcf]gqxlznjbnpmiojuunu[kxihijtbrbyhkzosvk]xoxdqctctmroxoppilv[equfcbnltdiwdmahu]sxfloedvbznwctnuqt
+wtktlikeigdndpyw[dspimpajtzfzmfya]rmmuigyferofztnuir
+thnfrvngjhjrwdatdc[vwmnddbpbakuapirel]qojpomziuupsfysyfng[gkgjyjoovotmjwwgvrq]xxfsycfupudisdbtk[hnieklknhbwcfka]qbanhtkdijnnfegs
+mazcgrfwolhhbtman[jokgcthhpopluovccrg]eybriinzdwjyfjes
+kwxxubruqgrsifrpuxe[pqjcuxzpykriher]rcjvrturrhxqhjndj[umqwgmhgidzakfnk]nzbbrgxxsmkxahvqzs[rnqcmdjyrldnzrr]nhztvrovbpifyxbcvti
+kgojbczgybkjpoz[nyemqsvkokdfxiata]lrstpiuovispfmuoi[jifgmwihkzirfnblzqu]dixnvdkqejtatylghtd
+owhhzrmvmuosrtiwaf[xvdujvnkkrunymvh]dihbvchdelxcqsmlxe
+atcmrejivvyxxbsexp[cjlvkmfgfjslzeno]liavdjycjpirlux
+snvgwihgkhrsgdzysbh[bbyzthwnbpquvtrmlc]cdwvzdogbisfoopk
+lccrydahkgmzirmjzfv[rkkdtcqmlfkxmke]xkercumbulkzrlgxng[deksxliclevazssc]yhidzcmnbvgacmdv[ucxflzawmxnmpxa]hrfaesdlnukcblbqlm
+jdajqnzqyhcomekhejp[tyrtsgspmlmrbkm]nyfcgbagjplztrigokr[ntzzerjwsgafymxw]ftckmtirxfdfcqpi[pulepgarnqxbvlqmvog]qashqfzwglljzexbnsv
+kjvalulqegxybfhx[djfulullrbsebeknl]bcxpgathyauumxcrsmk
+fihxcyovovcmukir[gucbridfutpdnto]abzjiaponkgoposvhw[vpqwcnzmovnwdwwo]zrkqlpnszeioesnhk
+nyvobmkhkbenucug[dwpifbppiwftzokarg]vxxalauqmooacfmdox[intaxgcpfajzdwmcsk]brknzsnhuukxjuv[fkheyxevpuphuflvzkk]levqirhqhynkthsef
+uwdcywcarjujlnh[qvtowczbkenlghcmara]kfhcbnrkorcoyhkww[mzzwrpwwkrnnfavjxk]hcjjzxeynegdpfwdw
+xtgkbqtzbeptcxndjxl[jzmbcxsmcrtjtqi]wnhqmctldgxjbrtio[brnnosnckhalqzqsyyv]uhungebnygpsmpzmj
+xrqpqqsqazzlqcdglgf[ziiwwokpqiinmqe]stagyposntgyxnh[ubxzaskwfzlfrmw]fimsoerydnghxlg
+bdqtpixvllcdhgfqby[xurgfxznrblksso]wgfyjdmpjqirhiqvgg[pbgnckfbdinlepkb]mqbqboepuqheaop
+xxlhstlmqypoyhb[czlhqkifhucxqanafx]jkaaxiwxrnneudczrtn
+jhcmhtveqenmeczz[rcpnnuwvwiyfjxo]bvtashqfjcnbrqy[ebgihcdcimvgdwochq]pmallgnuofajusz
+ltzknsdqzdmbpxipt[golssizcvkrcmquotrj]nqjkcgdagjqzvri[xzehrntfgcnmgrh]devpsfftuonmevocw
+wgklxpmeoznyxtukh[nevjkmpvlbaulxjieh]wopqaknwlwjquxt[mxzczmngcaxharjipt]tuvwngrmylububv[ryewaqhshtogggdvc]xpkbqydbwshscjcw
+uglrhqngbxqtqmdlyym[ihdwlwfqiwnigvyarcw]miyynkctggbwzfkq[rqycaudamvwoxju]mmnzentjyyddntnpgxf[qjryduwnivawjepknli]toodveiqtzjxjvq
+tkgmnxgifkqzuut[csyogdborjrnygg]rpcbucosajyyyelju[bbujqtlveymlqesvg]wvyfimibeynzhsotymx[tqxldisulrhuckef]kgqjgtaluastnwev
+qifwiunabpnzezlmhh[ffwsncvlqpulttkx]wlwdpgntblnoubom[fksogvukjlzupwetlef]cfszpnemoifasqw[ttmonrrbhknspuqx]htucxamhxsoigvt
+putioshxpafnkcwdejm[dellcuoevwyyhvwurpv]zezpevhlmpzbevln[rigyoryyhoxwlbg]zkdzexpizgsumkuiuy[hycpaavxiqnlngrc]gknnfredhsmpofldn
+eknxasjdtsksamfc[dhtgifeezlgfhlyvfdz]xfttcwzqucrtngdpcmf
+uyiazdptoxzxbzo[bmuglholukatdbf]ascjhcllcatoapyvn[isqfrvbbkzsxixjuqrq]ncwzqqgudgwrtxvzfe[spqvftdlddlfglgg]zrqbukmufumytpc
+czefxpifdsqjjkoxgj[klwshjzagbrgtpiht]xofokkhzlnjplefofcj[xodekgjbgraikdley]dgsrqzqxjxjqftn
+ertbujoaanuvqskr[hsgeexqdgsqfkiunhpa]orgvxylmsdlzeyjzf[mdkgzwdnvtyoogulx]nbapgjckrfxeniiqotx
+wgywdqnvxooqjsefac[qgpmwggewotnmloq]bqdvbzpvqwadroh[bvbsnhmdurzcubvsno]ndwqyjenerqdupuob
+patbwuitsfeqvswby[htsntyfmofqldcbwgv]zolnndvkaimzdmevb[feyvwvkelmujnppg]tjajsdtevgjukkgrwr
+hoznvyznwitnxlvu[kigfxgwcrdmfwgsqnf]lhiqoaqezmswakdcd[gxmjrmvoxkdfmgcpqnn]ditkwvolcazfuxzfroy[qqlbrrwfedrgtrgm]iysjaakrbnqicefqxsr
+ufrkrtywkhfhfah[vufpfwhtxzbdqnraz]kklboeggazttzui
+tplrraxhaaaoczdpg[vzbnososnioajien]dvdckrkfdetoofpi[bywkgphzoglisygthku]gxtnstjmffnepin[evccrlnwjthfxhhqzc]lisguwkfwswblzc
+lyluhnglmfippljtwww[wnkwnwwsasqbrnlo]nilnannzjbpgbjs
+iknqwrvlcztavivxmh[vtfyhjzauqbyjchjt]zxmasnczpxlusknrmtf[yvfnxlrwgfxkdlj]otlivjvbvilezalha
+xbrzzccetyjzrlt[buwwhcatpcchdvhel]wosdwuuzpekifdhhvpy[twwoaezcowxvioqsrrd]uuygkhojhlcofza
+wqeintsbeqzjpuvx[wqlcamjmpbtqqzjcy]czhyqcurqkfnnkoltja[lozjcddygpevnxebmqd]avwqdpfxcrcvmalaczo
+aecvebozlythtcfzt[uisdkrrjeboxpuclbg]sjxcgygpeuirukx[zeoyaxgdyzfkprewiyc]rdlnzpbwgztivpdon[sfcqbpfgffkchksmfjp]yfgrlxiixyurxupuoij
+vnglyokdpxlgphpw[bjnaqkjojazyryswr]bekdduuwrqabarzwzh
+fcggyliuipcvnimphib[adkvjaembjcqbcc]envpiocijefswhv
+pgraswoweceiftu[khhpmbjghxgmhsud]axqjkekmecwunefk[pvelpeorryjcstk]lruensapttjtyxnr
+jomdrazkwryxuyc[qolcqhwdidalguboza]fcofbrgowezhbyqckrw[wurpvelnhdewfoita]swxwyfynaymvrhleuj[icdlergnbqmowlxjl]vxcwgvrvpdejoybt
+axbedlkxkmbvwacv[uabrmhoepcgtsdmjjzy]iqqpitszpejeeophjmv
+gmltcuvpeuofwteput[eyxdpnceufobjelir]hvajyjjzgkyrtgvrfs
+sfyyzksaymsvykmr[xjewfmfhhbrmwzf]cbzjmltnzvcodwtytbz[ewgckbdvfnkkyxyj]dfcrjyoakdyggbsxm
+wxjalqmicwmwkzakcy[mothnmmvgypeacecvz]hbjasxlsbbgxpfdptk
+qtsgwqpihqjgmjadkjz[skpdhegagxxbmayy]eaojrccgpxovqpi[ixyljrfgswullqnbzdz]etvomvkwpzpxxcj
+mbnifyngahvfhtfhql[azcbyxkvcnoatuo]scgddcntikvavaseu
+uciiofzqjkhndnzx[hoyxdxfahorycpfcofk]epeazzccheaegyobu[sculkaizijfqcrpjl]nrvfdtpvgoqioomvmv[axmvmzytxnbfcsjf]fccriiwmdaveeyamwp
+sxizvuhprsyyxgfqgqx[zwszjxransryibshzw]ikquiagnkoqexlsqypb[zpuqrhaqvkuvhiqk]pvuqiqxpjtsyqgcyr
+svjudmyxlshxbbvawl[inswkufalzfwoumcv]hrobewddabqsiuej[ulhptknpxcwqxjxanjd]osfyeygptwfjmvrma[pnuynwtwuulsizw]srhurplerqabvouelhn
+islwmbcjeljkceppiw[whvcrbqzgtcfbcuv]tcyzkgyzdaekgnzzmz[ddefwmnklcddlhow]npzbtwmzmhjtzljnr
+lgdjrkugqewlqxvn[wtvrzflzauwcxkyp]qbswluceqlesdfwy[kbtmzcvoubbiqfc]honrvxwcqsgphvkt[djuuancygxacmka]knseftjiunzuxdi
+miapzpluxnmdfvi[edlbwflzitzghywio]vizzhfxgilwpwhr[ochurvodstmhiypp]rycvogpcnysngytixb[mqnrhpbvojfefcicx]zxqxoinunlkjvetkvrv
+spsecopdywuheqbnm[npwovcwlwooxqhyp]hkuizzsdvysvhvmlc
+oqchahhsrywoeteaeg[ucowjiwrzkfhyebbco]efxdrribepcvduwjgf[nvyogembujkkmcm]kmfrlcaeawrvofxrim[izjebqewubrbvguzk]ngmugyprdvrbqskn
+vwlikshqcpgxqvqshv[izqveivxdxgytqgdk]abnvmprwbvwmrwlkkp[iffpegqsxjwfyvixtwk]iseiapjkgnkcepr[gtfhysdedzxwrhcgt]ktaeihyqegeozdfuz
+aieqqwhwfwxpldni[huyxdcvpglqqkeyeia]teztoyeycqohfli[uqvfjzbsvttphqxsy]afsxoqbqvtxtgriuzjm[psumrbbtxdxlwpk]qwpuwevhjellemzp
+surpbndlvplunisu[alnojwsmgbtaomke]zjyikoebzazpwql[lkgsnxodocsrniokroa]mrcipdncevvazafvkb
+dkszjaqhbkyxwvwj[wykmzcvppharrax]pvrqzqhabqtuhrj[qfxnormttaxsldn]kxjwkrjwvbiutgnfnw[mbspfflblosguqzt]nifozavfsfkngds
+uwafdvptgkfikprb[xhmrwxqxnbkfpdz]efhnfwvovbvglrrt
+kozevksryerpsrgmub[dbtinyialvlkgilue]pyqdyodlttsnrsmfvca
+mgfmdcxibcgzhrfmm[mzvyabccrdzlaiij]arnetejwseofkwqvxi[fylixbrjhxdfhiewbnb]wvndnswxdnbcktp[tetomqdkfmcndddruy]biuxgrvctlbbrqmxjp
+snjnfgbtgpkouxlpd[vapbqurlxyrduxqy]meyhgdsbvkdadsfozf
+fgknedldithvaoxqpl[mihhhdrtpjmoridqamt]vfupazymsipoana[ngqkziyavxkyukp]qqysmfkyaxbuytr
+fugbgojgdeavlmrut[zpukymkjkapibmhg]mmdesmcwbhlfugkdiz
+lhhhlyioiiknkray[omilmxkodlmvzhkgbaf]cyftkgjpvjvdnortlj[ifljdtkgscmnmxsq]nxtettqnuaotfsh
+whayrxopbtvnpobokn[jfbobalkbfjxcsn]jjucgwedwbcfrdginaf[atdoatealbqhiks]alzapbxuvmivqfgpg[qhzdwsbvcbtlpchem]pxxskedydgisthkatn
+xzreuonsdqobzpxr[zamxighfvnaxqum]olbigclentyvugtuvg[ysrgcksohtkvcqmksqr]gnaqqezdmnfbbnir
+gmmabzkwsehkwjnevvd[uuzdntitdazeykwek]aebpajrwpyknqgx[kczhcuveeawmdiwljzl]ugwigmilwkczrcqnfo[piezzmfwnfdhnlbranp]qhremthdwdegacvptfe
+tcqhlxasqmbwzuiuirp[kfqoequocdsfwqt]ikhdkpkmeezfzfyyilf[lrorfowgsqkflwauhu]zshoiccvfwohudsmdcr[zohspdmqcdvgagdknr]zabaqgsmrwkrtcuyct
+fzanofpykognmio[ladtxyissyfrssobo]xqpwrgdmglgqhwawqok
+hynipihszohrqwaezga[iqtpgjpngbwhpailzg]wfgimkpjrjnkroueh
+lpmrkesaqdojkqrp[dcgsayoowgpiwam]arphrffqpcdntlxsza[ogneaqyckrvdcvqxbm]xlogrojsovrzfzjtjbd[qjoiyyatxkwsrvldp]gffgmieinxlfzpiej
+jaeayfunulncspts[stghconfjhkqkrxncwi]kcnaqhyukuirsaeebp[vynwfnoxxxbqztj]gddvegwjuryfnkgkpqq[jnhmbdpvsxreqhoek]pgpikslhvbnmbxbkbc
+lajiqiaxcxgpvsbu[bfetstragmoosbw]hzurjpxhecnadwosn[dquibbrojgurqiqd]aceccsnyrnfmcsd[quqxmzleqvspvsemjpn]noxrndgdrkffsdvh
+bytcvwxuavajevmde[nhmjatzolmbdfgogup]qpildujniqlnfbmuf[gxpgorlbxpqfsoreuey]hcfyjmkoywueuivrio
+amvudustnspjqsbpjp[wdudhbvvlgzbbbwlafg]kwpyjvuerzyzmzft
+vwpklmfpzssyoifbb[bwtpxodxedpdsvgu]azathmhdnqkhbmrdlxn
+iwzncixpjxypnmykke[wlhvfjbumhmtachoab]wtftbolwhpwnropnzv[zhfcmkbwizknymev]twrumqadwvsaciwbwoi[evodjtvrucrzgtwio]fmmbddkwwpaziycik
+dkodbaotlfdaphwzbcc[ldzeemqiovyqjgs]qxibabdusgaistkru[usglloxgycyynmp]aaocvclsocababbzxeg[liaacgfxytuqudp]jvvqsypuoduyhvraak
+bwzsacxgqkbjycgfw[dbnligvrmqscasutn]rbgybqqsgjvlonkut
diff --git a/d07/src/main.rs b/d07/src/main.rs
new file mode 100644
index 0000000..ef53b6e
--- /dev/null
+++ b/d07/src/main.rs
@@ -0,0 +1,153 @@
+use std::fs;
+
+fn solve_part1(lines: &Vec<&str>) -> usize {
+ let mut total_tls = 0;
+
+ for line in lines {
+ let chars: Vec<char> = line.chars().collect();
+
+ let mut has_tls = false;
+ let mut in_brackets = false;
+ for i in 0..chars.len() - 3 {
+ // Are we entering/leaving a "hypernet sequence"?
+ if chars[i] == '[' {
+ in_brackets = true;
+ } else if chars[i] == ']' {
+ in_brackets = false;
+ }
+
+ // Check for ABBA pattern to know if address has TLS
+ let ch0 = chars[i];
+ let ch1 = chars[i + 1];
+ if ch0 != ch1 && chars[i + 3] == ch0 && chars[i + 2] == ch1 {
+ if !in_brackets {
+ has_tls = true;
+ } else {
+ // Reject if an ABBA occurs in brackets
+ has_tls = false;
+ break;
+ }
+ }
+ }
+
+ if has_tls {
+ total_tls += 1;
+ }
+ }
+
+ total_tls
+}
+
+fn solve_part2(lines: &Vec<&str>) -> usize {
+ let mut total_ssl = 0;
+
+ for line in lines {
+ let chars: Vec<char> = line.chars().collect();
+
+ let mut has_ssl = false;
+ let mut in_brack_aba = false;
+ 'outer: for i in 0..chars.len() - 2 {
+ // Are we entering/leaving brackets on our ABA search?
+ if chars[i] == '[' {
+ in_brack_aba = true;
+ } else if chars[i] == ']' {
+ in_brack_aba = false;
+ }
+
+ // Check for ABA pattern
+ let ch0 = chars[i];
+ let ch1 = chars[i + 1];
+ if !in_brack_aba && ch0 != ch1 && chars[i + 2] == ch0 {
+ // If ABA was found, check entire address for BAB
+ let mut in_brack_bab = false;
+ for j in 0..chars.len() - 2 {
+ // Are we entering/leaving brackets on our BAB search?
+ if chars[j] == '[' {
+ in_brack_bab = true;
+ } else if chars[j] == ']' {
+ in_brack_bab = false;
+ }
+
+ if chars[j] == ch1 && chars[j + 1] == ch0 && chars[j + 2] == ch1 {
+ // BAB must be in square brackets
+ if in_brack_bab {
+ has_ssl = true;
+ break 'outer;
+ }
+ }
+ }
+ }
+ }
+
+ if has_ssl {
+ total_ssl += 1;
+ }
+ }
+
+ total_ssl
+}
+
+fn main() {
+ // Read address list from input text file
+ let input = fs::read_to_string("input.txt").unwrap();
+ let lines = input.lines().collect();
+
+ // Part 1 gives 118 for me
+ println!("Part 1 solution: {}", solve_part1(&lines));
+
+ // Part 2 gives 260 for me
+ println!("Part 2 solution: {}", solve_part2(&lines));
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn part1_example1() {
+ let lines = vec!["abba[mnop]qrst"];
+ assert_eq!(solve_part1(&lines), 1);
+ }
+
+ #[test]
+ fn part1_example2() {
+ let lines = vec!["abcd[bddb]xyyx"];
+ assert_eq!(solve_part1(&lines), 0);
+ }
+
+ #[test]
+ fn part1_example3() {
+ let lines = vec!["aaaa[qwer]tyui"];
+ assert_eq!(solve_part1(&lines), 0);
+ }
+
+ #[test]
+ fn part1_example4() {
+ let lines = vec!["ioxxoj[asdfgh]zxcvbn"];
+ assert_eq!(solve_part1(&lines), 1);
+ }
+
+ #[test]
+ fn part2_example1() {
+ let lines = vec!["aba[bab]xyz"];
+ assert_eq!(solve_part2(&lines), 1);
+ }
+
+ #[test]
+ fn part2_example2() {
+ let lines = vec!["xyx[xyx]xyx"];
+ assert_eq!(solve_part2(&lines), 0);
+ }
+
+ #[test]
+ fn part2_example3() {
+ let lines = vec!["aaa[kek]eke"];
+ assert_eq!(solve_part2(&lines), 1);
+ }
+
+ #[test]
+ fn part2_example4() {
+ let lines = vec!["zazbz[bzb]cdb"];
+ assert_eq!(solve_part2(&lines), 1);
+ }
+}
diff --git a/d08/Cargo.toml b/d08/Cargo.toml
new file mode 100644
index 0000000..fbd4f83
--- /dev/null
+++ b/d08/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "d08"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/d08/input.txt b/d08/input.txt
new file mode 100644
index 0000000..6085312
--- /dev/null
+++ b/d08/input.txt
@@ -0,0 +1,162 @@
+rect 1x1
+rotate row y=0 by 6
+rect 1x1
+rotate row y=0 by 3
+rect 1x1
+rotate row y=0 by 5
+rect 1x1
+rotate row y=0 by 4
+rect 2x1
+rotate row y=0 by 5
+rect 2x1
+rotate row y=0 by 2
+rect 1x1
+rotate row y=0 by 5
+rect 4x1
+rotate row y=0 by 2
+rect 1x1
+rotate row y=0 by 3
+rect 1x1
+rotate row y=0 by 3
+rect 1x1
+rotate row y=0 by 2
+rect 1x1
+rotate row y=0 by 6
+rect 4x1
+rotate row y=0 by 4
+rotate column x=0 by 1
+rect 3x1
+rotate row y=0 by 6
+rotate column x=0 by 1
+rect 4x1
+rotate column x=10 by 1
+rotate row y=2 by 16
+rotate row y=0 by 8
+rotate column x=5 by 1
+rotate column x=0 by 1
+rect 7x1
+rotate column x=37 by 1
+rotate column x=21 by 2
+rotate column x=15 by 1
+rotate column x=11 by 2
+rotate row y=2 by 39
+rotate row y=0 by 36
+rotate column x=33 by 2
+rotate column x=32 by 1
+rotate column x=28 by 2
+rotate column x=27 by 1
+rotate column x=25 by 1
+rotate column x=22 by 1
+rotate column x=21 by 2
+rotate column x=20 by 3
+rotate column x=18 by 1
+rotate column x=15 by 2
+rotate column x=12 by 1
+rotate column x=10 by 1
+rotate column x=6 by 2
+rotate column x=5 by 1
+rotate column x=2 by 1
+rotate column x=0 by 1
+rect 35x1
+rotate column x=45 by 1
+rotate row y=1 by 28
+rotate column x=38 by 2
+rotate column x=33 by 1
+rotate column x=28 by 1
+rotate column x=23 by 1
+rotate column x=18 by 1
+rotate column x=13 by 2
+rotate column x=8 by 1
+rotate column x=3 by 1
+rotate row y=3 by 2
+rotate row y=2 by 2
+rotate row y=1 by 5
+rotate row y=0 by 1
+rect 1x5
+rotate column x=43 by 1
+rotate column x=31 by 1
+rotate row y=4 by 35
+rotate row y=3 by 20
+rotate row y=1 by 27
+rotate row y=0 by 20
+rotate column x=17 by 1
+rotate column x=15 by 1
+rotate column x=12 by 1
+rotate column x=11 by 2
+rotate column x=10 by 1
+rotate column x=8 by 1
+rotate column x=7 by 1
+rotate column x=5 by 1
+rotate column x=3 by 2
+rotate column x=2 by 1
+rotate column x=0 by 1
+rect 19x1
+rotate column x=20 by 3
+rotate column x=14 by 1
+rotate column x=9 by 1
+rotate row y=4 by 15
+rotate row y=3 by 13
+rotate row y=2 by 15
+rotate row y=1 by 18
+rotate row y=0 by 15
+rotate column x=13 by 1
+rotate column x=12 by 1
+rotate column x=11 by 3
+rotate column x=10 by 1
+rotate column x=8 by 1
+rotate column x=7 by 1
+rotate column x=6 by 1
+rotate column x=5 by 1
+rotate column x=3 by 2
+rotate column x=2 by 1
+rotate column x=1 by 1
+rotate column x=0 by 1
+rect 14x1
+rotate row y=3 by 47
+rotate column x=19 by 3
+rotate column x=9 by 3
+rotate column x=4 by 3
+rotate row y=5 by 5
+rotate row y=4 by 5
+rotate row y=3 by 8
+rotate row y=1 by 5
+rotate column x=3 by 2
+rotate column x=2 by 3
+rotate column x=1 by 2
+rotate column x=0 by 2
+rect 4x2
+rotate column x=35 by 5
+rotate column x=20 by 3
+rotate column x=10 by 5
+rotate column x=3 by 2
+rotate row y=5 by 20
+rotate row y=3 by 30
+rotate row y=2 by 45
+rotate row y=1 by 30
+rotate column x=48 by 5
+rotate column x=47 by 5
+rotate column x=46 by 3
+rotate column x=45 by 4
+rotate column x=43 by 5
+rotate column x=42 by 5
+rotate column x=41 by 5
+rotate column x=38 by 1
+rotate column x=37 by 5
+rotate column x=36 by 5
+rotate column x=35 by 1
+rotate column x=33 by 1
+rotate column x=32 by 5
+rotate column x=31 by 5
+rotate column x=28 by 5
+rotate column x=27 by 5
+rotate column x=26 by 5
+rotate column x=17 by 5
+rotate column x=16 by 5
+rotate column x=15 by 4
+rotate column x=13 by 1
+rotate column x=12 by 5
+rotate column x=11 by 5
+rotate column x=10 by 1
+rotate column x=8 by 1
+rotate column x=2 by 5
+rotate column x=1 by 5
diff --git a/d08/src/main.rs b/d08/src/main.rs
new file mode 100644
index 0000000..cbdd1fd
--- /dev/null
+++ b/d08/src/main.rs
@@ -0,0 +1,78 @@
+use std::fs;
+
+fn solve_puzzle(lines: &Vec<&str>) -> [[bool; 6]; 50] {
+ let mut pixels = [[false; 6]; 50];
+
+ for line in lines {
+ let words: Vec<&str> = line.split_ascii_whitespace().collect();
+ if words[0] == "rect" {
+ // Read operation parameters
+ let wxh: Vec<&str> = words[1].split('x').collect();
+ let w: usize = wxh[0].parse().unwrap();
+ let h: usize = wxh[1].parse().unwrap();
+
+ // Apply operation to state
+ for x in 0..w {
+ for y in 0..h {
+ pixels[x][y] = true;
+ }
+ }
+ } else if words[0] == "rotate" && words[1] == "row" {
+ // Read operation parameters
+ let which: Vec<&str> = words[2].split('=').collect();
+ let y: usize = which[1].parse().unwrap();
+ let n: usize = words[4].parse().unwrap();
+
+ // Apply operation to state
+ let mut old = Vec::new();
+ for x in 0..50 {
+ old.push(pixels[x][y]);
+ }
+ for x in 0..50 {
+ pixels[x][y] = old[(x + 50 - n) % 50];
+ }
+ } else if words[0] == "rotate" && words[1] == "column" {
+ // Read operation parameters
+ let which: Vec<&str> = words[2].split('=').collect();
+ let x: usize = which[1].parse().unwrap();
+ let n: usize = words[4].parse().unwrap();
+
+ // Apply operation to state
+ let old = pixels[x];
+ for y in 0..6 {
+ pixels[x][y] = old[(y + 6 - n) % 6];
+ }
+ }
+ }
+
+ pixels
+}
+
+fn main() {
+ let input = fs::read_to_string("input.txt").unwrap();
+ let lines = input.lines().collect();
+
+ let pixels = solve_puzzle(&lines);
+
+ // Part 2 must be read by eye, gives "UPOJFLBCEZ" for me
+ println!("Part 2 solution:");
+ let mut total = 0;
+ for y in 0..6 {
+ print!("\t");
+ for x in 0..50 {
+ print!(
+ "{}",
+ if pixels[x][y] {
+ total += 1;
+ '#'
+ } else {
+ ' '
+ }
+ );
+ }
+ print!("\n");
+ }
+
+ // Part 1 gives 116 for me
+ println!("Part 1 solution: {}", total);
+}
diff --git a/d09/Cargo.toml b/d09/Cargo.toml
new file mode 100644
index 0000000..0424984
--- /dev/null
+++ b/d09/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "d09"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/d09/input.txt b/d09/input.txt
new file mode 100644
index 0000000..c4c806c
--- /dev/null
+++ b/d09/input.txt
@@ -0,0 +1 @@
+(172x1)(3x7)XPJ(70x4)(40x7)WKQANMDILIQOOWQZDNGORPHFNHBKKKVQEJNUVNAQ(3x2)VFV(10x1)XUNNCAFYMV(9x13)OUIKISEPR(66x13)(10x6)JHDDURBDQC(3x11)SNT(2x11)EW(16x6)WMJFKTNQEACIZXLH(5x12)KPVAD(13x8)(8x2)ELNIDSSO(11x7)RFITQIJYVQB(6x5)HTVSFUVZ(89x12)(44x5)(7x1)VHEWGTT(5x11)GLDZO(14x13)DZVEJXGSGUDJKV(24x14)(18x3)AWXPFDVHVRRUAIELQO(2x13)UW(120x7)(62x7)(21x10)JFUYPPCABHPYTIJUUIEVK(5x5)UNAMQ(17x14)TFQKSOALOJYMSMLMK(17x2)NBDXRSHFDREHZPWMM(23x5)(1x11)O(10x6)QVOCIXBIQW(5x10)FOLCQ(6635x5)(3576x2)(456x13)(449x3)(1x2)M(1x11)I(215x14)(28x2)(1x14)R(9x7)OSMSWTRTV(2x3)RP(87x2)(14x9)QACULEYKFWPHFQ(41x15)LTBJBTBTFQLLEAWJTICLZBHGAYERVARMDLCBZXYPY(4x6)CEOP(4x13)JQJI(62x5)(15x6)YQPFVDNREIYOUKL(15x15)PUSBXTHCMLGOCNT(8x4)YAUHTKIM(1x1)E(14x2)(9x1)YHUAWBSED(37x12)(14x9)(8x11)SVYXKPGZ(10x13)WTQVTWIWGP(162x9)(68x1)(1x4)I(21x14)WTBNFSPQKDFYITBOFYYQN(3x8)UOY(13x14)KCDKDKYFQNNPX(1x6)K(20x9)PMGWXQWRLRWRETULVFPW(1x3)T(20x13)(7x7)YYHNWZC(2x10)HH(22x10)XDUOOOIDYYXQKQDBLGCPSR(1297x7)(359x13)(62x9)(7x15)LRERGOG(25x15)KYQSSJBREHLNZXSLSYGIIADSC(10x15)WMFZAHRNRU(283x14)(68x12)(16x10)QGQDCKCPTECIPTOW(19x6)WMPAPTDDUABBOLYMMBR(14x1)XRZVQKCBBBMCNI(29x5)HSGAQWQRLOILWCRJOCRDFZSOTPLBH(82x1)(12x1)RENHWOTHWXPZ(39x10)BIKLBTNHOLVUWVGTPRPXXROUGEJRHRADHASJDMJ(4x13)VRRP(3x1)BFC(79x9)(39x4)OINGYXONKTSXJBCNNYZMWSYGIUMFATXEUDZQZVL(9x13)OIMKIRFAT(5x1)MIUXM(3x13)EPG(496x13)(37x4)(31x9)(2x5)MF(18x2)MEVRXNGVBHEGENHJTL(11x13)TTCEWIFBGGJ(150x4)(68x13)(9x10)KJJRCHTUM(11x10)SVUDYGHJWKF(6x12)LNWLUN(8x11)LUVPHPZC(4x8)VFUZ(32x9)(2x3)RH(5x5)OOAGL(1x15)W(2x11)WM(3x4)GFG(22x13)(8x6)ZVCSHQXP(4x8)KOXS(193x3)(25x7)PXQFECGPYZOYUWTMOTBFZGGAO(28x12)(7x4)XHUHXEN(10x4)DTXYSILNLW(1x2)Q(101x13)(16x11)MZVPYIEPSLDSIEAF(27x11)NFACRSGETEPHFJQKPTXUQNNSPWT(6x13)UADYIT(2x8)LB(19x7)QYBDEBFMFAWOTYACZQM(6x13)YEABPA(72x6)(58x13)(3x15)UOO(43x6)GRXJNNQQXQVANDHYVVQTTWIKVLPHBJMCSEOPBELMGHG(1x10)G(178x10)(12x1)(6x15)JWYUKS(93x13)(5x11)CQCXM(56x7)(9x5)FIARQLQTK(11x3)NSXGBEOBVXI(9x15)QIBUNRTPC(5x8)GBIYV(13x10)(2x6)RC(1x5)T(33x14)(3x4)END(19x6)MYZTTHSNYAYANBPGVHZ(2x14)YD(6x12)(1x5)N(3x13)TFG(224x8)(11x15)XNMAIBBNTMC(199x8)(2x10)VG(23x11)(5x11)KOKXL(7x9)MIMRNXM(121x10)(10x9)OGYRDPVNEI(27x5)XUBNCPGOKJIXZNAHHLLDRUUTPRM(25x2)FVEEUXQTUBDUDSMIRLBFQYULY(13x5)JTJASJBCCKFHV(16x6)TVTTDIFACKNORYBR(4x2)LIFO(17x2)RZGYMXWONVKWJMSVW(833x6)(586x12)(230x10)(2x13)EL(41x15)(34x11)KPHSFJQJWTINMWYVNSVVZBABFYEBZCLNMQ(17x14)CRLPIZUEIBCKNKRJJ(62x15)(9x4)XTGHEGPMK(11x12)NCNNMDWDNMI(8x2)PKWGUNYT(10x15)DVAFJQIPSK(74x10)(5x15)ZLKKA(17x11)GIERLJRIDYLPWZCKG(33x2)OASXACZZRSCLVDVNLNGQHLRLMZCTMBCYP(153x7)(2x14)UX(49x8)(11x14)GEHZYBKESFQ(2x6)TE(6x3)THQOAO(8x6)FSPDZODL(42x11)(2x12)XO(10x7)IZTTYUPKBT(11x13)PVRXUXHBKQI(35x6)(5x5)UDRJC(1x9)B(13x9)YHHERZVEFSCFX(78x11)(36x3)(1x6)X(23x14)DHLGIIMPJGKDUOPFEBPKJZB(7x12)TMWJAJD(16x12)YVALDPNTHINYQQIC(2x9)OY(90x5)(62x10)(9x6)RUUFLMWQS(28x6)TAZAAAIDBGZMYXMNGHVTBRHWFHXV(8x13)JIRKEMEB(15x5)ORKLKISZMYECJBE(178x12)(59x5)(5x9)QLOCV(6x5)XETXIX(11x15)USNLPYJLBOW(13x15)ZYMFNBNVKKQFT(11x3)PISAKCRXTWT(90x7)(52x2)(1x3)F(21x6)QFIQOUEYORICJDZVHMIOW(13x6)ONYWAVOHAIQXE(9x5)TKBIAQVJC(7x5)SUEYTHE(1x4)H(46x13)(33x3)(26x15)(1x3)Q(14x3)OHRVGRUAQFTYYS(2x6)BS(960x3)(544x15)(160x14)(15x2)(1x11)D(3x9)PXR(52x4)(9x13)ZVIVIWOIO(1x5)D(1x12)Y(8x8)CKZGFGQO(6x9)DAMZNP(75x8)(13x1)VDPXRVCMGTZIY(3x13)WMF(10x12)KDJVCJQVEC(24x3)GEKGZEIIDDDJRSZBNAIDNASO(3x15)VUI(74x5)(46x8)(6x2)GSPMZV(4x2)XOOW(9x15)COLWEPZNQ(5x13)UGBDW(15x10)TTWVRPQTREJDSJS(137x14)(65x10)(8x13)OMBDNQBZ(44x13)RVXFBIJOFAQJCLTKYBXVWALEONUACICLGJIWATGHHCZK(22x14)ZSGSVEEFHRWHXBLGCDJKZV(30x2)(2x12)GG(9x12)HJQCPKGNY(1x14)H(134x15)(5x4)YGCHW(5x10)EROTH(26x10)(7x1)OXPTTDP(8x10)OJJSDGCL(74x8)BDTYNXCCPDQCMYZJTAJOYCGMWJLOMLEQYBCYAZOLTCYNDAPXMXCHVSKJCYXZWBKGVELGTLNCEB(54x14)(14x13)(2x9)SM(1x10)U(27x3)XFJSNXIJPTSFDKVNGBDNRLQYJKQ(16x11)(10x9)BAPIHODLEG(317x8)(112x11)(30x4)(6x15)UTROFQ(11x11)UYHDNMPLNBH(28x5)ZMZKTXRTUNMVSQTUGNYDWUOFAFBA(2x4)OT(21x15)(9x3)VRSRVOEDX(1x10)W(1x12)H(86x12)(1x6)Y(25x9)ZYIPXGLABDQQRIQOWYNSVRDDS(35x5)NJIVDKLQTESWZNBIFFPADGWBQGVWPNOZKOB(3x8)JZK(98x8)(45x10)(6x5)LYJQMR(10x7)EFMGJRIYHN(1x12)W(5x11)CXUHP(40x1)(33x14)BIXNELLRAWDEQWDLFXASPCFKGYXNPZRLP(102x3)(35x15)(29x2)(1x1)P(8x2)OGCHVTFM(5x2)CVQRK(54x3)(48x4)(10x3)(5x6)IUXTW(26x7)(7x3)MCAIFSI(9x6)THFFYJGAO(1522x10)(25x12)(18x13)(12x1)(7x4)HVDYPIO(1159x6)(211x8)(154x11)(21x6)VCPDOYQRGXIJVQGRJTVWP(12x10)CEOZLAMGANTR(16x14)HRTTJOTOJYRMGUDK(79x5)(4x11)JHCB(4x15)FHRU(9x12)TVDNDJPQW(2x5)WH(30x14)LUFKTGXZTAORPRJMZESFFDVVWPVYTB(42x14)(35x14)(29x2)SAGPXWQEGTZAIADCQFBLWRLZIQGCN(135x7)(15x14)UQJYCTIFFWSUWWM(65x2)(9x9)(3x12)JUN(18x5)(12x8)RDYSFFHOCMTA(2x7)QY(14x3)(9x7)FERWVDDHQ(36x2)(11x7)ILSHNBRIBMC(13x8)SRXBXAPPTJPLF(101x14)(2x10)VE(86x10)(29x8)(23x8)KAMCCHDVKOOJCGDQJPZZMPJ(32x9)UEYJFLAOACKYLFDJWQUXGIZYWMHDKYLK(8x6)(3x3)LKI(682x13)(208x6)(76x14)(8x10)AYLZDXBI(3x9)BRC(25x10)IEATCRHBHGIKZBQTRCTXULAMN(15x12)ZHRTNMVERVGZZCG(32x3)(4x14)ERHO(7x7)NNNSCSF(5x4)TTUFM(4x7)XYWL(72x4)(3x7)SDF(29x13)OQXOWQELFOXUFEEBUPLNHMAOGLLPV(14x5)SZJGEXPPXSUXCB(3x8)KND(95x1)(28x5)(7x3)LVLVSVN(10x8)TGDBTKXVLI(10x11)WRFPBLNECA(29x1)XFGOLCPIYTKNJTXBAEATURQVVXGFP(3x14)YBZ(205x1)(16x14)(10x8)IFQMAAEMOP(32x9)(16x14)VBFTUPKSNIUAEBHA(3x14)EMW(23x11)(2x7)XS(3x7)QWS(2x12)TE(107x2)(21x12)XKLOCAHJZFYLQZMQDZUJP(28x15)VFRNAEWVNJVUZDURVOCUEISKGWWN(20x6)NXCCPUPQKGXTOWWRANDP(12x9)WRJVTTEYFJBE(146x12)(1x12)M(46x3)(12x15)ELAIIEJMLHRV(1x8)I(1x14)K(2x9)RN(1x14)E(81x6)(14x4)SHLOZXCBQTBEZF(40x2)YMEOXRNZXDIEEFLRQQDPWXILUOJQHDSUEKNXNQSP(3x2)TGQ(1x10)X(315x14)(307x10)(3x11)ZDV(260x4)(97x8)(20x11)YRELCFEJXQZADZSOJION(14x14)BGCJIBHVHEGFOD(3x14)PVA(33x13)KHUWKRRNHTHJCROVFAOIWGGOTIPKDMPRC(36x5)(2x8)HZ(22x14)YZSUXCHXDEPXIGCWUOKUXZ(62x10)(15x7)JZUDNJCWXTQAMOM(4x10)BJDT(24x14)ETEADJJYZZDODVKPPXTBTUPC(40x1)(5x9)UZDRJ(24x2)VPGSGVADLRBFODBZBMWBRJFC(24x14)(10x10)NJQVLSVHKJ(1x15)B(1402x12)(1381x11)(690x9)(163x6)(76x1)(16x11)TTKEOWZUHJMAOJVI(4x15)LGFT(3x6)MYP(17x7)CHKQJJMHHGHDXWBSO(7x7)UJLDJLX(11x12)LGBIGRGMTBV(21x6)RISOUTKGCNPQLLDWNLYEA(5x14)IZRZO(19x8)(13x7)ZYNNYQLEROHNK(23x9)(3x13)KRN(9x5)(4x5)OXVO(185x5)(52x6)(6x4)QOSUZS(18x6)GUQOGCRNSAKDCOCTSE(10x14)KGZBUGVIIH(40x10)(6x12)CMZQRR(1x5)Q(15x11)WEKZHYYCTPIPOZJ(58x8)(1x4)A(6x8)ABJIRX(11x15)EQFJHQOVGLY(6x3)YYQMKZ(7x7)LKJYEWV(5x4)BPTKB(1x4)J(284x5)(63x10)(1x8)W(11x13)MPTRNQPSBXM(15x3)VHDTUWNDEGLNCSQ(2x1)CQ(6x2)OCFRSJ(63x9)(15x12)AEYDUUWROCUABMX(12x4)RPGECWZRBHLK(1x11)O(10x4)JCBDSFSXDE(13x11)(8x4)BEHBONOK(83x2)(4x6)ANAD(3x15)LOP(20x15)TJLFCNGAYSBMWACNIOME(14x14)OLVVHGNWUVNXMR(10x12)DAHIOTLOCP(30x9)(2x12)TR(16x3)DYWYHJLMIYAHQIIE(3x8)SNV(112x15)(19x8)PBXORKYLISLHVCJVBJP(74x10)(2x8)FP(24x13)ZXILHYHYDGDNGHIPFHLMRLQS(2x11)WN(21x13)RDQDPNVEOLOSPLAHQHHMY(1x9)R(14x6)LIIRDEBBHSKXZT(372x10)(164x2)(40x7)RMPKUSRDBXNZLGDXZIAUAZNQBJEMSBUJOJNPHHHI(12x15)IAFPAWBOSBOS(76x6)(5x6)UYNUU(25x15)XPXFOEMDDICGRJONJBWMOZCIW(8x5)KJJIEDUG(15x2)IEUTKVCMTTXZNTC(11x9)IKWCZMUNCOP(61x12)(54x13)(13x12)NIOHBMYALHOUO(7x10)KFDUHJL(2x3)NM(9x9)OSVPKOFSM(5x5)VAMMP(9x3)EZLMGESLP(102x5)(26x5)(7x9)NHCIGIE(3x3)IVY(1x2)L(12x7)UXAUQLEXZGXN(46x6)(1x14)R(11x9)QTBPNKUFZOA(16x9)DLXKSEJJVMWIIHPB(157x8)(30x4)(13x15)TNSMJZJMNEUQM(4x12)HRAW(113x15)(17x4)(3x13)VQG(2x11)YK(4x9)GMIK(15x12)YGMZABAZZNHPRHP(23x4)(5x13)ZBQGH(7x3)SPNLPWT(24x1)HVEWGOENETTTKKBJHMBEFJSJ(6x14)WGBSYS(2694x1)(873x13)(591x15)(1x2)H(14x12)(9x8)(4x7)PHPZ(59x10)(10x7)EQJUHLQDSB(11x6)MHGNANYAWWK(3x8)FEN(11x12)RCPCNTVKIXQ(491x7)(78x14)(40x11)YVRYFJZMQREHNXZZPWXKNPHSUTVUGVEOPFQQBLOJ(25x1)(13x1)HQFQJIYOMZFGW(1x8)F(182x6)(86x14)(12x9)WODINQMTBDAX(6x7)JFCXXM(6x1)FKJPPD(40x2)IDAKJRAQIDKLPCCATMTFTOWNPLHKNJBTAVVHUWWN(53x8)(4x1)FXRX(9x1)DCBBRHJVU(2x2)RA(10x14)IWJGLMPMBS(1x5)H(14x2)WXKMITJBMZACIB(5x2)WLBVL(5x1)XNGOL(193x3)(6x8)ANFCUH(11x13)ZVGWPGYGIAR(72x4)(9x10)LUYDGWJLX(8x1)WUXTMRZR(2x3)FK(21x8)AGZIOWSLPHAKSUPECVOHV(4x12)FDXE(6x12)(1x8)M(68x7)(3x4)EOK(28x13)JXAMSHCQOBIUKUHUFYOOZJRMMNCW(19x4)YBUXDOFHTQVATUPANAF(1x15)H(110x13)(93x7)(87x2)(4x12)GMOE(50x11)(13x3)VHUHCBUNINBAH(9x14)ABWUPTZJB(10x1)ULUUYHAWHR(14x7)RSQMESIUXRZOVL(6x4)FBTNDA(5x7)ADGJH(139x5)(131x10)(123x14)(88x6)(1x11)A(17x13)XCWUXQVXMMRLURVHL(9x12)NBLNMYWQH(23x14)IOMVENQGFGYSOQNKKMXALXR(7x6)OWEXJQO(23x1)BGMPXSGMVQUXQJNAGUDPASW(168x14)(149x3)(17x1)(11x1)PPOPWWURQYN(119x7)(63x1)(4x14)CIWA(9x5)(4x3)YHDL(32x10)THARHNYWOIICGXLNEHOTTIEJXOLESVFO(44x2)(30x2)FMAVRVLKELMJLGHIPGCRCHJFVTBSUP(3x3)SIW(7x8)BIFVNRC(706x15)(699x8)(6x6)(1x1)B(284x11)(154x1)(26x12)BCUDXLZNEUYZIEKRPJNGEFKMNE(49x5)JNLLBDIRMRINXOUMGKJXTVCKAMZCEPVXFRIUUQXUQAHXXWERV(41x4)(5x15)JUNET(9x14)LAEKWBIYU(1x1)O(4x4)JFAB(13x4)KARCNJKHMFJFW(94x7)(64x7)(7x14)VRRWPHM(16x2)RYATIQNKHUXCZEGS(8x13)WZSZNRIH(3x7)TBE(2x4)DA(10x10)TJBORFEVFS(2x4)VE(8x15)YTADJOMR(4x2)XQAO(389x2)(171x3)(52x4)(1x6)C(14x1)QUCOESZSLGRLIJ(7x13)UVHYAWH(1x8)A(1x14)R(16x2)HOCCGBBDBBAJPVFU(52x8)(2x3)IV(20x3)BADNVTFDYEOJOSTOURIR(6x12)UAKYYR(1x12)D(3x8)RDJ(18x15)GDBLXRBQGDVOGYNIDB(7x9)RVLXMQP(146x2)(45x15)(3x3)NNY(10x14)EUROHLVNXH(4x12)JYRH(5x3)GJZII(2x1)IN(6x6)GPYYHE(70x5)(22x3)JSUZJGHKJQSJZHNHSBYXRX(11x4)CKNLLPRJDJB(11x9)EYWLHDJWYMZ(3x4)EOQ(39x11)(19x11)(12x15)ZSNCSSNGFNWK(7x11)QKRQMES(915x15)(657x4)(121x15)(21x4)(6x9)PBLEYF(5x3)JYILW(88x7)(48x6)(18x11)LHFNPRFKADOZQRHQVE(5x9)JSXCT(8x2)QOQRTIAA(7x3)NKKNWLS(16x4)URODMQWUOAUZDVTW(203x11)(196x3)(72x2)(1x12)L(2x3)AO(8x3)XROVOMDL(9x8)YZAEPPLFP(25x5)TJCBFMVSXVPIIOUHRJCUZAFPK(35x9)(22x5)BSQZOCOFMKGAVXARGGFCYV(2x1)BR(46x10)(3x1)MNZ(13x4)EBBUVWXRIWLMZ(13x8)EXOJUNPCWPYQE(9x14)(3x15)NYG(4x3)XNAD(6x3)OAGYDW(299x3)(130x5)(5x5)ZIVTZ(4x8)WRBW(73x12)(5x13)TCVNI(25x12)TLVHEMSRDZWQRIYKHDGLZVLEQ(24x3)PIOJWVRBAOPTXHUJAGHCRGNK(24x14)VCVZEHKJWAPXJDMALSUKRZAW(30x4)DMROHLLFJEFQZPAEVOYCSESESVCDPT(107x1)(19x11)XYGUSLMMCMUYFOZZCSG(9x13)(4x5)TMYS(2x1)BK(1x3)L(46x13)(40x7)JGIWCASPBLNAZSSBXMFLCZNHCLRYKJTSKTRIYXZD(7x7)SIMRJYC(243x12)(219x7)(4x8)XKYN(202x11)(26x11)(4x11)JIBP(3x12)TUQ(1x12)U(78x11)(10x12)PYKJEJKLOP(7x12)MGGQRIM(6x3)WDBTTC(10x6)EFUZOEPGTG(15x8)ULWOSKACKQHHDTH(2x5)OX(24x4)(1x13)Q(3x10)PLC(2x11)AZ(40x14)(4x3)IOIG(7x15)QQTGOCG(4x1)TTYK(4x1)KMKT(11x2)DUFCFLWJKDO(4988x11)(514x13)(184x10)(176x15)(168x14)(49x8)(11x13)NGQSRMSYVIT(5x13)LIGXA(13x13)QLVGLJOXJZEMA(14x3)BHSJULNXUJNMLB(21x13)QWVNZXHEHTXEDXQKZCKZH(59x3)(23x14)IZNXJWCWIXNWKNQDTNQUAEO(23x6)GDBWPQKJXRWQSZJUZRGBNNF(14x4)(9x7)RQPHPKUPM(7x9)QVUICMY(269x12)(34x4)(11x1)IODKMJLLLKQ(10x15)KDIWUXJCVN(221x12)(47x9)(12x12)RCNHOSXDVYYI(21x11)(3x4)IJG(8x4)XBPLQPKV(150x6)(75x15)(2x6)DH(23x10)WKXGJRDSEZTLPKCMMUZZMXF(7x7)WURAPMO(3x4)RIC(12x6)MFVQJUULXSZX(9x7)LSYQTUAPN(47x14)(3x10)YZI(7x6)YHUFAXO(1x4)M(14x4)LANLTXIEINNYBW(6x3)(1x1)W(8x9)FNIRZGYT(3676x12)(585x11)(242x2)(19x8)(12x15)OWCUIMOZCPJU(210x4)(107x13)(10x14)BTVYEADZIL(39x12)UMDJKKZWWGKFLEFWKVTRGZMWUTEWWFYSVMIVJQF(3x10)NEL(28x11)MLIMLBMEATHPEVTQRQTHBUOCFZMW(65x2)(23x12)SGEKZUXQNIGZURVKPNAISOY(21x2)UGJLXKWJVUFGJURKHTETM(2x11)XQ(17x13)CTOVPHTPJVNUSQZLY(329x9)(27x4)(20x15)(6x7)SWYPVM(3x10)ICH(105x3)(7x2)(2x1)QZ(11x11)(5x14)XUSZN(69x8)(7x12)VCQYFSA(24x7)EFVFKBFLRAJTGXEQGICZSOSE(10x7)CNXAKLLDBZ(4x13)XFXW(20x5)(13x15)SQZPVKWYCGMLX(96x12)(9x10)QNJNUKACF(14x3)WBKWFXIFFTAGKJ(2x11)TM(47x7)(9x4)WKFDSSPUO(12x2)TNCXEWMSFUPL(3x7)BCH(1x10)W(49x5)(23x10)(17x8)LMJYTUJGSCJDSMNZI(1x14)A(7x3)DYODODD(735x4)(2x13)CT(147x12)(140x1)(10x14)(5x6)KBFDG(74x11)(3x7)ASG(6x1)BAMUUR(11x1)HYWHOBKJIPH(22x14)ROJWCVIRBUVOXMHEBMHRBD(4x6)IHCB(36x9)(2x12)KI(1x1)I(16x4)TYYWOESVEYUUSCSQ(272x12)(6x13)YBZCAF(2x12)XV(12x10)(7x5)EOKMUXF(91x8)(4x3)CYOY(76x4)(2x6)QT(29x5)NMTVCDRMTLDIVOECJLYHZUBPYGOFD(4x5)IAJR(11x10)YPFPNDBONFO(2x3)WI(129x6)(77x2)(10x14)PAQKAHBQAX(2x4)YV(19x1)KXUKEJINNRYFXQJKRSM(10x2)YJAIIRZOWD(7x4)MDVMTGB(19x6)(4x9)MMQC(5x6)VZZVQ(2x7)XE(2x3)EQ(2x1)MA(202x9)(183x5)(13x5)YGYLMWENWKOEP(8x15)MIAMCHRA(67x15)(2x14)RP(10x5)NVJOFHUZFU(19x13)ELUOKNLHOOIAYZOCIMD(10x13)DQTLOMUCCQ(70x4)(11x1)KZALNOFLDHG(15x13)WLWZWHTUHWOZLES(9x10)FMITUKLQU(3x14)WCL(2x6)CK(6x10)(1x2)W(76x10)(2x8)ML(62x11)(48x11)(4x12)IRUH(4x3)DBQU(22x15)DYDBCSWMYSBLRNSNGRWCEU(1x15)Z(745x3)(23x1)(6x8)OKKJKF(7x1)(2x1)UU(709x5)(217x7)(116x3)(41x11)OAOMKCXJMJKKPSYWLNBFUDEVLICRKCGHRTGCIUAXZ(17x12)SKMYSNPPLDSOKIKXI(10x2)AYWGQTPNPX(12x14)GQFNEYXBYAAN(4x2)DWAS(12x13)MGXEWSKMSNTH(69x8)(7x6)LEFUMOK(19x4)UREDJOQURHFQCDSOZKZ(8x13)QPNYHWBW(12x2)JVUTOZHSWMXS(143x9)(79x6)(5x6)ZLLEG(4x13)ZAKG(2x6)QM(32x5)ADNXICFDFEOECVZHIVQKALYWLJGUSOSI(9x9)AWIAWSRJZ(52x5)(5x6)QSJGP(10x1)KDADHYYLCR(4x9)BQEP(1x1)Z(6x9)OMYNHU(103x7)(86x5)(2x13)AB(45x6)PQHXQFEMSNVRLACWAKQOYTZVLYPGBLAVMANXZHEMATRCF(14x4)YEVRVCORQWAJYG(2x3)AC(6x4)(1x4)W(135x15)(4x9)NULK(79x7)(7x10)RVBBWHN(3x12)MEL(33x9)FQIMGFZZTZBDCAYWARBLFRRQTJROKZXOJ(6x8)PWSZAR(2x5)ZR(13x8)RGRLYMPEYXDYF(15x15)EKZSLEASGQCSSAQ(76x5)(3x1)GDV(14x4)BYSPLEVMSPGXHS(4x2)LIDY(33x9)(27x4)ZWOLHCSTTPJZTODWETGHTNMAPAF(1215x14)(142x4)(14x1)ODRTZPGCANTMRQ(11x12)FFJIYPJJDPY(18x13)(12x7)PHABYHRKCIBS(72x12)TLUCYATALAFMLBSLTDHFNEGCVYKQFKPHVAMBSCYPSYMMGFGEPKMZRVXAZLGQQGCAQVIDKQCZ(119x10)(100x8)(6x6)ZKHOPF(37x8)JZJYXJTGQWXJKOWCEGRYFWORONDPKWDHGQFWR(9x10)JZTDQPVOV(7x11)MNMFBYO(12x9)(6x12)TEOCNK(6x11)(1x9)U(413x10)(1x12)W(357x6)(81x1)(20x13)AXMPRMJPLLNQTKNAKAKL(15x11)NCYQCFJRFVEBMBE(10x15)IDMWCCMJMT(9x15)KDITVSFLX(8x13)LWDZHEIH(85x4)(9x8)DNTHBQVEK(3x12)RCQ(17x5)IONTLMAHANUFDOIZZ(3x1)IKC(24x10)YQLVKHSGEHGXGFYSVJGHUHUA(109x4)(4x12)XZEO(12x5)HEZUPCXXEENI(12x12)OMJTLBITZWOB(13x13)YWOEGEYKAOZJS(36x8)VUZJQCVRHXSSCZNTEFKDZLVHDVCJSREVEVCB(43x6)(2x4)RT(4x12)CIZV(20x6)HHICUGNPVNOEZZGDLIZY(36x6)WRYFVILIDECKLNDCCWDEBAAPNRQVLQTWUQRC(260x7)(81x9)(5x1)XTIWO(7x2)(2x7)HZ(47x3)(6x5)EJMXOK(10x14)CVISHTXMOH(6x12)QCQAWT(1x12)V(1x3)Y(165x10)(21x10)PSYSIOEUPVJSLHBRVCOJD(39x12)(12x14)UBTGKOQEIYFM(5x4)CLHJC(5x4)FWNYB(9x13)ZHUPCPRPR(39x13)(10x15)YKYHEZRRDL(3x9)TRX(8x15)STWMOZDH(23x10)(2x9)ZM(2x7)MV(3x13)OQK(243x11)(210x8)(42x14)(17x12)JIOXSDZFXPPALZIKA(12x5)VJLEWBRVXMCD(23x2)VNXQYVPIRTMBGPKVZNTOFOG(61x6)(7x4)NSPFDMJ(9x14)TVHJEJSSJ(2x13)IJ(13x9)QTFHJIOJOQAOA(1x11)C(59x3)(6x11)MSQZOU(31x14)VLYOENWNIUSCUPMSOZEFABALZGGUXSZ(3x12)MIA(13x5)XZEMQZEXZTHJP(1x14)O(358x8)(162x14)(39x11)(13x5)(7x10)ZEJGPTO(1x12)V(8x7)PFNFRIMK(8x12)(2x13)LL(47x1)(41x8)(1x6)W(16x10)KZDYKHCTWZXEKCNJ(6x11)BKPJMJ(42x15)MMVAWYBRUXHRRXCVQBRTDORBFQQBOOHMVEKUQKJQTP(58x11)(28x5)NMWGTZUQBNENKBJWXUSTOSCMPLCZ(18x7)XIOSACAMZDWOJMBKQD(105x2)(72x12)(48x12)(5x10)XABVT(4x1)FENC(3x3)FPK(3x2)BMX(7x2)CTTSNTO(11x2)(5x14)XLVEE(2x1)PI(6x10)XMZISE(2x6)AK(6x1)ZPYKXO(774x3)(10x4)QTZHPYSXNC(720x15)(226x14)(40x9)(2x10)BT(17x14)(2x15)SO(4x2)ECYN(2x10)JM(7x4)XOBYLTV(120x3)(1x3)N(19x12)PEGBFGRTJFJSVIQZTNS(2x5)JD(41x13)(3x13)YTK(6x4)FUJASF(5x10)NHCVS(5x7)EBSJH(27x3)MMLCNRRAUAKKAGPBUHZQKMJVRLY(35x8)(12x5)EUFDLSCJNJIW(1x11)F(5x8)OICJN(178x3)(1x5)O(164x12)(69x5)(1x3)Y(13x7)NJGIFSDNRZGUN(20x2)CHUHUOZQHKOBNBNITRCT(3x13)XHS(4x4)HCZB(47x10)(13x13)HKZXATQZXPKJC(3x6)LFO(5x2)ZUTAK(4x8)JGZZ(13x1)BPKJSEMKXVWPD(10x8)CFBDPLWXUF(4x11)DYMH(283x14)(100x12)(9x14)LWMYUMEGI(79x7)(73x7)FBVHIBPTQYOPEWFQTFYYLGGOYUBRWFHKOXUWAZPIAVVVOWQGVUUKSSIGQWGTGTVMFEUSTYTQV(55x2)(10x14)IKRUCTQUXX(32x5)(20x2)JNEGAYZJAEFMMZNDQAYI(1x5)N(36x10)(12x10)PFTBHPEYKBFW(11x7)YRKUEULAVQO(65x9)(13x12)NKUIAGSIXWKEW(38x10)(4x8)IVPO(12x2)ENSUUWUGMFDE(6x5)GBZVEV(1x4)H(18x4)(12x6)(6x15)(1x6)C(1798x6)(725x7)(718x4)(128x9)(72x4)(41x6)XHDCTSCOLQXDITGBJPZCFXWLCBVNRWZKIHXOYRZQE(2x11)AL(10x11)CKPZHZXSEL(44x2)(38x2)(24x12)KQQVZKDYTAXJIECUHRNEEHIE(2x5)MR(2x14)EX(525x9)(135x3)(24x1)(6x4)AJAHVA(8x4)FCQQTUCX(42x9)(16x1)YJXDRMKLAJWGHRSL(9x8)CYVVQKOEQ(1x8)S(11x7)CGKRJUPVKDK(28x3)HQMZNCYOAIJBKRAGXYWTWOMEDSBE(1x4)U(16x13)UWNXBMZLSDWJWXRY(13x14)VALDTDWVJQQYY(48x4)(8x5)(3x2)HCC(28x13)(10x14)UFDCSYFEPI(5x11)NPDJR(279x1)(72x15)(15x11)CZESSYYLTNHNNEL(4x12)SCJE(2x4)IK(2x13)UO(19x8)AXUVJUCVOZYXECUHXTP(101x2)(7x3)MUNLZOM(5x7)GYXMB(13x2)UGNTFKQKQNSBU(27x9)IVJLAPCSRKKUBGNZXYELDTFXXDJ(20x12)KHMCDFDXECBLOWYPQFYZ(13x2)VDLMHMTQWHSIS(66x11)(6x14)RHRBCF(12x12)QBPGBNHZPQMS(28x11)BMIFCPCTBLKBIXCWFNLFSAOGHDWA(36x10)(30x1)KQYVYKBALRKIFSCOPWNQPYGRSSDAFY(1057x14)(320x8)(131x14)(124x3)(6x1)(1x8)Y(11x11)RYCMRYHAPAM(12x4)(7x2)LMPRCHR(65x7)(20x12)FBGHCCVXKKFXNJJWLKIU(16x10)KIYAZDBPNWXQXAKQ(9x11)EEQGTCDVB(1x3)I(132x2)(125x1)(20x12)HBEZQGFLJSFHGOYMLHSG(19x7)(3x5)THM(6x4)XKBKJV(7x12)(2x8)DF(14x12)(8x14)AXZPIRCT(33x9)(20x11)JCTTWVAOXNBCDBCUVNCX(1x9)J(36x9)(30x9)GCKYVYDUIBAWHSKBTTAHOYQWUQJHIV(699x2)(400x2)(45x10)(2x12)DY(31x7)(2x13)CP(6x11)TCMIXN(5x13)GBDVM(3x11)JAD(136x14)(11x1)ABIOQIJMVTI(6x10)NNTWTD(29x6)(1x14)Q(16x9)NNLMOVNFVJLXXLJJ(66x6)(4x3)RAZW(11x3)EQUJQECMCRI(10x14)DWLVSFXKGZ(5x15)RGJPT(7x1)RDFSOXE(74x8)(5x8)NEBHU(7x15)UEWKNIH(45x7)(19x3)TLAIFAYOOOCZMBIKVOU(4x6)OZBT(5x14)JEPAV(108x8)(2x15)LU(21x7)(3x6)JAV(2x3)LL(1x6)J(2x12)DX(59x6)(12x4)QXLWMASKAATM(10x7)OWRCRLMNRR(1x6)X(5x8)FBCAK(3x13)SIC(211x15)(2x6)IG(196x10)(54x8)(10x6)ZVIJHGXDTL(4x6)WCBN(2x12)IP(7x4)YLCWERN(4x1)LVRK(59x7)(5x5)JSDEV(4x14)FJFZ(17x7)KGBZBEJEIMCGUMSPZ(3x8)TAF(3x7)JTW(64x12)(2x11)BL(7x8)EQAGDIV(1x4)X(13x12)WDLMTJDUILHTJ(11x13)CBRRLLSHSWI(1x1)G(61x3)(3x7)CVG(27x9)(3x5)WIL(13x1)KFMXZGHEODGKB(2x1)QU(7x11)(1x13)S(18x5)VCSBJGLOOVXYTVMKOJ(143x10)(74x5)(25x12)IRMWONJTNGIJCGCTHVQOPQPIB(2x13)EY(6x8)NWOYXV(17x1)VBWAHETINYXRWMUVH(14x6)XEWNDODPNFJNFR(36x10)(5x1)XVRMW(3x15)PEE(4x9)RIJF(3x3)SYV(19x8)(12x13)(1x4)P(1x2)H(13x7)UKWAWHHQFYDWF(96x11)(5x12)PRKUK(13x14)RDQYSCYBCMONV(36x9)(3x15)ZOZ(8x15)PSPDGSWF(8x6)BMEGXZMZ(17x7)RQNGEXECJCUYFXPMB(163x14)(75x12)(9x9)YKFJTBRHE(44x15)DDSGHUAIXMRFTUHJZKDCTCLFREDDDHFAFQXALBIGIEMS(5x3)ZFRYZ(66x4)(7x8)KMXIZSU(34x15)ETTRETRSNLYOQZNWUXCNGPPUJPQNFYYEEC(7x12)RFTTNRF(3x12)HVO(97x15)(9x13)EASXOBURZ(14x14)EPODGHCXUDADRA(7x10)ECBRZCQ(22x13)SCAQGLZJTRSFEBTFFDTDRZ(13x7)RHQRORLJVNLWN(6x2)INZFFT
diff --git a/d09/src/main.rs b/d09/src/main.rs
new file mode 100644
index 0000000..7b24487
--- /dev/null
+++ b/d09/src/main.rs
@@ -0,0 +1,123 @@
+use std::fs;
+
+fn decompress(input: &str, recurse: bool) -> String {
+ let mut output = String::new();
+
+ let mut i = 0;
+ let chars: Vec<char> = input.chars().collect();
+
+ while i < chars.len() {
+ // If we find a compression marker "(LENGTHxREPETITIONS)"
+ if chars[i] == '(' {
+ i += 1;
+ let mut marker = String::new();
+ while chars[i] != ')' {
+ marker.push(chars[i]);
+ i += 1;
+ }
+ i += 1; // i -> first char after ')'
+
+ // Read info from the compression marker...
+ let parsed: Vec<&str> = marker.split('x').collect();
+ let len: usize = parsed[0].parse().unwrap();
+ let rep: usize = parsed[1].parse().unwrap();
+
+ // ... and decompress the next `len' characters accordingly
+ let replacement = if recurse {
+ // Part 2: markers within decompressed data are also handled
+ decompress(&input[i..i + len], true)
+ } else {
+ // Part 1: markers within decompressed data are ignored
+ String::from(&input[i..i + len])
+ };
+ for _n in 0..rep {
+ output.push_str(&replacement);
+ }
+
+ i += len;
+ } else {
+ // This part isn't compressed, copy it verbatim
+ output.push(chars[i]);
+ i += 1;
+ }
+ }
+
+ output
+}
+
+fn main() {
+ // Read my initial data from input text file
+ let input = fs::read_to_string("input.txt").unwrap();
+ let compr = input.trim_end();
+
+ // Part 1 gives 110346 for me
+ println!("Part 1 solution: {}", decompress(compr, false).len());
+
+ // Part 2 gives 10774309173 for me. Watch that RAM!
+ println!("Part 2 solution: {}", decompress(compr, true).len());
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn part1_example1() {
+ let input = "ADVENT";
+ assert_eq!(decompress(input, false).len(), 6);
+ }
+
+ #[test]
+ fn part1_example2() {
+ let input = "A(1x5)BC";
+ assert_eq!(decompress(input, false).len(), 7);
+ }
+
+ #[test]
+ fn part1_example3() {
+ let input = "(3x3)XYZ";
+ assert_eq!(decompress(input, false).len(), 9);
+ }
+
+ #[test]
+ fn part1_example4() {
+ let input = "A(2x2)BCD(2x2)EFG";
+ assert_eq!(decompress(input, false).len(), 11);
+ }
+
+ #[test]
+ fn part1_example5() {
+ let input = "(6x1)(1x3)A";
+ assert_eq!(decompress(input, false).len(), 6);
+ }
+
+ #[test]
+ fn part1_example6() {
+ let input = "X(8x2)(3x3)ABCY";
+ assert_eq!(decompress(input, false).len(), 18);
+ }
+
+ #[test]
+ fn part2_example1() {
+ let input = "(3x3)XYZ";
+ assert_eq!(decompress(input, true).len(), 9);
+ }
+
+ #[test]
+ fn part2_example2() {
+ let input = "X(8x2)(3x3)ABCY";
+ assert_eq!(decompress(input, true).len(), 20);
+ }
+
+ #[test]
+ fn part2_example3() {
+ let input = "(27x12)(20x12)(13x14)(7x10)(1x12)A";
+ assert_eq!(decompress(input, true).len(), 241920);
+ }
+
+ #[test]
+ fn part2_example4() {
+ let input = "(25x3)(3x3)ABC(2x3)XY(5x2)PQRSTX(18x9)(3x2)TWO(5x7)SEVEN";
+ assert_eq!(decompress(input, true).len(), 445);
+ }
+}
diff --git a/d10/Cargo.toml b/d10/Cargo.toml
new file mode 100644
index 0000000..f900463
--- /dev/null
+++ b/d10/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "d10"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/d10/input.txt b/d10/input.txt
new file mode 100644
index 0000000..d68df01
--- /dev/null
+++ b/d10/input.txt
@@ -0,0 +1,231 @@
+bot 171 gives low to bot 4 and high to bot 84
+bot 1 gives low to bot 117 and high to bot 81
+bot 82 gives low to bot 209 and high to bot 103
+bot 128 gives low to bot 56 and high to bot 91
+value 23 goes to bot 8
+bot 7 gives low to bot 148 and high to bot 22
+bot 179 gives low to bot 91 and high to bot 77
+bot 158 gives low to bot 125 and high to bot 143
+bot 190 gives low to bot 26 and high to bot 100
+bot 32 gives low to output 12 and high to bot 6
+bot 115 gives low to bot 126 and high to bot 38
+bot 101 gives low to bot 202 and high to bot 66
+bot 143 gives low to bot 169 and high to bot 76
+bot 31 gives low to bot 109 and high to bot 95
+bot 103 gives low to bot 9 and high to bot 171
+bot 180 gives low to bot 137 and high to bot 93
+bot 73 gives low to bot 21 and high to bot 19
+bot 91 gives low to bot 18 and high to bot 58
+bot 49 gives low to bot 85 and high to bot 188
+bot 41 gives low to bot 69 and high to bot 203
+bot 10 gives low to bot 31 and high to bot 94
+bot 29 gives low to output 9 and high to bot 164
+bot 44 gives low to bot 194 and high to bot 180
+bot 157 gives low to bot 67 and high to bot 14
+bot 104 gives low to bot 114 and high to bot 149
+bot 183 gives low to bot 201 and high to bot 151
+bot 138 gives low to output 19 and high to bot 37
+bot 21 gives low to bot 98 and high to bot 205
+bot 9 gives low to bot 36 and high to bot 4
+bot 136 gives low to bot 87 and high to bot 196
+bot 99 gives low to output 20 and high to bot 96
+bot 142 gives low to bot 27 and high to bot 116
+bot 42 gives low to bot 118 and high to bot 104
+bot 108 gives low to bot 64 and high to bot 42
+value 7 goes to bot 157
+bot 159 gives low to bot 78 and high to bot 192
+bot 81 gives low to bot 124 and high to bot 3
+bot 148 gives low to bot 96 and high to bot 146
+bot 107 gives low to bot 49 and high to bot 48
+bot 38 gives low to bot 177 and high to bot 200
+value 43 goes to bot 106
+bot 28 gives low to bot 70 and high to bot 79
+bot 172 gives low to bot 106 and high to bot 190
+bot 162 gives low to bot 158 and high to bot 59
+bot 208 gives low to output 4 and high to output 13
+value 47 goes to bot 21
+bot 124 gives low to bot 79 and high to bot 83
+bot 206 gives low to bot 196 and high to bot 55
+bot 17 gives low to bot 65 and high to bot 187
+bot 144 gives low to bot 46 and high to bot 107
+bot 154 gives low to bot 195 and high to bot 78
+bot 106 gives low to bot 72 and high to bot 26
+bot 186 gives low to bot 14 and high to bot 209
+value 67 goes to bot 10
+bot 187 gives low to bot 123 and high to bot 193
+bot 5 gives low to bot 136 and high to bot 206
+bot 166 gives low to bot 61 and high to bot 85
+value 37 goes to bot 32
+bot 198 gives low to bot 76 and high to bot 71
+bot 97 gives low to output 18 and high to bot 129
+bot 139 gives low to bot 108 and high to bot 88
+bot 192 gives low to bot 131 and high to bot 89
+bot 174 gives low to bot 80 and high to bot 127
+bot 92 gives low to bot 11 and high to bot 7
+bot 94 gives low to bot 95 and high to bot 183
+value 5 goes to bot 98
+bot 72 gives low to bot 207 and high to bot 43
+bot 12 gives low to bot 68 and high to bot 195
+bot 156 gives low to bot 89 and high to bot 1
+bot 188 gives low to bot 197 and high to bot 64
+bot 3 gives low to bot 83 and high to bot 105
+bot 77 gives low to bot 58 and high to bot 41
+bot 11 gives low to bot 99 and high to bot 148
+bot 55 gives low to bot 45 and high to bot 44
+bot 66 gives low to bot 5 and high to bot 141
+bot 23 gives low to bot 48 and high to bot 139
+bot 18 gives low to bot 39 and high to bot 174
+bot 40 gives low to bot 190 and high to bot 39
+bot 90 gives low to bot 179 and high to bot 36
+bot 196 gives low to bot 92 and high to bot 45
+bot 79 gives low to bot 162 and high to bot 147
+value 2 goes to bot 172
+bot 135 gives low to bot 133 and high to bot 168
+bot 117 gives low to bot 28 and high to bot 124
+bot 118 gives low to bot 13 and high to bot 114
+bot 26 gives low to bot 43 and high to bot 12
+bot 185 gives low to bot 32 and high to bot 34
+value 61 goes to bot 207
+bot 193 gives low to bot 101 and high to bot 132
+bot 16 gives low to bot 186 and high to bot 82
+bot 93 gives low to bot 144 and high to bot 60
+bot 116 gives low to bot 155 and high to bot 57
+bot 39 gives low to bot 100 and high to bot 80
+bot 131 gives low to bot 173 and high to bot 74
+bot 133 gives low to output 11 and high to bot 20
+bot 137 gives low to bot 33 and high to bot 144
+value 11 goes to bot 52
+bot 105 gives low to bot 62 and high to bot 122
+bot 126 gives low to bot 25 and high to bot 177
+bot 78 gives low to bot 75 and high to bot 131
+bot 132 gives low to bot 66 and high to bot 167
+bot 202 gives low to bot 181 and high to bot 5
+bot 27 gives low to bot 163 and high to bot 116
+bot 173 gives low to bot 193 and high to bot 63
+value 41 goes to bot 112
+bot 13 gives low to bot 182 and high to bot 50
+bot 59 gives low to bot 143 and high to bot 198
+bot 123 gives low to bot 200 and high to bot 101
+bot 182 gives low to output 2 and high to bot 97
+bot 112 gives low to bot 8 and high to bot 15
+bot 86 gives low to bot 164 and high to bot 166
+bot 201 gives low to bot 82 and high to bot 151
+bot 62 gives low to bot 198 and high to bot 122
+bot 65 gives low to bot 38 and high to bot 123
+bot 165 gives low to bot 121 and high to bot 110
+bot 197 gives low to bot 37 and high to bot 111
+bot 69 gives low to bot 127 and high to bot 0
+bot 57 gives low to bot 81 and high to bot 3
+bot 168 gives low to bot 20 and high to bot 170
+value 31 goes to bot 31
+bot 6 gives low to output 7 and high to bot 133
+value 3 goes to bot 72
+bot 67 gives low to bot 204 and high to bot 161
+bot 35 gives low to bot 30 and high to bot 11
+bot 14 gives low to bot 161 and high to bot 90
+bot 175 gives low to bot 157 and high to bot 186
+bot 96 gives low to output 1 and high to bot 29
+bot 170 gives low to bot 51 and high to bot 176
+bot 68 gives low to bot 191 and high to bot 17
+bot 209 gives low to bot 90 and high to bot 9
+bot 150 gives low to bot 168 and high to bot 119
+bot 203 gives low to bot 0 and high to bot 27
+bot 2 gives low to output 3 and high to bot 208
+bot 50 gives low to bot 97 and high to bot 24
+bot 161 gives low to bot 128 and high to bot 179
+bot 167 gives low to bot 141 and high to bot 158
+value 73 goes to bot 112
+bot 163 gives low to bot 156 and high to bot 155
+bot 4 gives low to bot 178 and high to bot 84
+bot 147 gives low to bot 59 and high to bot 62
+bot 25 gives low to bot 135 and high to bot 150
+bot 121 gives low to bot 160 and high to bot 110
+bot 169 gives low to bot 44 and high to bot 47
+bot 75 gives low to bot 187 and high to bot 173
+bot 120 gives low to bot 176 and high to bot 87
+bot 177 gives low to bot 150 and high to bot 102
+bot 37 gives low to output 16 and high to bot 134
+bot 149 gives low to bot 24 and high to bot 130
+bot 34 gives low to bot 6 and high to bot 135
+value 71 goes to bot 109
+bot 43 gives low to bot 199 and high to bot 68
+bot 145 gives low to bot 139 and high to bot 88
+bot 84 gives low to bot 140 and high to bot 142
+bot 20 gives low to output 8 and high to bot 51
+bot 95 gives low to bot 16 and high to bot 201
+bot 61 gives low to output 5 and high to bot 138
+bot 83 gives low to bot 147 and high to bot 105
+bot 46 gives low to bot 166 and high to bot 49
+bot 153 gives low to bot 93 and high to bot 160
+bot 71 gives low to bot 152 and high to bot 165
+bot 48 gives low to bot 188 and high to bot 108
+bot 98 gives low to bot 185 and high to bot 184
+bot 70 gives low to bot 167 and high to bot 162
+bot 195 gives low to bot 17 and high to bot 75
+bot 205 gives low to bot 184 and high to bot 126
+bot 24 gives low to bot 129 and high to bot 130
+bot 60 gives low to bot 107 and high to bot 23
+bot 51 gives low to output 6 and high to bot 189
+bot 45 gives low to bot 7 and high to bot 194
+bot 164 gives low to output 0 and high to bot 61
+bot 8 gives low to bot 10 and high to bot 15
+value 19 goes to bot 67
+bot 181 gives low to bot 120 and high to bot 136
+value 13 goes to bot 204
+bot 114 gives low to bot 50 and high to bot 149
+bot 113 gives low to bot 52 and high to bot 56
+bot 30 gives low to output 14 and high to bot 99
+bot 63 gives low to bot 132 and high to bot 70
+bot 80 gives low to bot 154 and high to bot 159
+bot 53 gives low to bot 23 and high to bot 145
+bot 125 gives low to bot 55 and high to bot 169
+bot 56 gives low to bot 40 and high to bot 18
+bot 54 gives low to bot 192 and high to bot 156
+bot 155 gives low to bot 1 and high to bot 57
+bot 102 gives low to bot 119 and high to bot 181
+bot 151 gives low to bot 103 and high to bot 171
+bot 200 gives low to bot 102 and high to bot 202
+bot 0 gives low to bot 54 and high to bot 163
+bot 191 gives low to bot 115 and high to bot 65
+bot 119 gives low to bot 170 and high to bot 120
+bot 207 gives low to bot 73 and high to bot 199
+bot 184 gives low to bot 34 and high to bot 25
+value 59 goes to bot 73
+bot 130 gives low to bot 2 and high to bot 208
+bot 111 gives low to bot 134 and high to bot 13
+bot 15 gives low to bot 94 and high to bot 183
+bot 146 gives low to bot 29 and high to bot 86
+bot 58 gives low to bot 174 and high to bot 69
+bot 189 gives low to output 15 and high to bot 30
+bot 33 gives low to bot 86 and high to bot 46
+bot 100 gives low to bot 12 and high to bot 154
+bot 160 gives low to bot 60 and high to bot 53
+bot 129 gives low to output 17 and high to bot 2
+bot 87 gives low to bot 35 and high to bot 92
+bot 64 gives low to bot 111 and high to bot 118
+bot 134 gives low to output 10 and high to bot 182
+bot 122 gives low to bot 71 and high to bot 165
+bot 178 gives low to bot 41 and high to bot 140
+value 29 goes to bot 175
+bot 19 gives low to bot 205 and high to bot 115
+bot 47 gives low to bot 180 and high to bot 153
+value 17 goes to bot 113
+bot 176 gives low to bot 189 and high to bot 35
+bot 88 gives low to bot 42 and high to bot 104
+bot 199 gives low to bot 19 and high to bot 191
+value 53 goes to bot 185
+bot 22 gives low to bot 146 and high to bot 33
+bot 52 gives low to bot 172 and high to bot 40
+bot 141 gives low to bot 206 and high to bot 125
+bot 152 gives low to bot 153 and high to bot 121
+bot 140 gives low to bot 203 and high to bot 142
+bot 85 gives low to bot 138 and high to bot 197
+bot 89 gives low to bot 74 and high to bot 117
+bot 109 gives low to bot 175 and high to bot 16
+bot 36 gives low to bot 77 and high to bot 178
+bot 76 gives low to bot 47 and high to bot 152
+bot 194 gives low to bot 22 and high to bot 137
+bot 110 gives low to bot 53 and high to bot 145
+bot 74 gives low to bot 63 and high to bot 28
+bot 204 gives low to bot 113 and high to bot 128
+bot 127 gives low to bot 159 and high to bot 54
diff --git a/d10/src/main.rs b/d10/src/main.rs
new file mode 100644
index 0000000..650c146
--- /dev/null
+++ b/d10/src/main.rs
@@ -0,0 +1,173 @@
+// Let the record show that I hated every second of solving this puzzle.
+
+use std::fs;
+
+#[derive(Copy, Clone, Debug)]
+struct Bot {
+ lo: Option<usize>,
+ hi: Option<usize>,
+}
+
+impl Bot {
+ fn new() -> Self {
+ Self { lo: None, hi: None }
+ }
+
+ fn recv_chip(&mut self, val: usize) {
+ if self.lo.is_none() && self.hi.is_none() {
+ self.lo = Some(val);
+ } else if self.lo.is_some() && self.hi.is_none() {
+ let old_lo = self.lo.unwrap();
+ if old_lo < val {
+ self.hi = Some(val);
+ } else {
+ self.lo = Some(val);
+ self.hi = Some(old_lo);
+ }
+ } else if self.lo.is_none() && self.hi.is_some() {
+ let old_hi = self.hi.unwrap();
+ if old_hi > val {
+ self.lo = Some(val);
+ } else {
+ self.lo = Some(old_hi);
+ self.hi = Some(val);
+ }
+ } else if self.lo.is_some() && self.hi.is_some() {
+ // If both slots are occupied, we can't accept any more
+ }
+ }
+
+ fn give_chip_lo(&mut self) -> Option<usize> {
+ let result = self.lo;
+ if result.is_some() {
+ self.lo = None;
+ }
+ result
+ }
+
+ fn give_chip_hi(&mut self) -> Option<usize> {
+ let result = self.hi;
+ if result.is_some() {
+ self.hi = None;
+ }
+ result
+ }
+
+ fn num_chips(&self) -> usize {
+ let mut result = 0;
+
+ if self.lo.is_some() {
+ result += 1;
+ }
+ if self.hi.is_some() {
+ result += 1;
+ }
+
+ result
+ }
+}
+
+fn solve_puzzle(lines: &Vec<&str>, target: (usize, usize)) -> (usize, usize) {
+ let mut bots: Vec<Bot> = [Bot::new()].repeat(300);
+ let mut bins: Vec<Option<usize>> = [None].repeat(300);
+
+ let mut part1 = None;
+ let mut part2 = None;
+
+ let mut ln = 0;
+ // Loop 50k times until a self-consistent state is reached
+ for _i in 0..50000 {
+ let words: Vec<&str> = lines[ln].split_ascii_whitespace().collect();
+
+ // Take chip from input bin
+ if words[0] == "value" {
+ let to: usize = words[5].parse().unwrap();
+ bots[to].recv_chip(words[1].parse().unwrap());
+ }
+
+ // Give chips to other bots or to output bins
+ if words[0] == "bot" {
+ let from: usize = words[1].parse().unwrap();
+
+ // Does the giver have two chips? If not, ignore this line (for now)
+ if bots[from].lo.is_some() && bots[from].hi.is_some() {
+ // Bot/bin indices to give chips to
+ let lo_to: usize = words[6].parse().unwrap();
+ let hi_to: usize = words[11].parse().unwrap();
+
+ // Can the destination accept our chips?
+ let lo_avail =
+ (words[5] == "bot" && bots[lo_to].num_chips() < 2) || words[5] == "output";
+ let hi_avail =
+ (words[10] == "bot" && bots[hi_to].num_chips() < 2) || words[10] == "output";
+ if lo_avail && hi_avail {
+ // Give the low chip
+ let lo = bots[from].give_chip_lo().unwrap();
+ if words[5] == "bot" {
+ bots[lo_to].recv_chip(lo);
+ } else if words[5] == "output" {
+ bins[lo_to] = Some(lo); // overwrite
+ }
+
+ // Give the high chip
+ let hi = bots[from].give_chip_hi().unwrap();
+ if words[10] == "bot" {
+ bots[hi_to].recv_chip(hi);
+ } else if words[10] == "output" {
+ bins[hi_to] = Some(hi); // overwrite
+ }
+ }
+ }
+ }
+
+ // Which bot ends up comparing the target-valued chips?
+ for j in 0..bots.len() {
+ if bots[j].lo.is_some() && bots[j].lo.unwrap() == target.0 {
+ if bots[j].hi.is_some() && bots[j].hi.unwrap() == target.1 {
+ part1 = Some(j);
+ }
+ }
+ }
+
+ // What is the product of the chips that end up in output bins 0, 1 and 2?
+ if bins[0].is_some() && bins[1].is_some() && bins[2].is_some() {
+ part2 = Some(bins[0].unwrap() * bins[1].unwrap() * bins[2].unwrap());
+ }
+
+ ln = (ln + 1) % lines.len();
+ }
+
+ (part1.unwrap(), part2.unwrap())
+}
+
+fn main() {
+ // Read instructions from input text file
+ let input = fs::read_to_string("input.txt").unwrap();
+ let lines = input.lines().collect();
+
+ let (part1, part2) = solve_puzzle(&lines, (17, 61));
+
+ // Part 1 gives 101 for me
+ println!("Part 1 solution: {}", part1);
+
+ // Part 2 gives 37789 for me
+ println!("Part 2 solution: {}", part2);
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn part1_example1() {
+ let lines = vec![
+ "value 5 goes to bot 2",
+ "bot 2 gives low to bot 1 and high to bot 0",
+ "value 3 goes to bot 1",
+ "bot 1 gives low to output 1 and high to bot 0",
+ "bot 0 gives low to output 2 and high to output 0",
+ "value 2 goes to bot 2",
+ ];
+ assert_eq!(solve_puzzle(&lines, (2, 5)), (2, 30));
+ }
+}
diff --git a/d11/Cargo.toml b/d11/Cargo.toml
new file mode 100644
index 0000000..c5e07ff
--- /dev/null
+++ b/d11/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "d11"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/d11/input.txt b/d11/input.txt
new file mode 100644
index 0000000..7364dd0
--- /dev/null
+++ b/d11/input.txt
@@ -0,0 +1,4 @@
+The first floor contains a promethium generator and a promethium-compatible microchip.
+The second floor contains a cobalt generator, a curium generator, a ruthenium generator, and a plutonium generator.
+The third floor contains a cobalt-compatible microchip, a curium-compatible microchip, a ruthenium-compatible microchip, and a plutonium-compatible microchip.
+The fourth floor contains nothing relevant.
diff --git a/d11/src/main.rs b/d11/src/main.rs
new file mode 100644
index 0000000..3dfad58
--- /dev/null
+++ b/d11/src/main.rs
@@ -0,0 +1,251 @@
+use std::collections::{HashSet, VecDeque};
+
+#[derive(Clone, Debug, PartialEq)]
+struct Floor<'a> {
+ generators: HashSet<&'a str>,
+ microchips: HashSet<&'a str>,
+}
+
+#[derive(Clone, Debug, PartialEq)]
+struct State<'a> {
+ // Elevator's current location (index into `floors')
+ elevator: usize,
+ // Generators and microchips on each floor
+ floors: [Floor<'a>; 4],
+}
+
+impl<'a> State<'a> {
+ // We need to serialize states into a hashable type
+ // to get O(1) membership tests in the history log.
+ // `HashSet' isn't hashable, so no `Hash' trait here.
+ fn serialize(&self) -> String {
+ let mut result = format!("{} ", self.elevator);
+
+ for f in &self.floors {
+ let mut gkeys: Vec<&&str> = f.generators.iter().collect();
+ gkeys.sort();
+ for gk in gkeys {
+ result.push_str(gk);
+ }
+ result.push(' ');
+
+ let mut mkeys: Vec<&&str> = f.microchips.iter().collect();
+ mkeys.sort();
+ for mk in mkeys {
+ result.push_str(mk);
+ }
+ result.push(',');
+ }
+
+ result
+ }
+}
+
+fn solve_puzzle(start: State) -> usize {
+ let mut visited = HashSet::from([start.serialize()]); // O(1) `contains()'
+ let mut queue = VecDeque::from([(start, 0)]);
+
+ // Breadth-first search of the state space, where nodes are legal states
+ // and edges are legal moves. The space is large, so this takes a minute.
+ loop {
+ let (state, depth) = queue.pop_front().unwrap();
+
+ // Abbreviation for current floor
+ let ce = state.elevator;
+ let cf = &state.floors[ce];
+
+ // End condition: are all floors empty, except the top one?
+ if state.elevator == 3 {
+ let mut others_empty = true;
+ for f in &state.floors[0..3] {
+ others_empty &= f.generators.len() == 0 && f.microchips.len() == 0;
+ }
+ if others_empty {
+ return depth;
+ }
+ }
+
+ // Generate item choices to take into elevator for next step
+ let mut choices = Vec::new();
+ for &g1 in &cf.generators {
+ // Pick one generator `g1'
+ choices.push(Floor {
+ generators: HashSet::from([g1]),
+ microchips: HashSet::new(),
+ });
+ // Pick two generators `g1' and `g2'
+ for &g2 in &cf.generators {
+ choices.push(Floor {
+ generators: HashSet::from([g1, g2]),
+ microchips: HashSet::new(),
+ });
+ }
+ // Pick one generator `g1' and one microchip `m1'
+ for &m1 in &cf.microchips {
+ choices.push(Floor {
+ generators: HashSet::from([g1]),
+ microchips: HashSet::from([m1]),
+ });
+ }
+ }
+ for &m1 in &cf.microchips {
+ // Pick one microchip `m1'
+ choices.push(Floor {
+ generators: HashSet::new(),
+ microchips: HashSet::from([m1]),
+ });
+ // Pick two microchips `m1' and `m2'
+ for &m2 in &cf.microchips {
+ choices.push(Floor {
+ generators: HashSet::new(),
+ microchips: HashSet::from([m1, m2]),
+ });
+ }
+ }
+
+ // Possible next locations of elevator (one floor up or down)
+ let mut new_elevs = Vec::new();
+ if state.elevator < 3 {
+ new_elevs.push(state.elevator + 1);
+ }
+ if state.elevator > 0 {
+ new_elevs.push(state.elevator - 1);
+ }
+
+ let mut candidates = Vec::new();
+ 'choices: for choice in choices {
+ // If we picked one generator and one microchip, they must be compatible.
+ // The puzzle description is actually unclear on if this is a legal move,
+ // i.e. is the elevator ride long enough to fry an incompatible chip?
+ // I assumed yes, and got the right answer, so...
+ if choice.generators.len() == 1 && choice.microchips.len() == 1 {
+ for m in &choice.microchips { // runs once
+ if !choice.generators.contains(m) {
+ continue 'choices;
+ }
+ }
+ }
+
+ // Convert `choice' into `candidates' for new states
+ for &ne in &new_elevs {
+ let mut cand = state.clone();
+ cand.elevator = ne;
+ for g in &choice.generators {
+ cand.floors[ce].generators.remove(g);
+ cand.floors[ne].generators.insert(g);
+ }
+ for m in &choice.microchips {
+ cand.floors[ce].microchips.remove(m);
+ cand.floors[ne].microchips.insert(m);
+ }
+
+ // Check if this new state is allowed
+ let mut is_legal = true;
+ // Do we leave behing the old/current floor in a valid configuration?
+ if cand.floors[ce].generators.len() > 0 {
+ for m in &cand.floors[ce].microchips {
+ if !cand.floors[ce].generators.contains(m) {
+ is_legal = false;
+ break;
+ }
+ }
+ }
+ // Will the new floor be in a valid configuration?
+ if cand.floors[ne].generators.len() > 0 {
+ for m in &cand.floors[ne].microchips {
+ if !cand.floors[ne].generators.contains(m) {
+ is_legal = false;
+ break;
+ }
+ }
+ }
+ if is_legal {
+ candidates.push(cand);
+ }
+ }
+ }
+
+ // Breadth-first search stuff: add unexplored nodes to queue
+ for cand in candidates {
+ let ser = cand.serialize();
+ if !visited.contains(&ser) {
+ visited.insert(ser);
+ queue.push_back((cand, depth + 1));
+ }
+ }
+ }
+}
+
+fn main() {
+ // Unlike all other days with an `input.txt' file, I just hardcode
+ // my input here, because I'm too lazy to parse natural language.
+ let floor1_part1 = Floor {
+ generators: HashSet::from(["Pm"]),
+ microchips: HashSet::from(["Pm"]),
+ };
+ let floor2 = Floor {
+ generators: HashSet::from(["Co", "Cm", "Ru", "Pu"]),
+ microchips: HashSet::new(),
+ };
+ let floor3 = Floor {
+ generators: HashSet::new(),
+ microchips: HashSet::from(["Co", "Cm", "Ru", "Pu"]),
+ };
+ let floor4 = Floor {
+ generators: HashSet::new(),
+ microchips: HashSet::new(),
+ };
+ // Part 1 gives 33 for me
+ println!(
+ "Part 1 solution: {}",
+ solve_puzzle(State {
+ elevator: 0,
+ floors: [floor1_part1, floor2.clone(), floor3.clone(), floor4.clone()],
+ })
+ );
+
+ let floor1_part2 = Floor {
+ generators: HashSet::from(["Pm", "El", "Di"]),
+ microchips: HashSet::from(["Pm", "El", "Di"]),
+ };
+ // Part 2 gives 57 for me
+ println!(
+ "Part 2 solution: {}",
+ solve_puzzle(State {
+ elevator: 0,
+ floors: [floor1_part2, floor2.clone(), floor3.clone(), floor4.clone()],
+ })
+ );
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn part1_example1() {
+ let floor1 = Floor {
+ generators: HashSet::new(),
+ microchips: HashSet::from(["H", "Li"]),
+ };
+ let floor2 = Floor {
+ generators: HashSet::from(["H"]),
+ microchips: HashSet::new(),
+ };
+ let floor3 = Floor {
+ generators: HashSet::from(["Li"]),
+ microchips: HashSet::new(),
+ };
+ let floor4 = Floor {
+ generators: HashSet::new(),
+ microchips: HashSet::new(),
+ };
+ assert_eq!(
+ 11,
+ solve_puzzle(State {
+ elevator: 0,
+ floors: [floor1, floor2, floor3, floor4],
+ })
+ );
+ }
+}
diff --git a/d12/Cargo.toml b/d12/Cargo.toml
new file mode 100644
index 0000000..79bcf74
--- /dev/null
+++ b/d12/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "d12"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/d12/input.txt b/d12/input.txt
new file mode 100644
index 0000000..bb2a2ff
--- /dev/null
+++ b/d12/input.txt
@@ -0,0 +1,23 @@
+cpy 1 a
+cpy 1 b
+cpy 26 d
+jnz c 2
+jnz 1 5
+cpy 7 c
+inc d
+dec c
+jnz c -2
+cpy a c
+inc a
+dec b
+jnz b -2
+cpy c b
+dec d
+jnz d -6
+cpy 17 c
+cpy 18 d
+inc a
+dec d
+jnz d -2
+dec c
+jnz c -5
diff --git a/d12/src/main.rs b/d12/src/main.rs
new file mode 100644
index 0000000..d49ec45
--- /dev/null
+++ b/d12/src/main.rs
@@ -0,0 +1,129 @@
+use std::fs;
+use std::collections::HashMap;
+
+enum Oper<'a> {
+ IncReg,
+ DecReg,
+ CpyReg(&'a str),
+ CpyLit(isize),
+ JnzReg(&'a str, isize),
+ JnzLit(isize, isize),
+}
+
+fn parse(lines: Vec<&str>) -> Vec<(Oper, &str)> {
+ // We emit tuples of type `(Oper, &str)', where the second field
+ // is the destination register. Storing the destination this way,
+ // instead of inside the `Oper' enum, helps keep `execute()' DRY.
+ let mut insts = Vec::new();
+
+ for line in lines {
+ let words: Vec<&str> = line.split_ascii_whitespace().collect();
+
+ if words[0] == "inc" {
+ // words[1] is register name
+ insts.push((Oper::IncReg, words[1]));
+ } else if words[0] == "dec" {
+ // words[1] is register name
+ insts.push((Oper::DecReg, words[1]));
+ } else if words[0] == "cpy" {
+ // words[1] is source, can be literal number or register name
+ // words[2] is destination register name
+ if words[1].chars().all(|c| c.is_ascii_digit() || c == '-') { // yes I know
+ let val = words[1].parse().unwrap();
+ insts.push((Oper::CpyLit(val), words[2]));
+ } else {
+ insts.push((Oper::CpyReg(words[1]), words[2]));
+ }
+ } else if words[0] == "jnz" {
+ // words[1] is value, can be literal number or register name
+ // words[2] is offset to jump by if branch is taken
+ let off = words[2].parse().unwrap();
+ if words[1].chars().all(|c| c.is_ascii_digit() || c == '-') { // I know
+ let val = words[1].parse().unwrap();
+ insts.push((Oper::JnzLit(val, off), "_"));
+ } else {
+ insts.push((Oper::JnzReg(words[1], off), "_"));
+ }
+ }
+ }
+
+ insts
+}
+
+fn execute(insts: &Vec<(Oper, &str)>, init: Vec<(&str, isize)>) -> isize {
+ // `init' contains initial register values
+ let mut state: HashMap<&str, isize> = init.into_iter().collect();
+
+ let mut ip = 0; // instruction pointer
+ while ip < insts.len() {
+ // Get destination register now, because we'll mess with `ip' later
+ let dst = insts[ip].1;
+
+ // Too early for mutable borrow of `state', so write to `tmp' instead
+ let mut tmp = state.get(dst).copied().unwrap_or(0);
+ match insts[ip].0 {
+ Oper::IncReg => {
+ tmp += 1;
+ },
+ Oper::DecReg => {
+ tmp -= 1;
+ },
+ Oper::CpyLit(val) => {
+ tmp = val;
+ },
+ Oper::CpyReg(src) => {
+ let val = state.get(&src).copied().unwrap_or(0);
+ tmp = val;
+ },
+ Oper::JnzLit(val, off) => {
+ if val != 0 {
+ // Subtract 1 to compensate for `ip += 1;' below
+ ip = ((ip as isize) + off - 1) as usize;
+ }
+ },
+ Oper::JnzReg(src, off) => {
+ let val = state.get(&src).copied().unwrap_or(0);
+ if val != 0 {
+ // Subtract 1 to compensate for `ip += 1;' below
+ ip = ((ip as isize) + off - 1) as usize;
+ }
+ },
+ };
+
+ // "_" is a dummy destination register used by the "jnz" instructions
+ if dst != "_" {
+ *state.entry(dst).or_insert(0) = tmp;
+ }
+
+ ip += 1;
+ }
+
+ state.get("a").copied().unwrap()
+}
+
+fn main() {
+ // Read assembly from input text file and parse it
+ let input = fs::read_to_string("input.txt").unwrap();
+ let lines = input.lines().collect();
+ let insts = parse(lines);
+
+ // Part 1 gives 318117 for my input
+ println!("Part 1 solution: {}", execute(&insts, vec![]));
+
+ // Part 2 gives 9227771 for my input
+ println!("Part 2 solution: {}", execute(&insts, vec![("c", 1)]));
+}
+
+
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn part1_example1() {
+ let lines = vec!["cpy 41 a", "inc a", "inc a", "dec a", "jnz a 2", "dec a"];
+ let insts = parse(lines);
+ assert_eq!(execute(&insts, vec![]), 42);
+ }
+}
diff --git a/d13/Cargo.toml b/d13/Cargo.toml
new file mode 100644
index 0000000..2bab20e
--- /dev/null
+++ b/d13/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "d13"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/d13/src/main.rs b/d13/src/main.rs
new file mode 100644
index 0000000..52ef4ce
--- /dev/null
+++ b/d13/src/main.rs
@@ -0,0 +1,79 @@
+use std::collections::VecDeque;
+
+fn is_space(seed: usize, (x, y): (usize, usize)) -> bool {
+ let sum = x*x + 3*x + 2*x*y + y + y*y + seed;
+ let bin = format!("{:#b}", sum);
+ bin.matches('1').count() % 2 == 0
+}
+
+fn solve_puzzle(seed: usize, part1_goal: (usize, usize), part2_limit: usize) -> (usize, usize) {
+ let mut part1_found = false;
+ let mut part1_depth = 0;
+ let mut part2_count = 1;
+
+ // Breadth-first search of the maze
+ let start = (1, 1);
+ let mut visited = vec![start];
+ let mut queue = VecDeque::from([(start, 0)]);
+ loop {
+ let (pos, depth) = queue.pop_front().unwrap();
+
+ // Is this the shortest path to `part1_goal'?
+ if pos == part1_goal && !part1_found {
+ part1_found = true;
+ part1_depth = depth;
+ }
+ // Have we found all the information we want?
+ if depth > part2_limit && part1_found {
+ return (part1_depth, part2_count);
+ }
+
+ // The grid extends infinitely far in the positive directions
+ let mut adjacents = vec![
+ (pos.0 + 1, pos.1),
+ (pos.0, pos.1 + 1),
+ ];
+ if pos.0 > 0 {
+ adjacents.push((pos.0 - 1, pos.1));
+ }
+ if pos.1 > 0 {
+ adjacents.push((pos.0, pos.1 - 1));
+ }
+
+ for adj in adjacents {
+ // Is this a valid move to a space we haven't visited before?
+ if is_space(seed, adj) && !visited.contains(&adj) {
+ visited.push(adj);
+ queue.push_back((adj, depth + 1));
+
+ // Count locations reachable in at most `part2_limit' steps
+ if depth < part2_limit {
+ part2_count += 1;
+ }
+ }
+ }
+ }
+}
+
+fn main() {
+ // My personal puzzle input
+ let seed = 1358;
+
+ let (part1, part2) = solve_puzzle(seed, (31, 39), 50);
+
+ // Part 1 gives 96 for me
+ println!("Part 1 solution: {}", part1);
+
+ // Part 2 gives 141 for me
+ println!("Part 2 solution: {}", part2);
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn part1_example1() {
+ assert_eq!(solve_puzzle(10, (7, 4), 42).0, 11);
+ }
+}
diff --git a/d14/Cargo.toml b/d14/Cargo.toml
new file mode 100644
index 0000000..af72462
--- /dev/null
+++ b/d14/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "d14"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
+md5 = "0.7.0"
diff --git a/d14/src/main.rs b/d14/src/main.rs
new file mode 100644
index 0000000..52f9f1f
--- /dev/null
+++ b/d14/src/main.rs
@@ -0,0 +1,116 @@
+use md5;
+
+type Hash = Vec<char>;
+
+// Find first `char' appearing three time in a row in `h', if any
+fn find_triple(h: &Hash) -> Option<char> {
+ for i in 0..h.len() - 2 {
+ if h[i] == h[i + 1] && h[i] == h[i + 2] {
+ return Some(h[i]);
+ }
+ }
+ None
+}
+
+// Does `h' contain `c' five times in a row?
+fn has_quintuple(h: &Hash, c: char) -> bool {
+ let mut qs: Vec<char> = Vec::new();
+
+ for i in 0..h.len() - 4 {
+ if h[i] == h[i + 1] && h[i] == h[i + 2] && h[i] == h[i + 3] && h[i] == h[i + 4] {
+ qs.push(h[i])
+ }
+ }
+
+ qs.contains(&c)
+}
+
+struct HashCache<'a> {
+ salt: &'a str,
+ reps: usize,
+ vec: Vec<Hash>,
+}
+
+impl<'a> HashCache<'a> {
+ fn new(salt: &'a str, reps: usize) -> Self {
+ HashCache {
+ salt,
+ reps,
+ vec: Vec::new(),
+ }
+ }
+
+ // Generate hashes on demand, and always cache them for later use.
+ // Can't write this as `impl Index<usize> for HashCache' because
+ // the `Index' trait only allows an immutable borrow `&self'.
+ fn at_index(&mut self, i: usize) -> &Hash {
+ // If this hash is not in the cache yet...
+ if i >= self.vec.len() {
+ // ... calculate all hashes up to the requested one
+ for j in self.vec.len()..i + 1 {
+ let d = format!("{}{}", self.salt, j);
+ let mut h = format!("{:x}", md5::compute(d));
+
+ // Additional key stretching repetitions
+ for _k in 0..self.reps {
+ h = format!("{:x}", md5::compute(h));
+ }
+
+ self.vec.push(h.chars().collect());
+ }
+ }
+
+ &self.vec[i]
+ }
+}
+
+fn solve_puzzle(salt: &str, reps: usize) -> usize {
+ // The 64 valid indices we want to find
+ let mut valid = Vec::new();
+
+ let mut hc = HashCache::new(salt, reps);
+ let mut i = 0;
+ while valid.len() < 64 {
+ // If `hc.at_index(i)' contains any `c' three times in a row
+ if let Some(c) = find_triple(hc.at_index(i)) {
+ for j in 1..1001 {
+ if has_quintuple(hc.at_index(i + j), c) {
+ valid.push(i);
+ break;
+ }
+ }
+ }
+
+ i += 1;
+ }
+
+ *valid.last().unwrap()
+}
+
+fn main() {
+ // My personal puzzle input
+ let salt = "yjdafjpo";
+
+ // Part 1 gives 25427 for me
+ println!("Part 1 solution: {}", solve_puzzle(salt, 0));
+
+ // Part 2 gives 22045 for me
+ println!("Part 2 solution: {}", solve_puzzle(salt, 2016));
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn part1_example1() {
+ let salt = "abc";
+ assert_eq!(solve_puzzle(salt, 0), 22728);
+ }
+
+ #[test]
+ fn part2_example1() {
+ let salt = "abc";
+ assert_eq!(solve_puzzle(salt, 2016), 22551);
+ }
+}
diff --git a/d15/Cargo.toml b/d15/Cargo.toml
new file mode 100644
index 0000000..01030d9
--- /dev/null
+++ b/d15/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "d15"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/d15/input.txt b/d15/input.txt
new file mode 100644
index 0000000..396cee2
--- /dev/null
+++ b/d15/input.txt
@@ -0,0 +1,6 @@
+Disc #1 has 13 positions; at time=0, it is at position 10.
+Disc #2 has 17 positions; at time=0, it is at position 15.
+Disc #3 has 19 positions; at time=0, it is at position 17.
+Disc #4 has 7 positions; at time=0, it is at position 1.
+Disc #5 has 5 positions; at time=0, it is at position 0.
+Disc #6 has 3 positions; at time=0, it is at position 1.
diff --git a/d15/src/main.rs b/d15/src/main.rs
new file mode 100644
index 0000000..be1ce8f
--- /dev/null
+++ b/d15/src/main.rs
@@ -0,0 +1,71 @@
+use std::fs;
+
+#[derive(Clone, Debug)]
+struct Disc {
+ pos: usize,
+ period: usize,
+}
+
+fn parse(lines: Vec<&str>) -> Vec<Disc> {
+ let mut result = Vec::new();
+ // Add a dummy 0th disc for slightly cleaner code later
+ result.push(Disc { pos: 0, period: 1 });
+
+ for line in lines {
+ let words: Vec<&str> = line.split_ascii_whitespace().collect();
+ result.push(Disc {
+ pos: words[11].trim_end_matches('.').parse().unwrap(),
+ period: words[3].parse().unwrap(),
+ });
+ }
+
+ result
+}
+
+fn solve_puzzle(discs: &Vec<Disc>) -> usize {
+ let mut t_start = 0;
+
+ 'outer: loop {
+ let mut dt = 1;
+ while dt < discs.len() {
+ // Calculate the disc's current position. If 0, the capsule
+ // can continue, otherwise this `t_start' must be rejected.
+ if (discs[dt].pos + t_start + dt) % discs[dt].period != 0 {
+ t_start += 1;
+ continue 'outer;
+ }
+ dt += 1;
+ }
+
+ return t_start;
+ }
+}
+
+fn main() {
+ // Read disc stats from input text file
+ let input = fs::read_to_string("input.txt").unwrap();
+ let lines = input.lines().collect();
+ let mut discs = parse(lines);
+
+ // Part 1 gives 203660 for me
+ println!("Part 1 solution: {}", solve_puzzle(&discs));
+
+ discs.push(Disc { pos: 0, period: 11 });
+ // Part 2 gives 2408135 for me
+ println!("Part 2 solution: {}", solve_puzzle(&discs));
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn part1_example1() {
+ let lines = vec![
+ "Disc #1 has 5 positions; at time=0, it is at position 4.",
+ "Disc #2 has 2 positions; at time=0, it is at position 1.",
+ ];
+ let discs = parse(lines);
+ assert_eq!(solve_puzzle(&discs), 5);
+ }
+}
diff --git a/d16/Cargo.toml b/d16/Cargo.toml
new file mode 100644
index 0000000..32dad4c
--- /dev/null
+++ b/d16/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "d16"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/d16/src/main.rs b/d16/src/main.rs
new file mode 100644
index 0000000..06ba9e1
--- /dev/null
+++ b/d16/src/main.rs
@@ -0,0 +1,81 @@
+fn generate_data(input: &str, length: usize) -> String {
+ let mut a = String::from(input);
+
+ while a.len() < length {
+ let mut b = String::new();
+
+ // Fill `b' with reversed and bit-flipped `a'
+ for c in a.chars().rev() {
+ b.push(if c == '0' { '1' } else { '0' });
+ }
+
+ a = format!("{}0{}", a, b);
+ }
+
+ a.truncate(length);
+ a
+}
+
+fn get_checksum(data: &str) -> String {
+ let mut chars: Vec<char> = data.chars().collect();
+
+ while chars.len() % 2 == 0 {
+ let mut next = Vec::new();
+
+ // For each pair of characters (length is even due to `while')
+ for i in 0..chars.len() / 2 {
+ // If both chars in this pair are equal
+ if chars[2 * i] == chars[2 * i + 1] {
+ next.push('1');
+ } else {
+ next.push('0');
+ }
+ }
+
+ chars = next;
+ }
+
+ chars.into_iter().collect()
+}
+
+fn solve_puzzle(input: &str, length: usize) -> String {
+ let data = generate_data(input, length);
+ get_checksum(&data)
+}
+
+fn main() {
+ // My personal puzzle input
+ let input = "11011110011011101";
+
+ // Part 1 gives 00000100100001100 for me
+ println!("Part 1 solution: {}", solve_puzzle(input, 272));
+
+ // Part 1 gives 00011010100010010 for me
+ println!("Part 2 solution: {}", solve_puzzle(input, 35651584));
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn test_data() {
+ assert_eq!(generate_data("1", 3), "100");
+ assert_eq!(generate_data("0", 3), "001");
+ assert_eq!(generate_data("11111", 11), "11111000000");
+ assert_eq!(
+ generate_data("111100001010", 25),
+ "1111000010100101011110000"
+ );
+ }
+
+ #[test]
+ fn test_checksum() {
+ assert_eq!(get_checksum("110010110100"), "100");
+ }
+
+ #[test]
+ fn part1_example1() {
+ assert_eq!(solve_puzzle("10000", 20), "01100");
+ }
+}
diff --git a/d17/Cargo.toml b/d17/Cargo.toml
new file mode 100644
index 0000000..afee2ab
--- /dev/null
+++ b/d17/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "d17"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
+md5 = "0.7.0"
diff --git a/d17/src/main.rs b/d17/src/main.rs
new file mode 100644
index 0000000..bacc9f4
--- /dev/null
+++ b/d17/src/main.rs
@@ -0,0 +1,109 @@
+use std::collections::VecDeque;
+
+use md5;
+
+fn solve_puzzle(passwd: &str) -> Vec<String> {
+ let mut paths = Vec::new();
+
+ // Breadth-first search of all possible paths
+ let start = (String::new(), (0, 0));
+ let mut queue = VecDeque::from([start]);
+ loop {
+ let pp = queue.pop_front();
+ // All paths have finished or got stuck at locked doors
+ if pp.is_none() {
+ break;
+ }
+ // Did we successfully reach the bottom-right corner?
+ let (path, pos) = pp.unwrap();
+ if pos == (3, 3) {
+ paths.push(path.clone());
+ continue;
+ }
+
+ // Doors open based on MD5 hash of `passw' + `path'
+ let data = format!("{}{}", passwd, path);
+ let hash: Vec<char> = format!("{:x}", md5::compute(data)).chars().collect();
+
+ // Which doors are open, i.e. what are the valid next moves?
+ let mut options = Vec::new();
+ let unlock = ['b', 'c', 'd', 'e', 'f'];
+ if unlock.contains(&hash[0]) && pos.1 > 0 {
+ options.push((format!("{}U", path), (pos.0, pos.1 - 1)));
+ }
+ if unlock.contains(&hash[1]) && pos.1 < 3 {
+ options.push((format!("{}D", path), (pos.0, pos.1 + 1)));
+ }
+ if unlock.contains(&hash[2]) && pos.0 > 0 {
+ options.push((format!("{}L", path), (pos.0 - 1, pos.1)));
+ }
+ if unlock.contains(&hash[3]) && pos.0 < 3 {
+ options.push((format!("{}R", path), (pos.0 + 1, pos.1)));
+ }
+
+ // This is a breadth-first search, but because `path' is encoded
+ // into the state, we don't need to check that nodes are unexplored
+ for (npath, npos) in options {
+ queue.push_back((npath, npos));
+ }
+ }
+
+ paths
+}
+
+fn main() {
+ // My personal puzzle input
+ let input = "edjrjqaa";
+
+ let paths = solve_puzzle(input);
+
+ // Part 1 gives "DUDRDLRRRD" for me
+ println!("Part 1 solution: {}", paths.first().unwrap());
+
+ // Part 2 gives 502 for me
+ println!("Part 2 solution: {}", paths.last().unwrap().len());
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn part1_example1() {
+ let passwd = "ihgpwlah";
+ assert_eq!(solve_puzzle(passwd).first().unwrap(), "DDRRRD");
+ }
+
+ #[test]
+ fn part2_example1() {
+ let passwd = "ihgpwlah";
+ assert_eq!(solve_puzzle(passwd).last().unwrap().len(), 370);
+ }
+
+ #[test]
+ fn part1_example2() {
+ let passwd = "kglvqrro";
+ assert_eq!(solve_puzzle(passwd).first().unwrap(), "DDUDRLRRUDRD");
+ }
+
+ #[test]
+ fn part2_example2() {
+ let passwd = "kglvqrro";
+ assert_eq!(solve_puzzle(passwd).last().unwrap().len(), 492);
+ }
+
+ #[test]
+ fn part1_example3() {
+ let passwd = "ulqzkmiv";
+ assert_eq!(
+ solve_puzzle(passwd).first().unwrap(),
+ "DRURDRUDDLLDLUURRDULRLDUUDDDRR"
+ );
+ }
+
+ #[test]
+ fn part2_example3() {
+ let passwd = "ulqzkmiv";
+ assert_eq!(solve_puzzle(passwd).last().unwrap().len(), 830);
+ }
+}
diff --git a/d18/Cargo.toml b/d18/Cargo.toml
new file mode 100644
index 0000000..02d725e
--- /dev/null
+++ b/d18/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "d18"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/d18/input.txt b/d18/input.txt
new file mode 100644
index 0000000..2036710
--- /dev/null
+++ b/d18/input.txt
@@ -0,0 +1 @@
+.^^^.^.^^^^^..^^^..^..^..^^..^.^.^.^^.^^....^.^...^.^^.^^.^^..^^..^.^..^^^.^^...^...^^....^^.^^^^^^^
diff --git a/d18/src/main.rs b/d18/src/main.rs
new file mode 100644
index 0000000..a9410f2
--- /dev/null
+++ b/d18/src/main.rs
@@ -0,0 +1,62 @@
+use std::fs;
+
+fn solve_puzzle(first: &str, num_rows: usize) -> usize {
+ let mut total = first.matches('.').count();
+
+ let mut tiles: Vec<char> = first.chars().collect();
+ for _i in 1..num_rows {
+ let mut next = Vec::new();
+
+ for j in 0..tiles.len() {
+ let is_trap;
+
+ // At left wall
+ if j == 0 {
+ is_trap = tiles[j + 1] == '^'; // rule 2 + 4
+ // At right wall
+ } else if j == tiles.len() - 1 {
+ is_trap = tiles[j - 1] == '^'; // rule 1 + 3
+ // Away from the walls
+ } else {
+ is_trap = tiles[j - 1] == '^' && tiles[j + 1] == '.' // rule 1 + 3
+ || tiles[j - 1] == '.' && tiles[j + 1] == '^'; // rule 2 + 4
+ }
+
+ next.push(if is_trap { '^' } else { '.' });
+ }
+
+ tiles = next;
+ total += tiles.iter().filter(|&c| *c == '.').count();
+ }
+
+ total
+}
+
+fn main() {
+ // Read my personal puzzle input
+ let input = fs::read_to_string("input.txt").unwrap();
+ let first = input.trim_end();
+
+ // Part 1 gives 1939 for me
+ println!("Part 1 solution: {}", solve_puzzle(first, 40));
+
+ // Part 2 gives 19999535 for me
+ println!("Part 1 solution: {}", solve_puzzle(first, 400000));
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn part1_example1() {
+ let input = "..^^.";
+ assert_eq!(solve_puzzle(input, 3), 6);
+ }
+
+ #[test]
+ fn part1_example2() {
+ let input = ".^^.^.^^^^";
+ assert_eq!(solve_puzzle(input, 10), 38);
+ }
+}
diff --git a/d19/Cargo.toml b/d19/Cargo.toml
new file mode 100644
index 0000000..92c186c
--- /dev/null
+++ b/d19/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "d19"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/d19/src/main.rs b/d19/src/main.rs
new file mode 100644
index 0000000..91d9524
--- /dev/null
+++ b/d19/src/main.rs
@@ -0,0 +1,85 @@
+// Find the next Elf still in the game, to the left of `i'
+fn next_elf(elves: &[bool], i: usize) -> usize {
+ let mut n = (i + 1) % elves.len();
+ while !elves[n] {
+ n = (n + 1) % elves.len();
+ }
+ n
+}
+
+fn solve_puzzle(
+ num_elves: usize,
+ victim1: usize,
+ next_victim: fn(&[bool], usize, usize, usize) -> usize,
+) -> usize {
+ // We only need to store whether an Elf is still in the game;
+ // we don't care how many presents each one has.
+ let mut elves = [true].repeat(num_elves);
+
+ // Thief and victim indices, respectively
+ let mut t = 0;
+ let mut v = victim1;
+
+ let mut rem = num_elves;
+ while rem > 1 {
+ // Perform the act of stealing
+ elves[v] = false;
+ rem -= 1;
+
+ // Who does the stealing next?
+ t = next_elf(&elves, t);
+
+ // Who gets stolen from next?
+ v = next_victim(&elves, rem, t, v);
+ }
+
+ // Elves should be numbered from 1 instead of 0
+ t + 1
+}
+
+// Part 1: victim is always to the left of thief.
+fn next_victim_part1(elves: &[bool], _rem: usize, nthief: usize, _victim: usize) -> usize {
+ next_elf(elves, nthief)
+}
+
+// Part 2: victim is always across from thief.
+// It's less clear that this function is correct, but it is!
+fn next_victim_part2(elves: &[bool], rem: usize, _nthief: usize, victim: usize) -> usize {
+ let mut nv = next_elf(elves, victim);
+ if rem % 2 == 0 {
+ nv = next_elf(elves, nv);
+ }
+ nv
+}
+
+fn main() {
+ // My personal puzzle input
+ let input = 3014603;
+
+ // Part 1 gives 1834903 for me
+ println!(
+ "Part 1 solution: {}",
+ solve_puzzle(input, 1, next_victim_part1)
+ );
+
+ // Part 2 gives 1420280 for me
+ println!(
+ "Part 2 solution: {}",
+ solve_puzzle(input, input / 2, next_victim_part2)
+ );
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn part1_example1() {
+ assert_eq!(solve_puzzle(5, 1, next_victim_part1), 3);
+ }
+
+ #[test]
+ fn part2_example1() {
+ assert_eq!(solve_puzzle(5, 5 / 2, next_victim_part2), 2);
+ }
+}
diff --git a/d20/Cargo.toml b/d20/Cargo.toml
new file mode 100644
index 0000000..f5251d0
--- /dev/null
+++ b/d20/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "d20"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/d20/input.txt b/d20/input.txt
new file mode 100644
index 0000000..c3e912f
--- /dev/null
+++ b/d20/input.txt
@@ -0,0 +1,1104 @@
+272152717-281364173
+480675455-489214207
+3562619188-3566180938
+474796666-476679929
+1859288016-1859426304
+3500809029-3520779986
+1711620671-1724624325
+376497036-379822744
+2334350029-2336872286
+2880314906-2881510051
+257912946-260566708
+2964360275-2973540924
+889696219-900080622
+2727172832-2737372242
+33674001-51133436
+2718782366-2736816045
+41293631-52546854
+1064827080-1071610531
+1373807967-1374769067
+3261078460-3268114587
+1583129312-1602482863
+1605269651-1617971405
+365345542-377782493
+2858099254-2862714857
+1147380159-1156709753
+1087934555-1093750979
+998603437-1001868893
+234297440-245049936
+427084952-449321291
+3115490453-3126172818
+0-166475
+2859739533-2864404117
+2879116214-2888999956
+4166942312-4169074982
+2693533587-2694200673
+84162473-84534337
+2164071501-2168305216
+3745751095-3750043362
+2647427848-2647977897
+2028900925-2034847596
+876886411-878398110
+2589041333-2589873869
+876959837-878627172
+431139724-458304869
+1877994382-1887344924
+473575203-475773145
+252091135-257535969
+177110001-177143710
+2722497928-2723521816
+2208127-2536514
+1748077674-1751224226
+2362936907-2381045647
+2020385448-2029519771
+3108825744-3123438032
+872292652-885764819
+305053947-314709696
+2717924562-2718755692
+48149217-51160833
+2149726170-2150134226
+1729844094-1745733187
+1375741284-1378782323
+3744515388-3761146958
+78523085-78634151
+1634372345-1650424418
+3199349237-3209140394
+2011853949-2039316392
+769580925-794759455
+3841896290-3862358298
+3360393034-3379747723
+1120644472-1134516526
+815948131-837832345
+1590411139-1596337230
+2894381219-2935549329
+3688775236-3725245783
+963257634-966114246
+3566641344-3578334024
+1402589368-1434296916
+2742164387-2746045182
+3336884060-3357139723
+1529922302-1532912060
+812048355-820600359
+3535903629-3546917858
+3793132304-3794479774
+2441870431-2446591046
+790688046-795287265
+1094905232-1100177740
+2745878705-2749992348
+119256353-127273572
+3046258846-3057351205
+1754142948-1755600336
+1439035504-1441512409
+2099760008-2108426979
+2336936249-2337901885
+886155227-897744302
+278389264-304413122
+2261948686-2274345666
+3650645303-3661861270
+574462284-588550773
+1759196520-1782105094
+965026392-968307163
+2946755906-2963417308
+1766330775-1797112785
+1200115116-1225710522
+2080628180-2093783866
+2259186780-2265576012
+3422484974-3431403368
+2617357126-2619542029
+3535424340-3544236729
+1159703397-1178419333
+3695852451-3731387995
+2624409231-2626475102
+2462304649-2486546066
+1991659530-1991878310
+3675781139-3676295005
+3077370804-3098240471
+2410139047-2412323245
+1441379095-1464833739
+4254940654-4257828865
+3134602505-3135787446
+1531285367-1533939508
+1982248547-1989219645
+3717359312-3718050739
+1149793223-1159703395
+1718841131-1723739366
+1338353885-1363179561
+432322947-450369838
+3592044590-3598404106
+2783263665-2802135338
+2743201911-2758731127
+2940668500-2946140977
+3588363275-3594330069
+3675945049-3679197388
+154488705-187446525
+1653195306-1670854086
+2771303647-2772439896
+84146114-84264353
+1593778990-1622000763
+1580746474-1580917737
+801556682-801983712
+2268279290-2282899033
+3429390560-3432646573
+1355690206-1364432183
+3364827834-3370027309
+1343867080-1356033542
+2769747098-2802096717
+2451978746-2499145061
+3181481071-3202130015
+149287453-193454621
+2907925124-2933668261
+3525815495-3531996642
+892781900-902374081
+801983714-808209514
+1205516416-1207518863
+3475944050-3479276890
+1680662691-1693249318
+441188152-451875207
+3866263742-3869203885
+872306827-886155226
+3641638239-3656867109
+1292372277-1314188693
+1062559245-1064950825
+2334198700-2335529918
+1122962410-1136372412
+623323144-625918342
+2425193847-2429793856
+373315052-379611660
+2418007458-2424289401
+2149571480-2150070836
+1991878311-1994706041
+3043381174-3046887777
+497434379-500148281
+1825422529-1838184381
+137450473-139095016
+248808686-249748629
+1989969134-1990676913
+960553017-960915199
+2336374612-2337150925
+3369599561-3390928276
+113852260-145672651
+2986681144-2989530365
+3856382204-3873203604
+1657674792-1663548211
+2650185850-2651060935
+1647983099-1662799191
+1082357088-1112329267
+3793767754-3794336046
+3705877748-3728561957
+2769813898-2772369413
+3794164058-3801441915
+623200755-625407322
+1241966895-1253020214
+450369839-463131291
+2717038617-2723107862
+961267447-962353699
+193454623-196340979
+4253667440-4261704870
+3269563154-3275293388
+1505893371-1506880655
+3873203606-3889412741
+443548825-444733658
+3045753812-3049382630
+732764611-733035245
+961034623-961300670
+1373470559-1373526698
+2860192109-2867276065
+3312623058-3313008029
+3942424007-3951811891
+1197857710-1214225356
+458105388-462489469
+4259123154-4263336824
+960863927-961733781
+44819071-52470556
+957158383-958041099
+2543986743-2554322396
+339721933-346413740
+1010736956-1030771663
+4288781458-4289261456
+3687051286-3722932714
+2420813443-2424860115
+1989395087-1989698527
+3473694511-3476125935
+2408526816-2412196386
+1989398215-1991201331
+1526350090-1542206580
+2394556084-2399639414
+3510330656-3522250181
+137874061-144376880
+4167095310-4177987517
+2785359721-2785427263
+15024863-23531388
+1625174667-1658679299
+974122151-995631685
+1540947566-1554930456
+2424921025-2429636819
+1993822183-1994839237
+1094823818-1097108689
+69796587-71291314
+37126017-49427721
+3793022166-3794100162
+908189684-911496714
+2911211968-2917349047
+1227212686-1234159311
+3776286544-3783635666
+3531996644-3536250992
+3396302214-3406687062
+1476456536-1478818018
+2443497737-2447228620
+962292354-965288690
+1833703443-1843811212
+998277195-1000562480
+883225973-896212798
+2202815121-2215802598
+3557733372-3563107357
+2648035823-2649474134
+2723831559-2734044916
+1714279973-1738575730
+110217-574651
+1398965758-1409470798
+2330603686-2335139291
+1506286657-1511280423
+3365567975-3371386015
+466326205-480223737
+1989219647-1989438488
+3008188882-3010347685
+1070925288-1071665482
+2111554226-2123836945
+2137226110-2138852181
+1081261041-1091870264
+1081552237-1090538414
+2000657198-2037677988
+2718009384-2720142472
+925940762-939052067
+4179143261-4191765704
+3426378774-3430410036
+3676393933-3680167774
+3271833171-3277125583
+274414401-283893852
+3124560226-3128380638
+1208163309-1215074110
+2465798305-2494706753
+3050317115-3058897888
+1302678331-1315210828
+1751224227-1758206846
+931444766-948598982
+151669773-180559543
+255864690-255985990
+1556987318-1563743144
+16294070-23923782
+1415762720-1421421169
+3853344243-3864268114
+1280237454-1286328218
+2944350248-2976813361
+2187770126-2203436268
+3505239916-3517301515
+3232015564-3235367871
+2146211145-2166090499
+910952647-911877073
+1579658725-1581392690
+1237242317-1258610777
+2589766513-2598433041
+3449310840-3449858133
+745819525-755688297
+3776094116-3783478049
+2108426981-2124149170
+3449389881-3462604413
+2301503968-2324628965
+1005263513-1027181473
+1952664131-1969650551
+1285113553-1288652959
+3896408883-3908694324
+1920600328-1921999554
+1025403493-1031247416
+3905769594-3930128244
+1031247417-1047578444
+3885007170-3895219247
+3598377658-3599404192
+1697890477-1697912613
+954538505-957768997
+2816494072-2842728200
+492165035-498202012
+3137181704-3152588209
+1755735260-1759196518
+1371495492-1371550991
+2501923864-2514064340
+305959083-311818120
+4250019192-4275532230
+114168261-116414851
+2447228622-2451978745
+766211517-801556681
+3376445798-3394303381
+3501155911-3526104374
+2548986102-2564634962
+3263667615-3270390046
+1807095399-1824137700
+856041972-859823687
+3887315148-3892355947
+1030764665-1045428052
+638833662-640333593
+2121184882-2129744090
+2881011537-2885878144
+3588560066-3597713320
+3124980377-3134500989
+489214209-512240639
+3760702359-3764383643
+1090166392-1096894006
+917419134-922706929
+1296067761-1309424658
+689572986-696039127
+2660085630-2660431880
+680230992-716886780
+1592087783-1598197492
+1530767294-1575862739
+2082087967-2085220519
+2424541691-2426736024
+113504564-116385542
+1916132714-1932780572
+503684477-512284558
+2615977363-2622859043
+4035141786-4047227590
+1663548212-1680662689
+3047614614-3051657189
+2634680042-2641014306
+2583260376-2591896929
+2645275066-2647436256
+64047546-86026817
+1071039399-1072162085
+2594771897-2599508024
+83962861-84534191
+902374083-941216585
+2586806577-2599448524
+1274245593-1274516893
+4031038177-4040911753
+983068813-998624841
+534906133-573925401
+3329216543-3336884059
+4125892395-4138236492
+3807924665-3812644495
+1774911-2450996
+446418646-455236779
+2877486448-2884177700
+1373832888-1373901196
+370639181-384962937
+12016954-19316517
+3134500991-3134627688
+1373501126-1373590483
+1777703220-1777741597
+3743473590-3769013947
+2353521003-2362936906
+2468617254-2477279185
+78550601-78698869
+1273031112-1274488766
+968052409-969178069
+3907082563-3913084150
+3322437732-3338709909
+970661335-978617986
+2985507999-2990149897
+1499815926-1518480568
+2047086312-2056763544
+3154050192-3178489168
+1544927329-1559460655
+614918489-621719308
+3733606954-3743473589
+1499734003-1505336823
+1765493480-1780907733
+1112329269-1144192156
+1908189573-1916132712
+2978158245-2980295974
+854842773-855564041
+3851762797-3856667050
+2987912828-2988480807
+3845355673-3864117699
+2372563028-2379155071
+4164107384-4175248779
+206495443-209268583
+2893360924-2906330615
+1374122783-1374244946
+1315210829-1323332739
+2819221138-2820241142
+2987725800-2988399994
+3420480297-3426061444
+1745733189-1750260936
+2771579434-2772910814
+1721651362-1731098010
+1200223043-1222602885
+3431337889-3434193062
+2412323247-2441870430
+3756861847-3771488683
+853629069-857835277
+3744664061-3763198907
+1371491558-1371529465
+1932780573-1939156498
+3661861272-3662675926
+2648267077-2650619730
+3366486664-3371903512
+1268371412-1276470615
+2691106038-2691272785
+3227264064-3240740070
+1906133184-1910990608
+3853470102-3865286420
+2646285040-2646358000
+2196926231-2206264598
+4257710901-4257836607
+242078367-255972629
+4198987003-4201086361
+1240990629-1248211769
+2749992349-2760767131
+2787866331-2806708160
+809302575-853629067
+3032053776-3036049062
+2943717702-2946230991
+4288724821-4289568650
+3215397670-3224618461
+1858955725-1859353621
+2083864513-2101037055
+694973182-718973623
+4168983031-4174451494
+2807055496-2816494071
+1055347167-1064190974
+3424907263-3427071583
+859417782-872292650
+1467661058-1474811610
+2393002352-2403005964
+4197417217-4208856131
+3370246481-3375696999
+1373468974-1373569404
+2905152772-2910933373
+1980855826-1983920990
+732863279-733152241
+4285742284-4286129026
+1614476697-1614835826
+2635427600-2644232203
+1470741851-1479153638
+2944130276-2951908714
+4291064131-4293894991
+1990921080-1991701381
+4227850767-4244632336
+1807565528-1814396331
+2361860677-2376637038
+2943119919-2945768965
+2172859679-2221926662
+249198701-250135569
+2652844144-2657371637
+1885639221-1900413603
+1509729634-1512261818
+3004310417-3011080364
+1694482383-1697891607
+4177987519-4212820708
+4161048921-4161074968
+476220543-480675454
+2588894890-2592105515
+2757311298-2758434349
+4050934926-4082396822
+2034604741-2043305856
+2331464398-2333528059
+1066956928-1067355622
+2646313639-2648035821
+2066636902-2067863299
+2332503976-2334659414
+3180110462-3204410296
+577236362-586064251
+256418607-258764997
+2233705634-2248146735
+3716569187-3719939659
+1386717710-1439035502
+1859175593-1859580659
+3708021302-3722129580
+3976120818-4005662251
+304413124-306709976
+1395309937-1427985546
+4226665082-4232713677
+4212820709-4214429692
+1693249319-1711620669
+2499145063-2503398930
+3721989699-3733606952
+1717757397-1721218576
+1127769041-1132781724
+3644972707-3646872069
+2077152015-2084609524
+1990599678-1991511335
+2335139292-2353521001
+4088569210-4091483373
+1642017342-1657864055
+2588719725-2589121881
+2903005844-2913683635
+194715771-196440167
+3963719430-3974518407
+4288320832-4289172749
+3151726457-3165427383
+23507982-23800784
+2895160172-2940456225
+1001177233-1005263511
+43609109-48863103
+1144192157-1157514424
+734439882-765944362
+695965351-719454865
+856803507-869754401
+1890217805-1904089509
+3300131715-3305283163
+1529237006-1529595328
+2753090359-2757523819
+828668586-831203389
+3427619213-3428732628
+2967859507-2976560941
+2329569453-2332265395
+2239885549-2252296728
+1293808207-1320485733
+2604175022-2624108715
+2697882453-2723829703
+2463205201-2470677980
+3888353469-3890883045
+400102191-427084950
+4150245199-4164107383
+1395492363-1406000929
+3675122217-3676808853
+116414852-148746047
+787563761-789069064
+3197100188-3202418404
+1373782716-1373895006
+2617111647-2617819575
+2550216289-2557881293
+1851804917-1852370216
+2617793199-2618721355
+1939113565-1942772474
+1066259539-1066964651
+2536515-2749485
+3851513911-3872830251
+3315330215-3350319238
+1372313956-1373952939
+270099979-278389263
+2861061889-2874958905
+2982764434-2982918860
+1225710523-1232594859
+3080849793-3087237669
+2168507276-2172859677
+2554045929-2558669015
+2715737041-2742164385
+2564405335-2570912208
+3111405671-3131810967
+1881537985-1906133183
+2327518639-2329278606
+1695964017-1700687554
+2325334299-2328665915
+2329084251-2329569451
+2526389631-2574332443
+2716903062-2718451591
+177141073-177775415
+177103338-177124151
+1072162087-1081552236
+3178535948-3199349236
+2293206667-2314675667
+1889288474-1903754822
+4251848410-4278329656
+697896245-706915923
+1811201479-1827334058
+102113146-112076690
+2390223078-2399260655
+829332527-848880205
+3861878449-3866482364
+1213011864-1220748067
+3580711167-3587101215
+1286680169-1311818230
+3608853495-3610981230
+1511277091-1513257838
+3450147668-3459285977
+2780989504-2803855679
+3882846313-3888163900
+941216586-953952178
+2983401144-2988059936
+2624108716-2624926759
+3402309579-3420480295
+3312749262-3314042171
+3399699391-3418732708
+4105670961-4129433645
+4257493527-4284962279
+23923784-47709067
+953952180-957049748
+2876724088-2878697891
+2416003985-2423463911
+740946393-742024905
+1380318986-1386717709
+2026496387-2041982393
+3072950856-3095969673
+196440168-234297438
+3324520138-3350841770
+1184551931-1197857708
+3723507322-3732029196
+1781641387-1785877866
+2407131596-2409544298
+5689429-5741644
+1739110416-1741141505
+2548794765-2558310137
+808209515-836691306
+2657455751-2663837619
+790539346-793059170
+568516293-569131984
+3321930331-3346790026
+472011317-479941460
+857857646-863011064
+4168502125-4170164107
+588550774-597747807
+1637815642-1662350209
+2460793334-2466026338
+958041100-970661333
+2139217624-2146211143
+2539598-2830629
+1266192646-1268371411
+1323332741-1335959162
+1439736912-1446610546
+4061001198-4065392221
+2524105557-2526389630
+2222452808-2225462596
+1388815777-1397555491
+3612936376-3650645302
+3045926276-3065706826
+3574212945-3575594696
+2827277916-2836024368
+1991475869-1991926125
+3505806023-3528702608
+2414724634-2430851599
+3021588078-3028285988
+2574332445-2592271496
+2057264136-2059202053
+3244432520-3248685694
+1712738962-1729844093
+56528833-64047545
+2971719660-2977620581
+3605787690-3611524810
+3851574035-3854062441
+1235784822-1266192644
+3006793176-3021032700
+3900016789-3922138525
+1234159313-1235784821
+455883118-466326203
+1053312381-1063953379
+2820222101-2821175967
+2502044549-2506260381
+568736374-569251939
+1578664897-1579658724
+344106424-350103368
+1590175536-1595299212
+2273779785-2277363906
+3984562197-4010152611
+45721618-54860968
+3394303383-3402309578
+1511624839-1512608254
+3884829071-3890292172
+2038966626-2047086310
+4103290900-4119641469
+3357139725-3360393033
+2780813493-2807055494
+2225462598-2252329658
+2592271497-2604175020
+1049541136-1055392314
+1533973152-1578664895
+3209140396-3244432519
+3135787447-3178535946
+1873694527-1911946735
+3716488307-3717917511
+1863079077-1868159650
+1852620713-1869463034
+2340761-6722844
+4010806326-4011637774
+2335714002-2344955062
+2503398931-2516105578
+4096488349-4097750835
+495702052-499886980
+2633949022-2643879390
+2230563996-2248676097
+1992368509-1995459736
+725466259-734439880
+3284564906-3289305182
+3006621951-3015555807
+2221926663-2224742001
+1807424325-1816026389
+1876686839-1880758503
+2691158517-2691387740
+3757816372-3758051212
+2956964132-2972741344
+2636000153-2638744402
+678819639-679798433
+250063049-250516719
+3855876124-3866454360
+3312438883-3313193146
+82686086-84339480
+1092916631-1107918456
+1843811214-1852620712
+3809172487-3830073502
+2616993454-2620553751
+2682855477-2715737040
+3863648987-3866503080
+1271724277-1275741880
+2384026814-2393286163
+2957501262-2965749150
+4213745292-4214551645
+2556715457-2565699508
+2263615-2555032
+2510926180-2524105555
+2198333368-2201790504
+983311745-991202543
+326387197-344106423
+3087807140-3088895982
+86026819-109305037
+2504533668-2507452669
+1371550992-1377668791
+1656901715-1676675657
+130445224-140364961
+875328099-885585914
+2299489843-2306253705
+3450835271-3481339653
+4014358521-4031038176
+2340311395-2351064022
+2883149064-2887845481
+2259592077-2278614136
+3810542228-3827200634
+3056035363-3068664010
+722584522-723699159
+1735688023-1740818227
+3537763412-3542953759
+2366293314-2375211143
+1411814377-1424672790
+3100999210-3102484531
+4284962281-4294967295
+1446610547-1465468961
+2874958907-2877486447
+1765556195-1793446949
+4218980804-4226442852
+494048500-497170493
+360027343-374159699
+2651399811-2665409613
+1047578446-1052368079
+2362920294-2374232484
+2570748019-2571266639
+3256410480-3277105765
+3771488685-3794388011
+722551086-722999678
+741060508-762846249
+1479919768-1481248209
+614971153-617471673
+2982621961-2982812184
+2087732105-2106406062
+2302394373-2326071906
+886110869-893987869
+864175670-867272025
+2119076394-2126808897
+1051546928-1062419089
+678814708-679604844
+2168305217-2172141567
+2943803911-2945854166
+321232218-329790306
+391378250-412099930
+539629846-568721146
+3794388012-3806424827
+2894304683-2915255653
+856495621-857857645
+2743551156-2751996369
+1024955451-1026100964
+177078688-177123406
+4018256524-4039886263
+3945209398-3956309725
+2364930647-2378530823
+1006976522-1021887240
+3757741995-3757947507
+1421470109-1432888460
+3160832331-3169658872
+177045468-177087638
+1090463009-1104430857
+1274373481-1274578120
+2626475104-2640453818
+3284290551-3288427229
+1981618690-1984277097
+1186456381-1195032668
+5052363-7502553
+1509795877-1512150519
+3579924616-3582548171
+4121363479-4137513284
+1488580398-1503472581
+2423275742-2439608584
+2138662322-2138915998
+1382223606-1410305514
+3832391075-3853706505
+1614422103-1614651523
+3369142704-3373032779
+719454867-725466258
+2084732810-2095200322
+1442897307-1457439380
+2112887248-2129529980
+4023595164-4025287662
+611715160-617013605
+778751841-791194910
+3293566719-3305859750
+1772772441-1797304174
+1589764874-1592539287
+1373791581-1374176540
+1590792815-1594025491
+1981551967-1982435626
+1520347646-1542585100
+3099494317-3115490452
+3098240473-3103804691
+3264851832-3269554326
+766110784-766211515
+2019539430-2044044979
+3266317108-3273234008
+1274283817-1274437178
+2650371073-2672921107
+2672921108-2679629874
+2673449969-2682855475
+765944363-766205817
+3853706506-3859959741
+1508362252-1513253382
+876916046-879636492
+3809955806-3810745183
+1274121584-1274542630
+3157351170-3166046719
+1053524276-1064827079
+3791652757-3800601148
+2842728202-2853639142
+3571512615-3579166854
+679353613-679923926
+3809191752-3810740480
+2817388396-2819591739
+2852317315-2861061888
+4256942395-4260208971
+3501898903-3512880687
+3882475326-3886137014
+1966578885-1968167855
+410700018-415718837
+3806424829-3821851233
+1518480570-1533973151
+3147464447-3158958125
+197786374-207567591
+3535028299-3539195436
+4184714120-4186894005
+448892515-456388417
+671686622-678352726
+1360272787-1363580702
+2164873145-2165892440
+3361616306-3375689123
+3091164847-3093370647
+3297273994-3311056250
+398273343-404652855
+1782105095-1803766701
+1484145894-1503189992
+2160023298-2160172849
+2919583395-2932229908
+2812705686-2830443941
+2855216236-2865262494
+148746049-149287452
+589888575-595456264
+314410823-316970816
+2060986022-2063938184
+1803766703-1825422528
+2128237894-2139217623
+4248957737-4257018408
+3561933398-3574109426
+1614389854-1614749576
+468854062-476024564
+436179755-463764255
+589811734-589875676
+673967863-678814706
+979844884-993353080
+1945908845-1980551520
+1990017551-1992668548
+1252508632-1256783095
+2946230992-2982621959
+3954810178-3972017471
+3396778325-3399315311
+3331661742-3344656790
+3072306192-3077370803
+4093061872-4094625093
+2876543933-2878230248
+2854310965-2859128779
+4193316980-4200095285
+730205666-732782756
+3676211467-3676732582
+666890880-674578243
+1371568734-1380318984
+4184744194-4187112660
+1481248211-1499734002
+3379867668-3385527932
+1622428665-1625174665
+3671900758-3678171048
+3705951043-3716692751
+1465468963-1479919767
+1580610051-1583129310
+350103370-365345541
+3900102077-3919890024
+2940456227-2945966226
+3248685696-3284290550
+544295457-564157394
+4016705659-4021147057
+791731732-797225629
+1165689597-1184551930
+3289305184-3312438882
+4097750837-4102130426
+4055841302-4077041304
+3441155355-3450835270
+3314042173-3333554945
+597747809-623200754
+356234097-366220597
+2381045649-2408455595
+4047227592-4049208360
+4092327831-4093008849
+3986217544-4010716485
+3587101217-3589409982
+3939796675-3976120816
+1335959163-1365648715
+3809562980-3810806981
+1374160507-1375189297
+1229723962-1229853859
+2978027850-2978555872
+1081232290-1096685438
+3431403369-3441155353
+3058481098-3072306190
+3615995822-3647806423
+626772256-671686621
+1922970278-1932303880
+687812741-696977728
+3664395391-3676520369
+2073554869-2099760007
+512240640-534906131
+47709068-56528831
+255985991-270099977
+3481339655-3501155910
+2238475796-2249793376
+3866035083-3867269474
+4093117795-4094756619
+4285929403-4287400825
+702714634-707275982
+3036049064-3058481097
+1027080396-1032733050
+113815262-115324511
+2256577067-2275122653
+1990217023-1991256560
+109305038-113504562
+978617987-1000518126
+4057509129-4071389442
+3739975721-3747173973
+320182613-320260227
+1770166-1994691
+291087466-296873313
+4086243810-4096488348
+1276470617-1302918078
+4009439486-4012738003
+4229206868-4234285011
+50143427-53071093
+404422891-410359316
+4161013486-4161053283
+911138009-929609461
+689609396-696731723
+2252329659-2256577065
+613133080-613942155
+4795688-12016953
+641672798-650081964
+389776265-420161914
+3625922134-3642274972
+1846384495-1862435820
+2275122654-2286941521
+4005662252-4011759888
+1579087992-1581111352
+574652-1770165
+1442180635-1450176908
+2760767133-2771395260
+1928232572-1932533591
+102995855-104909244
+4049179426-4050691624
+2830630-3651339
+3552827772-3568200782
+2149613227-2163021264
+1355394428-1371491556
+1697279405-1703102679
+2056763545-2073554867
+3935325191-3944187216
+3553082925-3579924615
+471239627-477134321
+3651340-4795687
+336457769-347991249
+93183635-111293337
+2192128388-2196145589
+2584811687-2598361179
+2772743660-2798530311
+966574237-968633571
+4234775226-4245296919
+3662498499-3663349534
+1373549652-1374239894
+58302860-63670232
+1942772476-1980855825
+3367790115-3376760130
+153092723-163571711
+729975675-730335988
+2192513622-2204700032
+809609217-841628900
+1180032684-1187000735
+1179227554-1195640753
+4232727143-4234293540
+1127122996-1154171178
+314709697-321232216
+324796849-347951368
+1095126621-1109642108
+384962939-400102190
+363929652-366175319
+3821851234-3832391073
+338713138-348077886
+817486506-837487497
+1051940232-1067333023
+19243172-19587047
+257512323-261464746
+1753791137-1753975241
+202493249-230688701
+1579363284-1580767164
+2763246325-2780813492
+2242297310-2249800231
+1995459738-2019539429
+573925402-574462282
+3673851405-3681451655
+3423327301-3428356692
+3681451657-3695852450
+3717161710-3718982299
+2043127586-2043244031
+2888999958-2894304682
+2061236903-2067109739
+2643879391-2646512593
+1139540259-1146292375
+3544236730-3552827770
+2287385837-2325334298
+3598404107-3612936374
+3623885184-3631095478
+1752497514-1756572770
+2817718245-2824409717
+679569338-680230991
+4102130427-4150245197
+1869463036-1881600179
+286732642-289325518
+2995454654-3032053775
+1274816430-1274830828
+4008677258-4014358519
+248491486-248842325
+1622000764-1625125474
+1165689487-1187305806
+3937241402-3968405869
+4050691625-4086243808
+3663349535-3676933438
+2982918861-2995454652
+1372603515-1379417540
+2408455596-2411739453
+201820937-227275418
+1753934804-1754073983
+2280075243-2287385835
+2905919817-2917493149
+2757562598-2759204124
+1444583282-1458937548
+1699259773-1707790200
+1579284365-1579540410
+624710045-626772254
+2971742099-2980188298
+3895219248-3896408881
+1637216769-1663878490
+1606776283-1612157133
+1527331165-1569579671
+1468822607-1477434547
+3930477156-3939796674
+4214551647-4234775225
+1469208064-1469259449
+4245296921-4257493526
+3930128245-3930477154
diff --git a/d20/src/main.rs b/d20/src/main.rs
new file mode 100644
index 0000000..fbfd5dc
--- /dev/null
+++ b/d20/src/main.rs
@@ -0,0 +1,72 @@
+use std::fs;
+
+fn solve_part1(ranges: &Vec<(u32, u32)>) -> u32 {
+ 'outer: for i in 0..u32::MAX {
+ for &(lower, upper) in ranges {
+ if i >= lower && i <= upper {
+ // This IP is blacklisted
+ continue 'outer;
+ }
+ }
+
+ return i;
+ }
+
+ u32::MAX // shouldn't be reached
+}
+
+fn solve_part2(mut ranges: Vec<(u32, u32)>) -> u32 {
+ // Sort by upper limit, so we know if a range is still needed
+ ranges.sort_by_key(|x| x.1);
+
+ let mut count = 0;
+ 'outer: for i in 0..u32::MAX {
+ // Reduce the size of `ranges' to keep loop time reasonable
+ if i > ranges[0].1 {
+ ranges.remove(0);
+ }
+
+ for &(lower, upper) in &ranges {
+ if i >= lower && i <= upper {
+ // This IP is blacklisted
+ continue 'outer;
+ }
+ }
+
+ count += 1;
+ }
+
+ count
+}
+
+fn main() {
+ // Read blacklist from input text file
+ let input = fs::read_to_string("input.txt").unwrap();
+ let lines: Vec<&str> = input.lines().collect();
+
+ let mut ranges = Vec::new();
+ for line in lines {
+ let split: Vec<&str> = line.split('-').collect();
+ let lower: u32 = split[0].parse().unwrap();
+ let upper: u32 = split[1].parse().unwrap();
+ ranges.push((lower, upper));
+ }
+ ranges.sort_by_key(|x| x.0);
+
+ // Part 1 gives 23923783 for me
+ println!("Part 1 solution: {}", solve_part1(&ranges));
+
+ // Part 2 gives 125 for me
+ println!("Part 2 solution: {}", solve_part2(ranges));
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn part1_example1() {
+ let ranges = vec![(5, 8), (0, 2), (4, 7)];
+ assert_eq!(solve_part1(&ranges), 3);
+ }
+}
diff --git a/d21/Cargo.toml b/d21/Cargo.toml
new file mode 100644
index 0000000..f06cd6a
--- /dev/null
+++ b/d21/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "d21"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
+itertools = "0.10.5"
diff --git a/d21/input.txt b/d21/input.txt
new file mode 100644
index 0000000..b39b884
--- /dev/null
+++ b/d21/input.txt
@@ -0,0 +1,100 @@
+reverse positions 1 through 6
+rotate based on position of letter a
+swap position 4 with position 1
+reverse positions 1 through 5
+move position 5 to position 7
+swap position 4 with position 0
+swap position 4 with position 6
+rotate based on position of letter a
+swap position 0 with position 2
+move position 5 to position 2
+move position 7 to position 1
+swap letter d with letter c
+swap position 5 with position 3
+reverse positions 3 through 7
+rotate based on position of letter d
+swap position 7 with position 5
+rotate based on position of letter f
+swap position 4 with position 1
+swap position 3 with position 6
+reverse positions 4 through 7
+rotate based on position of letter c
+move position 0 to position 5
+swap position 7 with position 4
+rotate based on position of letter f
+reverse positions 1 through 3
+move position 5 to position 3
+rotate based on position of letter g
+reverse positions 2 through 5
+rotate right 0 steps
+rotate left 0 steps
+swap letter f with letter b
+rotate based on position of letter h
+move position 1 to position 3
+reverse positions 3 through 6
+rotate based on position of letter h
+swap position 4 with position 3
+swap letter b with letter h
+swap letter a with letter h
+reverse positions 1 through 6
+swap position 3 with position 6
+swap letter e with letter d
+swap letter e with letter h
+swap position 1 with position 5
+rotate based on position of letter a
+reverse positions 4 through 5
+swap position 0 with position 4
+reverse positions 0 through 3
+move position 7 to position 2
+swap letter e with letter c
+swap position 3 with position 4
+rotate left 3 steps
+rotate left 7 steps
+rotate based on position of letter e
+reverse positions 5 through 6
+move position 1 to position 5
+move position 1 to position 2
+rotate left 1 step
+move position 7 to position 6
+rotate left 0 steps
+reverse positions 5 through 6
+reverse positions 3 through 7
+swap letter d with letter e
+rotate right 3 steps
+swap position 2 with position 1
+swap position 5 with position 7
+swap letter h with letter d
+swap letter c with letter d
+rotate based on position of letter d
+swap letter d with letter g
+reverse positions 0 through 1
+rotate right 0 steps
+swap position 2 with position 3
+rotate left 4 steps
+rotate left 5 steps
+move position 7 to position 0
+rotate right 1 step
+swap letter g with letter f
+rotate based on position of letter a
+rotate based on position of letter b
+swap letter g with letter e
+rotate right 4 steps
+rotate based on position of letter h
+reverse positions 3 through 5
+swap letter h with letter e
+swap letter g with letter a
+rotate based on position of letter c
+reverse positions 0 through 4
+rotate based on position of letter e
+reverse positions 4 through 7
+rotate left 4 steps
+swap position 0 with position 6
+reverse positions 1 through 6
+rotate left 2 steps
+swap position 5 with position 3
+swap letter b with letter d
+swap letter b with letter d
+rotate based on position of letter d
+rotate based on position of letter c
+rotate based on position of letter h
+move position 4 to position 7
diff --git a/d21/src/main.rs b/d21/src/main.rs
new file mode 100644
index 0000000..34d5599
--- /dev/null
+++ b/d21/src/main.rs
@@ -0,0 +1,109 @@
+use std::fs;
+
+use itertools::Itertools;
+
+fn solve_part1(insts: &Vec<&str>, init: &str) -> String {
+ let mut chars: Vec<char> = init.chars().collect();
+
+ for inst in insts {
+ let mut next = chars.clone();
+
+ let words: Vec<&str> = inst.split_ascii_whitespace().collect();
+ if words[0] == "swap" {
+ if words[1] == "position" {
+ // Swap the characters at indices `i' and `j'
+ let i: usize = words[2].parse().unwrap();
+ let j: usize = words[5].parse().unwrap();
+ next[i] = chars[j];
+ next[j] = chars[i];
+ } else if words[1] == "letter" {
+ // Swap all occurrences of characters `x' and `y'
+ let x = words[2].chars().nth(0).unwrap();
+ let y = words[5].chars().nth(0).unwrap();
+ for i in 0..next.len() {
+ if next[i] == x {
+ next[i] = y;
+ } else if next[i] == y {
+ next[i] = x;
+ }
+ }
+ }
+ } else if words[0] == "rotate" {
+ if words[1] == "left" {
+ let n: usize = words[2].parse().unwrap();
+ next.rotate_left(n % chars.len());
+ } else if words[1] == "right" {
+ let n: usize = words[2].parse().unwrap();
+ next.rotate_right(n % chars.len());
+ } else if words[1] == "based" {
+ // Get the index `i' of character `x'
+ let x = words[6].chars().nth(0).unwrap();
+ let i = next.iter().position(|&c| c == x).unwrap();
+ // Rotate right by an amount determined by `i'
+ let n = if i < 4 { i + 1 } else { i + 2 };
+ next.rotate_right(n % chars.len());
+ }
+ } else if words[0] == "reverse" {
+ let i: usize = words[2].parse().unwrap();
+ let j: usize = words[4].parse().unwrap();
+ next[i..j + 1].reverse();
+ } else if words[0] == "move" {
+ let i: usize = words[2].parse().unwrap();
+ let j: usize = words[5].parse().unwrap();
+ let c = next.remove(i);
+ next.insert(j, c);
+ }
+
+ chars = next;
+ }
+
+ chars.into_iter().collect()
+}
+
+fn solve_part2(insts: &Vec<&str>, target: &str) -> String {
+ let init = vec!['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];
+
+ // The "good" approach would be to reverse the operations in `insts'.
+ // I'm too lazy for that: I just go through all permutations of the
+ // input characters, run `insts' as in part 1, and see if it's the one.
+ for perm in init.into_iter().permutations(8) {
+ let string: String = perm.iter().collect();
+ if solve_part1(insts, &string) == target {
+ return string;
+ }
+ }
+
+ String::new() // shouldn't happen
+}
+
+fn main() {
+ // Read instructions from input text file
+ let input = fs::read_to_string("input.txt").unwrap();
+ let insts = input.lines().collect();
+
+ // Part 1 gives "gfdhebac" for me
+ println!("Part 1 solution: {}", solve_part1(&insts, "abcdefgh"));
+
+ // Part 2 gives "dhaegfbc" for me
+ println!("Part 2 solution: {}", solve_part2(&insts, "fbgdceah"));
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn part1_example1() {
+ let insts = vec![
+ "swap position 4 with position 0",
+ "swap letter d with letter b",
+ "reverse positions 0 through 4",
+ "rotate left 1 step",
+ "move position 1 to position 4",
+ "move position 3 to position 0",
+ "rotate based on position of letter b",
+ "rotate based on position of letter d",
+ ];
+ assert_eq!(solve_part1(&insts, "abcde"), "decab");
+ }
+}
diff --git a/d22/Cargo.toml b/d22/Cargo.toml
new file mode 100644
index 0000000..25c0670
--- /dev/null
+++ b/d22/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "d22"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/d22/input.txt b/d22/input.txt
new file mode 100644
index 0000000..d6c458f
--- /dev/null
+++ b/d22/input.txt
@@ -0,0 +1,902 @@
+root@ebhq-gridcenter# df -h
+Filesystem Size Used Avail Use%
+/dev/grid/node-x0-y0 94T 67T 27T 71%
+/dev/grid/node-x0-y1 89T 67T 22T 75%
+/dev/grid/node-x0-y2 93T 69T 24T 74%
+/dev/grid/node-x0-y3 91T 66T 25T 72%
+/dev/grid/node-x0-y4 85T 69T 16T 81%
+/dev/grid/node-x0-y5 89T 64T 25T 71%
+/dev/grid/node-x0-y6 88T 70T 18T 79%
+/dev/grid/node-x0-y7 89T 65T 24T 73%
+/dev/grid/node-x0-y8 86T 66T 20T 76%
+/dev/grid/node-x0-y9 87T 66T 21T 75%
+/dev/grid/node-x0-y10 94T 73T 21T 77%
+/dev/grid/node-x0-y11 94T 71T 23T 75%
+/dev/grid/node-x0-y12 86T 64T 22T 74%
+/dev/grid/node-x0-y13 90T 67T 23T 74%
+/dev/grid/node-x0-y14 92T 69T 23T 75%
+/dev/grid/node-x0-y15 92T 68T 24T 73%
+/dev/grid/node-x0-y16 92T 72T 20T 78%
+/dev/grid/node-x0-y17 94T 64T 30T 68%
+/dev/grid/node-x0-y18 87T 73T 14T 83%
+/dev/grid/node-x0-y19 87T 68T 19T 78%
+/dev/grid/node-x0-y20 87T 67T 20T 77%
+/dev/grid/node-x0-y21 86T 71T 15T 82%
+/dev/grid/node-x0-y22 93T 65T 28T 69%
+/dev/grid/node-x0-y23 94T 71T 23T 75%
+/dev/grid/node-x0-y24 85T 65T 20T 76%
+/dev/grid/node-x1-y0 88T 65T 23T 73%
+/dev/grid/node-x1-y1 89T 65T 24T 73%
+/dev/grid/node-x1-y2 86T 69T 17T 80%
+/dev/grid/node-x1-y3 91T 65T 26T 71%
+/dev/grid/node-x1-y4 85T 65T 20T 76%
+/dev/grid/node-x1-y5 89T 64T 25T 71%
+/dev/grid/node-x1-y6 94T 66T 28T 70%
+/dev/grid/node-x1-y7 87T 67T 20T 77%
+/dev/grid/node-x1-y8 92T 73T 19T 79%
+/dev/grid/node-x1-y9 89T 64T 25T 71%
+/dev/grid/node-x1-y10 86T 69T 17T 80%
+/dev/grid/node-x1-y11 91T 68T 23T 74%
+/dev/grid/node-x1-y12 89T 65T 24T 73%
+/dev/grid/node-x1-y13 85T 73T 12T 85%
+/dev/grid/node-x1-y14 88T 67T 21T 76%
+/dev/grid/node-x1-y15 93T 71T 22T 76%
+/dev/grid/node-x1-y16 92T 64T 28T 69%
+/dev/grid/node-x1-y17 93T 64T 29T 68%
+/dev/grid/node-x1-y18 93T 72T 21T 77%
+/dev/grid/node-x1-y19 92T 68T 24T 73%
+/dev/grid/node-x1-y20 86T 72T 14T 83%
+/dev/grid/node-x1-y21 501T 499T 2T 99%
+/dev/grid/node-x1-y22 90T 69T 21T 76%
+/dev/grid/node-x1-y23 94T 73T 21T 77%
+/dev/grid/node-x1-y24 91T 73T 18T 80%
+/dev/grid/node-x2-y0 92T 73T 19T 79%
+/dev/grid/node-x2-y1 92T 66T 26T 71%
+/dev/grid/node-x2-y2 88T 65T 23T 73%
+/dev/grid/node-x2-y3 92T 69T 23T 75%
+/dev/grid/node-x2-y4 86T 70T 16T 81%
+/dev/grid/node-x2-y5 94T 67T 27T 71%
+/dev/grid/node-x2-y6 86T 68T 18T 79%
+/dev/grid/node-x2-y7 94T 64T 30T 68%
+/dev/grid/node-x2-y8 92T 71T 21T 77%
+/dev/grid/node-x2-y9 86T 73T 13T 84%
+/dev/grid/node-x2-y10 94T 70T 24T 74%
+/dev/grid/node-x2-y11 90T 73T 17T 81%
+/dev/grid/node-x2-y12 92T 68T 24T 73%
+/dev/grid/node-x2-y13 89T 71T 18T 79%
+/dev/grid/node-x2-y14 88T 67T 21T 76%
+/dev/grid/node-x2-y15 87T 70T 17T 80%
+/dev/grid/node-x2-y16 90T 72T 18T 80%
+/dev/grid/node-x2-y17 86T 70T 16T 81%
+/dev/grid/node-x2-y18 88T 66T 22T 75%
+/dev/grid/node-x2-y19 89T 71T 18T 79%
+/dev/grid/node-x2-y20 93T 69T 24T 74%
+/dev/grid/node-x2-y21 509T 498T 11T 97%
+/dev/grid/node-x2-y22 90T 64T 26T 71%
+/dev/grid/node-x2-y23 90T 66T 24T 73%
+/dev/grid/node-x2-y24 87T 68T 19T 78%
+/dev/grid/node-x3-y0 87T 69T 18T 79%
+/dev/grid/node-x3-y1 86T 64T 22T 74%
+/dev/grid/node-x3-y2 91T 73T 18T 80%
+/dev/grid/node-x3-y3 88T 67T 21T 76%
+/dev/grid/node-x3-y4 90T 69T 21T 76%
+/dev/grid/node-x3-y5 94T 72T 22T 76%
+/dev/grid/node-x3-y6 91T 68T 23T 74%
+/dev/grid/node-x3-y7 92T 64T 28T 69%
+/dev/grid/node-x3-y8 91T 64T 27T 70%
+/dev/grid/node-x3-y9 89T 65T 24T 73%
+/dev/grid/node-x3-y10 89T 66T 23T 74%
+/dev/grid/node-x3-y11 89T 65T 24T 73%
+/dev/grid/node-x3-y12 92T 70T 22T 76%
+/dev/grid/node-x3-y13 88T 64T 24T 72%
+/dev/grid/node-x3-y14 89T 64T 25T 71%
+/dev/grid/node-x3-y15 88T 65T 23T 73%
+/dev/grid/node-x3-y16 91T 65T 26T 71%
+/dev/grid/node-x3-y17 91T 66T 25T 72%
+/dev/grid/node-x3-y18 89T 69T 20T 77%
+/dev/grid/node-x3-y19 93T 70T 23T 75%
+/dev/grid/node-x3-y20 94T 71T 23T 75%
+/dev/grid/node-x3-y21 508T 496T 12T 97%
+/dev/grid/node-x3-y22 88T 72T 16T 81%
+/dev/grid/node-x3-y23 92T 65T 27T 70%
+/dev/grid/node-x3-y24 87T 68T 19T 78%
+/dev/grid/node-x4-y0 87T 70T 17T 80%
+/dev/grid/node-x4-y1 89T 66T 23T 74%
+/dev/grid/node-x4-y2 92T 67T 25T 72%
+/dev/grid/node-x4-y3 85T 72T 13T 84%
+/dev/grid/node-x4-y4 93T 68T 25T 73%
+/dev/grid/node-x4-y5 89T 68T 21T 76%
+/dev/grid/node-x4-y6 93T 68T 25T 73%
+/dev/grid/node-x4-y7 89T 72T 17T 80%
+/dev/grid/node-x4-y8 86T 70T 16T 81%
+/dev/grid/node-x4-y9 89T 71T 18T 79%
+/dev/grid/node-x4-y10 88T 70T 18T 79%
+/dev/grid/node-x4-y11 87T 71T 16T 81%
+/dev/grid/node-x4-y12 86T 71T 15T 82%
+/dev/grid/node-x4-y13 85T 73T 12T 85%
+/dev/grid/node-x4-y14 89T 65T 24T 73%
+/dev/grid/node-x4-y15 94T 69T 25T 73%
+/dev/grid/node-x4-y16 92T 72T 20T 78%
+/dev/grid/node-x4-y17 89T 64T 25T 71%
+/dev/grid/node-x4-y18 88T 69T 19T 78%
+/dev/grid/node-x4-y19 87T 71T 16T 81%
+/dev/grid/node-x4-y20 91T 67T 24T 73%
+/dev/grid/node-x4-y21 507T 495T 12T 97%
+/dev/grid/node-x4-y22 86T 66T 20T 76%
+/dev/grid/node-x4-y23 85T 71T 14T 83%
+/dev/grid/node-x4-y24 90T 73T 17T 81%
+/dev/grid/node-x5-y0 91T 68T 23T 74%
+/dev/grid/node-x5-y1 86T 64T 22T 74%
+/dev/grid/node-x5-y2 88T 71T 17T 80%
+/dev/grid/node-x5-y3 90T 66T 24T 73%
+/dev/grid/node-x5-y4 85T 67T 18T 78%
+/dev/grid/node-x5-y5 86T 67T 19T 77%
+/dev/grid/node-x5-y6 87T 69T 18T 79%
+/dev/grid/node-x5-y7 90T 68T 22T 75%
+/dev/grid/node-x5-y8 88T 70T 18T 79%
+/dev/grid/node-x5-y9 85T 68T 17T 80%
+/dev/grid/node-x5-y10 90T 70T 20T 77%
+/dev/grid/node-x5-y11 86T 73T 13T 84%
+/dev/grid/node-x5-y12 86T 65T 21T 75%
+/dev/grid/node-x5-y13 86T 71T 15T 82%
+/dev/grid/node-x5-y14 92T 73T 19T 79%
+/dev/grid/node-x5-y15 93T 66T 27T 70%
+/dev/grid/node-x5-y16 86T 70T 16T 81%
+/dev/grid/node-x5-y17 92T 64T 28T 69%
+/dev/grid/node-x5-y18 85T 72T 13T 84%
+/dev/grid/node-x5-y19 85T 65T 20T 76%
+/dev/grid/node-x5-y20 93T 67T 26T 72%
+/dev/grid/node-x5-y21 510T 497T 13T 97%
+/dev/grid/node-x5-y22 86T 68T 18T 79%
+/dev/grid/node-x5-y23 91T 72T 19T 79%
+/dev/grid/node-x5-y24 93T 73T 20T 78%
+/dev/grid/node-x6-y0 87T 70T 17T 80%
+/dev/grid/node-x6-y1 92T 66T 26T 71%
+/dev/grid/node-x6-y2 92T 64T 28T 69%
+/dev/grid/node-x6-y3 87T 72T 15T 82%
+/dev/grid/node-x6-y4 85T 72T 13T 84%
+/dev/grid/node-x6-y5 85T 70T 15T 82%
+/dev/grid/node-x6-y6 94T 71T 23T 75%
+/dev/grid/node-x6-y7 86T 71T 15T 82%
+/dev/grid/node-x6-y8 90T 68T 22T 75%
+/dev/grid/node-x6-y9 93T 72T 21T 77%
+/dev/grid/node-x6-y10 92T 68T 24T 73%
+/dev/grid/node-x6-y11 86T 64T 22T 74%
+/dev/grid/node-x6-y12 88T 69T 19T 78%
+/dev/grid/node-x6-y13 93T 71T 22T 76%
+/dev/grid/node-x6-y14 94T 64T 30T 68%
+/dev/grid/node-x6-y15 94T 65T 29T 69%
+/dev/grid/node-x6-y16 91T 73T 18T 80%
+/dev/grid/node-x6-y17 87T 64T 23T 73%
+/dev/grid/node-x6-y18 87T 70T 17T 80%
+/dev/grid/node-x6-y19 91T 72T 19T 79%
+/dev/grid/node-x6-y20 87T 67T 20T 77%
+/dev/grid/node-x6-y21 507T 497T 10T 98%
+/dev/grid/node-x6-y22 90T 72T 18T 80%
+/dev/grid/node-x6-y23 94T 68T 26T 72%
+/dev/grid/node-x6-y24 87T 64T 23T 73%
+/dev/grid/node-x7-y0 86T 72T 14T 83%
+/dev/grid/node-x7-y1 91T 69T 22T 75%
+/dev/grid/node-x7-y2 85T 66T 19T 77%
+/dev/grid/node-x7-y3 91T 70T 21T 76%
+/dev/grid/node-x7-y4 89T 64T 25T 71%
+/dev/grid/node-x7-y5 90T 67T 23T 74%
+/dev/grid/node-x7-y6 92T 70T 22T 76%
+/dev/grid/node-x7-y7 94T 73T 21T 77%
+/dev/grid/node-x7-y8 91T 69T 22T 75%
+/dev/grid/node-x7-y9 90T 66T 24T 73%
+/dev/grid/node-x7-y10 92T 65T 27T 70%
+/dev/grid/node-x7-y11 89T 71T 18T 79%
+/dev/grid/node-x7-y12 86T 64T 22T 74%
+/dev/grid/node-x7-y13 91T 73T 18T 80%
+/dev/grid/node-x7-y14 92T 70T 22T 76%
+/dev/grid/node-x7-y15 89T 70T 19T 78%
+/dev/grid/node-x7-y16 88T 73T 15T 82%
+/dev/grid/node-x7-y17 93T 65T 28T 69%
+/dev/grid/node-x7-y18 90T 72T 18T 80%
+/dev/grid/node-x7-y19 91T 71T 20T 78%
+/dev/grid/node-x7-y20 91T 73T 18T 80%
+/dev/grid/node-x7-y21 508T 499T 9T 98%
+/dev/grid/node-x7-y22 88T 73T 15T 82%
+/dev/grid/node-x7-y23 94T 68T 26T 72%
+/dev/grid/node-x7-y24 88T 72T 16T 81%
+/dev/grid/node-x8-y0 88T 73T 15T 82%
+/dev/grid/node-x8-y1 90T 66T 24T 73%
+/dev/grid/node-x8-y2 91T 66T 25T 72%
+/dev/grid/node-x8-y3 87T 73T 14T 83%
+/dev/grid/node-x8-y4 87T 64T 23T 73%
+/dev/grid/node-x8-y5 94T 72T 22T 76%
+/dev/grid/node-x8-y6 87T 67T 20T 77%
+/dev/grid/node-x8-y7 91T 66T 25T 72%
+/dev/grid/node-x8-y8 86T 69T 17T 80%
+/dev/grid/node-x8-y9 92T 69T 23T 75%
+/dev/grid/node-x8-y10 88T 71T 17T 80%
+/dev/grid/node-x8-y11 91T 68T 23T 74%
+/dev/grid/node-x8-y12 93T 66T 27T 70%
+/dev/grid/node-x8-y13 91T 73T 18T 80%
+/dev/grid/node-x8-y14 87T 70T 17T 80%
+/dev/grid/node-x8-y15 86T 70T 16T 81%
+/dev/grid/node-x8-y16 93T 72T 21T 77%
+/dev/grid/node-x8-y17 92T 64T 28T 69%
+/dev/grid/node-x8-y18 91T 70T 21T 76%
+/dev/grid/node-x8-y19 85T 68T 17T 80%
+/dev/grid/node-x8-y20 90T 68T 22T 75%
+/dev/grid/node-x8-y21 507T 492T 15T 97%
+/dev/grid/node-x8-y22 92T 70T 22T 76%
+/dev/grid/node-x8-y23 91T 72T 19T 79%
+/dev/grid/node-x8-y24 93T 64T 29T 68%
+/dev/grid/node-x9-y0 89T 69T 20T 77%
+/dev/grid/node-x9-y1 87T 68T 19T 78%
+/dev/grid/node-x9-y2 85T 68T 17T 80%
+/dev/grid/node-x9-y3 89T 67T 22T 75%
+/dev/grid/node-x9-y4 92T 66T 26T 71%
+/dev/grid/node-x9-y5 90T 65T 25T 72%
+/dev/grid/node-x9-y6 89T 65T 24T 73%
+/dev/grid/node-x9-y7 94T 68T 26T 72%
+/dev/grid/node-x9-y8 86T 68T 18T 79%
+/dev/grid/node-x9-y9 86T 64T 22T 74%
+/dev/grid/node-x9-y10 91T 67T 24T 73%
+/dev/grid/node-x9-y11 93T 64T 29T 68%
+/dev/grid/node-x9-y12 85T 72T 13T 84%
+/dev/grid/node-x9-y13 87T 70T 17T 80%
+/dev/grid/node-x9-y14 87T 72T 15T 82%
+/dev/grid/node-x9-y15 89T 70T 19T 78%
+/dev/grid/node-x9-y16 89T 72T 17T 80%
+/dev/grid/node-x9-y17 85T 68T 17T 80%
+/dev/grid/node-x9-y18 87T 71T 16T 81%
+/dev/grid/node-x9-y19 94T 73T 21T 77%
+/dev/grid/node-x9-y20 90T 67T 23T 74%
+/dev/grid/node-x9-y21 504T 490T 14T 97%
+/dev/grid/node-x9-y22 86T 72T 14T 83%
+/dev/grid/node-x9-y23 85T 71T 14T 83%
+/dev/grid/node-x9-y24 85T 67T 18T 78%
+/dev/grid/node-x10-y0 86T 70T 16T 81%
+/dev/grid/node-x10-y1 85T 69T 16T 81%
+/dev/grid/node-x10-y2 94T 67T 27T 71%
+/dev/grid/node-x10-y3 87T 73T 14T 83%
+/dev/grid/node-x10-y4 94T 72T 22T 76%
+/dev/grid/node-x10-y5 92T 71T 21T 77%
+/dev/grid/node-x10-y6 89T 64T 25T 71%
+/dev/grid/node-x10-y7 90T 67T 23T 74%
+/dev/grid/node-x10-y8 89T 71T 18T 79%
+/dev/grid/node-x10-y9 88T 68T 20T 77%
+/dev/grid/node-x10-y10 94T 72T 22T 76%
+/dev/grid/node-x10-y11 89T 70T 19T 78%
+/dev/grid/node-x10-y12 89T 68T 21T 76%
+/dev/grid/node-x10-y13 86T 65T 21T 75%
+/dev/grid/node-x10-y14 94T 70T 24T 74%
+/dev/grid/node-x10-y15 88T 67T 21T 76%
+/dev/grid/node-x10-y16 89T 71T 18T 79%
+/dev/grid/node-x10-y17 92T 70T 22T 76%
+/dev/grid/node-x10-y18 91T 69T 22T 75%
+/dev/grid/node-x10-y19 89T 67T 22T 75%
+/dev/grid/node-x10-y20 92T 66T 26T 71%
+/dev/grid/node-x10-y21 503T 497T 6T 98%
+/dev/grid/node-x10-y22 90T 71T 19T 78%
+/dev/grid/node-x10-y23 85T 71T 14T 83%
+/dev/grid/node-x10-y24 89T 66T 23T 74%
+/dev/grid/node-x11-y0 91T 73T 18T 80%
+/dev/grid/node-x11-y1 86T 68T 18T 79%
+/dev/grid/node-x11-y2 92T 64T 28T 69%
+/dev/grid/node-x11-y3 90T 68T 22T 75%
+/dev/grid/node-x11-y4 90T 73T 17T 81%
+/dev/grid/node-x11-y5 86T 69T 17T 80%
+/dev/grid/node-x11-y6 86T 68T 18T 79%
+/dev/grid/node-x11-y7 90T 67T 23T 74%
+/dev/grid/node-x11-y8 88T 73T 15T 82%
+/dev/grid/node-x11-y9 87T 66T 21T 75%
+/dev/grid/node-x11-y10 91T 70T 21T 76%
+/dev/grid/node-x11-y11 86T 69T 17T 80%
+/dev/grid/node-x11-y12 90T 73T 17T 81%
+/dev/grid/node-x11-y13 85T 72T 13T 84%
+/dev/grid/node-x11-y14 91T 67T 24T 73%
+/dev/grid/node-x11-y15 86T 67T 19T 77%
+/dev/grid/node-x11-y16 90T 70T 20T 77%
+/dev/grid/node-x11-y17 92T 67T 25T 72%
+/dev/grid/node-x11-y18 91T 64T 27T 70%
+/dev/grid/node-x11-y19 88T 65T 23T 73%
+/dev/grid/node-x11-y20 93T 68T 25T 73%
+/dev/grid/node-x11-y21 507T 493T 14T 97%
+/dev/grid/node-x11-y22 86T 73T 13T 84%
+/dev/grid/node-x11-y23 94T 66T 28T 70%
+/dev/grid/node-x11-y24 90T 68T 22T 75%
+/dev/grid/node-x12-y0 93T 72T 21T 77%
+/dev/grid/node-x12-y1 89T 69T 20T 77%
+/dev/grid/node-x12-y2 92T 64T 28T 69%
+/dev/grid/node-x12-y3 85T 67T 18T 78%
+/dev/grid/node-x12-y4 87T 67T 20T 77%
+/dev/grid/node-x12-y5 86T 73T 13T 84%
+/dev/grid/node-x12-y6 91T 65T 26T 71%
+/dev/grid/node-x12-y7 91T 66T 25T 72%
+/dev/grid/node-x12-y8 86T 66T 20T 76%
+/dev/grid/node-x12-y9 89T 65T 24T 73%
+/dev/grid/node-x12-y10 88T 69T 19T 78%
+/dev/grid/node-x12-y11 87T 70T 17T 80%
+/dev/grid/node-x12-y12 86T 73T 13T 84%
+/dev/grid/node-x12-y13 87T 70T 17T 80%
+/dev/grid/node-x12-y14 93T 67T 26T 72%
+/dev/grid/node-x12-y15 94T 68T 26T 72%
+/dev/grid/node-x12-y16 90T 67T 23T 74%
+/dev/grid/node-x12-y17 86T 65T 21T 75%
+/dev/grid/node-x12-y18 88T 67T 21T 76%
+/dev/grid/node-x12-y19 91T 72T 19T 79%
+/dev/grid/node-x12-y20 93T 72T 21T 77%
+/dev/grid/node-x12-y21 504T 494T 10T 98%
+/dev/grid/node-x12-y22 92T 70T 22T 76%
+/dev/grid/node-x12-y23 91T 67T 24T 73%
+/dev/grid/node-x12-y24 88T 65T 23T 73%
+/dev/grid/node-x13-y0 90T 66T 24T 73%
+/dev/grid/node-x13-y1 87T 67T 20T 77%
+/dev/grid/node-x13-y2 85T 71T 14T 83%
+/dev/grid/node-x13-y3 86T 73T 13T 84%
+/dev/grid/node-x13-y4 87T 72T 15T 82%
+/dev/grid/node-x13-y5 93T 67T 26T 72%
+/dev/grid/node-x13-y6 92T 68T 24T 73%
+/dev/grid/node-x13-y7 90T 71T 19T 78%
+/dev/grid/node-x13-y8 94T 72T 22T 76%
+/dev/grid/node-x13-y9 86T 71T 15T 82%
+/dev/grid/node-x13-y10 85T 71T 14T 83%
+/dev/grid/node-x13-y11 91T 65T 26T 71%
+/dev/grid/node-x13-y12 87T 69T 18T 79%
+/dev/grid/node-x13-y13 92T 65T 27T 70%
+/dev/grid/node-x13-y14 86T 72T 14T 83%
+/dev/grid/node-x13-y15 85T 71T 14T 83%
+/dev/grid/node-x13-y16 94T 68T 26T 72%
+/dev/grid/node-x13-y17 91T 71T 20T 78%
+/dev/grid/node-x13-y18 93T 66T 27T 70%
+/dev/grid/node-x13-y19 94T 68T 26T 72%
+/dev/grid/node-x13-y20 88T 73T 15T 82%
+/dev/grid/node-x13-y21 507T 499T 8T 98%
+/dev/grid/node-x13-y22 85T 70T 15T 82%
+/dev/grid/node-x13-y23 90T 71T 19T 78%
+/dev/grid/node-x13-y24 86T 71T 15T 82%
+/dev/grid/node-x14-y0 94T 66T 28T 70%
+/dev/grid/node-x14-y1 87T 73T 14T 83%
+/dev/grid/node-x14-y2 91T 66T 25T 72%
+/dev/grid/node-x14-y3 90T 68T 22T 75%
+/dev/grid/node-x14-y4 90T 71T 19T 78%
+/dev/grid/node-x14-y5 87T 71T 16T 81%
+/dev/grid/node-x14-y6 88T 66T 22T 75%
+/dev/grid/node-x14-y7 88T 72T 16T 81%
+/dev/grid/node-x14-y8 90T 64T 26T 71%
+/dev/grid/node-x14-y9 91T 66T 25T 72%
+/dev/grid/node-x14-y10 88T 73T 15T 82%
+/dev/grid/node-x14-y11 91T 71T 20T 78%
+/dev/grid/node-x14-y12 87T 72T 15T 82%
+/dev/grid/node-x14-y13 89T 70T 19T 78%
+/dev/grid/node-x14-y14 91T 67T 24T 73%
+/dev/grid/node-x14-y15 94T 69T 25T 73%
+/dev/grid/node-x14-y16 85T 66T 19T 77%
+/dev/grid/node-x14-y17 92T 71T 21T 77%
+/dev/grid/node-x14-y18 86T 73T 13T 84%
+/dev/grid/node-x14-y19 89T 64T 25T 71%
+/dev/grid/node-x14-y20 86T 64T 22T 74%
+/dev/grid/node-x14-y21 507T 498T 9T 98%
+/dev/grid/node-x14-y22 93T 69T 24T 74%
+/dev/grid/node-x14-y23 93T 72T 21T 77%
+/dev/grid/node-x14-y24 88T 72T 16T 81%
+/dev/grid/node-x15-y0 92T 69T 23T 75%
+/dev/grid/node-x15-y1 90T 71T 19T 78%
+/dev/grid/node-x15-y2 93T 71T 22T 76%
+/dev/grid/node-x15-y3 88T 65T 23T 73%
+/dev/grid/node-x15-y4 85T 72T 13T 84%
+/dev/grid/node-x15-y5 94T 73T 21T 77%
+/dev/grid/node-x15-y6 88T 71T 17T 80%
+/dev/grid/node-x15-y7 94T 68T 26T 72%
+/dev/grid/node-x15-y8 92T 69T 23T 75%
+/dev/grid/node-x15-y9 92T 66T 26T 71%
+/dev/grid/node-x15-y10 90T 66T 24T 73%
+/dev/grid/node-x15-y11 91T 67T 24T 73%
+/dev/grid/node-x15-y12 92T 66T 26T 71%
+/dev/grid/node-x15-y13 88T 65T 23T 73%
+/dev/grid/node-x15-y14 90T 67T 23T 74%
+/dev/grid/node-x15-y15 94T 71T 23T 75%
+/dev/grid/node-x15-y16 92T 72T 20T 78%
+/dev/grid/node-x15-y17 91T 66T 25T 72%
+/dev/grid/node-x15-y18 85T 68T 17T 80%
+/dev/grid/node-x15-y19 85T 66T 19T 77%
+/dev/grid/node-x15-y20 91T 70T 21T 76%
+/dev/grid/node-x15-y21 505T 493T 12T 97%
+/dev/grid/node-x15-y22 88T 68T 20T 77%
+/dev/grid/node-x15-y23 88T 68T 20T 77%
+/dev/grid/node-x15-y24 90T 64T 26T 71%
+/dev/grid/node-x16-y0 88T 65T 23T 73%
+/dev/grid/node-x16-y1 87T 73T 14T 83%
+/dev/grid/node-x16-y2 94T 66T 28T 70%
+/dev/grid/node-x16-y3 91T 72T 19T 79%
+/dev/grid/node-x16-y4 92T 70T 22T 76%
+/dev/grid/node-x16-y5 94T 68T 26T 72%
+/dev/grid/node-x16-y6 92T 64T 28T 69%
+/dev/grid/node-x16-y7 92T 69T 23T 75%
+/dev/grid/node-x16-y8 93T 67T 26T 72%
+/dev/grid/node-x16-y9 87T 70T 17T 80%
+/dev/grid/node-x16-y10 93T 71T 22T 76%
+/dev/grid/node-x16-y11 94T 69T 25T 73%
+/dev/grid/node-x16-y12 94T 71T 23T 75%
+/dev/grid/node-x16-y13 85T 72T 13T 84%
+/dev/grid/node-x16-y14 87T 73T 14T 83%
+/dev/grid/node-x16-y15 93T 65T 28T 69%
+/dev/grid/node-x16-y16 91T 64T 27T 70%
+/dev/grid/node-x16-y17 87T 70T 17T 80%
+/dev/grid/node-x16-y18 85T 70T 15T 82%
+/dev/grid/node-x16-y19 90T 66T 24T 73%
+/dev/grid/node-x16-y20 85T 71T 14T 83%
+/dev/grid/node-x16-y21 501T 499T 2T 99%
+/dev/grid/node-x16-y22 85T 66T 19T 77%
+/dev/grid/node-x16-y23 88T 70T 18T 79%
+/dev/grid/node-x16-y24 86T 65T 21T 75%
+/dev/grid/node-x17-y0 85T 73T 12T 85%
+/dev/grid/node-x17-y1 88T 65T 23T 73%
+/dev/grid/node-x17-y2 88T 73T 15T 82%
+/dev/grid/node-x17-y3 94T 67T 27T 71%
+/dev/grid/node-x17-y4 89T 67T 22T 75%
+/dev/grid/node-x17-y5 86T 66T 20T 76%
+/dev/grid/node-x17-y6 93T 64T 29T 68%
+/dev/grid/node-x17-y7 89T 70T 19T 78%
+/dev/grid/node-x17-y8 86T 67T 19T 77%
+/dev/grid/node-x17-y9 86T 65T 21T 75%
+/dev/grid/node-x17-y10 93T 65T 28T 69%
+/dev/grid/node-x17-y11 94T 70T 24T 74%
+/dev/grid/node-x17-y12 86T 72T 14T 83%
+/dev/grid/node-x17-y13 87T 67T 20T 77%
+/dev/grid/node-x17-y14 85T 68T 17T 80%
+/dev/grid/node-x17-y15 87T 66T 21T 75%
+/dev/grid/node-x17-y16 85T 64T 21T 75%
+/dev/grid/node-x17-y17 91T 64T 27T 70%
+/dev/grid/node-x17-y18 86T 66T 20T 76%
+/dev/grid/node-x17-y19 93T 64T 29T 68%
+/dev/grid/node-x17-y20 93T 66T 27T 70%
+/dev/grid/node-x17-y21 510T 498T 12T 97%
+/dev/grid/node-x17-y22 85T 0T 85T 0%
+/dev/grid/node-x17-y23 93T 67T 26T 72%
+/dev/grid/node-x17-y24 85T 65T 20T 76%
+/dev/grid/node-x18-y0 93T 67T 26T 72%
+/dev/grid/node-x18-y1 90T 66T 24T 73%
+/dev/grid/node-x18-y2 87T 69T 18T 79%
+/dev/grid/node-x18-y3 87T 71T 16T 81%
+/dev/grid/node-x18-y4 94T 69T 25T 73%
+/dev/grid/node-x18-y5 93T 68T 25T 73%
+/dev/grid/node-x18-y6 94T 68T 26T 72%
+/dev/grid/node-x18-y7 89T 69T 20T 77%
+/dev/grid/node-x18-y8 93T 70T 23T 75%
+/dev/grid/node-x18-y9 87T 64T 23T 73%
+/dev/grid/node-x18-y10 88T 65T 23T 73%
+/dev/grid/node-x18-y11 94T 73T 21T 77%
+/dev/grid/node-x18-y12 87T 73T 14T 83%
+/dev/grid/node-x18-y13 92T 72T 20T 78%
+/dev/grid/node-x18-y14 87T 66T 21T 75%
+/dev/grid/node-x18-y15 90T 69T 21T 76%
+/dev/grid/node-x18-y16 87T 64T 23T 73%
+/dev/grid/node-x18-y17 92T 64T 28T 69%
+/dev/grid/node-x18-y18 86T 69T 17T 80%
+/dev/grid/node-x18-y19 85T 72T 13T 84%
+/dev/grid/node-x18-y20 91T 70T 21T 76%
+/dev/grid/node-x18-y21 505T 491T 14T 97%
+/dev/grid/node-x18-y22 85T 73T 12T 85%
+/dev/grid/node-x18-y23 86T 64T 22T 74%
+/dev/grid/node-x18-y24 88T 70T 18T 79%
+/dev/grid/node-x19-y0 90T 65T 25T 72%
+/dev/grid/node-x19-y1 91T 64T 27T 70%
+/dev/grid/node-x19-y2 92T 68T 24T 73%
+/dev/grid/node-x19-y3 87T 71T 16T 81%
+/dev/grid/node-x19-y4 92T 65T 27T 70%
+/dev/grid/node-x19-y5 94T 71T 23T 75%
+/dev/grid/node-x19-y6 93T 64T 29T 68%
+/dev/grid/node-x19-y7 94T 73T 21T 77%
+/dev/grid/node-x19-y8 94T 73T 21T 77%
+/dev/grid/node-x19-y9 92T 72T 20T 78%
+/dev/grid/node-x19-y10 93T 72T 21T 77%
+/dev/grid/node-x19-y11 90T 71T 19T 78%
+/dev/grid/node-x19-y12 93T 70T 23T 75%
+/dev/grid/node-x19-y13 89T 72T 17T 80%
+/dev/grid/node-x19-y14 93T 64T 29T 68%
+/dev/grid/node-x19-y15 87T 65T 22T 74%
+/dev/grid/node-x19-y16 91T 65T 26T 71%
+/dev/grid/node-x19-y17 85T 70T 15T 82%
+/dev/grid/node-x19-y18 87T 73T 14T 83%
+/dev/grid/node-x19-y19 87T 72T 15T 82%
+/dev/grid/node-x19-y20 91T 73T 18T 80%
+/dev/grid/node-x19-y21 503T 499T 4T 99%
+/dev/grid/node-x19-y22 93T 67T 26T 72%
+/dev/grid/node-x19-y23 85T 73T 12T 85%
+/dev/grid/node-x19-y24 87T 68T 19T 78%
+/dev/grid/node-x20-y0 93T 66T 27T 70%
+/dev/grid/node-x20-y1 93T 64T 29T 68%
+/dev/grid/node-x20-y2 85T 71T 14T 83%
+/dev/grid/node-x20-y3 94T 66T 28T 70%
+/dev/grid/node-x20-y4 89T 64T 25T 71%
+/dev/grid/node-x20-y5 91T 71T 20T 78%
+/dev/grid/node-x20-y6 94T 64T 30T 68%
+/dev/grid/node-x20-y7 93T 72T 21T 77%
+/dev/grid/node-x20-y8 87T 70T 17T 80%
+/dev/grid/node-x20-y9 93T 71T 22T 76%
+/dev/grid/node-x20-y10 87T 66T 21T 75%
+/dev/grid/node-x20-y11 85T 64T 21T 75%
+/dev/grid/node-x20-y12 93T 66T 27T 70%
+/dev/grid/node-x20-y13 91T 72T 19T 79%
+/dev/grid/node-x20-y14 86T 66T 20T 76%
+/dev/grid/node-x20-y15 93T 68T 25T 73%
+/dev/grid/node-x20-y16 85T 67T 18T 78%
+/dev/grid/node-x20-y17 86T 65T 21T 75%
+/dev/grid/node-x20-y18 91T 65T 26T 71%
+/dev/grid/node-x20-y19 86T 71T 15T 82%
+/dev/grid/node-x20-y20 92T 71T 21T 77%
+/dev/grid/node-x20-y21 502T 493T 9T 98%
+/dev/grid/node-x20-y22 93T 66T 27T 70%
+/dev/grid/node-x20-y23 88T 69T 19T 78%
+/dev/grid/node-x20-y24 85T 70T 15T 82%
+/dev/grid/node-x21-y0 86T 71T 15T 82%
+/dev/grid/node-x21-y1 88T 70T 18T 79%
+/dev/grid/node-x21-y2 93T 70T 23T 75%
+/dev/grid/node-x21-y3 87T 70T 17T 80%
+/dev/grid/node-x21-y4 89T 70T 19T 78%
+/dev/grid/node-x21-y5 93T 71T 22T 76%
+/dev/grid/node-x21-y6 93T 67T 26T 72%
+/dev/grid/node-x21-y7 86T 66T 20T 76%
+/dev/grid/node-x21-y8 85T 69T 16T 81%
+/dev/grid/node-x21-y9 85T 73T 12T 85%
+/dev/grid/node-x21-y10 87T 73T 14T 83%
+/dev/grid/node-x21-y11 88T 67T 21T 76%
+/dev/grid/node-x21-y12 90T 64T 26T 71%
+/dev/grid/node-x21-y13 87T 70T 17T 80%
+/dev/grid/node-x21-y14 90T 65T 25T 72%
+/dev/grid/node-x21-y15 92T 64T 28T 69%
+/dev/grid/node-x21-y16 90T 67T 23T 74%
+/dev/grid/node-x21-y17 87T 67T 20T 77%
+/dev/grid/node-x21-y18 94T 71T 23T 75%
+/dev/grid/node-x21-y19 90T 69T 21T 76%
+/dev/grid/node-x21-y20 93T 66T 27T 70%
+/dev/grid/node-x21-y21 501T 497T 4T 99%
+/dev/grid/node-x21-y22 85T 66T 19T 77%
+/dev/grid/node-x21-y23 94T 64T 30T 68%
+/dev/grid/node-x21-y24 86T 64T 22T 74%
+/dev/grid/node-x22-y0 91T 64T 27T 70%
+/dev/grid/node-x22-y1 86T 65T 21T 75%
+/dev/grid/node-x22-y2 90T 71T 19T 78%
+/dev/grid/node-x22-y3 91T 72T 19T 79%
+/dev/grid/node-x22-y4 87T 66T 21T 75%
+/dev/grid/node-x22-y5 91T 65T 26T 71%
+/dev/grid/node-x22-y6 89T 71T 18T 79%
+/dev/grid/node-x22-y7 85T 64T 21T 75%
+/dev/grid/node-x22-y8 90T 64T 26T 71%
+/dev/grid/node-x22-y9 94T 65T 29T 69%
+/dev/grid/node-x22-y10 88T 71T 17T 80%
+/dev/grid/node-x22-y11 85T 72T 13T 84%
+/dev/grid/node-x22-y12 89T 65T 24T 73%
+/dev/grid/node-x22-y13 92T 65T 27T 70%
+/dev/grid/node-x22-y14 91T 66T 25T 72%
+/dev/grid/node-x22-y15 85T 71T 14T 83%
+/dev/grid/node-x22-y16 89T 68T 21T 76%
+/dev/grid/node-x22-y17 90T 65T 25T 72%
+/dev/grid/node-x22-y18 90T 66T 24T 73%
+/dev/grid/node-x22-y19 87T 67T 20T 77%
+/dev/grid/node-x22-y20 94T 72T 22T 76%
+/dev/grid/node-x22-y21 506T 491T 15T 97%
+/dev/grid/node-x22-y22 88T 72T 16T 81%
+/dev/grid/node-x22-y23 94T 73T 21T 77%
+/dev/grid/node-x22-y24 94T 73T 21T 77%
+/dev/grid/node-x23-y0 93T 70T 23T 75%
+/dev/grid/node-x23-y1 93T 64T 29T 68%
+/dev/grid/node-x23-y2 94T 71T 23T 75%
+/dev/grid/node-x23-y3 93T 65T 28T 69%
+/dev/grid/node-x23-y4 86T 68T 18T 79%
+/dev/grid/node-x23-y5 89T 71T 18T 79%
+/dev/grid/node-x23-y6 90T 66T 24T 73%
+/dev/grid/node-x23-y7 90T 67T 23T 74%
+/dev/grid/node-x23-y8 94T 73T 21T 77%
+/dev/grid/node-x23-y9 85T 70T 15T 82%
+/dev/grid/node-x23-y10 94T 70T 24T 74%
+/dev/grid/node-x23-y11 90T 71T 19T 78%
+/dev/grid/node-x23-y12 86T 70T 16T 81%
+/dev/grid/node-x23-y13 92T 69T 23T 75%
+/dev/grid/node-x23-y14 88T 73T 15T 82%
+/dev/grid/node-x23-y15 89T 64T 25T 71%
+/dev/grid/node-x23-y16 92T 64T 28T 69%
+/dev/grid/node-x23-y17 87T 71T 16T 81%
+/dev/grid/node-x23-y18 87T 71T 16T 81%
+/dev/grid/node-x23-y19 94T 65T 29T 69%
+/dev/grid/node-x23-y20 90T 65T 25T 72%
+/dev/grid/node-x23-y21 504T 490T 14T 97%
+/dev/grid/node-x23-y22 89T 67T 22T 75%
+/dev/grid/node-x23-y23 90T 68T 22T 75%
+/dev/grid/node-x23-y24 85T 69T 16T 81%
+/dev/grid/node-x24-y0 87T 67T 20T 77%
+/dev/grid/node-x24-y1 87T 68T 19T 78%
+/dev/grid/node-x24-y2 86T 71T 15T 82%
+/dev/grid/node-x24-y3 86T 70T 16T 81%
+/dev/grid/node-x24-y4 88T 64T 24T 72%
+/dev/grid/node-x24-y5 94T 68T 26T 72%
+/dev/grid/node-x24-y6 92T 72T 20T 78%
+/dev/grid/node-x24-y7 94T 69T 25T 73%
+/dev/grid/node-x24-y8 86T 73T 13T 84%
+/dev/grid/node-x24-y9 87T 66T 21T 75%
+/dev/grid/node-x24-y10 87T 66T 21T 75%
+/dev/grid/node-x24-y11 90T 64T 26T 71%
+/dev/grid/node-x24-y12 88T 68T 20T 77%
+/dev/grid/node-x24-y13 92T 72T 20T 78%
+/dev/grid/node-x24-y14 93T 64T 29T 68%
+/dev/grid/node-x24-y15 90T 67T 23T 74%
+/dev/grid/node-x24-y16 87T 73T 14T 83%
+/dev/grid/node-x24-y17 85T 72T 13T 84%
+/dev/grid/node-x24-y18 86T 67T 19T 77%
+/dev/grid/node-x24-y19 88T 69T 19T 78%
+/dev/grid/node-x24-y20 93T 69T 24T 74%
+/dev/grid/node-x24-y21 504T 496T 8T 98%
+/dev/grid/node-x24-y22 85T 71T 14T 83%
+/dev/grid/node-x24-y23 87T 66T 21T 75%
+/dev/grid/node-x24-y24 89T 65T 24T 73%
+/dev/grid/node-x25-y0 92T 73T 19T 79%
+/dev/grid/node-x25-y1 88T 69T 19T 78%
+/dev/grid/node-x25-y2 85T 64T 21T 75%
+/dev/grid/node-x25-y3 85T 68T 17T 80%
+/dev/grid/node-x25-y4 94T 64T 30T 68%
+/dev/grid/node-x25-y5 94T 66T 28T 70%
+/dev/grid/node-x25-y6 92T 64T 28T 69%
+/dev/grid/node-x25-y7 88T 67T 21T 76%
+/dev/grid/node-x25-y8 91T 70T 21T 76%
+/dev/grid/node-x25-y9 85T 71T 14T 83%
+/dev/grid/node-x25-y10 93T 71T 22T 76%
+/dev/grid/node-x25-y11 85T 68T 17T 80%
+/dev/grid/node-x25-y12 86T 73T 13T 84%
+/dev/grid/node-x25-y13 89T 69T 20T 77%
+/dev/grid/node-x25-y14 91T 71T 20T 78%
+/dev/grid/node-x25-y15 85T 65T 20T 76%
+/dev/grid/node-x25-y16 87T 70T 17T 80%
+/dev/grid/node-x25-y17 94T 66T 28T 70%
+/dev/grid/node-x25-y18 93T 65T 28T 69%
+/dev/grid/node-x25-y19 89T 70T 19T 78%
+/dev/grid/node-x25-y20 92T 72T 20T 78%
+/dev/grid/node-x25-y21 506T 495T 11T 97%
+/dev/grid/node-x25-y22 94T 65T 29T 69%
+/dev/grid/node-x25-y23 86T 66T 20T 76%
+/dev/grid/node-x25-y24 91T 71T 20T 78%
+/dev/grid/node-x26-y0 91T 71T 20T 78%
+/dev/grid/node-x26-y1 90T 69T 21T 76%
+/dev/grid/node-x26-y2 87T 66T 21T 75%
+/dev/grid/node-x26-y3 93T 73T 20T 78%
+/dev/grid/node-x26-y4 85T 66T 19T 77%
+/dev/grid/node-x26-y5 87T 67T 20T 77%
+/dev/grid/node-x26-y6 85T 73T 12T 85%
+/dev/grid/node-x26-y7 93T 73T 20T 78%
+/dev/grid/node-x26-y8 89T 68T 21T 76%
+/dev/grid/node-x26-y9 89T 71T 18T 79%
+/dev/grid/node-x26-y10 86T 66T 20T 76%
+/dev/grid/node-x26-y11 94T 72T 22T 76%
+/dev/grid/node-x26-y12 86T 72T 14T 83%
+/dev/grid/node-x26-y13 93T 68T 25T 73%
+/dev/grid/node-x26-y14 86T 68T 18T 79%
+/dev/grid/node-x26-y15 91T 69T 22T 75%
+/dev/grid/node-x26-y16 93T 73T 20T 78%
+/dev/grid/node-x26-y17 89T 70T 19T 78%
+/dev/grid/node-x26-y18 87T 66T 21T 75%
+/dev/grid/node-x26-y19 90T 67T 23T 74%
+/dev/grid/node-x26-y20 94T 69T 25T 73%
+/dev/grid/node-x26-y21 510T 497T 13T 97%
+/dev/grid/node-x26-y22 86T 71T 15T 82%
+/dev/grid/node-x26-y23 92T 65T 27T 70%
+/dev/grid/node-x26-y24 85T 73T 12T 85%
+/dev/grid/node-x27-y0 89T 66T 23T 74%
+/dev/grid/node-x27-y1 89T 70T 19T 78%
+/dev/grid/node-x27-y2 86T 66T 20T 76%
+/dev/grid/node-x27-y3 91T 66T 25T 72%
+/dev/grid/node-x27-y4 90T 70T 20T 77%
+/dev/grid/node-x27-y5 92T 70T 22T 76%
+/dev/grid/node-x27-y6 86T 67T 19T 77%
+/dev/grid/node-x27-y7 88T 65T 23T 73%
+/dev/grid/node-x27-y8 93T 72T 21T 77%
+/dev/grid/node-x27-y9 91T 64T 27T 70%
+/dev/grid/node-x27-y10 93T 71T 22T 76%
+/dev/grid/node-x27-y11 94T 69T 25T 73%
+/dev/grid/node-x27-y12 86T 67T 19T 77%
+/dev/grid/node-x27-y13 93T 73T 20T 78%
+/dev/grid/node-x27-y14 93T 72T 21T 77%
+/dev/grid/node-x27-y15 88T 65T 23T 73%
+/dev/grid/node-x27-y16 88T 70T 18T 79%
+/dev/grid/node-x27-y17 94T 65T 29T 69%
+/dev/grid/node-x27-y18 90T 73T 17T 81%
+/dev/grid/node-x27-y19 87T 64T 23T 73%
+/dev/grid/node-x27-y20 85T 68T 17T 80%
+/dev/grid/node-x27-y21 503T 498T 5T 99%
+/dev/grid/node-x27-y22 91T 73T 18T 80%
+/dev/grid/node-x27-y23 94T 68T 26T 72%
+/dev/grid/node-x27-y24 91T 65T 26T 71%
+/dev/grid/node-x28-y0 86T 71T 15T 82%
+/dev/grid/node-x28-y1 92T 67T 25T 72%
+/dev/grid/node-x28-y2 94T 71T 23T 75%
+/dev/grid/node-x28-y3 92T 68T 24T 73%
+/dev/grid/node-x28-y4 86T 73T 13T 84%
+/dev/grid/node-x28-y5 88T 68T 20T 77%
+/dev/grid/node-x28-y6 93T 70T 23T 75%
+/dev/grid/node-x28-y7 90T 67T 23T 74%
+/dev/grid/node-x28-y8 92T 72T 20T 78%
+/dev/grid/node-x28-y9 85T 66T 19T 77%
+/dev/grid/node-x28-y10 88T 72T 16T 81%
+/dev/grid/node-x28-y11 90T 72T 18T 80%
+/dev/grid/node-x28-y12 87T 73T 14T 83%
+/dev/grid/node-x28-y13 87T 64T 23T 73%
+/dev/grid/node-x28-y14 94T 70T 24T 74%
+/dev/grid/node-x28-y15 85T 67T 18T 78%
+/dev/grid/node-x28-y16 88T 73T 15T 82%
+/dev/grid/node-x28-y17 86T 68T 18T 79%
+/dev/grid/node-x28-y18 91T 70T 21T 76%
+/dev/grid/node-x28-y19 86T 64T 22T 74%
+/dev/grid/node-x28-y20 91T 70T 21T 76%
+/dev/grid/node-x28-y21 506T 493T 13T 97%
+/dev/grid/node-x28-y22 92T 70T 22T 76%
+/dev/grid/node-x28-y23 88T 70T 18T 79%
+/dev/grid/node-x28-y24 90T 71T 19T 78%
+/dev/grid/node-x29-y0 85T 73T 12T 85%
+/dev/grid/node-x29-y1 87T 68T 19T 78%
+/dev/grid/node-x29-y2 94T 67T 27T 71%
+/dev/grid/node-x29-y3 89T 68T 21T 76%
+/dev/grid/node-x29-y4 91T 65T 26T 71%
+/dev/grid/node-x29-y5 93T 64T 29T 68%
+/dev/grid/node-x29-y6 94T 72T 22T 76%
+/dev/grid/node-x29-y7 89T 66T 23T 74%
+/dev/grid/node-x29-y8 91T 65T 26T 71%
+/dev/grid/node-x29-y9 90T 67T 23T 74%
+/dev/grid/node-x29-y10 92T 66T 26T 71%
+/dev/grid/node-x29-y11 89T 69T 20T 77%
+/dev/grid/node-x29-y12 86T 65T 21T 75%
+/dev/grid/node-x29-y13 88T 66T 22T 75%
+/dev/grid/node-x29-y14 85T 65T 20T 76%
+/dev/grid/node-x29-y15 94T 73T 21T 77%
+/dev/grid/node-x29-y16 90T 73T 17T 81%
+/dev/grid/node-x29-y17 87T 67T 20T 77%
+/dev/grid/node-x29-y18 91T 64T 27T 70%
+/dev/grid/node-x29-y19 90T 73T 17T 81%
+/dev/grid/node-x29-y20 88T 73T 15T 82%
+/dev/grid/node-x29-y21 502T 499T 3T 99%
+/dev/grid/node-x29-y22 91T 65T 26T 71%
+/dev/grid/node-x29-y23 90T 72T 18T 80%
+/dev/grid/node-x29-y24 90T 69T 21T 76%
+/dev/grid/node-x30-y0 91T 67T 24T 73%
+/dev/grid/node-x30-y1 87T 67T 20T 77%
+/dev/grid/node-x30-y2 89T 66T 23T 74%
+/dev/grid/node-x30-y3 86T 64T 22T 74%
+/dev/grid/node-x30-y4 87T 71T 16T 81%
+/dev/grid/node-x30-y5 92T 68T 24T 73%
+/dev/grid/node-x30-y6 91T 67T 24T 73%
+/dev/grid/node-x30-y7 85T 71T 14T 83%
+/dev/grid/node-x30-y8 91T 66T 25T 72%
+/dev/grid/node-x30-y9 85T 70T 15T 82%
+/dev/grid/node-x30-y10 89T 71T 18T 79%
+/dev/grid/node-x30-y11 87T 69T 18T 79%
+/dev/grid/node-x30-y12 89T 73T 16T 82%
+/dev/grid/node-x30-y13 88T 71T 17T 80%
+/dev/grid/node-x30-y14 94T 68T 26T 72%
+/dev/grid/node-x30-y15 87T 72T 15T 82%
+/dev/grid/node-x30-y16 91T 71T 20T 78%
+/dev/grid/node-x30-y17 92T 70T 22T 76%
+/dev/grid/node-x30-y18 88T 66T 22T 75%
+/dev/grid/node-x30-y19 85T 68T 17T 80%
+/dev/grid/node-x30-y20 94T 66T 28T 70%
+/dev/grid/node-x30-y21 503T 498T 5T 99%
+/dev/grid/node-x30-y22 93T 69T 24T 74%
+/dev/grid/node-x30-y23 87T 70T 17T 80%
+/dev/grid/node-x30-y24 92T 67T 25T 72%
+/dev/grid/node-x31-y0 94T 64T 30T 68%
+/dev/grid/node-x31-y1 91T 70T 21T 76%
+/dev/grid/node-x31-y2 91T 70T 21T 76%
+/dev/grid/node-x31-y3 89T 69T 20T 77%
+/dev/grid/node-x31-y4 89T 68T 21T 76%
+/dev/grid/node-x31-y5 89T 70T 19T 78%
+/dev/grid/node-x31-y6 90T 65T 25T 72%
+/dev/grid/node-x31-y7 93T 66T 27T 70%
+/dev/grid/node-x31-y8 86T 71T 15T 82%
+/dev/grid/node-x31-y9 86T 72T 14T 83%
+/dev/grid/node-x31-y10 94T 67T 27T 71%
+/dev/grid/node-x31-y11 86T 72T 14T 83%
+/dev/grid/node-x31-y12 91T 65T 26T 71%
+/dev/grid/node-x31-y13 85T 64T 21T 75%
+/dev/grid/node-x31-y14 90T 71T 19T 78%
+/dev/grid/node-x31-y15 92T 72T 20T 78%
+/dev/grid/node-x31-y16 87T 72T 15T 82%
+/dev/grid/node-x31-y17 89T 66T 23T 74%
+/dev/grid/node-x31-y18 91T 73T 18T 80%
+/dev/grid/node-x31-y19 90T 66T 24T 73%
+/dev/grid/node-x31-y20 90T 68T 22T 75%
+/dev/grid/node-x31-y21 510T 498T 12T 97%
+/dev/grid/node-x31-y22 86T 69T 17T 80%
+/dev/grid/node-x31-y23 86T 69T 17T 80%
+/dev/grid/node-x31-y24 94T 70T 24T 74%
+/dev/grid/node-x32-y0 85T 65T 20T 76%
+/dev/grid/node-x32-y1 91T 70T 21T 76%
+/dev/grid/node-x32-y2 90T 65T 25T 72%
+/dev/grid/node-x32-y3 86T 67T 19T 77%
+/dev/grid/node-x32-y4 93T 71T 22T 76%
+/dev/grid/node-x32-y5 90T 69T 21T 76%
+/dev/grid/node-x32-y6 85T 73T 12T 85%
+/dev/grid/node-x32-y7 92T 67T 25T 72%
+/dev/grid/node-x32-y8 87T 65T 22T 74%
+/dev/grid/node-x32-y9 89T 64T 25T 71%
+/dev/grid/node-x32-y10 88T 64T 24T 72%
+/dev/grid/node-x32-y11 89T 69T 20T 77%
+/dev/grid/node-x32-y12 91T 66T 25T 72%
+/dev/grid/node-x32-y13 90T 66T 24T 73%
+/dev/grid/node-x32-y14 90T 72T 18T 80%
+/dev/grid/node-x32-y15 94T 73T 21T 77%
+/dev/grid/node-x32-y16 86T 66T 20T 76%
+/dev/grid/node-x32-y17 93T 70T 23T 75%
+/dev/grid/node-x32-y18 85T 71T 14T 83%
+/dev/grid/node-x32-y19 86T 67T 19T 77%
+/dev/grid/node-x32-y20 86T 65T 21T 75%
+/dev/grid/node-x32-y21 509T 499T 10T 98%
+/dev/grid/node-x32-y22 90T 72T 18T 80%
+/dev/grid/node-x32-y23 86T 70T 16T 81%
+/dev/grid/node-x32-y24 92T 73T 19T 79%
+/dev/grid/node-x33-y0 93T 65T 28T 69%
+/dev/grid/node-x33-y1 91T 65T 26T 71%
+/dev/grid/node-x33-y2 85T 71T 14T 83%
+/dev/grid/node-x33-y3 90T 68T 22T 75%
+/dev/grid/node-x33-y4 91T 65T 26T 71%
+/dev/grid/node-x33-y5 93T 71T 22T 76%
+/dev/grid/node-x33-y6 87T 69T 18T 79%
+/dev/grid/node-x33-y7 87T 65T 22T 74%
+/dev/grid/node-x33-y8 85T 73T 12T 85%
+/dev/grid/node-x33-y9 87T 70T 17T 80%
+/dev/grid/node-x33-y10 90T 70T 20T 77%
+/dev/grid/node-x33-y11 87T 72T 15T 82%
+/dev/grid/node-x33-y12 89T 70T 19T 78%
+/dev/grid/node-x33-y13 88T 73T 15T 82%
+/dev/grid/node-x33-y14 94T 65T 29T 69%
+/dev/grid/node-x33-y15 94T 71T 23T 75%
+/dev/grid/node-x33-y16 87T 65T 22T 74%
+/dev/grid/node-x33-y17 91T 69T 22T 75%
+/dev/grid/node-x33-y18 88T 65T 23T 73%
+/dev/grid/node-x33-y19 90T 73T 17T 81%
+/dev/grid/node-x33-y20 90T 71T 19T 78%
+/dev/grid/node-x33-y21 502T 498T 4T 99%
+/dev/grid/node-x33-y22 93T 65T 28T 69%
+/dev/grid/node-x33-y23 86T 64T 22T 74%
+/dev/grid/node-x33-y24 89T 72T 17T 80%
+/dev/grid/node-x34-y0 88T 68T 20T 77%
+/dev/grid/node-x34-y1 92T 70T 22T 76%
+/dev/grid/node-x34-y2 88T 65T 23T 73%
+/dev/grid/node-x34-y3 93T 68T 25T 73%
+/dev/grid/node-x34-y4 91T 68T 23T 74%
+/dev/grid/node-x34-y5 93T 72T 21T 77%
+/dev/grid/node-x34-y6 85T 73T 12T 85%
+/dev/grid/node-x34-y7 89T 67T 22T 75%
+/dev/grid/node-x34-y8 93T 71T 22T 76%
+/dev/grid/node-x34-y9 94T 73T 21T 77%
+/dev/grid/node-x34-y10 89T 71T 18T 79%
+/dev/grid/node-x34-y11 88T 71T 17T 80%
+/dev/grid/node-x34-y12 93T 68T 25T 73%
+/dev/grid/node-x34-y13 90T 65T 25T 72%
+/dev/grid/node-x34-y14 90T 66T 24T 73%
+/dev/grid/node-x34-y15 93T 65T 28T 69%
+/dev/grid/node-x34-y16 86T 65T 21T 75%
+/dev/grid/node-x34-y17 93T 70T 23T 75%
+/dev/grid/node-x34-y18 85T 70T 15T 82%
+/dev/grid/node-x34-y19 91T 73T 18T 80%
+/dev/grid/node-x34-y20 90T 70T 20T 77%
+/dev/grid/node-x34-y21 509T 498T 11T 97%
+/dev/grid/node-x34-y22 86T 68T 18T 79%
+/dev/grid/node-x34-y23 91T 72T 19T 79%
+/dev/grid/node-x34-y24 90T 70T 20T 77%
+/dev/grid/node-x35-y0 94T 72T 22T 76%
+/dev/grid/node-x35-y1 86T 72T 14T 83%
+/dev/grid/node-x35-y2 89T 73T 16T 82%
+/dev/grid/node-x35-y3 92T 68T 24T 73%
+/dev/grid/node-x35-y4 94T 70T 24T 74%
+/dev/grid/node-x35-y5 94T 69T 25T 73%
+/dev/grid/node-x35-y6 89T 72T 17T 80%
+/dev/grid/node-x35-y7 87T 68T 19T 78%
+/dev/grid/node-x35-y8 89T 73T 16T 82%
+/dev/grid/node-x35-y9 93T 67T 26T 72%
+/dev/grid/node-x35-y10 89T 71T 18T 79%
+/dev/grid/node-x35-y11 91T 70T 21T 76%
+/dev/grid/node-x35-y12 90T 64T 26T 71%
+/dev/grid/node-x35-y13 86T 70T 16T 81%
+/dev/grid/node-x35-y14 85T 67T 18T 78%
+/dev/grid/node-x35-y15 88T 70T 18T 79%
+/dev/grid/node-x35-y16 88T 69T 19T 78%
+/dev/grid/node-x35-y17 89T 65T 24T 73%
+/dev/grid/node-x35-y18 89T 72T 17T 80%
+/dev/grid/node-x35-y19 89T 68T 21T 76%
+/dev/grid/node-x35-y20 89T 72T 17T 80%
+/dev/grid/node-x35-y21 510T 491T 19T 96%
+/dev/grid/node-x35-y22 89T 68T 21T 76%
+/dev/grid/node-x35-y23 88T 65T 23T 73%
+/dev/grid/node-x35-y24 85T 67T 18T 78%
diff --git a/d22/src/main.rs b/d22/src/main.rs
new file mode 100644
index 0000000..71b17c0
--- /dev/null
+++ b/d22/src/main.rs
@@ -0,0 +1,205 @@
+use std::fs;
+use std::collections::{HashSet, VecDeque};
+
+#[derive(Clone, Debug)]
+struct Node {
+ goal: bool,
+ //size: usize,
+ used: usize,
+ avail: usize,
+}
+
+fn parse(lines: Vec<&str>) -> Vec<Vec<Node>> {
+ let mut nodes = Vec::with_capacity(36);
+
+ let mut y = 0;
+ let mut column = Vec::with_capacity(25);
+ // Skip the first two lines; see `input.txt' to see why
+ for i in 2..lines.len() {
+ let words: Vec<&str> = lines[i].split_ascii_whitespace().collect();
+
+ // Read the `df -h' data, ignoring the node name
+ let node = Node {
+ goal: false,
+ //size: words[1].trim_end_matches('T').parse().unwrap(),
+ used: words[2].trim_end_matches('T').parse().unwrap(),
+ avail: words[3].trim_end_matches('T').parse().unwrap(),
+ };
+ column.push(node);
+
+ y += 1;
+ // The grid size is hardcoded at 25 rows here
+ if y > 24 {
+ nodes.push(column);
+
+ y = 0;
+ column = Vec::with_capacity(25);
+ }
+ }
+
+ // In part 2, we want the data in the top-right corner
+ nodes.last_mut().unwrap()[0].goal = true;
+
+ nodes
+}
+
+fn solve_part1(state: &Vec<Vec<Node>>) -> usize {
+ let mut pairs = Vec::new();
+
+ for x1 in 0..state.len() {
+ for y1 in 0..state[0].len() {
+ for x2 in 0..state.len() {
+ for y2 in 0..state[0].len() {
+ // Check for a "viable pair" according to puzzle description
+ if (x1 != x2 || y1 != y2) && state[x1][y1].used > 0 {
+ if state[x1][y1].used < state[x2][y2].avail {
+ pairs.push(((x1, y1), (x2, y2)));
+ }
+ }
+ }
+ }
+ }
+ }
+
+ pairs.len()
+}
+
+
+fn serialize(state: &Vec<Vec<Node>>) -> String {
+ let mut result = String::new();
+
+ // Print grid like the example in part 2's description.
+ // Some information is deliberately lost in this step.
+ for y in 0..state[0].len() {
+ for x in 0..state.len() {
+ if state[x][y].goal {
+ result.push('G');
+ } else if state[x][y].used > 100 {
+ result.push('#');
+ } else if state[x][y].used == 0 {
+ result.push('_');
+ } else {
+ result.push('.');
+ }
+ }
+ result.push('\n');
+ }
+
+ result
+}
+
+fn solve_part2(start: &Vec<Vec<Node>>) -> usize {
+ // We will do a breadth-first search of the state space, with the catch
+ // that `serialize()' maps several states onto the same representation
+ let mut visited = HashSet::from([serialize(&start)]);
+ let mut queue = VecDeque::from([(start.clone(), 0)]);
+
+ loop {
+ let (state, depth) = queue.pop_front().unwrap();
+
+ // End condition: did we move the target data to top-left node?
+ if state[0][0].goal {
+ return depth;
+ }
+
+ // There is one empty node; find its coordinates
+ let mut empty = (36, 25);
+ for x in 0..state.len() {
+ for y in 0..state[0].len() {
+ if state[x][y].used == 0 {
+ empty = (x, y);
+ }
+ }
+ }
+
+ // Get coordinates of up to four neighbours of `empty'
+ let mut neighbours = Vec::new();
+ if empty.0 > 0 {
+ neighbours.push((empty.0 - 1, empty.1));
+ }
+ if empty.0 < state.len() - 1 {
+ neighbours.push((empty.0 + 1, empty.1));
+ }
+ if empty.1 > 0 {
+ neighbours.push((empty.0, empty.1 - 1));
+ }
+ if empty.1 < state[0].len() - 1 {
+ neighbours.push((empty.0, empty.1 + 1));
+ }
+
+ // Generate new states, one for swapping `empty' with each neighbour
+ let mut new_states = Vec::new();
+ for neigh in neighbours {
+ // Some nodes are large and full; their data won't fit in `empty',
+ // so we ignore them. Otherwise, we assume that the data will fit;
+ // this assumption is justified by the example given for part 2.
+ if state[neigh.0][neigh.1].used > 100 {
+ continue;
+ }
+
+ let mut ns = state.clone();
+
+ let amount = ns[neigh.0][neigh.1].used;
+ ns[neigh.0][neigh.1].used -= amount;
+ ns[neigh.0][neigh.1].avail += amount;
+
+ ns[empty.0][empty.1].used += amount;
+ ns[empty.0][empty.1].avail -= amount;
+
+ if ns[neigh.0][neigh.1].goal {
+ ns[empty.0][empty.1].goal = true;
+ ns[neigh.0][neigh.1].goal = false;
+ }
+
+ new_states.push(ns);
+ }
+
+ for ns in new_states {
+ // Via `serialize()' many uninteresting states are discarded here
+ let ser = serialize(&ns);
+ if !visited.contains(&ser) {
+ visited.insert(ser);
+ queue.push_back((ns, depth + 1));
+ }
+ }
+ }
+}
+
+fn main() {
+ // Read data from input text file
+ let input = fs::read_to_string("input.txt").unwrap();
+ let lines = input.lines().collect();
+ let nodes = parse(lines);
+
+ // Part 1 gives 864 for me
+ println!("Part 1 solution: {}", solve_part1(&nodes));
+
+ // Part 2 gives 244 for me
+ println!("Part 2 solution: {}", solve_part2(&nodes));
+}
+
+// Disabled because I'm too lazy to rewrite `parse()'
+// to make it handle different grid sizes properly
+/*#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn part2_example1() {
+ let lines = vec![
+ "root@ebhq-gridcenter# df -h",
+ "Filesystem Size Used Avail Use%",
+ "/dev/grid/node-x0-y0 10T 8T 2T 80%",
+ "/dev/grid/node-x0-y1 11T 6T 5T 54%",
+ "/dev/grid/node-x0-y2 32T 28T 4T 87%",
+ "/dev/grid/node-x1-y0 9T 7T 2T 77%",
+ "/dev/grid/node-x1-y1 8T 0T 8T 0%",
+ "/dev/grid/node-x1-y2 11T 7T 4T 63%",
+ "/dev/grid/node-x2-y0 10T 6T 4T 60%",
+ "/dev/grid/node-x2-y1 9T 8T 1T 88%",
+ "/dev/grid/node-x2-y2 9T 6T 3T 66%",
+ ];
+ let nodes = parse(lines);
+ assert_eq!(solve_part2(&nodes), 7);
+ }
+}*/
diff --git a/d23/Cargo.toml b/d23/Cargo.toml
new file mode 100644
index 0000000..9a8c5ac
--- /dev/null
+++ b/d23/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "d23"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/d23/input.txt b/d23/input.txt
new file mode 100644
index 0000000..74d33e1
--- /dev/null
+++ b/d23/input.txt
@@ -0,0 +1,26 @@
+cpy a b
+dec b
+cpy a d
+cpy 0 a
+cpy b c
+inc a
+dec c
+jnz c -2
+dec d
+jnz d -5
+dec b
+cpy b c
+cpy c d
+dec d
+inc c
+jnz d -2
+tgl c
+cpy -16 c
+jnz 1 c
+cpy 95 c
+jnz 95 d
+inc a
+inc d
+jnz d -2
+inc c
+jnz c -5
diff --git a/d23/src/main.rs b/d23/src/main.rs
new file mode 100644
index 0000000..234ebb6
--- /dev/null
+++ b/d23/src/main.rs
@@ -0,0 +1,149 @@
+use std::collections::HashMap;
+use std::fs;
+
+// Compared to day 12, for day 23 it makes more sense to abstract
+// over operands in this way; they could be registers or literals.
+#[derive(Copy, Clone, Debug)]
+enum Arg<'a> {
+ Reg(&'a str),
+ Lit(isize),
+}
+
+// It's convenient to use the `From' trait for parsing operands
+impl<'a> From<&'a str> for Arg<'a> {
+ fn from(s: &'a str) -> Self {
+ if s.chars().all(|c| c.is_ascii_digit() || c == '-') { // yes I know
+ Self::Lit(s.parse().unwrap())
+ } else {
+ Self::Reg(s)
+ }
+ }
+}
+
+#[derive(Copy, Clone, Debug)]
+enum Oper<'a> {
+ Inc(Arg<'a>),
+ Dec(Arg<'a>),
+ Tgl(Arg<'a>),
+ Cpy(Arg<'a>, Arg<'a>),
+ Jnz(Arg<'a>, Arg<'a>),
+}
+
+fn parse(lines: Vec<&str>) -> Vec<Oper> {
+ let mut insts = Vec::new();
+
+ for line in lines {
+ let words: Vec<&str> = line.split_ascii_whitespace().collect();
+
+ if words[0] == "inc" {
+ insts.push(Oper::Inc(Arg::from(words[1])));
+ } else if words[0] == "dec" {
+ insts.push(Oper::Dec(Arg::from(words[1])));
+ } else if words[0] == "tgl" {
+ insts.push(Oper::Tgl(Arg::from(words[1])));
+ } else if words[0] == "cpy" {
+ insts.push(Oper::Cpy(Arg::from(words[1]), Arg::from(words[2])));
+ } else if words[0] == "jnz" {
+ insts.push(Oper::Jnz(Arg::from(words[1]), Arg::from(words[2])));
+ }
+ }
+
+ insts
+}
+
+fn execute(program: &Vec<Oper>, init: Vec<(&str, isize)>) -> isize {
+ // Make a local mutable copy of the program
+ let mut insts = program.clone();
+
+ // `init' contains initial register values
+ let mut state: HashMap<&str, isize> = init.into_iter().collect();
+
+ let mut ip = 0; // instruction pointer
+ while ip < insts.len() {
+ match insts[ip] {
+ Oper::Inc(arg) => {
+ if let Arg::Reg(dst) = arg {
+ *state.entry(dst).or_insert(0) += 1;
+ }
+ },
+ Oper::Dec(arg) => {
+ if let Arg::Reg(dst) = arg {
+ *state.entry(dst).or_insert(0) -= 1;
+ }
+ },
+ Oper::Tgl(arg) => {
+ let off = match arg {
+ Arg::Reg(reg) => state.get(&reg).copied().unwrap_or(0),
+ Arg::Lit(lit) => lit,
+ };
+ // Calculate index of target instruction
+ let t = ((ip as isize) + off) as usize;
+ if t < insts.len() {
+ insts[t] = match insts[t] {
+ Oper::Inc(a) => Oper::Dec(a),
+ Oper::Dec(a) => Oper::Inc(a),
+ Oper::Tgl(a) => Oper::Inc(a),
+ Oper::Cpy(a1, a2) => Oper::Jnz(a1, a2),
+ Oper::Jnz(a1, a2) => Oper::Cpy(a1, a2),
+ };
+ }
+ },
+ Oper::Cpy(arg1, arg2) => {
+ // If destination is a literal (due to `Tgl'), ignore this `Cpy'
+ if let Arg::Reg(dst) = arg2 {
+ let val = match arg1 {
+ Arg::Reg(src) => state.get(&src).copied().unwrap_or(0),
+ Arg::Lit(lit) => lit,
+ };
+ *state.entry(dst).or_insert(0) = val;
+ }
+ },
+ Oper::Jnz(arg1, arg2) => {
+ let val = match arg1 {
+ Arg::Reg(reg) => state.get(&reg).copied().unwrap_or(0),
+ Arg::Lit(lit) => lit,
+ };
+ // Should the branch be taken? If yes:
+ if val != 0 {
+ let off = match arg2 {
+ Arg::Reg(reg) => state.get(&reg).copied().unwrap_or(0),
+ Arg::Lit(lit) => lit,
+ };
+ // Subtract 1 to compensate for `ip += 1;' below
+ ip = ((ip as isize) + off - 1) as usize;
+ }
+ },
+ };
+
+ ip += 1;
+ }
+
+ state.get("a").copied().unwrap()
+}
+
+fn main() {
+ // Read assembly from input text file and parse it
+ let input = fs::read_to_string("input.txt").unwrap();
+ let lines = input.lines().collect();
+ let insts = parse(lines);
+
+ // Part 1 gives 14065 for my input
+ println!("Part 1 solution: {}", execute(&insts, vec![("a", 7)]));
+
+ // Part 2 gives 479010625 for my input
+ println!("Part 2 solution: {}", execute(&insts, vec![("a", 12)]));
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn part1_example1() {
+ let lines = vec![
+ "cpy 2 a", "tgl a", "tgl a", "tgl a", "cpy 1 a", "dec a", "dec a"
+ ];
+ let insts = parse(lines);
+ assert_eq!(execute(&insts, vec![]), 3);
+ }
+}
diff --git a/d24/Cargo.toml b/d24/Cargo.toml
new file mode 100644
index 0000000..800c124
--- /dev/null
+++ b/d24/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "d24"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
+itertools = "0.10.5"
diff --git a/d24/input.txt b/d24/input.txt
new file mode 100644
index 0000000..6fcc4f5
--- /dev/null
+++ b/d24/input.txt
@@ -0,0 +1,39 @@
+#####################################################################################################################################################################################
+#.....#.#.....#.#.#...#.....#.#.#.#.....#3......#...........#.#.....#.....#.............#.#...#...#.....#...#.........#.#...............#.....#.....#.........................#.....#
+#.#.#.#.#.#.#.#.#.#.#.#.###.#.#.#.#.#.#####.#.#.#.#####.#.###.#.#.###.#.#####.###.#.#.#.#.#####.#.#.#.#####.#.#.#####.#.#.#####.###.#.#.###.###.###.#.###.#.###.###.#.#######.#######
+#.....#...#.#.....#...#.........#...........#.......#...#.#.....#.....#.#.#.......#...#.#...#...#...#.#...#...#.#...#.#.#.#.......#...#...#.....#.....#.....#...#...#.......#.#...#.#
+###.#####.#.#######.###.#.#.#.#.#.#####.#.#.#.#####.#.###.#.#####.#.#.#.#.#####.#.#.#.#.#.###.#.###.#.#####.#.#.#.#.###.#.#.#.###.#.#.#.#.###.#.#.###.#.#.#.#.#.#.#.#.#.#####.#.#.#.#
+#...#1......#.....#.#.#.#.....#.#.#.....#...#.#...#.......#...........#.............#...#.....#.......#.....#.....#.#.......#.#...#.#.#.#.......#...#.#...........#.#.....#...#.#...#
+#.#.###.#.###.#.#.#.#.#.#.#######.#.#.###.#.#.#.###.#####.###.#.#.#.#.#.###.#.#####.#.#.#####.#####.#.#.#.#.#.#.#.###.###.#.#####.#.#.#####.#.#.#.#.#.#.#.###.#####.###.#.#.#.#.###.#
+#.....#.#.....#.#...#.#.....#.#.#.#.........#.#.#.......#.#.#.......#...#...#...#.....#.#...#.......#.....#.......#...#.....#...#...#.......#...#.#.....#...#.#.....#.#...#.#...#...#
+#.#.#.#.#####.#.###.#.#.#.###.#.###.#.#.#####.#.#####.#.#.#.#.#####.#.#.#.###.#######.#.###.#.###.#.#.#.#.#.#.#####.###.#####.#.#.#.#.#####.#####.#.###.#.#.#.#.#.#.#.#####.###.#.###
+#...#.#...#.........#.#...#.#...#.....#.#.....#.......#.........#.....#.....#.........#.....#...#.#.#.#.....#.#.................#.#.#.......#.......#.......#...#...#.......#.#...#.#
+#.#.#.#.#.#.#.###.#.###.###.#.#.#.###.###.#.#.#.#.#.#.#########.#.###.#.#.#####.#.#.#.###.#######.#.###.#.#.#.#.#.#.#.###.#.#.###.#######.#.###.#.#.#.#.###.#.#.#.#####.###.#.#.###.#
+#...#.#.#.#.#...#...#...#.............#.....#.....#...#...#.#.....#...#...#.....#.#.....#...#...........#.#.#.#.......#...#.............#...#.#...#...........#...#2#...#.....#.#.#.#
+###.###.#.#####.#.#.#.#.#.#.#.#.#.#.###.###.#.#.#.###.###.#.#.#.#.#.#.###.###.#.#.#.#.###.#.#.#.###.#####.###.###.#.#.#.###.#######.###.###.#.#.#.#####.#####.###.#.#.#####.#.#.#.###
+#.......#...#...........#.......#...#.#.......#.....#.....#...#...#.#.........#.......#...#.#...#...........#.#...#.#...............#.#.#.....#.......#.#.#.#.....#.........#.#.#.#.#
+###.#.#.#.#.#.#.#####.###.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#####.#.###.#.###.#.#.#.#########.###.#.###.#.###.#.#.#.#.#######.#####.###.#.#.#.#.#####.#####.#.#.#.#.#.#######.#.###.#.#.#.#
+#...#.....#.#.............#...#.#.....#.#...#.......#.........#...#...#.#...#...........#...#...........#...#...#.................#...#.#.#.....#.......#.#.#.......#...#...#...#...#
+###.#.#######.#.#.#.###.#.#.#.###.#.#.#.#.#.###.#####.#.###.#.#.#.###.#.#.#.#.#.#.#.###.#.#.#.#.#.#.#####.#.#####.#.#.#.#.#.#######.#.#.#.###.#.#.#.#.#.###.#.###.#########.###.#.#.#
+#.....#...#.....#.....#...#.........#.#...#.....#...#.................#...#.#.#.......#.....#...#.#.................#.#.#.........#.....#...#.#...#.....#.................#.#.....#.#
+#.#####.#.#.#####.###.#.#.#.###.###.#.#########.#.#######.###.###.#.#.#.#.#.#.#.###.#.#.#####.#.###.#.#########.#.###.###.#.###.###.#.#.#.#.#.###.#####.#.#.#######.#.###.#.#.###.###
+#0#...#.#...#...........#.#.............#.#.......#.....#.#.#.....#.#.#...#.....#.#.#.......#.#...#.................#.#.#.....#...#.#.........#.......#.#...#.......#.......#.....#.#
+#####.#.###.#.#.###.#####.###.#######.###.#.#.###.#.#.#.#.#.#.#.#.###.#.#.#.#.#.#.#.#.#####.###.#.#####.#.#.#.###.#.#.#.#########.#.#.#.###.#.#.###.#.#####.#.#.#.#.#.###.###.#.#.#.#
+#...#.#.....#.#.#...#.......#.#.#...#.........#.......#...#.#.....#.............#...........#...#.#.......#.#.....#.#...........#...#.........#.#...#.#.....#.......#...#.......#...#
+###.###.###.#.###.###.#.###.###.#.#.#.#########.#####.###.#######.#.###.#.#.#.###.#.#.#.#.#.#.#.#####.###.#.#.#.#.#.#.#####.###.#.#.###.#####.#.#.#####.#.#.###.#.#####.#.#.#.#.#.#.#
+#.......#...............#.....#...#...#.#...#.........#...........#.....#.....#.......#...#.....#.......#.#.#.#...#...............#.....#.....#...#.#...#...#.#.#.#.#.....#...#.#.#4#
+#.#.#.#.#.#####.###.#.#####.#.###.#.###.#.#.#.###.###.#.#####.#.#####.#.#######.#.#####.#.#######.#.###.#.#.#.###.###.###.#####.#.###.#.#.#.#####.#.#.#.###.#.#.###.###.#.#.#.#.#.###
+#...#...........#.......#...#.....#.#.......#.....#.........#.#.......#.#...#...#...........#.......#.....#...#...#...#.#...#.....#...#.........#...#...#.....#.....#...#...#...#...#
+###.#.###.#############.#.###.###.#.###.#.#.#.#.#.#.#.#.###.#####.#.#.#.#.#.#####.###.#.#.#.#.###.#.#.#.#.#.###.#.#.###.#.#.#.###.###.#.#.###.#.#.#.#.#.#.#####.#.#.#.#.#.#.###.#.###
+#...#.....#.#...#.#.#.#...........#.......#...#.....#...#...................#...#...#.#.#.#...#.......#...............#...#...#...#...#.#.#5#...#...#.#...#...#.#...#.#...#...#.#...#
+#.###.###.#.#.#.#.#.#.###.#.#######.#.#.#.###.#.#.#.#.#.#.###.#.###.###.#.#.#.#.#.###.#.#.#.#.#.###.#.#.###.#.#.###.#.#.#.#.#.#.#.#.#####.#.#.#######.#.#.#.#.#.#####.#.#######.#.#.#
+#.........#.#...#.#...#...#.............#.....#...#.#.#.#.#.#.....#.#...#.....#.#.#.........#.....#.........#.....#...........#...#.........#.....#...#.#.#.#...#...........#...#...#
+#.#.#.#######.#.#####.#.#.#.###.#.#######.#####.#.#.###.#.#.#.###.###.#.###.#.#.#.###.#.#.#.#####.#.###.#.#.#.#.#.#.#####.#.#.###.#.#.#.#.#####.###.#####.#.#.#.#.###.#.#.#####.#####
+#...#...............#.#.......#.......#.......#.........#.#.#.#...#...#...#.......#.#.....#.#...........#...#.#.#...........#.#...#.......#.........#...#...#.....#...#.#.....#.#...#
+###.#.#.#.#.#########.#.#.#.#.#.#####.#.#######.#.###.#.#.#.###.###.#.#.#.#.#.###.#.#.###.#.#####.#.###########.#.#.#####.#####.#####.#####.#.#.#.#.#.#.#####.#.#.#########.#.###.#.#
+#.#...#.....#.......#.....#...#.......#.#.#...#...#...#.........#...#...#.#...#.#.........#.#.......#.#.#...#...#.........#.#.........#.....#.#.#...#.......#.#.....#.......#.#.....#
+#.#.###.#.###.#.#.#.#.###.#########.#.#.#.#.#.#.###.#.#.#####.#.#.#####.#####.#.#.#########.#.#.#.###.#.#####.#.#.###.###.#.#.#.#.#.#####.###.#.###########.#.#.#.#.#.#######.#####.#
+#........7#.....#.#...#.#.#.#.........#...#.#...........#.....#.......#.........#.........#.....#.......#.#.......#.#.#...#...#.#.#....6#.#.........................#...#.#.......#.#
+#.###.#.###.###.###.#.#.###.###.#####.###.#.#.###.#####.###.#.###.#.#.#.#.#.#.#.#.#####.#.#.#####.#######.#.###.#.#.#####.#####.#.#.#.###.#.#.#.#.#####.#.#.###.#####.#.#.#.#.#.#.#.#
+#.#...#.#...#.#.....#.#.......#...#.....#...#...#...#...#.#.....#...#.#...#...#...#.#.............#.............#.#...#.............#.#.....#.....#.......#.#.#.#.........#...#...#.#
+#####################################################################################################################################################################################
diff --git a/d24/src/main.rs b/d24/src/main.rs
new file mode 100644
index 0000000..a43866b
--- /dev/null
+++ b/d24/src/main.rs
@@ -0,0 +1,146 @@
+use std::collections::VecDeque;
+use std::fs;
+
+use itertools::Itertools;
+
+fn to_grid(lines: Vec<&str>) -> Vec<Vec<char>> {
+ let mut grid: Vec<Vec<char>> = Vec::new();
+
+ for line in lines {
+ let mut row = Vec::new();
+ for ch in line.chars() {
+ row.push(ch);
+ }
+ grid.push(row);
+ }
+
+ grid
+}
+
+fn find_goals(grid: &Vec<Vec<char>>) -> Vec<(usize, usize)> {
+ let mut result = Vec::new();
+
+ // The goal locations are represented by digits in the grid
+ for (y, row) in grid.iter().enumerate() {
+ for (x, ch) in row.iter().enumerate() {
+ if ch.is_ascii_digit() {
+ result.push((x, y));
+ }
+ }
+ }
+
+ result
+}
+
+fn goal_distances(grid: &Vec<Vec<char>>, goals: &Vec<(usize, usize)>) -> Vec<Vec<usize>> {
+ let mut dists = Vec::new();
+ for _i in 0..goals.len() {
+ dists.push([0].repeat(goals.len()));
+ }
+
+ // For each goal location, find the distance to each other goal
+ for (i, &g) in goals.iter().enumerate() {
+ let mut visited = vec![g];
+ let mut queue = VecDeque::from([(g, 0)]);
+
+ // Do a breadth-first search to find the shortest paths
+ while queue.len() > 0 {
+ let (loc, depth) = queue.pop_front().unwrap();
+
+ // Have we reached another goal? If so, which one?
+ let oj = goals.iter().position(|&xy| xy == loc);
+ if oj.is_some() {
+ let j = oj.unwrap();
+ dists[i][j] = depth;
+ }
+
+ // Which adjacent locations are accessible?
+ let mut adjs = Vec::new();
+ let u = (loc.0, loc.1 - 1); // up
+ let d = (loc.0, loc.1 + 1); // down
+ let l = (loc.0 - 1, loc.1); // left
+ let r = (loc.0 + 1, loc.1); // right
+ if grid[u.1][u.0] != '#' {
+ adjs.push(u);
+ }
+ if grid[d.1][d.0] != '#' {
+ adjs.push(d);
+ }
+ if grid[l.1][l.0] != '#' {
+ adjs.push(l);
+ }
+ if grid[r.1][r.0] != '#' {
+ adjs.push(r);
+ }
+
+ // Standard breadth-first search stuff
+ for adj in adjs {
+ if !visited.contains(&adj) {
+ visited.push(adj);
+ queue.push_back((adj, depth + 1));
+ }
+ }
+ }
+ }
+
+ dists
+}
+
+fn solve_puzzle(grid: &Vec<Vec<char>>, go_back: bool) -> usize {
+ let goals = find_goals(&grid);
+ let dists = goal_distances(&grid, &goals);
+
+ // This is the travelling salesman problem, so we must try all paths.
+ // We just brute-force the total distance for every order of the goals,
+ // and only keep the result if the path started at "0" as it should.
+ let mut shortest = 13371337;
+ for p in (0..goals.len()).permutations(goals.len()) {
+ let mut total = 0;
+ for i in 1..p.len() {
+ total += dists[p[i - 1]][p[i]];
+ }
+ // Part 2: go back to the start too
+ if go_back {
+ total += dists[p[p.len() - 1]][p[0]];
+ }
+
+ // Is this the shortest path we've seen that start at "0"?
+ let first = goals[p[0]];
+ if grid[first.1][first.0] == '0' && total < shortest {
+ shortest = total;
+ }
+ }
+
+ shortest
+}
+
+fn main() {
+ // Read layout from input text file
+ let input = fs::read_to_string("input.txt").unwrap();
+ let lines = input.lines().collect();
+ let grid = to_grid(lines);
+
+ // Part 1 gives 430 for me
+ println!("Part 1 solution: {}", solve_puzzle(&grid, false));
+
+ // Part 2 gives 700 for me
+ println!("Part 2 solution: {}", solve_puzzle(&grid, true));
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn part1_example1() {
+ let lines = vec![
+ "###########",
+ "#0.1.....2#",
+ "#.#######.#",
+ "#4.......3#",
+ "###########",
+ ];
+ let grid = to_grid(lines);
+ assert_eq!(solve_puzzle(&grid, false), 14);
+ }
+}
diff --git a/d25/Cargo.toml b/d25/Cargo.toml
new file mode 100644
index 0000000..483f9b6
--- /dev/null
+++ b/d25/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "d25"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/d25/input.txt b/d25/input.txt
new file mode 100644
index 0000000..b684231
--- /dev/null
+++ b/d25/input.txt
@@ -0,0 +1,30 @@
+cpy a d
+cpy 4 c
+cpy 643 b
+inc d
+dec b
+jnz b -2
+dec c
+jnz c -5
+cpy d a
+jnz 0 0
+cpy a b
+cpy 0 a
+cpy 2 c
+jnz b 2
+jnz 1 6
+dec b
+dec c
+jnz c -4
+inc a
+jnz 1 -7
+cpy 2 b
+jnz c 2
+jnz 1 4
+dec b
+dec c
+jnz 1 -4
+jnz 0 0
+out b
+jnz a -19
+jnz 1 -21
diff --git a/d25/src/main.rs b/d25/src/main.rs
new file mode 100644
index 0000000..ab740d8
--- /dev/null
+++ b/d25/src/main.rs
@@ -0,0 +1,178 @@
+use std::collections::HashMap;
+use std::fs;
+
+// This implementation is more similar to day 23 than day 12
+#[derive(Copy, Clone, Debug)]
+enum Arg<'a> {
+ Reg(&'a str),
+ Lit(isize),
+}
+
+impl<'a> From<&'a str> for Arg<'a> {
+ fn from(s: &'a str) -> Self {
+ if s.chars().all(|c| c.is_ascii_digit() || c == '-') { // yes I know
+ Self::Lit(s.parse().unwrap())
+ } else {
+ Self::Reg(s)
+ }
+ }
+}
+
+#[derive(Copy, Clone, Debug)]
+enum Oper<'a> {
+ Inc(Arg<'a>),
+ Dec(Arg<'a>),
+ Out(Arg<'a>),
+ Cpy(Arg<'a>, Arg<'a>),
+ Jnz(Arg<'a>, Arg<'a>),
+}
+
+fn parse(lines: Vec<&str>) -> Vec<Oper> {
+ let mut insts = Vec::new();
+
+ for line in lines {
+ let words: Vec<&str> = line.split_ascii_whitespace().collect();
+
+ if words[0] == "inc" {
+ insts.push(Oper::Inc(Arg::from(words[1])));
+ } else if words[0] == "dec" {
+ insts.push(Oper::Dec(Arg::from(words[1])));
+ } else if words[0] == "out" {
+ insts.push(Oper::Out(Arg::from(words[1])));
+ } else if words[0] == "cpy" {
+ insts.push(Oper::Cpy(Arg::from(words[1]), Arg::from(words[2])));
+ } else if words[0] == "jnz" {
+ insts.push(Oper::Jnz(Arg::from(words[1]), Arg::from(words[2])));
+ }
+ }
+
+ insts
+}
+
+// We pause the program at each `Out' and save the state to resume later
+#[derive(Clone, Debug, PartialEq)]
+struct State<'a> {
+ regs: HashMap<&'a str, isize>,
+ ip: usize,
+}
+
+impl<'a> From<Vec<(&'a str, isize)>> for State<'a> {
+ fn from(init: Vec<(&'a str, isize)>) -> Self {
+ Self {
+ regs: init.into_iter().collect(),
+ ip: 0,
+ }
+ }
+}
+
+// Execute the program until the next `Out` instruction, return the transmission
+fn transmit_next<'a>(insts: &'a Vec<Oper>, state: &mut State<'a>) -> Option<isize> {
+ let mut transmit = None;
+
+ while state.ip < insts.len() && transmit.is_none() {
+ match insts[state.ip] {
+ Oper::Inc(arg) => {
+ if let Arg::Reg(dst) = arg {
+ *state.regs.entry(dst).or_insert(0) += 1;
+ }
+ },
+ Oper::Dec(arg) => {
+ if let Arg::Reg(dst) = arg {
+ *state.regs.entry(dst).or_insert(0) -= 1;
+ }
+ },
+ Oper::Out(arg) => {
+ let val = match arg {
+ Arg::Reg(reg) => state.regs.get(&reg).copied().unwrap_or(0),
+ Arg::Lit(lit) => lit,
+ };
+ transmit = Some(val);
+ },
+ Oper::Cpy(arg1, arg2) => {
+ // This `if let' is actually a leftover from day 23
+ if let Arg::Reg(dst) = arg2 {
+ let val = match arg1 {
+ Arg::Reg(src) => state.regs.get(&src).copied().unwrap_or(0),
+ Arg::Lit(lit) => lit,
+ };
+ *state.regs.entry(dst).or_insert(0) = val;
+ }
+ },
+ Oper::Jnz(arg1, arg2) => {
+ let val = match arg1 {
+ Arg::Reg(reg) => state.regs.get(&reg).copied().unwrap_or(0),
+ Arg::Lit(lit) => lit,
+ };
+ if val != 0 {
+ let off = match arg2 {
+ Arg::Reg(reg) => state.regs.get(&reg).copied().unwrap_or(0),
+ Arg::Lit(lit) => lit,
+ };
+ // Subtract 1 to compensate for `state.ip += 1;' below
+ state.ip = ((state.ip as isize) + off - 1) as usize;
+ }
+ },
+ };
+
+ state.ip += 1;
+ }
+
+ transmit
+}
+
+fn solve_part1(insts: &Vec<Oper>) -> isize {
+ let mut a = 1;
+ loop {
+ // History of (transmission, state) for this value of `a'.
+ // We're looking for a periodic pattern in these tuples.
+ let mut history: Vec<(isize, State)> = Vec::new();
+
+ // Initialize a fresh state with the candidate value of `a'
+ let mut state: State = State::from(vec![("a", a)]);
+
+ // This puzzle is basically Turing's halting problem, so for practicality
+ // we arbitrarily assume that the periodicity is at most 100 transmissions
+ for _i in 0..100 {
+ let ot = transmit_next(insts, &mut state);
+
+ // Did the program exit?
+ if ot.is_none() {
+ break;
+ }
+
+ // Did we transmit something other than 0 or 1?
+ let t = ot.unwrap();
+ if t != 0 && t != 1 {
+ break;
+ }
+
+ // Didn't we transmit 0 after 1, or 1 after 0?
+ if history.len() > 0 && history.last().unwrap().0 != 1 - t {
+ break;
+ }
+
+ let ts = (t, state.clone());
+ // Have we seen this state before? If yes, we've found a solution!
+ if history.contains(&ts) {
+ return a;
+ } else {
+ // But the transmission pattern seems promising so far; store it
+ history.push(ts);
+ }
+ }
+
+ a += 1;
+ }
+}
+
+fn main() {
+ // Read assembly from input text file and parse it
+ let input = fs::read_to_string("input.txt").unwrap();
+ let lines = input.lines().collect();
+ let insts = parse(lines);
+
+ // Part 1 gives 158 for my input
+ println!("Part 1 solution: {}", solve_part1(&insts));
+
+ // There's no part 2, since this is the last day
+}