diff --git a/2016/AoC2016.playground/Pages/Day 1.xcplaygroundpage/Contents.swift b/2016/AoC2016.playground/Pages/Day 1.xcplaygroundpage/Contents.swift new file mode 100644 index 0000000..48462cd --- /dev/null +++ b/2016/AoC2016.playground/Pages/Day 1.xcplaygroundpage/Contents.swift @@ -0,0 +1,113 @@ +import Foundation + +let input = """ +L5, R1, R4, L5, L4, R3, R1, L1, R4, R5, L1, L3, R4, L2, L4, R2, L4, L1, R3, R1, R1, L1, R1, L5, R5, R2, L5, R2, R1, L2, L4, L4, R191, R2, R5, R1, L1, L2, R5, L2, L3, R4, L1, L1, R1, R50, L1, R1, R76, R5, R4, R2, L5, L3, L5, R2, R1, L1, R2, L3, R4, R2, L1, L1, R4, L1, L1, R185, R1, L5, L4, L5, L3, R2, R3, R1, L5, R1, L3, L2, L2, R5, L1, L1, L3, R1, R4, L2, L1, L1, L3, L4, R5, L2, R3, R5, R1, L4, R5, L3, R3, R3, R1, R1, R5, R2, L2, R5, L5, L4, R4, R3, R5, R1, L3, R1, L2, L2, R3, R4, L1, R4, L1, R4, R3, L1, L4, L1, L5, L2, R2, L1, R1, L5, L3, R4, L1, R5, L5, L5, L1, L3, R1, R5, L2, L4, L5, L1, L1, L2, R5, R5, L4, R3, L2, L1, L3, L4, L5, L5, L2, R4, R3, L5, R4, R2, R1, L5 +""" + +enum Direction { + case north + case east + case south + case west + + func turnLeft() -> Direction { + switch self { + case .north: return .west + case .east: return .north + case .south: return .east + case .west: return .south + } + } + + func turnRight() -> Direction { + switch self { + case .north: return .east + case .east: return .south + case .south: return .west + case .west: return .north + } + } + + func move(units: Int) -> (north: Int, east: Int) { + switch self { + case .north: return (units, 0) + case .east: return (0, units) + case .south: return (-units, 0) + case .west: return (0, -units) + } + } +} + +struct Position: Hashable { + var heading: Direction = .north + var north: Int = 0 + var east: Int = 0 + + mutating func move(left: Bool, units: Int) -> [Position] { + heading = left ? heading.turnLeft() : heading.turnRight() + let (north, east) = heading.move(units: 1) + + var result: [Position] = [] + for _ in 0.. Bool { + lhs.north == rhs.north && lhs.east == rhs.east + } + + func hash(into hasher: inout Hasher) { + hasher.combine(north) + hasher.combine(east) + } + + var distance: Int { + abs(north) + abs(east) + } +} + +let scanner = Scanner(string: input) + +extension Scanner { + func scanDirection() -> Bool { + if scanString("L") != nil { return true } + if scanString("R") != nil { return false } + fatalError("Invalid direction") + } + + func scanMove() -> (Bool, Int) { + let direction = scanDirection() + guard let units = scanInt() else { + fatalError("Invalid distance") + } + + guard isAtEnd || scanString(",") != nil else { + fatalError("Missing ,") + } + + return (direction, units) + } +} + +var position = Position() +var visited: Set = [position] +var foundPart2 = false +while !scanner.isAtEnd { + let (direction, units) = scanner.scanMove() + let path = position.move(left: direction, units: units) + + for position in path { + if !foundPart2 && !visited.insert(position).inserted { + print("Part 2: Visited again: \(position.distance): \(position.north)n, \(position.east)e") + foundPart2 = true + break + } + } +} + +print("Part 1:", position.distance) diff --git a/2016/AoC2016.playground/Pages/Day 2.xcplaygroundpage/Contents.swift b/2016/AoC2016.playground/Pages/Day 2.xcplaygroundpage/Contents.swift new file mode 100644 index 0000000..916c8f3 --- /dev/null +++ b/2016/AoC2016.playground/Pages/Day 2.xcplaygroundpage/Contents.swift @@ -0,0 +1,116 @@ +let input = """ +UULLULLUULLLURDLDUURRDRRLDURDULLRURDUDULLLUULURURLRDRRRRULDRUULLLLUUDURDULDRRDRUDLRRLDLUDLDDRURURUURRRDDDLLRUDURDULUULLRRULLRULDUDRDRLDLURURUDDUDLURUDUDURLURURRURLUDDRURRDLUURLLRURRDUDLULULUDULDLLRRRDLRDLDUDRDDDRRUURRRRRUURRDRRDLURDRRURDLLUULULLRURDLDDDRRLLRRUURULURUUDDLRRUDDRURUUDLRLRDLRURRRDULLDLRUDDUULRDULURUURDULUDLLRRLDDLRDLRUDRLDDRLRRRDURDULLRRRDRRLUURURDRRDRRLDLUDURURLDUURDRUDRDDRLDRRLDLURURULLUURUDUUDLRLL +LLLULLULDDULRLLURLLLRUUDDLRUULRLULLDLLRRDRLRLRLLDRUUURULDRDDLUDLLDUDULLLRLULLLRULDRDRUDLLRLRLLUDULRRRLDRUULDDULLDULULLUDUDLDRDURDLDLLDUDRRRDLUURRUURULLURLDURLRRLLDDUUULDRLUUDUDLURLULUDURRDRLLDDDDDRRULLRLDULULDDRUURRDLUDDDUDURDDRDRULULLLLUURDURUUUULUDLRURRULRDDRURURLLRLUUDUUURDLLDDLUDRLLLUDLLLLULRLURDRRRDUUDLLDLDDDURRDDRURUURDDRURRLDDDURDLLUURUUULRLUURRUDRLLDLURDUDRLULDLRLULULUDDLRDUDRUDLUULUULDURDRRRRLRULLUDRDDRDLDUDRDRRLDLLLLUDDLRULDLLDDUULDDRRULRRUURUDRDURLLLDDUUDRUUDLULLDR +UDUUULLDDDDLUDLDULRLRDLULLDDRULDURRLURRUDLRRUDURRDUDRRRUULRLLRLUDLDRRDUURDDRDRDUUUDUDLDLLRRLUURLUUUDDDUURLULURRLURRRDRDURURUDRLRUURUDRUDDDRDRDLDRDURDLDRRDUUDLLURLDDURRRLULDRDRLLRLLLRURLDURDRLDRUURRLDLDRLDDDRLDLRLDURURLLLLDDRDUDLRULULLRDDLLUDRDRRLUUULDRLDURURDUDURLLDRRDUULDUUDLLDDRUUULRRULDDUDRDRLRULUUDUURULLDLLURLRRLDDDLLDRRDDRLDDLURRUDURULUDLLLDUDDLDLDLRUDUDRDUDDLDDLDULURDDUDRRUUURLDUURULLRLULUURLLLLDUUDURUUDUULULDRULRLRDULDLLURDLRUUUDDURLLLLDUDRLUUDUDRRURURRDRDDRULDLRLURDLLRRDRUUUURLDRURDUUDLDURUDDLRDDDDURRLRLUDRRDDURDDRLDDLLRR +ULDRUDURUDULLUDUDURLDLLRRULRRULRUDLULLLDRULLDURUULDDURDUUDLRDRUDUDDLDRDLUULRRDLRUULULUUUDUUDDRDRLLULLRRDLRRLUDRLULLUUUUURRDURLLRURRULLLRLURRULRDUURRLDDRRDRLULDDRRDRLULLRDLRRURUDURULRLUDRUDLUDDDUDUDDUDLLRDLLDRURULUDRLRRULRDDDDDRLDLRRLUUDLUURRDURRDLDLDUDRLULLULRLDRDUDLRULLULLRLDDRURLLLRLDDDLLLRURDDDLLUDLDLRLUULLLRULDRRDUDLRRDDULRLLDUURLLLLLDRULDRLLLUURDURRULURLDDLRRUDULUURRLULRDRDDLULULRRURLDLRRRUDURURDURDULURULLRLDD +DURLRRRDRULDLULUDULUURURRLULUDLURURDDURULLRRUUDLRURLDLRUDULDLLRRULLLLRRLRUULDLDLLRDUDLLRLULRLLUUULULRDLDLRRURLUDDRRLUUDDRRUDDRRURLRRULLDDULLLURRULUDLRRRURRULRLLLRULLRRURDRLURULLDULRLLLULLRLRLLLDRRRRDDDDDDULUUDUDULRURDRUDRLUULURDURLURRDRRRRDRRLLLLUDLRRDURURLLULUDDLRLRLRRUURLLURLDUULLRRDURRULRULURLLLRLUURRULLLURDDDRURDUDDULLRULUUUDDRURUUDUURURRDRURDUDRLLRRULURUDLDURLDLRRRRLLUURRLULDDDUUUURUULDLDRLDUDULDRRULDRDULURRUURDU + +""" +let inputTest = """ +ULL +RRDDD +LURDL +UUUUD + +""" + +protocol KeyPad { + associatedtype Digit + + var current: Digit { get } + mutating func up() + mutating func down() + mutating func left() + mutating func right() +} + +func solve(pad: T) -> [T.Digit] { + var pad = pad + var result: [T.Digit] = [] + for char in input { + switch char { + case "U": pad.up() + case "D": pad.down() + case "L": pad.left() + case "R": pad.right() + case "\n": result.append(pad.current) + default: fatalError("Invalid input") + } + } + return result +} + +struct Part1Pad: KeyPad { + var current: Int = 5 + + mutating func up() { + if current - 3 >= 1 { + current -= 3 + } + } + + mutating func down() { + if current + 3 <= 9 { + current += 3 + } + } + + mutating func left() { + if current != 1 && current != 4 && current != 7 { + current -= 1 + } + } + + mutating func right() { + if current != 3 && current != 6 && current != 9 { + current += 1 + } + } +} + +print("Part 1", solve(pad: Part1Pad())) + +struct Part2Pad: KeyPad { + let grid: [[Character]] = [ + Array("##1##"), + Array("#234#"), + Array("56789"), + Array("#ABC#"), + Array("##D##"), + ] + + var x = 0 + var y = 2 + + var current: Character { + grid[y][x] + } + + + mutating func up() { + if y > 0 && grid[y - 1][x] != "#" { + y -= 1 + } + } + + mutating func down() { + if y < 4 && grid[y + 1][x] != "#" { + y += 1 + } + } + + mutating func left() { + if x > 0 && grid[y][x - 1] != "#" { + x -= 1 + } + } + + mutating func right() { + if x < 4 && grid[y][x + 1] != "#" { + x += 1 + } + } +} + +print("Part 2:", solve(pad: Part2Pad())) + diff --git a/2016/AoC2016.playground/Pages/Day 3.xcplaygroundpage/Contents.swift b/2016/AoC2016.playground/Pages/Day 3.xcplaygroundpage/Contents.swift new file mode 100644 index 0000000..ec88ef9 --- /dev/null +++ b/2016/AoC2016.playground/Pages/Day 3.xcplaygroundpage/Contents.swift @@ -0,0 +1,2032 @@ +import Foundation +let input = """ + 566 477 376 + 575 488 365 + 50 18 156 + 558 673 498 + 133 112 510 + 670 613 25 + 84 197 643 + 910 265 611 + 894 252 545 + 581 3 598 + 98 742 574 + 628 746 193 + 129 677 265 + 187 445 169 + 288 242 128 + 569 744 439 + 685 748 471 + 256 23 157 + 218 343 491 + 777 905 633 + 778 867 840 + 672 772 947 + 500 763 420 + 449 665 653 + 23 558 858 + 745 407 904 + 766 194 576 + 11 541 423 + 179 690 274 + 174 747 279 + 741 538 336 + 507 698 667 + 689 920 467 + 405 861 35 + 575 631 992 + 317 573 981 + 817 536 44 + 816 205 653 + 45 631 683 + 509 300 418 + 712 192 865 + 666 133 859 + 32 331 54 + 572 432 259 + 552 456 267 + 766 931 643 + 902 840 557 + 465 318 175 + 491 863 329 + 463 795 564 + 589 213 805 + 340 323 123 + 602 812 499 + 898 931 555 + 899 835 341 + 316 487 789 + 677 790 797 + 341 502 123 + 502 196 136 + 702 617 82 + 939 581 362 + 801 834 951 + 464 941 843 + 7 756 971 + 273 297 661 + 270 620 387 + 776 96 80 + 891 125 92 + 376 175 141 + 435 247 949 + 719 586 478 + 578 662 801 + 446 202 556 + 596 336 5 + 855 202 558 + 541 314 17 + 43 295 959 + 507 433 942 + 380 721 579 + 313 670 629 + 301 341 59 + 338 776 161 + 202 291 844 + 528 564 736 + 411 765 465 + 489 98 611 + 301 817 959 + 895 836 890 + 249 313 267 + 726 976 881 + 300 601 657 + 985 91 438 + 925 596 905 + 250 850 331 + 104 714 258 + 312 189 196 + 36 62 611 + 218 756 600 + 225 803 736 + 765 250 259 + 768 438 728 + 268 613 578 + 951 816 919 + 706 923 495 + 430 487 915 + 416 964 623 + 737 699 581 + 836 981 90 + 740 471 498 + 17 781 602 + 732 527 191 + 57 126 235 + 778 344 370 + 822 398 366 + 245 597 127 + 407 658 902 + 542 545 985 + 786 663 93 + 872 512 690 + 897 151 655 + 226 362 164 + 257 629 168 + 94 280 86 + 577 611 45 + 648 756 953 + 89 556 924 + 116 330 373 + 730 297 713 + 836 630 486 + 431 10 177 + 350 21 950 + 442 34 831 + 219 115 125 + 259 111 836 + 56 13 825 + 837 648 336 + 414 314 670 + 787 906 792 + 232 526 550 + 220 409 216 + 383 241 720 + 101 724 8 + 108 695 885 + 23 33 894 + 458 827 435 + 489 664 675 + 272 542 261 + 18 250 218 + 896 60 659 + 906 284 823 + 179 668 925 + 174 362 227 + 211 589 911 + 514 333 704 + 575 716 896 + 762 382 597 + 344 783 294 + 408 795 209 + 91 119 110 + 717 616 307 + 760 106 333 + 374 563 514 + 454 51 709 + 564 499 158 + 566 541 601 + 901 327 137 + 417 859 921 + 726 627 828 + 534 416 475 + 221 533 310 + 731 423 274 + 534 636 902 + 463 513 606 + 921 148 829 + 314 151 657 + 454 238 935 + 468 244 703 + 253 124 615 + 427 524 804 + 194 545 380 + 913 998 210 + 203 797 141 + 993 320 265 + 208 144 488 + 791 710 361 + 953 637 413 + 372 472 926 + 686 216 677 + 775 476 473 + 683 224 524 + 670 424 556 + 286 642 660 + 578 964 895 + 715 938 675 + 727 48 846 + 386 538 362 + 271 702 241 + 620 537 487 + 689 388 118 + 223 315 599 + 477 445 509 + 369 787 300 + 645 679 536 + 613 461 511 + 586 730 876 + 597 586 541 + 745 452 960 + 577 77 581 + 733 177 562 + 923 191 64 + 521 751 297 + 422 780 709 + 521 887 550 + 808 681 829 + 907 938 753 + 507 307 991 + 752 386 22 + 684 270 155 + 91 234 151 + 568 950 170 + 651 954 210 + 789 31 307 + 550 71 560 + 463 715 400 + 491 765 600 + 131 455 904 + 592 453 555 + 559 788 676 + 391 484 363 + 405 404 280 + 68 114 556 + 307 518 632 + 49 549 907 + 288 287 482 + 729 36 395 + 440 768 636 + 838 772 889 + 99 231 794 + 181 81 684 + 252 253 843 + 738 717 531 + 125 311 536 + 727 508 487 + 992 76 234 + 680 114 100 + 501 165 292 + 597 562 167 + 223 887 429 + 613 345 482 + 209 45 787 + 98 175 821 + 178 196 252 + 345 127 459 + 767 896 750 + 601 965 522 + 792 541 699 + 989 350 109 + 337 799 588 + 276 531 244 + 461 655 162 + 413 284 340 + 327 93 556 + 431 873 989 + 164 826 956 + 279 486 578 + 488 275 248 + 672 462 539 + 636 448 39 + 116 504 619 + 550 353 618 + 803 506 5 + 641 482 513 + 190 973 509 + 4 105 745 + 443 619 243 + 440 519 754 + 624 62 907 + 644 231 907 + 232 238 900 + 866 749 665 + 490 988 547 + 815 482 135 + 331 992 234 + 252 812 623 + 95 661 698 + 15 378 91 + 986 338 255 + 979 205 218 + 927 59 302 + 161 231 250 + 855 250 389 + 588 356 40 + 279 90 105 + 707 273 77 + 846 311 842 + 870 305 833 + 77 477 346 + 638 496 395 + 642 374 864 + 73 526 717 + 851 399 892 + 873 444 889 + 988 133 217 + 950 702 591 + 989 338 278 + 307 628 794 + 815 568 390 + 974 725 622 + 463 296 984 + 605 409 526 + 665 554 473 + 106 852 381 + 874 597 620 + 481 609 245 + 604 18 655 + 702 611 814 + 711 341 254 + 130 458 865 + 677 689 278 + 926 675 223 + 363 15 154 + 189 785 793 + 189 556 925 + 92 332 617 + 1 884 831 + 176 37 482 + 174 856 362 + 432 978 371 + 957 662 493 + 749 873 714 + 259 938 328 + 692 837 649 + 721 949 456 + 488 304 194 + 270 776 448 + 446 879 257 + 647 705 462 + 720 305 25 + 230 489 454 + 920 303 582 + 325 20 478 + 970 303 168 + 628 29 916 + 398 209 489 + 248 194 426 + 426 276 899 + 14 274 981 + 430 12 799 + 229 235 745 + 268 663 528 + 283 439 906 + 542 983 253 + 214 938 241 + 575 123 228 + 704 628 326 + 567 678 468 + 439 984 300 + 580 228 520 + 229 668 370 + 512 701 624 + 267 912 271 + 666 839 776 + 804 362 559 + 400 565 127 + 418 349 450 + 136 671 460 + 302 515 931 + 185 764 911 + 441 574 331 + 902 856 448 + 123 934 288 + 890 143 683 + 307 470 748 + 339 169 127 + 114 339 834 + 789 639 631 + 676 82 453 + 247 563 394 + 436 655 703 + 352 906 631 + 277 367 327 + 585 757 427 + 545 710 988 + 153 705 689 + 98 300 882 + 140 491 135 + 193 220 911 + 371 739 602 + 538 419 864 + 280 786 352 + 795 750 697 + 808 341 79 + 361 606 668 + 57 277 452 + 524 267 976 + 525 45 762 + 462 885 782 + 90 837 156 + 510 394 826 + 617 23 812 + 443 755 483 + 255 756 866 + 931 404 762 + 184 496 236 + 841 792 640 + 932 259 869 + 893 697 951 + 37 451 493 + 939 592 146 + 789 104 25 + 477 617 150 + 427 506 86 + 723 243 717 + 795 705 638 + 908 506 556 + 741 755 408 + 608 852 240 + 613 717 393 + 392 59 448 + 877 724 100 + 61 141 24 + 101 257 130 + 139 313 147 + 999 130 568 + 82 256 539 + 941 183 193 + 279 793 217 + 628 347 824 + 503 506 905 + 646 629 909 + 785 518 510 + 510 199 701 + 413 201 703 + 399 548 247 + 11 396 606 + 250 981 822 + 314 758 810 + 513 476 139 + 830 232 74 + 448 693 690 + 503 556 646 + 604 448 579 + 21 441 367 + 603 155 428 + 589 655 64 + 524 726 849 + 262 556 808 + 693 19 969 + 102 306 91 + 773 287 939 + 49 2 177 + 937 54 697 + 967 51 745 + 388 262 356 + 193 636 387 + 554 537 478 + 510 689 720 + 693 670 665 + 905 32 730 + 516 420 525 + 109 627 935 + 421 282 693 + 504 374 435 + 241 619 662 + 277 809 333 + 319 43 766 + 787 803 267 + 941 828 722 + 710 489 10 + 654 395 148 + 95 733 154 + 270 163 706 + 247 564 771 + 269 635 204 + 560 604 137 + 379 164 72 + 282 557 149 + 871 461 499 + 140 475 289 + 816 12 533 + 974 361 166 + 769 545 848 + 543 493 875 + 475 192 926 + 342 564 976 + 501 448 782 + 94 172 75 + 275 856 267 + 215 853 210 + 41 496 331 + 829 583 434 + 818 306 478 + 660 431 552 + 509 716 355 + 404 812 211 + 549 63 271 + 422 642 655 + 397 590 389 + 698 235 288 + 319 95 603 + 810 218 336 + 709 590 89 + 749 734 884 + 118 896 862 + 550 398 700 + 505 207 165 + 449 339 778 + 664 929 821 + 724 926 630 + 89 21 391 + 698 176 786 + 718 479 938 + 391 577 266 + 634 178 29 + 56 373 972 + 687 259 969 + 98 480 250 + 951 134 237 + 939 491 15 + 899 303 834 + 252 416 295 + 887 537 926 + 496 232 609 + 130 534 575 + 519 436 934 + 639 648 29 + 625 127 541 + 291 544 511 + 744 570 404 + 430 772 439 + 381 304 231 + 525 527 785 + 137 802 499 + 542 632 966 + 637 482 42 + 207 643 532 + 527 816 501 + 194 982 271 + 862 943 367 + 846 217 324 + 872 894 184 + 911 776 718 + 939 849 594 + 745 354 472 + 838 305 284 + 744 157 759 + 436 263 650 + 605 326 348 + 319 530 463 + 639 358 479 + 675 826 732 + 609 682 912 + 97 714 874 + 848 330 858 + 874 646 24 + 508 518 881 + 567 481 576 + 431 561 603 + 934 715 700 + 833 311 198 + 323 661 724 + 997 162 319 + 93 395 412 + 977 497 232 + 858 448 225 + 900 316 259 + 107 458 401 + 397 723 817 + 720 328 17 + 346 631 802 + 824 567 852 + 810 234 269 + 251 784 926 + 490 316 317 + 637 291 350 + 593 583 602 + 450 116 310 + 907 210 231 + 904 264 396 + 612 221 267 + 144 156 136 + 683 248 293 + 64 786 842 + 52 606 511 + 26 192 927 + 830 422 399 + 956 349 575 + 254 130 660 + 431 515 161 + 961 522 198 + 995 873 43 + 967 855 268 + 487 898 564 + 595 378 636 + 707 203 268 + 710 226 775 + 277 120 551 + 675 631 758 + 203 160 294 + 873 667 637 + 279 597 765 + 26 667 338 + 305 963 550 + 163 858 901 + 328 832 537 + 204 25 494 + 601 307 594 + 71 405 613 + 642 691 258 + 341 439 293 + 93 470 627 + 361 30 430 + 942 70 305 + 831 963 304 + 368 925 25 + 115 82 139 + 53 185 545 + 160 247 536 + 462 260 666 + 296 696 84 + 465 683 683 + 591 228 220 + 743 744 432 + 165 758 559 + 651 933 87 + 872 37 514 + 340 970 512 + 576 654 416 + 27 383 888 + 567 840 586 + 722 822 425 + 657 872 880 + 91 453 574 + 28 970 437 + 955 274 342 + 933 753 172 + 582 836 289 + 642 966 727 + 240 298 925 + 253 241 795 + 115 374 68 + 354 162 821 + 283 587 328 + 627 566 650 + 712 159 846 + 365 973 654 + 848 281 89 + 901 900 568 + 211 583 905 + 296 480 895 + 433 337 45 + 229 741 115 + 249 675 433 + 179 507 470 + 796 121 16 + 963 523 101 + 469 485 112 + 343 846 7 + 391 733 732 + 89 419 735 + 571 797 25 + 785 740 519 + 436 198 533 + 96 387 856 + 250 391 421 + 215 15 842 + 389 128 120 + 323 673 729 + 87 583 624 + 807 454 314 + 970 227 247 + 652 230 405 + 391 534 677 + 993 253 880 + 747 688 284 + 492 932 421 + 290 800 344 + 696 151 586 + 535 61 371 + 493 455 676 + 138 417 892 + 851 568 234 + 480 639 309 + 903 829 404 + 662 85 687 + 703 112 607 + 410 151 995 + 275 465 774 + 97 579 152 + 301 516 913 + 960 436 672 + 870 230 800 + 151 263 674 + 97 515 754 + 763 67 705 + 720 516 398 + 817 696 171 + 770 89 606 + 655 660 736 + 536 236 421 + 713 104 578 + 607 296 729 + 432 222 852 + 626 751 769 + 529 954 670 + 927 18 64 + 559 840 376 + 592 819 312 + 423 489 842 + 766 14 657 + 350 498 198 + 777 199 736 + 767 639 924 + 17 684 692 + 652 739 958 + 735 874 486 + 175 308 988 + 625 615 601 + 125 235 645 + 752 791 50 + 263 568 505 + 475 307 580 + 241 679 757 + 89 812 852 + 133 824 507 + 94 396 868 + 285 756 877 + 424 811 336 + 587 202 550 + 623 402 145 + 169 730 142 + 652 649 22 + 42 181 68 + 160 20 161 + 132 166 179 + 566 277 716 + 521 381 640 + 168 212 123 + 489 333 741 + 62 328 71 + 506 16 721 + 360 388 194 + 516 412 767 + 713 686 964 + 711 765 514 + 959 285 600 + 759 610 862 + 715 308 357 + 348 41 10 + 731 306 360 + 902 727 296 + 867 770 187 + 63 794 254 + 196 410 505 + 693 527 570 + 725 386 119 + 322 796 62 + 480 514 92 + 514 825 38 + 346 422 647 + 210 455 853 + 142 40 340 + 298 382 190 + 433 867 205 + 346 489 315 + 860 258 369 + 845 976 997 + 114 974 851 + 168 441 671 + 868 467 717 + 824 26 616 + 911 581 779 + 853 127 81 + 640 681 776 + 926 331 747 + 576 681 846 + 626 673 515 + 361 462 553 + 188 968 946 + 512 933 571 + 357 238 647 + 698 738 668 + 786 602 599 + 946 216 264 + 700 485 646 + 553 382 781 + 180 127 629 + 637 622 628 + 798 504 116 + 337 59 665 + 701 287 318 + 389 251 716 + 570 551 491 + 256 889 465 + 665 720 734 + 630 801 550 + 637 699 547 + 319 277 130 + 807 803 576 + 231 314 966 + 944 813 672 + 510 539 729 + 339 673 746 + 829 616 34 + 320 151 16 + 318 128 482 + 4 146 473 + 226 777 102 + 207 731 253 + 139 162 344 + 134 404 641 + 564 974 592 + 569 771 878 + 570 646 794 + 589 126 159 + 507 754 908 + 832 358 827 + 572 251 974 + 922 454 938 + 964 819 26 + 963 150 603 + 50 916 630 + 578 63 306 + 333 897 826 + 716 886 733 + 93 726 208 + 876 729 569 + 876 3 755 + 271 294 734 + 886 677 723 + 643 688 273 + 896 404 627 + 991 524 399 + 155 165 685 + 195 634 821 + 650 277 711 + 459 697 131 + 436 855 749 + 196 97 765 + 529 765 313 + 781 986 44 + 966 768 340 + 218 706 304 + 489 179 646 + 61 267 435 + 466 364 718 + 392 149 666 + 467 152 791 + 180 286 624 + 151 170 372 + 870 267 612 + 897 107 768 + 2 487 286 + 902 669 833 + 902 742 635 + 397 258 175 + 742 95 866 + 957 213 717 + 723 555 749 + 528 527 14 + 203 83 762 + 247 428 68 + 656 153 208 + 644 496 268 + 14 641 16 + 515 670 176 + 523 58 192 + 424 617 72 + 766 588 999 + 653 202 943 + 219 567 386 + 177 799 633 + 229 499 572 + 579 445 767 + 365 247 682 + 771 518 125 + 310 151 329 + 849 782 365 + 613 769 364 + 479 495 603 + 551 260 105 + 717 326 650 + 476 48 883 + 537 368 839 + 136 321 105 + 370 683 482 + 396 576 186 + 58 549 594 + 37 532 381 + 940 248 161 + 915 546 228 + 629 860 96 + 672 121 741 + 283 932 834 + 162 737 544 + 66 967 333 + 199 916 591 + 880 571 265 + 953 573 132 + 224 51 196 + 562 494 245 + 853 94 317 + 550 519 80 + 349 741 972 + 814 201 949 + 464 779 408 + 32 790 544 + 263 785 261 + 260 19 562 + 592 362 648 + 661 292 897 + 247 222 349 + 947 306 89 + 126 329 366 + 857 466 329 + 594 744 791 + 546 202 429 + 526 619 501 + 54 693 748 + 138 682 753 + 182 283 74 + 613 333 444 + 9 403 359 + 618 160 457 + 312 162 510 + 536 506 191 + 309 375 567 + 72 548 736 + 678 983 50 + 638 990 699 + 263 204 770 + 362 13 268 + 603 214 866 + 564 522 46 + 864 918 863 + 307 863 842 + 364 940 152 + 827 403 778 + 960 825 792 + 13 811 777 + 890 912 391 + 880 384 443 + 735 649 473 + 937 443 635 + 702 768 256 + 604 809 720 + 407 56 908 + 422 823 198 + 376 523 140 + 906 236 927 + 851 473 978 + 449 835 308 + 800 156 332 + 384 969 62 + 282 338 353 + 868 472 884 + 681 749 966 + 744 430 279 + 137 425 4 + 631 184 285 + 781 850 209 + 450 376 696 + 698 833 851 + 307 749 415 + 952 124 766 + 842 847 658 + 95 49 635 + 578 934 703 + 491 903 253 + 721 679 85 + 801 363 502 + 501 622 421 + 657 98 602 + 745 979 905 + 925 884 326 + 88 601 144 + 379 699 426 + 319 379 293 + 564 328 773 + 579 716 455 + 331 478 990 + 789 304 216 + 387 466 567 + 942 206 417 + 840 321 46 + 128 457 227 + 819 597 243 + 666 160 978 + 226 513 80 + 454 502 927 + 860 578 640 + 983 130 721 + 263 540 201 + 591 692 499 + 569 939 531 + 87 814 872 + 753 650 280 + 265 715 441 + 988 141 611 + 746 238 590 + 789 735 639 + 147 552 139 + 37 954 595 + 342 411 696 + 330 629 474 + 314 736 149 + 596 684 86 + 772 248 136 + 442 384 616 + 563 153 418 + 498 299 818 + 408 375 746 + 446 394 745 + 177 17 534 + 257 630 592 + 619 878 657 + 612 711 637 + 594 980 637 + 399 57 594 + 829 952 547 + 286 730 148 + 828 225 934 + 671 639 963 + 249 393 818 + 343 531 687 + 229 775 270 + 987 44 875 + 896 666 346 + 936 638 753 + 299 838 549 + 824 735 59 + 766 277 572 + 582 151 777 + 610 144 505 + 120 76 902 + 300 882 441 + 677 435 161 + 631 843 567 + 62 401 375 + 263 744 375 + 310 463 141 + 108 479 719 + 484 266 17 + 382 247 712 + 158 558 705 + 48 479 686 + 209 339 958 + 20 212 453 + 858 254 120 + 872 430 344 + 801 700 786 + 991 700 911 + 644 213 692 + 911 149 433 + 752 795 344 + 762 862 332 + 764 35 500 + 391 639 489 + 809 601 497 + 148 874 83 + 552 4 126 + 524 880 195 + 530 430 179 + 497 345 219 + 810 694 47 + 995 128 999 + 73 149 917 + 978 234 146 + 394 735 35 + 483 478 236 + 293 707 271 + 614 458 753 + 44 531 638 + 599 893 188 + 729 731 863 + 693 915 859 + 192 205 17 + 999 119 541 + 943 262 318 + 123 305 514 + 339 536 246 + 585 228 300 + 904 330 325 + 127 806 45 + 366 429 536 + 480 801 555 + 656 977 669 + 611 969 5 + 659 123 671 + 644 292 524 + 557 143 298 + 383 202 824 + 306 144 97 + 427 541 20 + 735 490 109 + 14 379 582 + 418 367 756 + 406 740 823 + 832 461 125 + 36 692 764 + 830 497 768 + 632 572 31 + 996 607 705 + 400 451 712 + 586 598 235 + 806 364 406 + 409 841 606 + 971 282 437 + 162 208 944 + 957 174 591 + 567 110 844 + 412 211 378 + 181 113 637 + 145 600 443 + 359 588 426 + 335 707 255 + 345 476 975 + 864 521 972 + 832 78 5 + 556 541 905 + 389 712 588 + 848 412 813 + 833 121 316 + 744 743 472 + 872 837 421 + 185 793 219 + 995 168 61 + 901 837 158 + 693 955 245 + 232 634 550 + 725 502 451 + 526 966 477 + 589 607 682 + 901 366 247 + 815 769 769 + 828 627 947 + 121 664 262 + 708 863 3 + 522 968 186 + 429 808 186 + 378 162 364 + 398 361 86 + 194 235 285 + 657 176 376 + 526 787 136 + 170 696 290 + 513 117 970 + 617 797 235 + 603 889 900 + 706 142 594 + 291 321 96 + 746 388 668 + 764 762 718 + 567 821 703 + 968 421 883 + 926 456 320 + 952 963 262 + 489 785 540 + 446 933 970 + 361 607 136 + 230 682 987 + 27 153 528 + 437 3 502 + 430 153 51 + 349 206 892 + 162 683 862 + 366 878 244 + 976 258 195 + 827 80 381 + 476 246 569 + 881 123 222 + 724 342 409 + 565 421 511 + 703 402 344 + 704 549 486 + 16 311 414 + 198 894 65 + 904 475 93 + 967 688 43 + 246 96 527 + 195 327 220 + 134 355 395 + 222 416 988 + 541 343 90 + 708 109 900 + 245 574 287 + 979 617 284 + 804 889 130 + 174 798 507 + 66 623 519 + 142 276 146 + 308 772 509 + 28 773 82 + 319 8 524 + 507 952 927 + 471 867 924 + 64 535 874 + 959 165 236 + 475 98 117 + 961 201 293 + 397 757 621 + 311 287 215 + 492 602 425 + 111 56 243 + 606 69 927 + 692 41 875 + 523 927 982 + 410 810 947 + 188 120 120 + 543 569 92 + 838 442 414 + 595 789 505 + 16 896 639 + 642 843 845 + 644 116 938 + 26 347 466 + 376 664 681 + 404 946 571 + 766 195 436 + 427 134 509 + 336 85 163 + 575 689 670 + 598 236 705 + 53 498 76 + 977 35 38 + 674 41 911 + 572 37 901 + 118 714 700 + 499 958 771 + 477 841 86 + 633 877 670 + 776 873 625 + 260 88 85 + 281 816 296 + 568 966 670 + 653 267 684 + 245 23 935 + 316 235 462 + 99 246 739 + 278 652 240 + 367 542 525 + 150 246 563 + 422 937 236 + 57 994 430 + 472 188 202 + 636 778 684 + 756 912 605 + 461 769 534 + 646 508 56 + 963 305 767 + 618 686 769 + 684 750 1 + 567 173 333 + 896 805 330 + 821 987 638 + 805 127 644 + 74 899 12 + 444 434 269 + 449 147 181 + 35 542 321 + 320 105 163 + 815 289 546 + 537 208 691 + 754 345 54 + 116 804 780 + 694 512 744 + 941 423 795 + 936 147 702 + 8 327 865 + 42 141 761 + 189 658 273 + 214 545 668 + 259 219 322 + 455 782 551 + 512 646 526 + 127 710 932 + 169 615 729 + 55 482 381 + 571 98 930 + 362 721 296 + 645 684 804 + 701 257 529 + 731 711 683 + 225 575 423 + 918 23 492 + 917 271 217 + 5 293 537 + 733 595 105 + 741 433 932 + 31 259 920 + 303 691 396 + 363 580 863 + 427 474 576 + 703 175 246 + 529 280 209 + 641 412 319 + 530 890 726 + 382 779 433 + 284 147 323 + 860 703 766 + 292 427 768 + 606 666 736 + 638 384 264 + 97 398 574 + 564 627 455 + 678 442 618 + 432 28 687 + 343 466 101 + 304 594 5 + 402 43 474 + 498 552 476 + 243 113 538 + 938 102 498 + 829 44 470 + 208 449 197 + 352 286 425 + 503 600 241 + 531 209 490 + 615 758 363 + 518 783 258 + 886 636 579 + 386 960 821 + 678 547 784 + 481 843 238 + 476 256 6 + 2 973 233 + 331 144 822 + 410 545 872 + 558 546 49 + 1 388 106 + 384 557 457 + 387 699 460 + 592 809 571 + 388 942 111 + 651 756 647 + 860 518 794 + 722 894 731 + 324 881 256 + 429 197 383 + 226 239 685 + 489 51 339 + 746 402 745 + 756 608 434 + 220 452 629 + 773 631 798 + 296 137 537 + 942 704 260 + 820 565 673 + 745 666 110 + 411 406 721 + 44 522 531 + 777 394 494 + 807 835 66 + 36 362 38 + 113 290 975 + 141 124 953 + 38 663 51 + 507 677 316 + 514 115 360 + 956 194 865 + 642 677 111 + 682 868 889 + 173 507 339 + 270 546 318 + 279 115 177 + 803 915 913 + 139 107 187 + 925 995 943 + 467 471 233 + 433 321 977 + 689 358 961 + 544 479 788 + 450 403 438 + 868 155 740 + 583 251 384 + 163 220 215 + 732 43 519 + 253 323 234 + 481 314 873 + 298 284 975 + 574 480 690 + 357 181 86 + 292 627 695 + 817 908 950 + 302 137 865 + 553 991 507 + 660 645 933 + 752 819 831 + 437 189 346 + 144 283 738 + 108 491 429 + 91 209 688 + 289 24 138 + 676 604 82 + 670 585 204 + 78 439 403 + 81 674 548 + 65 476 475 + 904 502 542 + 873 723 506 + 909 628 337 + 918 227 277 + 929 208 324 + 255 125 477 + 415 30 618 + 981 24 546 + 588 38 694 + 876 102 663 + 628 262 927 + 419 277 964 + 160 523 632 + 424 250 582 + 452 773 68 + 466 162 225 + 913 64 463 + 486 95 612 + 350 264 427 + 723 184 872 + 868 376 701 + 441 318 509 + 506 286 58 + 528 448 513 + 166 533 92 + 169 552 414 + 298 85 320 + 663 883 192 + 664 572 433 + 12 738 538 + 330 943 94 + 398 814 754 + 273 195 682 + 980 461 544 + 282 558 554 + 788 117 660 + 336 326 337 + 465 184 829 + 352 180 988 + 130 707 122 + 854 295 141 + 943 444 176 + 14 4 473 + 514 11 603 + 525 10 892 + 22 700 427 + 400 673 470 + 411 288 583 + 448 431 582 + 466 752 501 + 722 530 104 + 509 673 464 + 727 112 677 + 567 614 716 + 677 9 561 + 620 976 603 + 324 965 87 + 215 738 844 + 206 128 637 + 91 727 427 + 625 343 624 + 639 770 757 + 859 691 710 + 278 140 634 + 405 798 561 + 356 903 78 + 54 748 890 + 858 870 310 + 821 723 983 + 385 489 431 + 776 261 962 + 834 527 752 + 798 945 282 + 802 788 288 + 73 899 228 + 689 667 74 + 995 691 603 + 656 320 652 + 841 63 62 + 176 797 83 + 736 788 20 + 558 775 454 + 275 858 544 + 792 353 95 + 494 939 694 + 126 964 408 + 388 65 952 + 229 368 992 + 408 180 481 + 618 347 793 + 860 4 641 + 49 296 895 + 901 294 563 + 24 434 159 + 368 911 593 + 380 864 492 + 637 378 275 + 614 383 295 + 246 326 514 + 373 617 382 + 409 214 294 + 263 802 419 + 820 909 683 + 136 452 290 + 860 558 491 + 789 235 334 + 116 508 41 + 721 691 303 + 14 176 77 + 217 281 289 + 231 337 237 + 348 400 206 + 382 317 684 + 33 187 667 + 467 434 77 + 534 588 846 + 905 483 871 + 810 422 10 + 724 260 181 + 155 259 189 + 223 860 544 + 271 706 576 + 109 431 554 + 904 486 465 + 65 317 535 + 837 365 126 + 496 700 349 + 642 252 496 + 750 706 505 + 956 978 875 + 845 953 89 + 138 259 805 + 787 793 322 + 59 739 128 + 790 957 389 + 126 232 160 + 391 807 909 + 454 814 762 + 532 358 272 + 81 718 554 + 482 413 655 + 185 141 894 + 734 96 739 + 583 204 372 + 587 314 772 + 402 496 292 + 798 187 543 + 516 824 922 + 409 146 140 + 408 922 840 + 50 373 244 + 355 476 321 + 365 181 219 + 601 842 642 + 426 426 889 + 482 828 584 + 589 698 588 + 835 97 287 + 759 769 768 + 858 520 481 + 947 517 219 + 266 101 400 + 110 65 448 + 920 310 431 + 926 318 23 + 388 698 374 + 45 753 406 + 421 68 374 + 203 268 623 + 345 586 611 + 344 678 32 + 542 830 187 + 487 916 456 + 211 905 567 + 760 36 585 + 327 380 425 + 793 405 604 + 432 630 267 + 804 307 366 + 678 716 108 + 437 316 22 + 441 214 160 + 329 364 149 + 726 82 76 + 896 857 361 + 298 796 294 + 652 406 409 + 855 123 704 + 430 461 744 + 909 130 88 + 847 910 968 + 499 898 952 + 662 458 83 + 335 589 395 + 863 481 361 + 829 217 305 + 822 306 635 + 664 212 610 + 271 203 675 + 95 409 236 + 337 408 517 + 749 357 294 + 646 214 322 + 457 181 157 + 649 391 73 + 756 258 84 + 201 312 11 + 660 14 560 + 128 491 96 + 676 507 570 + 302 944 54 + 25 48 296 + 313 916 351 + 932 496 355 + 437 198 217 + 826 627 370 + 312 259 193 + 293 718 654 + 142 459 647 + 233 336 90 + 81 360 232 + 168 23 144 + 442 523 662 + 151 952 260 + 444 963 489 + 302 934 249 + 687 523 698 + 672 494 462 + 461 198 649 + 540 410 269 + 539 515 839 + 76 494 81 + 514 571 496 + 438 216 557 + 279 215 690 + 581 362 667 + 318 229 53 + 427 590 52 + 510 61 485 + 168 596 451 + 960 61 155 + 475 32 291 + 933 57 182 + 458 702 818 + 740 29 821 + 896 716 738 + 842 614 701 + 398 466 502 + 739 612 737 + 297 349 887 + 262 303 886 + 404 302 428 + 668 758 600 + 674 815 379 + 44 395 225 + 673 341 476 + 516 403 384 + 392 168 134 + 907 562 511 + 555 406 413 + 818 737 773 + 745 588 545 + 323 27 639 + 555 571 802 + 326 712 513 + 729 310 664 + 810 468 804 + 509 79 438 + 418 680 403 + 314 600 470 + 186 678 12 + 302 381 921 + 380 946 932 + 104 725 596 + 113 950 471 + 11 478 291 + 520 535 519 + 574 113 668 + 862 541 617 + 606 173 314 + 960 141 857 + 837 154 926 + 933 161 137 + 255 86 277 + 794 117 308 + 664 305 588 + 321 329 554 + 961 22 181 + 433 604 132 + 655 546 431 + 553 187 373 + 797 526 674 + 563 122 203 + 352 613 626 + 780 196 549 + 253 191 547 + 746 15 412 + 193 523 391 + 281 537 657 + 90 99 658 + 892 737 646 + 503 717 663 + 693 205 50 + 700 409 662 + 465 896 15 + 865 901 661 + 508 664 192 + 770 36 898 + 980 638 809 + 301 307 626 + 724 803 839 + 851 514 256 + 521 225 170 + 678 217 789 + 735 289 904 + 501 745 719 + 896 434 575 + 819 850 977 + 607 691 590 + 28 840 476 + 623 647 167 + 890 740 708 + 465 674 219 + 753 127 674 + 370 149 657 + 189 802 476 + 455 734 376 + 37 988 149 + 947 966 168 + 921 20 311 + 798 911 338 + 768 467 681 + 102 554 488 + 747 178 608 + 747 507 690 + 372 490 197 + 22 974 389 + 717 173 396 + 734 881 363 + 560 889 821 + 721 54 963 + 164 836 833 + 135 687 910 + 204 995 188 + 188 623 865 + 877 495 264 + 335 316 399 + 593 234 300 + 655 418 169 + 471 551 86 + 444 381 226 + 820 461 304 + 38 90 334 + 845 471 47 + 449 124 218 + 694 134 547 + 270 31 551 + 434 195 750 + 774 171 789 + 877 92 222 + 843 153 340 + 758 184 326 + 252 239 372 + 651 915 540 + 740 369 10 + 828 998 547 + 814 903 348 + 491 364 548 + 549 612 267 + 429 170 705 + 978 231 210 + 917 339 866 + 432 133 494 + 983 409 450 + 567 465 246 + 744 885 684 + 717 876 790 + 183 11 138 + 984 740 311 + 686 528 843 + 757 343 712 + 31 752 940 + 17 254 106 + 11 956 974 + 495 572 789 + 440 496 763 + 183 254 25 + 152 559 980 + 146 573 585 + 200 456 938 + 371 716 716 + 228 742 679 + 205 167 988 + 81 223 806 + 509 421 192 + 544 485 828 + 112 205 502 + 45 133 555 + 155 134 784 + 179 196 625 + 81 18 589 + 165 187 754 + 63 341 774 + 197 266 913 + 229 306 680 + 509 317 787 + 976 260 535 + 661 228 518 + 289 398 700 + 173 398 645 + 170 370 283 + 574 346 446 + 422 511 42 + 275 305 482 + 118 698 869 + 338 616 897 + 334 520 229 + 461 570 136 + 84 336 245 + 531 242 157 + 646 786 356 + 372 841 124 + 701 67 294 + 481 880 626 + 155 951 361 + 365 273 946 + 555 163 93 + 163 11 515 + 582 168 495 + 128 732 752 + 489 685 558 + 529 788 341 + 820 489 73 + 941 118 684 + 188 545 680 + 64 923 188 + 639 859 445 + 656 985 606 + 769 169 9 + 931 310 472 + 205 177 472 + 702 72 27 + 490 977 472 + 914 972 495 + 837 417 333 + 437 505 440 + 947 881 490 + 379 998 906 + 371 789 763 + 604 804 200 + 250 622 969 + 778 445 924 + 844 925 78 + 346 843 440 + 409 228 396 + 73 902 717 + 759 75 511 + 720 172 435 + 427 155 938 + 75 920 213 + 49 895 187 + 122 33 211 + 216 875 709 + 169 644 534 + 47 243 546 + 942 591 200 + 874 790 870 + 667 478 797 + 475 900 250 + 92 442 709 + 386 505 856 + 70 747 595 + 390 854 740 + 333 267 730 + 576 421 336 + 872 428 352 + 884 676 20 + 119 686 6 + 126 171 145 + 6 548 140 + 296 406 627 + 276 546 653 + 329 232 356 + 811 203 648 + 757 762 656 + 117 717 71 + 718 17 608 + 965 859 794 + 707 870 536 + 251 549 245 + 259 814 314 + 498 510 247 + 885 287 649 + 339 312 690 + 839 518 589 + 691 875 327 + 549 852 692 + 421 764 399 + 841 938 617 + 683 73 682 + 838 903 513 + 155 700 266 + 529 492 436 + 501 209 572 + 177 405 185 + 70 407 98 + 183 151 184 + 144 4 719 + 387 261 642 + 391 259 283 + 336 371 946 + 902 810 751 + 714 509 251 + 124 194 440 + 928 357 256 + 921 241 599 + 725 694 141 + 219 281 864 + 650 757 979 + 515 678 735 + 553 766 397 + 771 749 360 + 273 414 543 + 92 185 692 + 365 480 246 + 153 416 246 + 527 431 831 + 387 385 991 + 610 849 42 + 761 473 507 + 268 863 467 + 797 777 614 + 567 810 153 + 384 43 459 + 656 78 14 + 884 328 89 + 565 340 99 + 315 431 403 + 169 687 408 + 451 365 7 + 706 807 561 + 324 769 821 + 645 257 467 + 90 654 617 + 230 859 466 + 309 363 691 + 903 656 499 + 165 880 548 + 966 474 64 + 640 851 817 + 585 967 754 + 340 699 880 + 253 575 32 + 783 349 971 + 748 532 972 + 132 312 789 + 673 254 152 + 769 90 643 + 485 483 3 + 228 254 423 + 281 282 418 + 279 536 891 + 566 876 988 + 753 959 569 + 629 379 773 + 194 468 866 + 690 307 128 + 813 568 374 + 798 387 873 + 980 363 555 + 337 750 620 + 565 783 190 + 780 32 746 + 716 222 594 + 319 50 443 + 498 212 408 + 106 552 95 + 96 465 866 + 143 216 903 + 570 209 371 + 73 136 163 + 579 290 400 + 836 640 252 + 190 81 864 + 684 657 892 + 405 876 982 + 722 499 926 + 567 764 62 + 383 573 458 + 111 337 947 + 381 366 568 + 883 323 560 + 942 136 297 + 103 324 576 +""" + .splitĀ { $0.isWhitespace } + .compactMap { Int($0) } + +let part1 = sequence(state: input.startIndex) { state -> [Int]? in + guard state < input.endIndex else { return nil } + let next = input.index(state, offsetBy: 3) + defer { state = next } + return input[state.. $0[2] } + +part1.count + +let part2 = sequence(state: (0, input.startIndex)) { state -> [Int]? in + let (offset, startIndex) = state + + guard startIndex < input.endIndex else { return nil } + + var nextStart = startIndex + var nextOffset = offset + 1 + if nextOffset > 2 { + nextOffset = 0 + nextStart += 9 + } + state = (nextOffset, nextStart) + + return [ + input[startIndex + offset + 0], + input[startIndex + offset + 3], + input[startIndex + offset + 6], + ].sorted() +} + .filter { $0[0] + $0[1] > $0[2] } + +part2.count + + diff --git a/2016/AoC2016.playground/Pages/Day 4.xcplaygroundpage/Contents.swift b/2016/AoC2016.playground/Pages/Day 4.xcplaygroundpage/Contents.swift new file mode 100644 index 0000000..95227f0 --- /dev/null +++ b/2016/AoC2016.playground/Pages/Day 4.xcplaygroundpage/Contents.swift @@ -0,0 +1,1041 @@ +import Foundation +let regex = try! NSRegularExpression(pattern: "([a-z-]+)-(\\d+)\\[([a-z]+)]", options: []) + +func split(_ input: String) -> (room: Substring, sector: Int, checksum: Substring) { + let matches = regex.matches(in: input, options: [], range: NSRange(input.startIndex..., in: input))[0] + + let first = Range(matches.range(at: 1), in: input)! + let second = Range(matches.range(at: 2), in: input)! + let third = Range(matches.range(at: 3), in: input)! + + return (input[first], Int(input[second])!, input[third]) +} + +func calculateChecksum(_ input: T) -> String { + var counts: [Character: Int] = [:] + + for char in input where char != "-" { + counts[char, default: 0] += 1 + } + + return String( + counts + .sorted { $0.value == $1.value ? $0.key < $1.key : $0.value > $1.value } + .map(\.key) + .prefix(5) + ) +} + +let input = """ +bkwzkqsxq-tovvilokx-nozvyiwoxd-172[fstek] +wifilzof-wbiwifuny-yhachyylcha-526[qrazx] +jvyyvzpcl-jhukf-shivyhavyf-487[zhtsi] +kwvacumz-ozilm-kivlg-kwvbiqvumvb-694[gknyw] +mvhkvbdib-kmjezxodgz-mvwwdo-omvdidib-837[dmvbi] +nzydfxpc-rclop-qwzhpc-lnbftdtetzy-171[cptzd] +vhehkyne-unggr-inkvatlbgz-813[gnehk] +tcorcikpi-hnqygt-octmgvkpi-570[nzewo] +xmtjbzidx-wvnfzo-jkzmvodjin-447[uyzlp] +willimcpy-mwupyhayl-bohn-mufym-734[stjoc] +sbejpbdujwf-cvooz-xpsltipq-961[azfnd] +jchipqat-qphzti-rjhidbtg-htgkxrt-271[thigj] +npmhcargjc-zsllw-pcqcypaf-158[mzwnx] +luxciuwncpy-jfumncw-alumm-qilembij-318[mucil] +bxaxipgn-vgpst-rpcsn-rdpixcv-htgkxrth-427[ywazt] +zekvierkzferc-tyftfcrkv-ivtvzmzex-295[evzfk] +enzcntvat-qlr-hfre-grfgvat-143[rtaef] +mvkccspson-bkllsd-nofovyzwoxd-224[oscdk] +enzcntvat-zvyvgnel-tenqr-pnaql-pbngvat-ratvarrevat-429[zymbs] +nwzekwypera-xwogap-pnwejejc-992[lkiwn] +ajmrxjlcren-ajkkrc-lxwcjrwvnwc-667[ezynd] +bxaxipgn-vgpst-hrpktcvtg-wjci-advxhixrh-661[lytku] +owshgfarwv-vqw-kzahhafy-190[ahwfv] +jqwpihizlwca-moo-twoqabqka-512[ncdyv] +apwmeclga-pyzzgr-rcaflmjmew-886[amceg] +tyepcyletzylw-ojp-wzrtdetnd-951[mxqsy] +dlhwvupglk-kfl-hjxbpzpapvu-773[nrotd] +fab-eqodqf-dmnnuf-bgdotmeuzs-612[dchyk] +qjopwxha-bhksan-skngodkl-940[kahno] +lsyrkjkbnyec-dyz-combod-cmkfoxqob-rexd-bomosfsxq-718[lktzs] +zixppfcfba-bdd-jxohbqfkd-939[sqtor] +vxupkizork-kmm-ktmotkkxotm-852[dsqjh] +excdklvo-mkxni-mykdsxq-nozkbdwoxd-952[zspmc] +bnqqnrhud-eknvdq-sqzhmhmf-391[qhndm] +gzefmnxq-otaoaxmfq-ogefayqd-eqdhuoq-716[zinwb] +qzoggwtwsr-qobrm-ghcfous-428[goqrs] +gpbepvxcv-ltpedcxots-qphzti-steadnbtci-193[ignjy] +hvbizodx-nxvqzibzm-cpio-hvmfzodib-265[hixfe] +wkqxodsm-lexxi-kxkvicsc-926[xkcis] +bknsykmdsfo-myxcewob-qbkno-oqq-zebmrkcsxq-380[utqrz] +lejkrscv-wcfnvi-kirzezex-711[ecikr] +htwwtxnaj-idj-btwpxmtu-255[itgmd] +zsxyfgqj-jll-ijufwyrjsy-931[wrpgt] +iuxxuyobk-yigbktmkx-natz-gtgreyoy-384[ygktx] +qjopwxha-xqjju-zalhkuiajp-628[esmxk] +lxaaxbren-ljwmh-anbnjalq-745[stjqy] +gokzyxsjon-zvkcdsm-qbkcc-dbksxsxq-380[tsyqk] +qzoggwtwsr-qobrm-qcohwbu-rsdofhasbh-168[obhqr] +pelbtravp-pnaql-fgbentr-325[pabel] +xzwrmkbqtm-akidmvomz-pcvb-mvoqvmmzqvo-122[mvoqz] +sbnqbhjoh-ezf-fohjoffsjoh-233[xskyb] +jyddc-yrwxefpi-fewoix-hiwmkr-412[pdekg] +fab-eqodqf-rxaiqd-xmnadmfadk-690[sicjl] +xcitgcpixdcpa-rpcsn-htgkxrth-427[stznv] +rflsjynh-rnqnyfwd-lwfij-jll-xytwflj-229[lfjnw] +zotts-wlsiayhcw-vumeyn-fuvilunils-500[ilsun] +odiih-yujbcrl-pajbb-dbna-cnbcrwp-147[bcadi] +udskkaxawv-tmffq-klgjsyw-996[tmnfc] +emixwvqhml-kpwkwtibm-wxmzibqwva-278[zomvn] +dfcxsqhwzs-dzoghwq-ufogg-zcuwghwqg-116[kmijn] +dwbcjkun-ouxfna-mnbrpw-745[nbuwa] +jchipqat-rwdrdapit-pcpanhxh-973[hglvu] +fkqbokxqflkxi-avb-zlkqxfkjbkq-861[wdnor] +wbhsfbohwcboz-foppwh-qighcasf-gsfjwqs-480[fhswb] +dzczkrip-xiruv-szfyrqriuflj-treup-kvtyefcfxp-451[rfipu] +fmsledevhsyw-fyrrc-eguymwmxmsr-698[yzoxu] +udskkaxawv-jsttal-wfyafwwjafy-840[nlkda] +sno-rdbqds-idkkxadzm-sqzhmhmf-287[lngzc] +crwwv-yxphbq-rpbo-qbpqfkd-341[bpqrw] +odiih-mhn-anjlzdrbrcrxw-563[xadcy] +jyddc-ikk-wlmttmrk-698[lmstk] +buzahisl-wshzapj-nyhzz-klzpnu-149[pjxor] +odkasqzuo-eomhqzsqd-tgzf-ymzmsqyqzf-560[frqmp] +gokzyxsjon-bkllsd-yzobkdsyxc-874[nbtmv] +excdklvo-pvygob-bocokbmr-952[tyzxa] +jvsvymbs-jovjvshal-aljouvsvnf-253[zgtdm] +hafgnoyr-qlr-erfrnepu-637[refna] +pelbtravp-sybjre-fnyrf-299[tjoim] +fodvvlilhg-gbh-vwrudjh-621[hvdgl] +kgjgrypw-epybc-bwc-bcnjmwkclr-678[smijy] +myxcewob-qbkno-mrymyvkdo-dbksxsxq-458[bkmox] +joufsobujpobm-fhh-dpoubjonfou-311[uvksy] +rflsjynh-ojqqdgjfs-ijajqturjsy-697[jqsfr] +vetllbybxw-vtgwr-kxtvjnblbmbhg-709[athym] +ajvyjprwp-ajmrxjlcren-kdwwh-lxwcjrwvnwc-433[qsaxt] +zbytomdsvo-mkxni-mykdsxq-myxdksxwoxd-952[xdmko] +esyfwlau-bwddqtwsf-suimakalagf-684[stvip] +jef-iushuj-fhezusjybu-fbqijys-whqii-huiuqhsx-582[uhijs] +tpspahyf-nyhkl-jovjvshal-bzly-alzapun-565[sdprn] +apwmeclga-hcjjwzcyl-umpiqfmn-132[shfrg] +kwtwznct-jcvvg-lmxizbumvb-148[vbcmt] +rmn-qcapcr-aylbw-umpiqfmn-366[juftv] +sorozgxe-mxgjk-hgyqkz-yzuxgmk-748[xuvst] +bkwzkqsxq-wsvsdkbi-qbkno-mkxni-mykdsxq-yzobkdsyxc-822[ksbqx] +ryexqpqhteki-vbemuh-skijecuh-iuhlysu-842[tszmj] +ikhcxvmbex-wrx-wxlbzg-501[zhqis] +lsyrkjkbnyec-mrymyvkdo-nozvyiwoxd-978[enkfi] +wdjcvuvmyjpn-mvhkvbdib-agjrzm-nojmvbz-395[tcxne] +uwtojhynqj-gfxpjy-fhvznxnynts-567[kqpvs] +iqmbazulqp-pkq-dqoquhuzs-534[ntpuq] +gntmfefwitzx-ojqqdgjfs-ijajqturjsy-385[jfqtg] +sebehvkb-fhezusjybu-zubboruqd-husuylydw-972[ytsim] +nzcczdtgp-nsznzwlep-hzcvdsza-405[yotgu] +joufsobujpobm-fhh-ufdiopmphz-675[tsymn] +cxy-bnlanc-snuuhknjw-anbnjalq-823[nabcj] +shoewudys-rkddo-huiuqhsx-374[dhsuo] +vagreangvbany-rtt-jbexfubc-403[ynepo] +aoubshwq-dzoghwq-ufogg-aobousasbh-714[oabgh] +njmjubsz-hsbef-dipdpmbuf-qvsdibtjoh-805[bdjsf] +zovldbkfz-gbiivybxk-lmboxqflkp-653[nyajo] +yknnkoera-xwogap-hkceopeyo-628[ybmzc] +nij-mywlyn-wbiwifuny-guleyncha-396[nyiwl] +ocipgvke-ecpfa-eqcvkpi-vgejpqnqia-258[jsiqz] +encuukhkgf-hnqygt-vgejpqnqia-882[dxzer] +odiih-ljwmh-anbnjalq-927[ahijl] +fkqbokxqflkxi-zxkav-ixyloxqlov-861[nxgja] +udskkaxawv-xmrrq-uzgugdslw-sfsdqkak-216[msfyx] +owshgfarwv-bwddqtwsf-kzahhafy-216[wafhd] +oaxadrgx-dmnnuf-ruzmzouzs-794[uqhse] +ziuxioqvo-akidmvomz-pcvb-zmikycqaqbqwv-616[iqvmo] +bqvvu-xqjju-opknwca-550[yzhum] +xgjougizobk-lruckx-gtgreyoy-670[nbfmk] +bxaxipgn-vgpst-uadltg-bpgztixcv-323[gptxa] +vcibutulxiom-jfumncw-alumm-nluchcha-448[ucmla] +irgyyolokj-xghhoz-uvkxgzouty-930[ogyhk] +kyelcrga-aylbw-amyrgle-umpiqfmn-782[almye] +jsvagsulanw-xdgowj-kzahhafy-138[dblcm] +ixccb-fkrfrodwh-uhdftxlvlwlrq-881[mblzw] +chnylhuncihuf-mwupyhayl-bohn-guleyncha-422[hnuyc] +irdgrxzex-treup-tfrkzex-uvgrikdvek-165[sjbnk] +xzwrmkbqtm-akidmvomz-pcvb-zmikycqaqbqwv-434[sanut] +ykhknbqh-zua-iwjwcaiajp-524[kjlio] +jlidywncfy-mwupyhayl-bohn-uwkocmcncih-916[cyhnw] +nuatmlmdpage-omzpk-eqdhuoqe-326[ljtsm] +xmrrq-kusnwfywj-zmfl-suimakalagf-684[afmkl] +foadouwbu-qvcqczohs-rsgwub-116[oubcq] +etyyx-bgnbnkzsd-kzanqzsnqx-391[pnmlv] +pinovwgz-wvnfzo-hvmfzodib-291[ovzfi] +qekrixmg-gsrwyqiv-kvehi-fewoix-ywiv-xiwxmrk-828[iwxek] +jqwpihizlwca-xtiabqk-oziaa-kcabwumz-amzdqkm-928[aizkm] +qekrixmg-jpsaiv-stivexmsrw-672[etmsq] +excdklvo-gokzyxsjon-mrymyvkdo-bomosfsxq-562[okmsx] +qczcftiz-pibbm-aobousasbh-532[zynvo] +wbhsfbohwcboz-suu-gsfjwqsg-506[bdhxv] +lxwbdvna-pajmn-ajkkrc-anlnrerwp-563[anrjk] +lsyrkjkbnyec-pvygob-cobfsmoc-900[uyrgf] +cqwdujys-sxesebqju-ixyffydw-374[nyjvi] +odiih-ouxfna-anlnrerwp-433[naior] +rzvkjiduzy-xviyt-xjvodib-vxlpdndodji-993[aousd] +ltpedcxots-qphzti-rjhidbtg-htgkxrt-453[rjlkn] +krxqjijamxdb-kdwwh-fxatbqxy-823[wctav] +froruixo-edvnhw-vwrudjh-829[rdhou] +jvyyvzpcl-jhukf-aljouvsvnf-201[uwkic] +nij-mywlyn-vumeyn-zchuhwcha-266[hnycm] +ydjuhdqjyedqb-zubboruqd-tufbeocudj-244[vmkln] +qlm-pbzobq-mixpqfz-doxpp-mrozexpfkd-575[zswni] +qvbmzvibqwvit-moo-tijwzibwzg-330[ibvwz] +pbeebfvir-fpniratre-uhag-freivprf-949[gvxlm] +wfummczcyx-jfumncw-alumm-uwkocmcncih-890[vturj] +dwbcjkun-npp-cajrwrwp-355[kstqo] +dpssptjwf-cbtlfu-vtfs-uftujoh-441[ftsuj] +vrurcjah-pajmn-npp-anbnjalq-303[tozvd] +wfruflnsl-ojqqdgjfs-xfqjx-775[fjqls] +pbafhzre-tenqr-qlr-qrirybczrag-897[yszub] +sehheiylu-rkddo-udwyduuhydw-322[qbyad] +upq-tfdsfu-cbtlfu-nbobhfnfou-103[vpxyh] +ajvyjprwp-npp-dbna-cnbcrwp-901[stevo] +bkzrrhehdc-bzmcx-bnzshmf-qdrdzqbg-833[msuya] +amlqskcp-epybc-aylbw-rcaflmjmew-730[arbyn] +wbhsfbohwcboz-dzoghwq-ufogg-gozsg-272[gobhw] +ksodcbwnsr-dfcxsqhwzs-gqojsbusf-vibh-obozmgwg-194[rwimn] +mfklstdw-usfvq-hmjuzskafy-424[ulgym] +wfruflnsl-ojqqdgjfs-qfgtwfytwd-177[xbofz] +sedikcuh-whqtu-isqludwuh-xkdj-jhqydydw-218[dhuqw] +ltpedcxots-raphhxuxts-qphzti-advxhixrh-765[jahpi] +zgmfyxypbmsq-djmucp-rcaflmjmew-548[aeoiv] +qspkfdujmf-ezf-nbobhfnfou-207[lnkrt] +fbebmtkr-zktwx-pxtihgbsxw-ietlmbv-zktll-kxlxtkva-943[hajmb] +apwmeclga-hcjjwzcyl-bctcjmnkclr-548[yxnzl] +rflsjynh-kqtbjw-btwpxmtu-177[tbjwf] +kfg-jvtivk-treup-uvgcfpdvek-373[vkefg] +upq-tfdsfu-kfmmzcfbo-nbobhfnfou-285[vsglz] +chnylhuncihuf-mwupyhayl-bohn-xypyfijgyhn-266[pwahm] +apwmeclga-zyqicr-dglylagle-886[lagce] +jlidywncfy-xsy-qilembij-188[uxjts] +jqwpihizlwca-lgm-lmaqov-954[laimq] +qcffcgwjs-foppwh-gozsg-246[fgcop] +bqxnfdmhb-rbzudmfdq-gtms-cdrhfm-287[dmbfh] +gifavtkzcv-wcfnvi-rthlzjzkzfe-763[tmniq] +uqtqbizg-ozilm-kivlg-kwibqvo-tijwzibwzg-720[qndzg] +sxdobxkdsyxkv-mkxni-bomosfsxq-848[zyubw] +qfmcusbwq-foppwh-kcfygvcd-662[cfpqw] +sehheiylu-fbqijys-whqii-skijecuh-iuhlysu-660[kdjyq] +sedikcuh-whqtu-uww-bqrehqjeho-660[dtawl] +veqtekmrk-wgezirkiv-lyrx-eguymwmxmsr-464[emrkg] +lqwhuqdwlrqdo-exqqb-uhdftxlvlwlrq-231[ydznk] +sno-rdbqds-bzmcx-otqbgzrhmf-183[gomah] +ujqgywfau-jsttal-hmjuzskafy-476[lghae] +yrwxefpi-jpsaiv-gsrxemrqirx-100[yazxo] +udglrdfwlyh-exqqb-sxufkdvlqj-569[dlqfu] +ugjjgkanw-uzgugdslw-esjcwlafy-736[rnxjs] +pdjqhwlf-sodvwlf-judvv-orjlvwlfv-673[vldfj] +xekdwvwnzkqo-fahhuxawj-ajcejaanejc-524[ajewc] +pwcvonofrcig-pibbm-fsqswjwbu-766[myazu] +tcrjjzwzvu-wcfnvi-glityrjzex-893[bkuyx] +lugjuacha-wbiwifuny-omyl-nymncha-448[mosph] +ckgvutofkj-inuiurgzk-jkvgxzsktz-228[kguzi] +ydjuhdqjyedqb-sqdto-ijehqwu-868[ozqsj] +sxdobxkdsyxkv-zvkcdsm-qbkcc-myxdksxwoxd-640[xdksc] +odkasqzuo-dmnnuf-dqmocgueufuaz-482[wfbke] +wpuvcdng-tcddkv-wugt-vguvkpi-414[hayjs] +lqwhuqdwlrqdo-edvnhw-uhfhlylqj-439[bjzye] +wpuvcdng-dwppa-ceswkukvkqp-674[mxnkj] +qzlozfhmf-bkzrrhehdc-okzrshb-fqzrr-zbpthrhshnm-365[hrzbf] +raphhxuxts-rpcsn-rdpixcv-rjhidbtg-htgkxrt-635[yozvr] +tfejldvi-xiruv-gcrjkzt-xirjj-tljkfdvi-jvimztv-321[veyxs] +ryexqpqhteki-sxesebqju-iqbui-868[qebar] +eqpuwogt-itcfg-hnqygt-tgegkxkpi-648[ywzjl] +uzfqdzmfuazmx-pkq-bgdotmeuzs-482[zmudf] +sbnqbhjoh-cbtlfu-bdrvjtjujpo-441[taquv] +gokzyxsjon-bkwzkqsxq-lexxi-bomosfsxq-354[xoskq] +oazegyqd-sdmpq-iqmbazulqp-dmnnuf-geqd-fqefuzs-456[qdefm] +dwbcjkun-ljwmh-lxjcrwp-anbnjalq-875[hoynm] +udskkaxawv-eadalsjq-yjsvw-xdgowj-klgjsyw-216[cnwyi] +surmhfwloh-exqqb-sxufkdvlqj-439[tspmq] +ksodcbwnsr-foppwh-zcuwghwqg-402[vopuk] +zsxyfgqj-hmthtqfyj-fhvznxnynts-697[fhnty] +yflexwxoalrp-yxphbq-bkdfkbbofkd-653[jzvpm] +ltpedcxots-tvv-rdcipxcbtci-557[ctdip] +slqryzjc-djmucp-qyjcq-756[cjqyd] +rgndvtcxr-qphzti-bpcpvtbtci-817[tcpbi] +ftzgxmbv-fbebmtkr-zktwx-vtgwr-vhtmbgz-lmhktzx-371[wzxvl] +htqtwkzq-hfsid-yjhmstqtld-463[rxszy] +rwcnawjcrxwju-yujbcrl-pajbb-mnenuxyvnwc-979[gkutb] +gokzyxsjon-tovvilokx-kmaescsdsyx-562[dwlah] +iutyaskx-mxgjk-lruckx-iayzuskx-ykxboik-826[kxiuy] +vhglnfxk-zktwx-yehpxk-hixktmbhgl-891[diznt] +sedikcuh-whqtu-kdijqrbu-sqdto-seqjydw-iuhlysui-790[lksjh] +jyfvnlupj-zjhclunly-obua-vwlyhapvuz-617[pirsw] +iuruxlar-sgmtkzoi-hgyqkz-zkinturume-670[qatsn] +wkqxodsm-mrymyvkdo-mecdywob-cobfsmo-250[hgarm] +odiih-kjbtnc-nwprwnnarwp-381[qpodn] +kfg-jvtivk-tyftfcrkv-kirzezex-373[srcvd] +gcfcnuls-aluxy-zotts-wuhxs-omyl-nymncha-552[clnsu] +xmtjbzidx-zbb-xpnojhzm-nzmqdxz-421[mnkio] +qjopwxha-acc-iwngapejc-160[jimst] +emixwvqhml-kivlg-kwibqvo-aitma-564[qspyb] +nvrgfezqvu-avccpsvre-cfxzjkztj-529[lmnsh] +emixwvqhml-ktiaaqnqml-xtiabqk-oziaa-ikycqaqbqwv-746[ozadu] +zhdsrqlchg-hjj-orjlvwlfv-751[hjlrv] +cybyjqho-whqtu-uww-qsgkyiyjyed-478[szxuo] +clxalrtyr-nsznzwlep-wzrtdetnd-405[lnrtz] +sgmtkzoi-yigbktmkx-natz-rghuxgzuxe-722[gktxz] +hjgbwuladw-tskcwl-sfsdqkak-502[txdsw] +yrwxefpi-hci-vigimzmrk-646[hdmzy] +hqcfqwydw-hqrryj-jusxdebewo-946[qwdeh] +wsvsdkbi-qbkno-cmkfoxqob-rexd-yzobkdsyxc-276[wptxs] +qfmcusbwq-qvcqczohs-zcuwghwqg-870[mnybx] +clxalrtyr-nsznzwlep-cpdplcns-743[rtycz] +fbebmtkr-zktwx-ktuubm-ybgtgvbgz-553[osmdy] +jvuzbtly-nyhkl-yhtwhnpun-jovjvshal-ylzlhyjo-773[hlyjn] +slqryzjc-aylbw-pcacgtgle-782[nxkri] +tfcfiwlc-wcfnvi-wzeretzex-971[smobe] +jef-iushuj-uww-qsgkyiyjyed-556[xzrwq] +crwwv-yxphbq-xkxivpfp-653[pxvwb] +hqcfqwydw-zubboruqd-husuylydw-244[lqeho] +oxmeeuruqp-qss-eqdhuoqe-534[equos] +qxdwpopgsdjh-rgndvtcxr-gpqqxi-gthtpgrw-687[gpdqr] +mybbycsfo-mrymyvkdo-bocokbmr-692[pymza] +myvybpev-oqq-yzobkdsyxc-250[sxytw] +fnjyxwrinm-kdwwh-uxprbcrlb-329[natqu] +aietsrmdih-nippcfier-gsrxemrqirx-958[iremp] +xmrrq-tmffq-vwhdgqewfl-138[fqmrw] +oqnidbshkd-bzmcx-sdbgmnknfx-599[nzdyx] +eqttqukxg-ecpfa-eqcvkpi-ewuvqogt-ugtxkeg-128[mytkp] +nchhg-ntwemz-amzdqkma-252[kmbop] +bjfutsneji-jll-zxjw-yjxynsl-775[ndbsw] +ktwbhtvmbox-lvtoxgzxk-angm-mxvaghehzr-319[ijqxb] +kyelcrga-afmamjyrc-pcqcypaf-210[acyfm] +myxcewob-qbkno-mkxni-oxqsxoobsxq-484[oxbqk] +esyfwlau-vqw-kzahhafy-788[jikae] +oqnidbshkd-eknvdq-btrsnldq-rdquhbd-391[njzml] +qjopwxha-bhksan-opknwca-888[ahkno] +udskkaxawv-jsttal-vwhdgqewfl-190[hqmnt] +excdklvo-lexxi-crszzsxq-458[uavnl] +frqvxphu-judgh-fdqgb-frdwlqj-wudlqlqj-179[bimaq] +iuruxlar-kmm-ykxboiky-852[tijpz] +tyepcyletzylw-mldvpe-lylwjdtd-509[lydet] +frqvxphu-judgh-gbh-whfkqrorjb-101[mhbes] +xqvwdeoh-edvnhw-zrunvkrs-699[zmudw] +irdgrxzex-treup-fgvirkzfej-893[fbsyn] +cxy-bnlanc-ljwmh-orwjwlrwp-771[ngpmz] +eqpuwogt-itcfg-gii-ucngu-388[hzgae] +ikhcxvmbex-cxeeruxtg-wxlbzg-553[mvnfs] +mrxivrexmsrep-fyrrc-asvowlst-854[codsq] +npmhcargjc-aylbw-qcptgacq-366[ditsg] +ftzgxmbv-ietlmbv-zktll-phkdlahi-241[ltbhi] +hqcfqwydw-tou-bewyijysi-270[hnvux] +emixwvqhml-kivlg-abwziom-590[imlvw] +pejji-nio-mecdywob-cobfsmo-926[wrjmp] +bknsykmdsfo-oqq-dbksxsxq-640[naysz] +gifavtkzcv-vxx-tfekrzedvek-789[cnwtp] +kmjezxodgz-diozmivodjivg-agjrzm-xjiovdihzio-915[yqktj] +shoewudys-vbemuh-qsgkyiyjyed-946[nqsjd] +htqtwkzq-ojqqdgjfs-rfwpjynsl-749[hryqo] +rmn-qcapcr-zyqicr-pcacgtgle-340[znstw] +bnqqnrhud-bzmcx-bnmszhmldms-729[yfetv] +surmhfwloh-gbh-rshudwlrqv-725[dsaym] +jchipqat-tvv-itrwcdadvn-505[povhu] +zgmfyxypbmsq-njyqrga-epyqq-rcaflmjmew-340[mqyae] +froruixo-exqqb-pdunhwlqj-283[nmuqd] +lnkfaypeha-xwogap-odellejc-784[ytrsz] +jlidywncfy-xsy-fuvilunils-864[ilyfn] +joufsobujpobm-dipdpmbuf-sftfbsdi-545[rwjnm] +tvsnigxmpi-gerhc-gsexmrk-eguymwmxmsr-932[pivem] +tfejldvi-xiruv-srjbvk-ivjvrity-815[vijrt] +zuv-ykixkz-yigbktmkx-natz-zkinturume-410[kzitu] +enzcntvat-pubpbyngr-qrcyblzrag-117[oywbs] +wsvsdkbi-qbkno-lkcuod-nofovyzwoxd-744[xnuqc] +wbhsfbohwcboz-foppwh-aobousasbh-246[nfsml] +uiovmbqk-jcvvg-abwziom-720[nbqaz] +etaqigpke-fag-fgrnqaogpv-674[gaefp] +ejpanjwpekjwh-nwxxep-hkceopeyo-238[bmscu] +qjopwxha-bhksan-wjwhuoeo-940[xenwh] +etyyx-bzmcx-bnzshmf-qdzbpthrhshnm-729[hbmzn] +uqtqbizg-ozilm-lgm-abwziom-356[tspmz] +excdklvo-mybbycsfo-tovvilokx-psxkxmsxq-874[axwon] +mvydjvxodqz-xviyt-xjvodib-pnzm-oznodib-187[nflym] +ixccb-zhdsrqlchg-edvnhw-xvhu-whvwlqj-465[hcvwd] +qspkfdujmf-votubcmf-tdbwfohfs-ivou-bdrvjtjujpo-181[esuzg] +fkqbokxqflkxi-qlm-pbzobq-bdd-jxohbqfkd-601[dcgym] +mtzslklcozfd-prr-nfdezxpc-dpcgtnp-301[tmnrk] +xekdwvwnzkqo-lhwopey-cnwoo-wymqeoepekj-290[rzsnk] +fubrjhqlf-sodvwlf-judvv-pdqdjhphqw-725[dfhjq] +shoewudys-zubboruqd-skijecuh-iuhlysu-608[ushbd] +zlkprjbo-doxab-zxkav-rpbo-qbpqfkd-679[bkopa] +nzcczdtgp-mldvpe-opawzjxpye-587[tkbms] +apuut-nxvqzibzm-cpio-yzkvmohzio-655[rsozd] +rgllk-ngzzk-ymdwqfuzs-300[yhzxu] +cvabijtm-jcvvg-uiviomumvb-538[ixajz] +oazegyqd-sdmpq-otaoaxmfq-pqbmdfyqzf-248[qadfm] +rtqlgevkng-fag-nqikuvkeu-960[nqdom] +bnknqetk-cxd-cdrhfm-183[mfpwa] +ohmnuvfy-wuhxs-wiuncha-lyuwkocmcncih-552[chunw] +hqtyeqsjylu-jef-iushuj-tou-fkhsxqiydw-296[isfmy] +kwtwznct-kwvacumz-ozilm-jiasmb-uiviomumvb-746[qmjyz] +qfmcusbwq-foppwh-twbobqwbu-298[bwqfo] +ykhknbqh-xqjju-owhao-472[hjtck] +dszphfojd-tdbwfohfs-ivou-mbcpsbupsz-103[sbdfo] +lahxpnwrl-ljwmh-nwprwnnarwp-641[srtpm] +ckgvutofkj-lruckx-jkvruesktz-878[zjlyk] +dyz-combod-zvkcdsm-qbkcc-nocsqx-926[yvute] +ktwbhtvmbox-wrx-nlxk-mxlmbgz-345[lsuwt] +nwilwcejc-nwxxep-zalhkuiajp-186[bznxr] +uzfqdzmfuazmx-otaoaxmfq-bgdotmeuzs-846[mzafo] +oxmeeuruqp-omzpk-oamfuzs-oazfmuzyqzf-352[ypdzg] +zhdsrqlchg-fdqgb-ghsduwphqw-361[hdgqs] +nchhg-jiasmb-amzdqkma-278[qklti] +tfiifjzmv-upv-wzeretzex-295[itvos] +eqttqukxg-ecpfa-ujkrrkpi-830[kepqr] +clotzlnetgp-mldvpe-nzyeltyxpye-145[xfpsy] +mbiyqoxsm-myvybpev-mkxni-mykdsxq-yzobkdsyxc-900[ymxbk] +plolwdub-judgh-vfdyhqjhu-kxqw-vhuylfhv-621[zqwmy] +atyzghrk-vxupkizork-jek-giwaoyozout-228[abrmv] +zotts-xsy-mufym-162[mstyf] +vhehkyne-ktuubm-mktbgbgz-293[qmytr] +kwvacumz-ozilm-zijjqb-ivitgaqa-616[fkoxt] +yaxsnlcrun-ajvyjprwp-snuuhknjw-anlnrerwp-771[zpyld] +raphhxuxts-bpvctixr-eaphixr-vgphh-bpcpvtbtci-115[phtxb] +nuatmlmdpage-odkasqzuo-qss-dqmocgueufuaz-768[umnqw] +yknnkoera-lhwopey-cnwoo-nawymqeoepekj-680[eonkw] +pybgmyargtc-aylbw-qyjcq-886[buzfp] +gzefmnxq-ngzzk-iadwetab-638[zaegn] +sbnqbhjoh-kfmmzcfbo-usbjojoh-129[acdkb] +lxaaxbren-lujbbrornm-ljwmh-lxjcrwp-mnyjacvnwc-355[yzsuk] +nchhg-lgm-nqvivkqvo-200[dystz] +plolwdub-judgh-udeelw-rshudwlrqv-335[sihdt] +wlsiayhcw-vumeyn-lymyulwb-292[zbrux] +ytu-xjhwjy-hfsid-htfynsl-qtlnxynhx-411[adxmu] +wkqxodsm-tovvilokx-ckvoc-822[uhgov] +chnylhuncihuf-vumeyn-nluchcha-500[rcbmn] +tfiifjzmv-lejkrscv-tyftfcrkv-jyzggzex-243[fjtvz] +eqpuwogt-itcfg-tcddkv-tgugctej-310[pyemh] +iuruxlar-xgsvgmotm-pkrrehkgt-xkykgxin-956[btwqp] +shoewudys-sxesebqju-qdqboiyi-894[seqbd] +zlkprjbo-doxab-gbiivybxk-pxibp-861[azyjx] +ckgvutofkj-inuiurgzk-lotgtiotm-982[qszly] +thnulapj-jshzzpmplk-jhukf-vwlyhapvuz-747[hpjlu] +pybgmyargtc-hcjjwzcyl-qcptgacq-782[bxsuc] +xgsvgmotm-vrgyzoi-mxgyy-iutzgotsktz-150[gtmoy] +laffe-yigbktmkx-natz-jkyomt-696[ktafm] +zvyvgnel-tenqr-pubpbyngr-znexrgvat-507[wfjhu] +pelbtravp-pnaql-znantrzrag-403[cbyja] +jqwpihizlwca-akidmvomz-pcvb-apqxxqvo-850[oxymv] +cvabijtm-ntwemz-twoqabqka-954[atbmq] +zixppfcfba-avb-zlkqxfkjbkq-809[zlmjc] +sebehvkb-zubboruqd-tufqhjcudj-556[budeh] +lqwhuqdwlrqdo-fdqgb-ghvljq-621[qdlgh] +qlm-pbzobq-crwwv-zxkav-zlxqfkd-rpbo-qbpqfkd-731[ciyxw] +pwcvonofrcig-gqojsbusf-vibh-qighcasf-gsfjwqs-740[csebm] +mvydjvxodqz-kmjezxodgz-kgvnodx-bmvnn-yzqzgjkhzio-239[zdovg] +kzgwomvqk-xtiabqk-oziaa-tijwzibwzg-564[menyj] +ksodcbwnsr-xszzmpsob-kcfygvcd-454[mbaod] +ejpanjwpekjwh-xwogap-hwxknwpknu-472[wpjkn] +mvydjvxodqz-hvbizodx-wpiit-hvivbzhzio-967[ivzdh] +mvydjvxodqz-mvwwdo-nzmqdxzn-681[jryzk] +enqvbnpgvir-rtt-freivprf-871[lgqrc] +hvbizodx-wpiit-kpmxcvndib-291[dyjmn] +molgbzqfib-mixpqfz-doxpp-xkxivpfp-965[pxfib] +fbebmtkr-zktwx-cxeeruxtg-nlxk-mxlmbgz-137[dckut] +luxciuwncpy-luvvcn-mbcjjcha-500[qsvzt] +apwmeclga-hcjjwzcyl-qyjcq-704[cjalq] +wpuvcdng-eqttqukxg-uecxgpigt-jwpv-cpcnauku-830[ucgpt] +iehepwnu-cnwza-fahhuxawj-pnwejejc-940[ewahj] +pbybeshy-pbeebfvir-pnaql-pbngvat-freivprf-715[uyzwp] +htsxzrjw-lwfij-ojqqdgjfs-zxjw-yjxynsl-957[iyonc] +sxdobxkdsyxkv-wsvsdkbi-qbkno-zvkcdsm-qbkcc-bomosfsxq-536[mbyan] +fruurvlyh-fkrfrodwh-uhdftxlvlwlrq-335[rflhu] +froruixo-hjj-orjlvwlfv-387[uyawn] +myvybpev-lexxi-vklybkdybi-978[ybvei] +chnylhuncihuf-vohhs-xymcah-240[yxnmh] +tagzsrsjvgmk-vqw-vwhsjlewfl-606[svwgj] +zbytomdsvo-lexxi-domrxyvyqi-250[oxydi] +qfkkj-clmmte-opgpwzaxpye-821[pekma] +lgh-kwujwl-udskkaxawv-jsttal-hmjuzskafy-320[axyrm] +irdgrxzex-nvrgfezqvu-avccpsvre-cfxzjkztj-191[sclzh] +mhi-lxvkxm-xzz-etuhktmhkr-319[rcomn] +lhkhszqx-fqzcd-dff-sdbgmnknfx-391[ugevx] +apwmeclga-aylbw-ylyjwqgq-314[izfye] +yflexwxoalrp-zlkprjbo-doxab-ciltbo-qbzeklildv-341[byclp] +cvabijtm-kwzzwaqdm-ntwemz-abwziom-252[rdmvn] +qfkkj-upwwjmply-epnsyzwzrj-899[okhgz] +jxdkbqfz-avb-zlkqxfkjbkq-861[wptxb] +gpsxdprixkt-qphzti-hwxeexcv-947[krgwe] +nij-mywlyn-wuhxs-wiuncha-lymyulwb-968[wylnu] +sbnqbhjoh-kfmmzcfbo-ufdiopmphz-987[bfhmo] +guahyncw-jfumncw-alumm-xyjfisgyhn-500[htamn] +ytu-xjhwjy-jll-ijxnls-879[duthg] +lgh-kwujwl-usfvq-ugslafy-esfsywewfl-944[ilszy] +tvsnigxmpi-tpewxmg-kveww-xiglrspskc-152[gipsw] +joufsobujpobm-cbtlfu-dvtupnfs-tfswjdf-129[fubjo] +rwcnawjcrxwju-bljenwpna-qdwc-mnyuxhvnwc-225[wncja] +qzchnzbshud-okzrshb-fqzrr-rzkdr-989[rzhbd] +qzoggwtwsr-pogysh-rsjszcdasbh-896[sghor] +gzefmnxq-dmnnuf-xmnadmfadk-326[tvuiw] +qzoggwtwsr-pibbm-zopcfohcfm-792[jsmfu] +mvydjvxodqz-xviyt-xjvodib-hvivbzhzio-369[iceny] +wkqxodsm-lkcuod-cdybkqo-224[dkocq] +veqtekmrk-ikk-wxsveki-542[keivm] +zlkprjbo-doxab-yxphbq-pqloxdb-419[ckdtm] +buzahisl-ibuuf-klzpnu-721[stjnm] +hwdtljsnh-kqtbjw-ijajqturjsy-515[plnqy] +luxciuwncpy-jfumncw-alumm-lyuwkocmcncih-474[lqpco] +tinnm-ibghopzs-rms-aobousasbh-506[sboah] +pbeebfvir-rtt-ratvarrevat-403[tdokj] +dmybmsuzs-pkq-efadmsq-300[msdqa] +ujqgywfau-tmffq-dgyaklauk-970[yxmid] +ovbunmneqbhf-enoovg-hfre-grfgvat-481[efgno] +hqfxxnknji-kzeed-uqfxynh-lwfxx-wjhjnansl-957[nxfhj] +plolwdub-judgh-edvnhw-pdqdjhphqw-985[dsxhg] +nwlddtqtpo-awldetn-rcldd-nfdezxpc-dpcgtnp-353[dnptc] +bwx-amkzmb-xzwrmkbqtm-ntwemz-amzdqkma-668[swmnl] +bqxnfdmhb-qzaahs-rdquhbdr-443[bdhqa] +egdytrixat-ide-htrgti-uadltg-steadnbtci-297[zampy] +gsrwyqiv-kvehi-gerhc-gsexmrk-erepcwmw-880[bkwts] +nsyjwsfyntsfq-gfxpjy-jslnsjjwnsl-749[lvzus] +dfcxsqhwzs-pibbm-gvwddwbu-246[dqbem] +mtzslklcozfd-ojp-fdpc-epdetyr-613[dpcef] +gbc-frperg-ohaal-erfrnepu-351[reafg] +gvaaz-cbtlfu-efqbsunfou-311[dvnmz] +ugdgjxmd-tskcwl-umklgewj-kwjnauw-892[wgjku] +iruzfrtkzmv-avccpsvre-nfibjyfg-243[jzoyc] +shoewudys-hqrryj-bqrehqjeho-296[heqrj] +hwdtljsnh-kqtbjw-htsyfnsrjsy-827[dntpc] +zilqwikbqdm-kivlg-uiviomumvb-902[imvbk] +rsvxltspi-sfnigx-wxsveki-984[sixve] +surmhfwloh-gbh-xvhu-whvwlqj-387[hwluv] +ubhatstkwhnl-yehpxk-wxlbzg-137[raqjb] +oknkvcta-itcfg-uecxgpigt-jwpv-ocpcigogpv-596[cgpio] +amjmpdsj-djmucp-nspafyqgle-470[ztpqn] +zixppfcfba-avb-abpfdk-471[abfpc] +owshgfarwv-jsttal-vwkayf-944[smcyx] +vjpwncrl-ljwmh-lxjcrwp-lxwcjrwvnwc-589[irbxq] +qvbmzvibqwvit-ziuxioqvo-lgm-amzdqkma-928[hgfln] +lxuxaodu-kjbtnc-jwjuhbrb-147[bjuxa] +etaqigpke-fag-yqtmujqr-440[qaegt] +zekvierkzferc-irdgrxzex-jtrmvexvi-ylek-rthlzjzkzfe-633[gkyzp] +mfklstdw-hdsklau-yjskk-kwjnauwk-762[vnfzg] +pkl-oaynap-fahhuxawj-oanreyao-706[mdfpn] +hwdtljsnh-hmthtqfyj-rfsfljrjsy-359[sxziu] +fab-eqodqf-ngzzk-bgdotmeuzs-144[kxags] +tagzsrsjvgmk-tskcwl-vwhsjlewfl-424[ejuah] +kzgwomvqk-jiasmb-uizsmbqvo-590[mbiko] +qjopwxha-xqjju-oanreyao-758[ubmon] +hvbizodx-xmtjbzidx-nxvqzibzm-cpio-yzkgjthzio-889[rmyqo] +iuruxlar-kmm-jkvruesktz-644[kruma] +ujqgywfau-jsttal-vwhdgqewfl-710[hbdlx] +jlidywncfy-wuhxs-wiuncha-yhachyylcha-630[hycaw] +lugjuacha-wlsiayhcw-dyffsvyuh-uhufsmcm-890[juefh] +hjgbwuladw-xdgowj-hmjuzskafy-398[wqigl] +yuxufmdk-sdmpq-pkq-etubbuzs-456[wldkg] +vcibutulxiom-dyffsvyuh-qilembij-110[jdnmz] +nzwzcqfw-clmmte-dpcgtnpd-509[cdmnp] +aczupnetwp-nlyoj-nzletyr-zapcletzyd-665[zelnp] +htsxzrjw-lwfij-wfintfhynaj-kqtbjw-knsfshnsl-983[kytzm] +enqvbnpgvir-onfxrg-qrirybczrag-611[rgnbi] +molgbzqfib-ciltbo-xkxivpfp-159[biflo] +plolwdub-judgh-fkrfrodwh-ghyhorsphqw-517[hdorw] +gzefmnxq-omzpk-oazfmuzyqzf-872[zkycu] +qjopwxha-lhwopey-cnwoo-naoawnyd-186[cvyno] +jyfvnlupj-ipvohghykvbz-jovjvshal-ylzlhyjo-435[xlenk] +ajmrxjlcren-kjbtnc-jwjuhbrb-329[klcuz] +wdjcvuvmyjpn-ezggtwzvi-jkzmvodjin-603[gmveh] +muqfedyput-fbqijys-whqii-bqrehqjeho-192[vdlge] +ktfitzbgz-xzz-ftgtzxfxgm-605[izfql] +bknsykmdsfo-oqq-wkbuodsxq-458[stifb] +slqryzjc-hcjjwzcyl-yaosgqgrgml-314[qymir] +gpewwmjmih-veffmx-xvemrmrk-126[itcvu] +rdadguja-gpqqxi-ldgzhwde-297[hnvso] +lxaaxbren-mhn-cnlqwxuxph-251[xvjuz] +xst-wigvix-fewoix-gsrxemrqirx-698[xireg] +iehepwnu-cnwza-zua-wymqeoepekj-108[sdnmj] +oknkvcta-itcfg-rncuvke-itcuu-hkpcpekpi-908[pgfbe] +enqvbnpgvir-ohaal-hfre-grfgvat-351[hsgdf] +ixccb-iorzhu-hqjlqhhulqj-647[hqcij] +apuut-agjrzm-jkzmvodjin-915[jamuz] +hqcfqwydw-rqiauj-ijehqwu-530[qwhij] +vhehkyne-ktwbhtvmbox-lvtoxgzxk-angm-kxvxbobgz-683[tsurp] +gntmfefwitzx-idj-knsfshnsl-723[fnsit] +ajvyjprwp-bljenwpna-qdwc-ujkxajcxah-563[yskxv] +joufsobujpobm-dboez-dpbujoh-mbcpsbupsz-259[bopuj] +xlrypetn-prr-nzyeltyxpye-847[yeprl] +zuv-ykixkz-xgsvgmotm-lruckx-jkvgxzsktz-696[ijlfz] +jqwpihizlwca-moo-lmxtwgumvb-798[nkzsr] +jsvagsulanw-kusnwfywj-zmfl-klgjsyw-736[ectrq] +ykhknbqh-nwxxep-nawymqeoepekj-758[cfvdy] +kzeed-gfxpjy-tujwfyntsx-385[aunmy] +slqryzjc-qaytclecp-fslr-dglylagle-184[lcyae] +laffe-vrgyzoi-mxgyy-iutzgotsktz-410[gtyzf] +gpbepvxcv-hrpktcvtg-wjci-stktadebtci-141[zoqhx] +yaxsnlcrun-lqxlxujcn-mnyuxhvnwc-641[nxclu] +tagzsrsjvgmk-kusnwfywj-zmfl-dstgjslgjq-294[gayon] +kwzzwaqdm-zijjqb-xczkpiaqvo-902[mkgjt] +mfklstdw-usfvq-ugslafy-xafsfuafy-684[fsaul] +zvyvgnel-tenqr-ovbunmneqbhf-sybjre-fgbentr-117[shfce] +emixwvqhml-akidmvomz-pcvb-amzdqkma-720[relbk] +rdggdhxkt-eaphixr-vgphh-hwxeexcv-973[xozyv] +bqvvu-zua-iwngapejc-992[nmdax] +bjfutsneji-kqtbjw-wjxjfwhm-203[irjmx] +bdavqofuxq-nmewqf-abqdmfuaze-976[vgzhc] +vdzonmhydc-okzrshb-fqzrr-rzkdr-313[rzdhk] +sawlkjevaz-oywrajcan-dqjp-wjwhuoeo-836[ajwoe] +fruurvlyh-gbh-sxufkdvlqj-413[kftmo] +fruurvlyh-sodvwlf-judvv-ghsorbphqw-569[tadzk] +sbejpbdujwf-tdbwfohfs-ivou-dpoubjonfou-103[rbqio] +oxmeeuruqp-otaoaxmfq-xasuefuoe-222[ozipy] +rdggdhxkt-qphzti-ejgrwphxcv-921[tusrb] +dkqjcbctfqwu-fag-yqtmujqr-882[kzvuf] +gzefmnxq-dmnnuf-mzmxkeue-248[menfu] +kgjgrypw-epybc-aylbw-kylyeckclr-314[mlvhs] +bwx-amkzmb-akidmvomz-pcvb-abwziom-148[nmtyw] +ckgvutofkj-sorozgxe-mxgjk-xghhoz-xkykgxin-670[gkxoh] +zhdsrqlchg-fkrfrodwh-ghsorbphqw-803[cjybd] +hvbizodx-wvnfzo-adivixdib-603[xwstz] +tvsnigxmpi-gerhc-hitpscqirx-204[icghp] +jrncbavmrq-cynfgvp-tenff-npdhvfvgvba-741[ybszn] +mbiyqoxsm-pvygob-psxkxmsxq-952[mjfnc] +gsrwyqiv-kvehi-veffmx-gywxsqiv-wivzmgi-282[bdrgj] +clxalrtyr-xtwtelcj-rclop-awldetn-rcldd-cpdplcns-847[lcdrt] +ahngzyzqcntr-bzmcx-sdbgmnknfx-287[fmyqt] +zgmfyxypbmsq-aylbw-amyrgle-bctcjmnkclr-340[mybcl] +fydelmwp-prr-nzyeltyxpye-717[gfjxa] +rnqnyfwd-lwfij-rflsjynh-wfggny-xfqjx-931[fnjwy] +zilqwikbqdm-xtiabqk-oziaa-twoqabqka-278[ftonr] +bjfutsneji-gzssd-uzwhmfxnsl-827[sfjnu] +ojk-nzxmzo-pinovwgz-agjrzm-jkzmvodjin-733[zjomn] +ygcrqpkbgf-dcumgv-fgukip-570[vmhxn] +dzczkrip-xiruv-srjbvk-jyzggzex-945[uzneh] +bkzrrhehdc-bzmcx-lzmzfdldms-287[eclvd] +ziuxioqvo-kpwkwtibm-lmxizbumvb-564[txsru] +kzgwomvqk-lgm-lmxizbumvb-122[mbgkl] +htsxzrjw-lwfij-idj-xjwanhjx-463[obdze] +gntmfefwitzx-kqtbjw-wjxjfwhm-749[qzutv] +htsxzrjw-lwfij-jll-tujwfyntsx-671[xugan] +ymszqfuo-rxaiqd-etubbuzs-118[ubqsz] +vdzonmhydc-azrjds-lzqjdshmf-989[dzhjm] +dyz-combod-bkllsd-oxqsxoobsxq-354[nrmkx] +pyknyegle-afmamjyrc-yaosgqgrgml-626[zdlfg] +oxmeeuruqp-vqxxknqmz-oazfmuzyqzf-352[rnsyt] +qjopwxha-xqjju-pnwejejc-654[jepqw] +wifilzof-jfumncw-alumm-xypyfijgyhn-604[fjerw] +vagreangvbany-enoovg-fuvccvat-533[gncot] +avw-zljyla-zjhclunly-obua-thuhnltlua-669[wathd] +ynssr-lvtoxgzxk-angm-mxvaghehzr-345[vopnm] +cvabijtm-uqtqbizg-ozilm-xtiabqk-oziaa-lmdmtwxumvb-928[imabt] +frqvxphu-judgh-sodvwlf-judvv-pdqdjhphqw-751[azovy] +qmpmxevc-kvehi-jyddc-fyrrc-qerekiqirx-282[ygmhv] +fodvvlilhg-udeelw-pdunhwlqj-153[sndmo] +gpsxdprixkt-ytaanqtpc-gthtpgrw-765[tpgar] +cvabijtm-kpwkwtibm-bmkpvwtwog-174[wbkmt] +vetllbybxw-yehpxk-wxlbzg-891[yekxl] +nzwzcqfw-nlyoj-dezclrp-275[zclnw] +qmpmxevc-kvehi-glsgspexi-gsrxemrqirx-828[exgim] +xtwtelcj-rclop-dnlgpyrpc-sfye-hzcvdsza-873[xmpon] +jrncbavmrq-pnaql-jbexfubc-793[bacjn] +ohmnuvfy-yaa-lymyulwb-266[yalmu] +nzwzcqfw-aczupnetwp-awldetn-rcldd-pyrtyppctyr-613[pctwd] +vqr-ugetgv-uecxgpigt-jwpv-rwtejcukpi-752[geptu] +tfcfiwlc-lejkrscv-upv-rthlzjzkzfe-607[tcfns] +hwdtljsnh-uqfxynh-lwfxx-knsfshnsl-229[xtngb] +iuruxlar-igtje-iayzuskx-ykxboik-930[kmghr] +xjgjmapg-ezggtwzvi-hvivbzhzio-421[gzivh] +gpbepvxcv-hrpktcvtg-wjci-hwxeexcv-349[xswrp] +tcorcikpi-eqttqukxg-gii-hkpcpekpi-622[ruxyk] +ygcrqpkbgf-ejqeqncvg-ucngu-440[gcqen] +etyyx-dff-qdbdhuhmf-729[wskto] +tfiifjzmv-upv-vexzevvizex-399[veizf] +houngfgxjuay-sorozgxe-mxgjk-jek-aykx-zkyzotm-566[aimhd] +hcd-gsqfsh-dzoghwq-ufogg-aobousasbh-714[ynfie] +foadouwbu-qobrm-qcohwbu-zopcfohcfm-792[obcfu] +ynukcajey-oywrajcan-dqjp-wjwhuoeo-680[jaowy] +rflsjynh-jll-rfsfljrjsy-489[jlfrs] +vkrhzxgbv-pxtihgbsxw-yehpxk-mktbgbgz-917[igtvy] +hjgbwuladw-tskcwl-dgyaklauk-294[aklwd] +cvabijtm-jcvvg-zmikycqaqbqwv-772[vcqab] +odiih-yujbcrl-pajbb-vjwjpnvnwc-849[jbcin] +tinnm-tzcksf-igsf-hsghwbu-220[bnamt] +pbeebfvir-wryylorna-jbexfubc-637[egouk] +xmtjbzidx-xviyt-yzqzgjkhzio-265[vxsry] +avw-zljyla-zjhclunly-obua-klwhyatlua-201[sjayl] +dfcxsqhwzs-qvcqczohs-fsgsofqv-246[dosrp] +rzvkjiduzy-xviyt-xjvodib-kpmxcvndib-291[cwzla] +gcfcnuls-aluxy-mwupyhayl-bohn-wihnuchgyhn-968[hnuyc] +dyz-combod-lsyrkjkbnyec-bkllsd-domrxyvyqi-328[vtxzd] +fruurvlyh-mhoobehdq-dftxlvlwlrq-907[jlves] +mrxivrexmsrep-gerhc-gsexmrk-tyvglewmrk-152[wzuly] +votubcmf-gmpxfs-pqfsbujpot-883[fpbmo] +bljenwpna-qdwc-anbnjalq-329[lcwmy] +xekdwvwnzkqo-ydkykhwpa-wjwhuoeo-550[toavy] +yhkpvhjapcl-yhiipa-jbzavtly-zlycpjl-201[lpyah] +xjinphzm-bmvyz-wvnfzo-nzmqdxzn-681[ykfxe] +pbeebfvir-rtt-ybtvfgvpf-507[bftve] +gvcskirmg-ikk-hizipstqirx-750[iyquj] +yhwooebeaz-lhwopey-cnwoo-oanreyao-108[tmuag] +wlqqp-jtrmvexvi-ylek-nfibjyfg-581[tnrhf] +tfiifjzmv-avccpsvre-jyzggzex-477[mvnjr] +xjmmjndqz-zbb-yzndbi-811[bzdjm] +qjopwxha-xwogap-nayaerejc-160[isjqz] +qzlozfhmf-azrjds-knfhrshbr-573[dfmys] +vhglnfxk-zktwx-vetllbybxw-vtgwr-vhtmbgz-ybgtgvbgz-761[gbtvl] +etaqigpke-ecpfa-eqcvkpi-cpcnauku-336[eyxtb] +lqwhuqdwlrqdo-fdqgb-frdwlqj-zrunvkrs-933[tvijl] +gvcskirmg-tvsnigxmpi-gerhc-gsexmrk-wlmttmrk-828[szawg] +irdgrxzex-kfg-jvtivk-wcfnvi-jyzggzex-269[givxz] +cqwdujys-sqdto-iqbui-270[siyeh] +bnqqnrhud-bgnbnkzsd-trdq-sdrshmf-807[dnbqr] +rgndvtcxr-hrpktcvtg-wjci-prfjxhxixdc-193[yjsht] +qekrixmg-hci-xvemrmrk-282[mreik] +xcitgcpixdcpa-snt-apqdgpidgn-349[mfywv] +wkqxodsm-pvygob-wkbuodsxq-978[ysamp] +aoubshwq-qvcqczohs-kcfygvcd-558[ytvls] +tyepcyletzylw-qwzhpc-opalcexpye-301[gamdn] +tfcfiwlc-treup-uvjzxe-607[nrthm] +ubhatstkwhnl-lvtoxgzxk-angm-inkvatlbgz-865[tagkl] +wihmogyl-aluxy-yaa-qilembij-890[emvct] +bxaxipgn-vgpst-ltpedcxots-gpqqxi-hidgpvt-245[pgtxi] +jfifqxov-doxab-mixpqfz-doxpp-obpbxoze-107[ghpyi] +gvaaz-dpssptjwf-sbccju-fohjoffsjoh-675[pfzwa] +gzefmnxq-eomhqzsqd-tgzf-efadmsq-378[qefmz] +emixwvqhml-kivlg-zmkmqdqvo-876[dcfin] +fodvvlilhg-fdqgb-frqwdlqphqw-725[qdflg] +laffe-pkrrehkgt-rumoyzoiy-670[dyjut] +egdytrixat-qphzti-tcvxcttgxcv-245[tcxgi] +htqtwkzq-wfintfhynaj-xhfajsljw-mzsy-jslnsjjwnsl-645[eynzi] +vrurcjah-pajmn-npp-mnyuxhvnwc-563[npach] +ejpanjwpekjwh-acc-klanwpekjo-576[jaekp] +kwvacumz-ozilm-kpwkwtibm-uizsmbqvo-876[mikwz] +hjgbwuladw-xdgowj-esfsywewfl-866[byzdm] +pbybeshy-wryylorna-npdhvfvgvba-351[stmxy] +qjopwxha-ywjzu-hkceopeyo-654[tysoa] +lhkhszqx-fqzcd-dff-vnqjrgno-417[fqdhn] +rgllk-otaoaxmfq-fdmuzuzs-768[vkqac] +ohmnuvfy-xsy-omyl-nymncha-214[hmtfs] +enzcntvat-cynfgvp-tenff-nanylfvf-455[cuimh] +sedikcuh-whqtu-sehheiylu-tou-bqrehqjeho-868[ydaux] +tyepcyletzylw-ojp-opalcexpye-145[wciks] +udpsdjlqj-hjj-frqwdlqphqw-309[gbpcz] +eqpuwogt-itcfg-lgnnadgcp-vtckpkpi-388[gpcti] +rkpqxyib-pzxsbkdbo-erkq-zrpqljbo-pbosfzb-133[bpkoq] +kdijqrbu-sxesebqju-tufqhjcudj-114[tdbva] +gsvvswmzi-wgezirkiv-lyrx-irkmriivmrk-412[twsrk] +ucynmlgxcb-qaytclecp-fslr-amlryglkclr-704[lcrya] +xst-wigvix-veffmx-wxsveki-100[ocvmr] +surmhfwloh-vfdyhqjhu-kxqw-frqwdlqphqw-829[hqwfd] +xmrrq-usfvq-esfsywewfl-528[alidm] +zhdsrqlchg-lqwhuqdwlrqdo-sodvwlf-judvv-ghsorbphqw-777[rtnmj] +egdytrixat-xcitgcpixdcpa-rwdrdapit-uxcpcrxcv-245[cdabn] +yrwxefpi-ikk-gywxsqiv-wivzmgi-152[iwgkv] +qcffcgwjs-foppwh-obozmgwg-558[zotsu] +veqtekmrk-gerhc-gsexmrk-hitpscqirx-568[nczdq] +gzefmnxq-pkq-pqbmdfyqzf-794[jxrmh] +eadalsjq-yjsvw-usfvq-ugslafy-ugflsafewfl-632[fsalu] +esyfwlau-usfvq-ugslafy-vwhdgqewfl-684[flsuw] +ktfitzbgz-fbebmtkr-zktwx-utldxm-wxlbzg-683[afwhg] +wihmogyl-aluxy-vohhs-uwkocmcncih-292[wzryd] +bkzrrhehdc-idkkxadzm-lzmzfdldms-677[oxwvn] +clxalrtyr-qwzhpc-lnbftdtetzy-249[zryvn] +rgllk-fab-eqodqf-vqxxknqmz-pqbxakyqzf-222[qfkxa] +xjinphzm-bmvyz-xviyt-mzxzdqdib-603[xnhfs] +htsxzrjw-lwfij-hmthtqfyj-wjfhvznxnynts-385[zreuy] +myvybpev-gokzyxsjon-oqq-nozvyiwoxd-692[iyzuj] +hcd-gsqfsh-pogysh-gvwddwbu-480[mysuk] +hcd-gsqfsh-foppwh-rsgwub-428[kvtfs] +frqvxphu-judgh-exqqb-uhvhdufk-621[wtgmn] +vhglnfxk-zktwx-vahvhetmx-vhgmtbgfxgm-345[hnamj] +tagzsrsjvgmk-usfvq-ugslafy-ugflsafewfl-892[yckbv] +joufsobujpobm-gmpxfs-vtfs-uftujoh-233[foujs] +zsxyfgqj-ojqqdgjfs-zxjw-yjxynsl-593[jqsxy] +bnknqetk-atmmx-qdzbpthrhshnm-131[ecnmt] +hmsdqmzshnmzk-dff-sqzhmhmf-859[dnxcz] +hqtyeqsjylu-tou-udwyduuhydw-348[uydhq] +ktiaaqnqml-kpwkwtibm-zmikycqaqbqwv-772[tlrsg] +nzydfxpc-rclop-mtzslklcozfd-mfyyj-nfdezxpc-dpcgtnp-951[cpdfz] +ckgvutofkj-hatte-gtgreyoy-644[tgeko] +iwcjapey-zua-paydjkhkcu-628[hntmg] +bnknqetk-okzrshb-fqzrr-trdq-sdrshmf-729[tuzoy] +qmpmxevc-kvehi-yrwxefpi-glsgspexi-wlmttmrk-828[hsyvf] +amjmpdsj-njyqrga-epyqq-qcptgacq-106[bhysd] +dwbcjkun-ljwmh-mnyuxhvnwc-641[wuyrz] +gspsvjyp-jpsaiv-hiwmkr-854[zthel] +gsrwyqiv-kvehi-gerhc-stivexmsrw-750[whgse] +xjgjmapg-wpiit-ozxcijgjbt-889[ytsop] +xgjougizobk-kmm-rghuxgzuxe-280[cwrty] +zovldbkfz-oxjmxdfkd-oxyyfq-ixyloxqlov-653[snkwb] +qczcftiz-qvcqczohs-gsfjwqsg-142[cqszf] +krxqjijamxdb-mhn-ldbcxvna-bnaerln-771[ravbt] +pybgmyargtc-bwc-bcqgel-860[bcgya] +wyvqljapsl-jovjvshal-shivyhavyf-773[vahjl] +pbafhzre-tenqr-onfxrg-bcrengvbaf-221[zyaro] +glrcplyrgmlyj-bwc-pcqcypaf-132[clpyg] +dpmpsgvm-dboez-dpbujoh-tfswjdft-545[bdmzf] +dkqjcbctfqwu-rncuvke-itcuu-cpcnauku-700[cuknq] +ajmrxjlcren-yujbcrl-pajbb-anbnjalq-459[yslvg] +oazegyqd-sdmpq-bxmefuo-sdmee-fqotzaxask-586[vfmnu] +ugdgjxmd-jsttal-ksdwk-632[hfjix] +aietsrmdih-gvcskirmg-tpewxmg-kveww-vigimzmrk-412[kfcim] +drxevkzt-jtrmvexvi-ylek-uvgcfpdvek-685[vekdr] +excdklvo-bkllsd-nozvyiwoxd-250[dlokv] +uwtojhynqj-hfsid-wjxjfwhm-281[fqsmx] +plolwdub-judgh-udeelw-uhfhlylqj-205[ludhe] +oqnidbshkd-dff-zmzkxrhr-729[cvlkx] +bknsykmdsfo-tovvilokx-bomosfsxq-328[boqly] +dpotvnfs-hsbef-qspkfdujmf-cvooz-tijqqjoh-961[zmnyi] +gspsvjyp-fyrrc-gsrxemrqirx-490[rsgpx] +gifavtkzcv-szfyrqriuflj-wcfnvi-uvmvcfgdvek-139[zadfj] +gsrwyqiv-kvehi-wgezirkiv-lyrx-wxsveki-490[alpzb] +ykhknbqh-ydkykhwpa-zalhkuiajp-862[khayp] +dmybmsuzs-yuxufmdk-sdmpq-bxmefuo-sdmee-fqotzaxask-586[nwikx] +nwzekwypera-bhksan-nayaerejc-940[xnmta] +wrs-vhfuhw-hjj-zrunvkrs-283[hrjsu] +ajyqqgdgcb-pyzzgr-amlryglkclr-782[lozts] +ohmnuvfy-jfumncw-alumm-womnigyl-mylpcwy-110[mqrgd] +foadouwbu-suu-obozmgwg-792[hgkuj] +wdjcvuvmyjpn-ytz-yzkgjthzio-109[jyztv] +ucynmlgxcb-pyzzgr-qfgnngle-210[iftry] +ymszqfuo-omzpk-oamfuzs-pqhqxabyqzf-872[qzfmo] +clotzlnetgp-ojp-opawzjxpye-769[pnhtz] +mhi-lxvkxm-yehpxk-ftgtzxfxgm-657[etajx] +surmhfwloh-fkrfrodwh-uhfhlylqj-699[rkslj] +iruzfrtkzmv-tyftfcrkv-kirzezex-841[emztq] +bdavqofuxq-nmewqf-ogefayqd-eqdhuoq-352[jpmyv] +bdavqofuxq-otaoaxmfq-xasuefuoe-326[aofqu] +gpsxdprixkt-tvv-ldgzhwde-219[dgptv] +pbeebfvir-rtt-bcrengvbaf-897[enlaq] +jchipqat-gpqqxi-bpgztixcv-375[cnqyt] +glrcplyrgmlyj-qaytclecp-fslr-pcqcypaf-574[clpyr] +pejji-oqq-vyqscdsmc-640[qcjsd] +houngfgxjuay-yigbktmkx-natz-xkykgxin-774[mszcw] +ltpedcxots-jchipqat-gpqqxi-bpcpvtbtci-219[isgfv] +gifavtkzcv-tyftfcrkv-drerxvdvek-659[vbdyz] +vjpwncrl-mhn-orwjwlrwp-641[wrjln] +vjpwncrl-ouxfna-bcxajpn-511[ydzfw] +rzvkjiduzy-xviyt-xjvodib-adivixdib-187[idvxb] +tinnm-suu-twbobqwbu-272[datjf] +apuut-xviyt-vxlpdndodji-941[zrtso] +jxdkbqfz-zixppfcfba-mixpqfz-doxpp-jxohbqfkd-705[fpxbd] +zilqwikbqdm-lgm-kwvbiqvumvb-876[bqpme] +jyddc-wgezirkiv-lyrx-wxsveki-256[sjntv] +ahngzyzqcntr-qzaahs-zbpthrhshnm-963[fzvai] +ksodcbwnsr-qfmcusbwq-suu-qighcasf-gsfjwqs-350[wyezk] +atyzghrk-igtje-iugzotm-jkyomt-462[ksuli] +dwbcjkun-ajmrxjlcren-yujbcrl-pajbb-nwprwnnarwp-563[tjsqg] +aoubshwq-dzoghwq-ufogg-aofyshwbu-896[hwcmz] +apwmeclga-npmhcargjc-njyqrga-epyqq-rpyglgle-340[dgtsc] +apwmeclga-aylbw-amyrgle-dglylagle-210[iumzy] +ydjuhdqjyedqb-rkddo-sedjqydcudj-738[ycbmx] +iuxxuyobk-xgjougizobk-pkrrehkgt-sgtgmksktz-644[pzsmw] +bnmrtldq-fqzcd-bgnbnkzsd-vnqjrgno-521[nbdqg] +wfruflnsl-gzssd-wjhjnansl-177[wtmsg] +yhwooebeaz-ywjzu-klanwpekjo-680[eowaj] +pynffvsvrq-cynfgvp-tenff-ernpdhvfvgvba-663[vbduy] +zilqwikbqdm-ntwemz-uizsmbqvo-356[yhenq] +jvsvymbs-zjhclunly-obua-jvuahputlua-721[uajlv] +fhezusjybu-rqiauj-tufbeocudj-400[ecamb] +ftzgxmbv-wrx-xgzbgxxkbgz-293[xgbzf] +chnylhuncihuf-xsy-xypyfijgyhn-578[jigcy] +vhkkhlbox-pxtihgbsxw-cxeeruxtg-wxlbzg-111[hsuty] +foadouwbu-tzcksf-gozsg-246[ofgsu] +xzwrmkbqtm-moo-nqvivkqvo-434[moqvk] +gvaaz-cvooz-dpoubjonfou-415[mcnzb] +pbafhzre-tenqr-enoovg-grpuabybtl-169[bktjl] +uwtojhynqj-gzssd-ywfnsnsl-723[phguv] +dlhwvupglk-zjhclunly-obua-klwhyatlua-227[luahk] +vhkkhlbox-vhehkyne-vahvhetmx-ybgtgvbgz-215[hvbeg] +qlm-pbzobq-gbiivybxk-lmboxqflkp-809[blqik] +forwcoqhwjs-qvcqczohs-ghcfous-792[mtuqn] +eqpuwogt-itcfg-dwppa-fgrnqaogpv-570[gpafo] +lxuxaodu-bljenwpna-qdwc-jwjuhbrb-121[rbqfd] +ykhknbqh-xqjju-oanreyao-680[ahjkn] +ugfkmewj-yjsvw-hdsklau-yjskk-kzahhafy-918[kahjs] +gbc-frperg-fpniratre-uhag-fnyrf-897[dskta] +myxcewob-qbkno-lexxi-wkxkqowoxd-770[spdoc] +cqwdujys-fbqijys-whqii-huiuqhsx-998[uhebs] +ckgvutofkj-igtje-iugzotm-rghuxgzuxe-774[gutei] +excdklvo-lexxi-psxkxmsxq-302[ypsmx] +mbiyqoxsm-dyz-combod-mkxni-mykdsxq-zebmrkcsxq-692[fnhpz] +zlkprjbo-doxab-gbiivybxk-xkxivpfp-809[ydtxn] +wdjcvuvmyjpn-ezggtwzvi-hvmfzodib-603[vzdgi] +njmjubsz-hsbef-fhh-bobmztjt-649[mxkjw] +wsvsdkbi-qbkno-oqq-ecob-docdsxq-796[rglok] +htsxzrjw-lwfij-gfxpjy-fsfqdxnx-307[uyteb] +wpuvcdng-ejqeqncvg-yqtmujqr-882[svamn] +tagzsrsjvgmk-hdsklau-yjskk-ugflsafewfl-606[tysrn] +kwtwznct-akidmvomz-pcvb-zmamizkp-200[skpom] +dpmpsgvm-dboez-dpbujoh-fohjoffsjoh-311[fknst] +rnqnyfwd-lwfij-hmthtqfyj-xytwflj-567[gzkol] +zntargvp-pnaql-hfre-grfgvat-923[yijbm] +dzczkrip-xiruv-treup-tfrkzex-drerxvdvek-347[vrmsu] +ajyqqgdgcb-afmamjyrc-sqcp-rcqrgle-522[cqagr] +pelbtravp-ohaal-erprvivat-715[jnbmz] +irdgrxzex-sleep-ivrthlzjzkzfe-113[bmsnw] +eqpuwogt-itcfg-tcddkv-fgxgnqrogpv-804[gtcdf] +cvabijtm-moo-ivitgaqa-226[darfu] +ytu-xjhwjy-xhfajsljw-mzsy-zxjw-yjxynsl-281[wzjeb] +fkqbokxqflkxi-yxphbq-obxznrfpfqflk-809[dcasb] +gokzyxsjon-sxdobxkdsyxkv-mkxni-ecob-docdsxq-276[zypso] +ibghopzs-suu-kcfygvcd-402[cgsub] +tfiifjzmv-srjbvk-uvjzxe-581[sovtj] +gntmfefwitzx-gfxpjy-xmnuunsl-619[fnxgm] +lgh-kwujwl-bwddqtwsf-vwhsjlewfl-788[tlejf] +hjgbwuladw-wyy-ghwjslagfk-164[wgahj] +nzwzcqfw-ojp-qtylyntyr-431[ynqtw] +sbejpbdujwf-sbccju-vtfs-uftujoh-909[kujit] +vhkkhlbox-wrx-ftkdxmbgz-241[uwzex] +lahxpnwrl-bljenwpna-qdwc-cajrwrwp-381[yjzno] +lugjuacha-jfumncw-alumm-jolwbumcha-838[uamcj] +gvcskirmg-glsgspexi-jmrergmrk-828[smeyi] +thnulapj-ihzrla-thyrlapun-955[ahlnp] +sno-rdbqds-bzmcx-btrsnldq-rdquhbd-937[dbqrs] +vdzonmhydc-eknvdq-dmfhmddqhmf-781[dmhfn] +iehepwnu-cnwza-xqjju-ykjpwejiajp-368[jepwa] +dfcxsqhwzs-dzoghwq-ufogg-cdsfohwcbg-974[gcdfh] +sbqiiyvyut-tou-jhqydydw-608[okbzs] +htsxzrjw-lwfij-gzssd-uzwhmfxnsl-801[nmtjq] +hvbizodx-rzvkjiduzy-xviyt-yzqzgjkhzio-213[zivyd] +ajmrxjlcren-ljwmh-lxjcrwp-bqryyrwp-745[kheat] +vkppo-shoewudys-tou-udwyduuhydw-556[udowy] +dpotvnfs-hsbef-dmbttjgjfe-gmpxfs-nbslfujoh-363[qapli] +glrcplyrgmlyj-djmucp-qrmpyec-158[clmpr] +emixwvqhml-xtiabqk-oziaa-wxmzibqwva-642[rkpba] +qczcftiz-dzoghwq-ufogg-aofyshwbu-298[lmcuy] +cvabijtm-zilqwikbqdm-akidmvomz-pcvb-nqvivkqvo-746[ynxzo] +pkl-oaynap-acc-wjwhuoeo-134[jxlai] +xjmmjndqz-kgvnodx-bmvnn-rjmfncjk-291[njmdk] +ejpanjwpekjwh-nwxxep-nayaerejc-550[lisvd] +htwwtxnaj-htsxzrjw-lwfij-hfsid-htfynsl-wjfhvznxnynts-541[hntwf] +mbiyqoxsm-mkxni-mykdsxq-crszzsxq-770[zhowm] +rmn-qcapcr-ucynmlgxcb-cee-pcqcypaf-886[cpaem] +rtqlgevkng-ejqeqncvg-fgxgnqrogpv-466[zktns] +fydelmwp-mfyyj-nfdezxpc-dpcgtnp-769[anfej] +yuxufmdk-sdmpq-otaoaxmfq-pqbxakyqzf-742[ohxti] +vxupkizork-igtje-xkgiwaoyozout-592[bmwjf] +veqtekmrk-tvsnigxmpi-gerhc-gsexmrk-gywxsqiv-wivzmgi-802[dglps] +nsyjwsfyntsfq-uqfxynh-lwfxx-ijuqtdrjsy-931[ymnhu] +gifavtkzcv-avccpsvre-fgvirkzfej-841[ypigz] +krxqjijamxdb-kdwwh-mnyjacvnwc-641[krnma] +dszphfojd-ezf-sftfbsdi-805[fdszb] +xmrrq-tmffq-lwuzfgdgyq-372[fqgmr] +tagzsrsjvgmk-xdgowj-vwhsjlewfl-788[gjswl] +lsyrkjkbnyec-mkxni-nofovyzwoxd-614[knoyx] +dwbcjkun-mhn-bjunb-173[mykra] +vhehkyne-vtgwr-nlxk-mxlmbgz-319[eghkl] +bkzrrhehdc-bnqqnrhud-bzmcx-bnzshmf-otqbgzrhmf-677[xaszn] +oxmeeuruqp-bxmefuo-sdmee-abqdmfuaze-248[udtec] +jlidywncfy-mwupyhayl-bohn-uhufsmcm-500[yhmuc] +xjmmjndqz-zbb-mzvxlpdndodji-239[djmzb] +yuxufmdk-sdmpq-omzpk-qzsuzqqduzs-534[ofrpg] +tfejldvi-xiruv-vxx-uvgrikdvek-659[cnesm] +yaxsnlcrun-ajkkrc-anbnjalq-979[nmivs] +tvsnigxmpi-ikk-wivzmgiw-880[agunv] +mrxivrexmsrep-tpewxmg-kveww-viwievgl-698[evwim] +nglmtuex-yehpxk-labiibgz-241[begil] +zuv-ykixkz-ixeumktoi-igtje-iugzotm-aykx-zkyzotm-670[pjybl] +forwcoqhwjs-dzoghwq-ufogg-difqvogwbu-272[xkwoz] +ajyqqgdgcb-qaytclecp-fslr-bcqgel-886[mkvsi] +myxcewob-qbkno-mkxni-mykdsxq-wkbuodsxq-770[zmijb] +uwtojhynqj-kqtbjw-yjhmstqtld-333[jtqhw] +wsvsdkbi-qbkno-lkcuod-dbksxsxq-406[biaoe] +gpbepvxcv-rpcsn-rdpixcv-advxhixrh-895[dcwgp] +muqfedyput-isqludwuh-xkdj-mehaixef-712[betdq] +ckgvutofkj-inuiurgzk-xkgiwaoyozout-956[sazyo] +wfruflnsl-uqfxynh-lwfxx-btwpxmtu-541[fxluw] +qfmcusbwq-rms-igsf-hsghwbu-246[sbfgh] +ynukcajey-nwxxep-qoan-paopejc-602[htmbv] +ujqgywfau-uzgugdslw-jwkwsjuz-138[newms] +yflexwxoalrp-zxkav-cfkxkzfkd-705[ctnsy] +vjpwncrl-lqxlxujcn-mnyuxhvnwc-953[nawmz] +willimcpy-wuhxs-lyuwkocmcncih-786[cilwh] +mtzslklcozfd-clmmte-cpnptgtyr-119[tjkgv] +xlrypetn-awldetn-rcldd-cplnbftdtetzy-795[tdlen] +vkppo-rqiauj-huqsgkyiyjyed-452[yijkp] +vxupkizork-lruckx-jkbkruvsktz-124[eumyz] +diozmivodjivg-agjrzm-nzmqdxzn-915[otpfl] +owshgfarwv-hdsklau-yjskk-klgjsyw-918[qcjim] +zuv-ykixkz-igtje-iugzotm-zkinturume-202[plvqf] +zlilocri-oxyyfq-bkdfkbbofkd-835[bswmn] +ziuxioqvo-lgm-amzdqkma-798[maioq] +xqvwdeoh-sodvwlf-judvv-ghyhorsphqw-517[hvdow] +ovbunmneqbhf-enqvbnpgvir-onfxrg-qrfvta-507[nvbfq] +gbc-frperg-pnaql-genvavat-351[pmzkq] +eadalsjq-yjsvw-jsttal-suimakalagf-580[zjghy] +rdadguja-rpcsn-rdpixcv-apqdgpidgn-245[dpagr] +tbxmlkfwba-pzxsbkdbo-erkq-abpfdk-523[vifrq] +ocipgvke-uecxgpigt-jwpv-ugtxkegu-544[abfsh] +ovbunmneqbhf-zvyvgnel-tenqr-wryylorna-ybtvfgvpf-481[hxymg] +pinovwgz-xjinphzm-bmvyz-agjrzm-ozxcijgjbt-681[cqlnu] +tinnm-qobrm-ghcfous-220[hyczt] +iuruxlar-yigbktmkx-natz-ykxboiky-748[kixya] +bkzrrhehdc-bzmcx-bnzshmf-cdrhfm-209[hbcmr] +gpsxdprixkt-tvv-uxcpcrxcv-973[xcpvr] +forwcoqhwjs-rms-hfowbwbu-974[stzrm] +zovldbkfz-fkqbokxqflkxi-mixpqfz-doxpp-cfkxkzfkd-705[tsmfo] +vetllbybxw-lvtoxgzxk-angm-ftgtzxfxgm-371[sbemy] +hwbba-ejqeqncvg-tgugctej-232[iyrqv] +vqr-ugetgv-lgnnadgcp-wugt-vguvkpi-596[gvunp] +xgvnndadzy-wpiit-yzndbi-343[rawyd] +jxdkbqfz-oxyyfq-qbzeklildv-107[qbdfk] +wlsiayhcw-luvvcn-mufym-656[jbvne] +surmhfwloh-fdqgb-ghvljq-621[ymnve] +mvkccspson-bkllsd-vklybkdybi-432[yscux] +dszphfojd-sbccju-dvtupnfs-tfswjdf-129[itbfs] +lsyrkjkbnyec-lexxi-crszzsxq-978[sxcek] +qlm-pbzobq-mixpqfz-doxpp-zlkqxfkjbkq-211[satyb] +bknsykmdsfo-nio-kmaescsdsyx-744[tspif] +bpvctixr-rpcsn-rjhidbtg-htgkxrt-713[rtbcg] +sebehvkb-rqiauj-udwyduuhydw-140[udbeh] +zhdsrqlchg-fdqgb-hqjlqhhulqj-387[zptrs] +qxdwpopgsdjh-rpcsn-sthxvc-635[nbixj] +pualyuhapvuhs-msvdly-klzpnu-721[ulpah] +sbqiiyvyut-shoewudys-isqludwuh-xkdj-jhqydydw-894[dysuh] +wsvsdkbi-qbkno-lexxi-dbksxsxq-614[onzwh] +ydjuhdqjyedqb-rqiauj-efuhqjyedi-894[ocdpe] +kwzzwaqdm-ntwemz-wxmzibqwva-434[nwzml] +qspkfdujmf-fhh-nbobhfnfou-571[zpyau] +bxaxipgn-vgpst-tvv-detgpixdch-583[xwiac] +qfmcusbwq-dfcxsqhwzs-xszzmpsob-fsqswjwbu-402[lstrx] +dpmpsgvm-dboez-sfdfjwjoh-337[dfjmo] +dzoghwq-ufogg-fsgsofqv-636[gfoqs] +nzwzcqfw-dnlgpyrpc-sfye-qtylyntyr-509[milhd] +xgsvgmotm-pkrrehkgt-vaxingyotm-176[jubcm] +xgsvgmotm-jek-cuxqynuv-644[soxwn] +cxy-bnlanc-lahxpnwrl-kdwwh-fxatbqxy-485[zamhj] +irgyyolokj-inuiurgzk-sgtgmksktz-982[vzkrq] +xgvnndadzy-xcjxjgvoz-xjiovdihzio-733[ozhyu] +gvcskirmg-nippcfier-xiglrspskc-334[bastq] +zlilocri-gbiivybxk-obxznrfpfqflk-367[ntyda] +pyknyegle-pyzzgr-pcqcypaf-886[nxvzy] +zhdsrqlchg-gbh-frqwdlqphqw-361[nqzts] +kyelcrga-cee-yaosgqgrgml-808[izdqr] +hplazytkpo-prr-cpnptgtyr-379[prtya] +""" +let validRooms = input + .components(separatedBy: "\n") + .map { split($0) } + .filter { calculateChecksum($0.room) == $0.checksum } + +let part1 = validRooms + .reduce(0) { $0 + $1.sector } + +part1 + +func rotate(_ character: Character, count: Int) -> Character { + let a: Character = "a" + if character == "-" { + return " " + } + + guard let ascii = character.asciiValue else { return character } + let num = (Int(ascii - a.asciiValue!) + count) % 26 + + return Character(UnicodeScalar(a.asciiValue! + UInt8(num))) +} + +let decrypted = validRooms.map { room in + (room: String(room.room.map { rotate($0, count: room.sector) }), sector: room.sector) +} + + decrypted + .first { $0.room.contains("northpole") } + + + diff --git a/2016/AoC2016.playground/Pages/Day 5.xcplaygroundpage/Contents.swift b/2016/AoC2016.playground/Pages/Day 5.xcplaygroundpage/Contents.swift new file mode 100644 index 0000000..9f3980b --- /dev/null +++ b/2016/AoC2016.playground/Pages/Day 5.xcplaygroundpage/Contents.swift @@ -0,0 +1,37 @@ +import CryptoKit +import Foundation + +func char(_ string: String) -> (String, String)? { + let md5 = Insecure.MD5.hash(data: Data(string.utf8)) + return md5.withUnsafeBytes { ptr in + guard ptr[0] == 0 && ptr[1] == 0 && ptr[2] & 0xf0 == 0 else { return nil } + return ( + String(ptr[2] & 0x0f, radix: 16, uppercase: true), + String((ptr[3] >> 4) & 0x0f, radix: 16, uppercase: true) + ) + } +} + +var result1 = "" +var result2 = "________" +for i in 0... { + if let (first, second) = char("abbhdwsy\(i)") { + if result1.count < 8 { + result1 += first + } + + if let i = Int(first), 0..<8 ~= i { + let index = result2.index(result2.startIndex, offsetBy: i) + if result2[index] == "_" { + result2.replaceSubrange(index...index, with: second) + } + } + + if result1.count == 8 && !result2.contains("_") { + break + } + } +} + +result1 +result2 diff --git a/2016/AoC2016.playground/Pages/Day 6.xcplaygroundpage/Contents.swift b/2016/AoC2016.playground/Pages/Day 6.xcplaygroundpage/Contents.swift new file mode 100644 index 0000000..ab70c98 --- /dev/null +++ b/2016/AoC2016.playground/Pages/Day 6.xcplaygroundpage/Contents.swift @@ -0,0 +1,649 @@ +let input = """ +focdealm +ggsipflx +rvibwxbm +vqrfyyrh +hsjtzpgs +ozymxpoy +jiecwags +lztseufl +dfwibwsn +skiuhnwl +kamgzqog +axeqncwa +gobivxto +nwgoryhd +tzrlitrq +uzoldxbv +zsteobha +pfcgdqkg +prcqlunp +iwivemkh +vpkilupm +ewuznabz +veaptost +cyvirffe +ejhhqfng +ibsqztgg +xzczkboh +bckhbodf +vbycgonv +esmoyyku +unccgdgj +cqwnqlzs +edoqmykb +bkvzlhyq +yzrspisn +zlzibhca +povnweaf +muyfegxe +oaojqfrl +gwesjxws +rjknfyeh +dkquvctc +cfuzhxoj +tdzzzfqc +lzjzsyni +wjfxckkf +xmhyjhop +kmtllzxs +yohearbj +ilmvyxgn +erczytzw +kuetjsba +vwkpollq +tujwluzc +jlvedjcp +acmoaoji +gqoliyen +agckavhf +ottamfdm +jxwlyotw +tdpsrapj +carwwmqc +ykaipjdj +zdfrbduu +vwiiosud +uoixglbw +yegbwxjb +wbpqqqfv +wpynmyqi +aqdkscgd +oghnbnnf +duftexbb +ttvbofay +jferymwy +hqzimpiq +sifyogml +nymxqbws +dhdlhhqp +urtuhcrj +giwcunfq +fxgretsl +maihqkpk +pdxfkcru +xixtthag +vuzxqzzi +wxxeleug +xpopxkzo +hgcsyuad +xcbydxnx +kxocfakp +erxdajeq +tliakzhh +iygbbuxs +qlgqthpp +duzzptwk +gfnqdotc +kjayxeqf +fehitfar +yemshppn +igtczmmw +gfajhxch +bslzmgwo +xpmhmirx +yhlwlupt +nymajupw +tlhgdefw +bqkudizc +lucrhmnm +svkoaqzz +luggfivf +ckawtiwy +eeivawhj +qdmmmvdl +quezzzqa +oimsfsuo +jdvcknqu +aupohqbk +llwsasnz +zlpljtjl +xfylqxlv +zqppxkul +varoizrq +yxryqwso +gsscetca +gcbdgqyo +hsdnvteo +pxtoreoc +rwjdkwzs +zdgofynf +polyntkx +jhulgrnf +ycbzpdpw +bzvdbwsy +vydjbucs +rxadwwuo +ccnvzjak +nombazjc +lbxwdasr +cbdlkiha +sdomdvow +phjnkkkp +nmtmrnyz +nxsvmcwk +hqimjvir +vmjhhuuv +zilhgqlb +gfgbibgg +imxxugfe +wtaffkbj +lyguqvjs +pejslhls +qjnefwii +oanqnnnc +kcjyfwxm +zoxjwxmw +ihmokcrm +uebsbhfr +fxvjiorr +ebjiucyt +ofutlokv +mdfnsuyr +dzviwqdk +umwyaijz +hdqwfalt +qtyrouwh +lkzcrtwa +dtqvwzke +buplmmca +xxepjuvj +omyotlar +ytndbwhi +sbntigym +mphrnsme +xiymeoxr +kcujxcih +bydnchgk +snwdjlip +yljsymtv +tyhbpoab +zlqhvzxl +akbtnzop +xnpjmysj +znhednen +vbcsocrm +ywjajour +ejngbqev +rstykfhc +cbcnoexq +mzlxvxwj +vfdqaalp +nbszzozr +dqpyojid +hfuqilbl +uoackeup +shqkcsmr +jbdasroe +fmlkvsnt +cnomxkvk +unbsfncq +bnzxltxe +bbadfyin +skmhtmhn +xkypwglb +flbfiioo +fzywneyg +srngxbut +qtodeuxg +xvawfqli +nyfmrdsn +rdjysbxj +spmezvvj +ofoivcuc +touzgqzx +mfqyzagc +dmaurbdv +gqnrlyuw +wuppusoh +qgstihuy +uldnlrpi +xaskgwim +djjrphid +qjhmctyu +osfenjdn +zvoahhkk +xiuyatyn +fepobmjh +kmugpjpw +aikpozqs +kmgmazif +gbzlodzb +hrocqadn +noekklwb +vzwhnkvx +osrspxsc +iekmqgua +xeehndee +quttqjav +htoptweo +cyicmwba +jltlwlyy +qvccdkig +bibggekq +kwfwvrfg +eycwlcup +murgcddl +lyukeubx +twbpzoyg +dkcvzele +fozhtmcz +frugeivm +qjbhpdpr +tgkkeroo +ryuvgqgc +jhixykqn +wsebmcrn +wohtjpgu +isflpxxt +xggwmamk +tfwdsrfe +cpjvcghr +fekhexdb +zcwzqofh +awnfiqzu +ihekvqby +rqaqajij +cumouwzx +ccyrflxd +rredygrk +patcpktn +mjnwuefa +tuhgyfsw +mjpxrgkx +hupfjqxo +mgkclcrf +jkmkhkci +nkcrwgqd +apmfiqpg +pxiawshv +ledhpfaz +btikmkwj +jwosopir +mgxftcte +phkbcdex +uakftnbh +fnkmdecn +swrvbjwj +hphskevf +trnpfdmy +odvmmqss +akvqgemq +zyqlkwdm +nbnaqjsa +mbnogzyt +mchaxjxu +tcqqerqz +ayylasgq +zqbrjfli +ccjjnfat +lvlpdjqu +luiabalt +qsvkepvz +dtyobsiy +jkulvrnc +thwjbzkh +vvhrwbkx +fhxejrff +bacuriaz +grmtyude +feynnckb +hfdepyjn +lvsfflyc +xfrgfgeh +vqqybtba +ntlfjqjt +zadauvmg +itukkpqf +mrnnfgmf +hpjqvppo +dshgwmgb +pzxeoymv +nlokvrio +cgcaxffl +dvimsnxu +iczcvwho +lkxumswj +satmovog +ujwknitl +halkgpaa +pnttnodc +adsvsumi +jwerfpko +yhsjqytk +vpevemez +yvjmltwj +vdoeippw +siouxait +ftrspdpx +hptwqlmz +haewgrft +watbdvqz +eiptzrvr +msvbioso +dnjeoucg +qixvmlem +mqquklfq +sszagakl +khfbexqb +uysydrlc +inawynse +whuonlhq +eshukapj +vtrepdxm +pgjjcisd +puiunlts +replddlv +emjyyhmd +aahwhond +laneyzsj +jnlkdpyb +sqxrctuo +wmmyybvl +ldyvqldz +bzbrsdjr +ekxwhzte +gnpqywzz +afsfbtte +ggkbrgds +dlawfrbp +opypolpc +cqpxcfgh +ynmtlgvl +slfmicyv +ooguwxjc +tewmtlty +wcdwansw +ktercyvw +qrgxrzne +wvbhflls +dpfjwbmm +uigmcaow +ejzhkxic +fbewvcoh +jxbtcmwn +ywiktjqn +rftnjqpp +yalixnnw +srdsiwgy +pdpdrynx +ioroheqp +vpvvnmad +tqksxfsp +snzxciua +nrhtoskm +crfvapzk +wndbcxvf +syffkzmv +nneibkaf +unuvhnli +ujhdjkvs +gmyqgvdr +jedfxwje +bcshopnu +xgiprhyv +onibkkoq +riguljez +yodzrfeu +ogbwakaa +ymrltbxa +ourmuhrx +yxwixtuv +ptnxdvdm +oskvgexz +fbigwiaw +xctckzmy +khwiyvmw +qbqbtxpr +kavzlngz +bbklqvzt +rwlzppbq +upirhhca +ezlaqdgo +ieuynchi +qmjtojzq +qrricseq +hxkrsfmw +nssfpnws +tiaziudb +rvskpahe +pplmppvi +jxpyidio +teudseap +aclyhavi +yqafhkyd +drjhcqgu +zvfcfbjc +sqfuuezn +gwtsupqk +czakgbiy +wknfzbyj +ooxwycji +wxymanlx +ewbtpqtl +jmwnxydh +ceqdllqb +jhdbejmt +mazzsanu +uypyqlvh +itnrzbie +miuegdjz +tqxeipin +kbareizb +jgjxrycy +epshhech +oicruxsz +ptxgidha +bmgnvjtr +qvwzlmgq +cvwtdffi +ibzasmru +jfenrbjd +nrkgwvcz +hlmghdgd +emhdaicl +wdwrzocv +spwjcrud +dsgilvqn +phvmafqk +iiihsfff +uvcqgtyc +doxkrzzw +hktdpsbv +evqojani +kzapomdx +ewtbrdtb +rgshzyxq +ltinzxld +cazrrlcu +irfxunbt +rmqcsbvm +gddexbsb +qladhkpd +xlvzpmab +wirftlbu +fxfqjubx +sgogtrcb +zlqxxwfy +djgtbihr +gslssgsu +wytydgje +vmovsmdh +ogyiuirh +mtfxzrrx +kcpfbemc +blreqhel +zjsjqqyh +ciqwtpvk +yjcinpaa +wxbxagui +aqbjqmig +ybaeuhew +mjzpnttv +mevjcrqp +fpmgzgco +gklesvof +jzfssvvx +aynfmwhl +euosbnhf +lcebcalt +kvsuuyyt +ltranzur +nlledtpz +vqdrgckr +yodxnjpt +uyznwnni +ckczwqkp +uxtjgoee +otdoyaxg +lbccbfgi +mhzjujrp +cekkthvf +fbvpuhog +nzfannep +rnnqusey +aiocsiyy +uvcbtfwr +bzqirxrg +qnmfgshq +inyevvbn +wswvhglx +huxqxwwb +fdutjnfq +adajhsjk +ahllesij +tcfawzgu +zfdgmtry +byznvpfp +duunxdad +kgadxmdf +ptfaovzv +uhuvlivs +xcoqrmeu +nnnlvmga +zwrbykek +lvpumidd +hieivrnt +vrwqsvci +npbplsvm +ougzcgty +rzvgzooo +iehafkto +rzspzjne +dzvvhvld +fgkmmfda +xjsnnlmd +igvjrsuk +narcempo +xrhoiugu +ghxbpomr +waxtcbcg +tmqgsejx +dobaxhel +mpzgjyww +ehyfvnaz +zxrdlajd +hfquyvok +aqxxdcqv +vjbukram +rjvttibk +pryxgzrd +hcqpxgee +qjgqvoal +wmbuvcty +zpgxmdiu +foequjps +lmdjwyfj +mhqudwzv +lrzkttsw +owyatnru +gwppbbfb +fvlkdsjk +pwhlvjtb +zgldiibp +sokjzgvq +kfourwqm +nfqoyvsz +hdiwmrhk +nnapsbht +blqjjtwy +aknoauti +uhgowkyx +uypyjorh +blfeioot +kzbukpxk +kfmbxgle +zmegahum +upjouzrg +tkedvzfy +bxwxuutn +rrwxobjp +jdujkhox +jkycewdx +ivlbibns +qjshodxf +bektjeou +wotjfgfl +rjrcfiug +aklhubjf +kwpnaezt +lsqvzdom +pxzvorct +vcxazyzs +xsszjsjq +ydgfsukl +gqxpcrla +rvsoxkhy +rschupcm +ivlpikxi +etrnyvkh +byzymjms +qagdcqww +sxnausxs +giuitchj +qgolehtg +keeskeyb +""" + .split(separator: "\n") + +var counts: [[Character: Int]] = Array(repeating: [:], count: 8) +for line in input { + for (index, ch) in line.enumerated() { + counts[index][ch, default: 0] += 1 + } +} + +let result1 = String(counts + .map { + $0.max { a, b in a.value < b.value }?.key ?? "_" + }) + +let result2 = String(counts + .map { + $0.min { a, b in a.value < b.value }?.key ?? "_" +}) + +result1 +result2 + + diff --git a/2016/AoC2016.playground/contents.xcplayground b/2016/AoC2016.playground/contents.xcplayground new file mode 100644 index 0000000..527386f --- /dev/null +++ b/2016/AoC2016.playground/contents.xcplayground @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/2016/AoC2016.playground/playground.xcworkspace/contents.xcworkspacedata b/2016/AoC2016.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..f56a9f7 --- /dev/null +++ b/2016/AoC2016.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + +