diff options
author | kaiwu <kaiwu2004@gmail.com> | 2022-12-20 19:28:22 +0800 |
---|---|---|
committer | kaiwu <kaiwu2004@gmail.com> | 2022-12-20 19:28:22 +0800 |
commit | 4f62fff4afa338cefad3729eebd22fbffd98e002 (patch) | |
tree | 05ba04c1bb356399560423a0b0f3a1234ea67554 | |
parent | 9950ca0e4d9ce53077b7add28e9baead0b935d05 (diff) | |
download | advent-of-code-4f62fff4afa338cefad3729eebd22fbffd98e002.tar.gz advent-of-code-4f62fff4afa338cefad3729eebd22fbffd98e002.zip |
2022 day20
-rw-r--r-- | src/2022/day20/README.md | 98 | ||||
-rw-r--r-- | src/2022/day20/aoc.cpp | 16 | ||||
-rw-r--r-- | src/2022/day20/aoc.h | 146 | ||||
-rw-r--r-- | src/2022/day20/input | 1 | ||||
-rw-r--r-- | src/2022/day20/input0 | 1 | ||||
-rw-r--r-- | test/test_2022.cpp | 8 |
6 files changed, 261 insertions, 9 deletions
diff --git a/src/2022/day20/README.md b/src/2022/day20/README.md index 8b13789..913ed17 100644 --- a/src/2022/day20/README.md +++ b/src/2022/day20/README.md @@ -1 +1,99 @@ +--- Day 20: Grove Positioning System --- +It's finally time to meet back up with the Elves. When you try to contact them, however, you get no reply. Perhaps you're out of range? +You know they're headed to the grove where the star fruit grows, so if you can figure out where that is, you should be able to meet back up with them. + +Fortunately, your handheld device has a file (your puzzle input) that contains the grove's coordinates! Unfortunately, the file is encrypted - just in case the device were to fall into the wrong hands. + +Maybe you can decrypt it? + +When you were still back at the camp, you overheard some Elves talking about coordinate file encryption. The main operation involved in decrypting the file is called mixing. + +The encrypted file is a list of numbers. To mix the file, move each number forward or backward in the file a number of positions equal to the value of the number being moved. The list is circular, so moving a number off one end of the list wraps back around to the other end as if the ends were connected. + +For example, to move the 1 in a sequence like 4, 5, 6, 1, 7, 8, 9, the 1 moves one position forward: 4, 5, 6, 7, 1, 8, 9. To move the -2 in a sequence like 4, -2, 5, 6, 7, 8, 9, the -2 moves two positions backward, wrapping around: 4, 5, 6, 7, 8, -2, 9. + +The numbers should be moved in the order they originally appear in the encrypted file. Numbers moving around during the mixing process do not change the order in which the numbers are moved. + +Consider this encrypted file: + +1 +2 +-3 +3 +-2 +0 +4 +Mixing this file proceeds as follows: + +Initial arrangement: +1, 2, -3, 3, -2, 0, 4 + +1 moves between 2 and -3: +2, 1, -3, 3, -2, 0, 4 + +2 moves between -3 and 3: +1, -3, 2, 3, -2, 0, 4 + +-3 moves between -2 and 0: +1, 2, 3, -2, -3, 0, 4 + +3 moves between 0 and 4: +1, 2, -2, -3, 0, 3, 4 + +-2 moves between 4 and 1: +1, 2, -3, 0, 3, 4, -2 + +0 does not move: +1, 2, -3, 0, 3, 4, -2 + +4 moves between -3 and 0: +1, 2, -3, 4, 0, 3, -2 +Then, the grove coordinates can be found by looking at the 1000th, 2000th, and 3000th numbers after the value 0, wrapping around the list as necessary. In the above example, the 1000th number after 0 is 4, the 2000th is -3, and the 3000th is 2; adding these together produces 3. + +Mix your encrypted file exactly once. What is the sum of the three numbers that form the grove coordinates? + +--- Part Two --- +The grove coordinate values seem nonsensical. While you ponder the mysteries of Elf encryption, you suddenly remember the rest of the decryption routine you overheard back at camp. + +First, you need to apply the decryption key, 811589153. Multiply each number by the decryption key before you begin; this will produce the actual list of numbers to mix. + +Second, you need to mix the list of numbers ten times. The order in which the numbers are mixed does not change during mixing; the numbers are still moved in the order they appeared in the original, pre-mixed list. (So, if -3 appears fourth in the original list of numbers to mix, -3 will be the fourth number to move during each round of mixing.) + +Using the same example as above: + +Initial arrangement: +811589153, 1623178306, -2434767459, 2434767459, -1623178306, 0, 3246356612 + +After 1 round of mixing: +0, -2434767459, 3246356612, -1623178306, 2434767459, 1623178306, 811589153 + +After 2 rounds of mixing: +0, 2434767459, 1623178306, 3246356612, -2434767459, -1623178306, 811589153 + +After 3 rounds of mixing: +0, 811589153, 2434767459, 3246356612, 1623178306, -1623178306, -2434767459 + +After 4 rounds of mixing: +0, 1623178306, -2434767459, 811589153, 2434767459, 3246356612, -1623178306 + +After 5 rounds of mixing: +0, 811589153, -1623178306, 1623178306, -2434767459, 3246356612, 2434767459 + +After 6 rounds of mixing: +0, 811589153, -1623178306, 3246356612, -2434767459, 1623178306, 2434767459 + +After 7 rounds of mixing: +0, -2434767459, 2434767459, 1623178306, -1623178306, 811589153, 3246356612 + +After 8 rounds of mixing: +0, 1623178306, 3246356612, 811589153, -2434767459, 2434767459, -1623178306 + +After 9 rounds of mixing: +0, 811589153, 1623178306, -2434767459, 3246356612, 2434767459, -1623178306 + +After 10 rounds of mixing: +0, -2434767459, 1623178306, 3246356612, -1623178306, 2434767459, 811589153 +The grove coordinates can still be found in the same way. Here, the 1000th number after 0 is 811589153, the 2000th is 2434767459, and the 3000th is -1623178306; adding these together produces 1623178306. + +Apply the decryption key and mix your encrypted file ten times. What is the sum of the three numbers that form the grove coordinates? diff --git a/src/2022/day20/aoc.cpp b/src/2022/day20/aoc.cpp index 8d1d6ca..28b568f 100644 --- a/src/2022/day20/aoc.cpp +++ b/src/2022/day20/aoc.cpp @@ -2,8 +2,18 @@ namespace aoc2022 { -std::pair<int, int> day20(line_view) { - return {0, 0}; -} +std::pair<int, int64_t> day20(line_view file) { + message msg{file}; + msg.relocate(); + int n = msg.nth(1000)->value + msg.nth(2000)->value + msg.nth(3000)->value; + + message msg1{file}; + msg1.multiply(811589153); + for(auto i = 0; i < 10; i++) { + msg1.relocate(); + } + int64_t n1 = msg1.nth(1000)->value + msg1.nth(2000)->value + msg1.nth(3000)->value; + return {n, n1}; } +} // namespace aoc2022 diff --git a/src/2022/day20/aoc.h b/src/2022/day20/aoc.h index 85d05b0..60ee62d 100644 --- a/src/2022/day20/aoc.h +++ b/src/2022/day20/aoc.h @@ -1,7 +1,149 @@ #include "common.h" #include <vector> +#include <stdint.h> namespace aoc2022 { -std::pair<int, int> day20(line_view); -} +struct hook { + int64_t value = 0; + hook* prev = nullptr; + hook* next = nullptr; +}; + +struct message { + static const int LEN = 5000; + // static const int LEN = 7; + hook msg[LEN]; + hook* head = nullptr; + hook* zero = nullptr; + + void get_number(const char** pp, int64_t* d) { + const char* p = *pp; + int sign = 1; + if (*p == '-') { + sign = -1; + p++; + } + + while (*p >= '0' && *p <= '9') { + *d = *d * 10 + *p - '0'; + p++; + } + + *d *= sign; + *pp = p; + } + + void print() const noexcept { + hook* n = head->next; + while (n != head) { + printf("%ld ", n->value); + n = n->next; + } + printf("\n"); + } + + hook* get(int index) { + index %= LEN; + return &msg[index]; + } + + void put(hook* n, hook* x) { + x->prev->next = x->next; + x->next->prev = x->prev; + + x->next = n->next; + n->next->prev = x; + x->prev = n; + n->next = x; + } + + hook* next(hook* x, int64_t i) { + hook* n = x; + bool foward = i > 0; + i = std::abs(i) % (LEN - 1); + if (foward) { + while (i > 0) { + n = n->next; + if (n != head && n != x) { + i--; + } + } + } else { // i < 0 + while (i >= 0) { + n = n->prev; + if (n != head && n != x) { + i--; + } + } + } + return n; + } + + hook* nth(int n) { + hook* x = zero; + while(n > 0) { + x = x->next; + if (x != head) { + n--; + } + } + return x; + } + + void relocate() { + for (int i = 0; i < LEN; i++) { + hook* h = &msg[i]; + if (h->value != 0) { + hook* n = next(h, h->value); + // printf("%ld put to %ld and %ld\n", h->value, n->value, n->next->value); + put(n, h); + // print(); + } + } + } + + void multiply(size_t n) { + for (int i = 0; i < LEN; i++) { + msg[i].value *= n; + } + } + + message(line_view lv) { + const char* p = lv.line; + head = new hook; + head->value = INT32_MAX; + + hook* hs[LEN]; + for (int i = 0; i < LEN; i++) { + hs[i] = &msg[i]; + if (i == 0) { + head->next = hs[i]; + hs[i]->prev = head; + hs[i]->next = &msg[i + 1]; + } else if (i == LEN - 1) { + hs[i]->prev = &msg[i - 1]; + hs[i]->next = head; + head->prev = hs[i]; + } else { + hs[i]->prev = &msg[i - 1]; + hs[i]->next = &msg[i + 1]; + } + } + + int n{0}; + while (p < lv.line + lv.length) { + if (*p != ' ') { + get_number(&p, &hs[n]->value); + if (hs[n]->value == 0) { + zero = hs[n]; + } + n++; + } + p++; + } + } +}; + +std::pair<int, int64_t> day20(line_view); +} // namespace aoc2022 diff --git a/src/2022/day20/input b/src/2022/day20/input index e69de29..886a308 100644 --- a/src/2022/day20/input +++ b/src/2022/day20/input @@ -0,0 +1 @@ +7063 -550 5206 -9194 -2569 -6855 7665 -8312 6390 -3524 -5786 7603 1838 2701 5683 4157 -9026 -6516 9899 5160 3962 -1162 -466 -2916 -6315 809 -5096 -2875 6180 8432 -9854 -1497 3645 -236 4515 -3864 3886 7968 -5361 9607 -1095 4211 -5019 6147 -6264 -5326 4326 4882 2781 -7515 298 -1599 9138 -84 -412 -9911 7389 -1292 4626 -8365 7287 7936 -1782 7209 -8111 -7199 -6529 5365 -2853 6906 -5476 -4206 2328 -3070 -4633 5746 1482 -1770 586 8256 5420 197 -5374 6628 9790 6476 5879 3439 -7660 -3075 -1622 3836 2418 -3517 6843 -3082 1890 3072 1290 -9118 -5022 -745 -521 -6434 -4332 7229 -1607 -3311 4354 -3745 7686 -3579 -2096 -9745 -635 6913 9726 -4028 -1078 3100 -9843 -7039 -5052 6766 3175 -8387 -7413 2540 -6695 -9327 1201 8256 -7311 -2596 2175 -5318 -4318 841 -4772 6657 8476 -7990 7126 2775 -3061 2578 1742 2897 3904 -721 -4376 -8350 -9730 -4003 -5553 -6864 -646 -2025 -5015 -9636 -1000 -1754 7717 -1574 -7571 -5071 -4730 -5290 -3307 5742 -9826 -9902 -1473 4418 -140 369 -3748 -8314 3525 8045 3565 8358 -2754 -8309 -8074 -1666 2768 -5722 3958 2156 4752 -7856 8223 4542 -267 -6885 -6376 8726 7861 3203 -591 -8771 700 -6364 -5796 -7663 -3555 6828 -577 2026 -6795 -4926 4035 -3482 -9803 -7421 3895 9720 7767 -8026 3759 -5122 5585 8971 7126 7983 -6124 -1936 4990 -426 7968 -2533 -4409 -8074 8783 3843 -9389 -9360 -5768 -3597 6450 5377 4912 -3351 -6401 1466 -1719 9844 -9507 1109 5324 3322 118 -9594 -2663 -4229 -3804 5785 -613 -8364 2527 -4500 6447 -358 8187 -132 5572 3415 8820 -9821 -388 -972 9985 8026 1012 2554 6264 1067 -4189 -6622 3533 -752 -7277 5850 -5562 -50 5377 -2192 -4696 -5372 -2924 9676 7742 -6398 -9092 -4274 4650 6546 -7158 5143 5655 6754 8430 -1000 -7030 1366 9112 -7759 178 8302 -863 3495 2584 6261 3989 5683 -7575 -5726 -7813 8050 2781 7403 -1600 3836 -1329 3277 6574 1824 4308 -2302 7540 119 -4198 -9902 1506 -9073 -412 -3757 -8915 -3983 -9016 2619 -7916 -84 9475 8043 -887 8538 1969 -3159 -887 -7908 1832 -5742 -2848 -9652 4796 -6189 2759 6300 -1506 -4081 4411 9306 -2150 717 8292 7929 -255 8223 -4669 1911 9715 -285 -8298 -2188 4485 -4885 1673 8243 -920 25 -5998 -616 -409 8334 9838 6397 3534 3400 -2286 5988 1506 4164 -2709 2262 -3236 -4363 -3119 -1014 3832 -2983 -9832 -5461 -2814 4797 7324 582 1698 -1631 1880 -5422 2081 4902 1605 5905 -7916 -3843 8834 5549 -3817 3868 6082 -4671 1855 -813 5213 -508 5689 9643 -8221 -2478 8394 -4661 3552 4405 -8329 2973 -2728 2389 -9857 -5303 -263 5324 -8863 5721 8093 8525 -4252 8182 -7750 -3812 -7362 6928 -7399 2102 8012 7745 -5003 8388 -2535 -5701 -1924 6366 -4643 8439 5324 934 7440 -8627 -3414 9607 9942 1609 -8332 563 1417 -7334 -8046 -8062 -4035 7112 7047 -1048 1992 5784 -2949 6264 9537 8678 1672 -3864 214 -51 1341 9523 9665 9952 -1640 -626 -3227 -9991 8511 2831 -788 8587 -2885 -4944 -4461 3353 158 6660 1014 -5166 -9028 -8782 -5184 -5024 1692 3009 -7619 513 9101 3462 6193 -9820 -4361 4520 -7189 158 2765 -8958 331 9298 -6939 6810 -6104 7458 -9189 -5642 -5400 -6829 -8086 -9598 -4453 9411 6274 -5303 9431 2095 -6902 1698 -2900 983 -8750 4259 3503 6612 4834 -6598 -190 -5541 -1612 2292 -7532 8243 7359 4296 736 2454 -6120 -4971 -2729 2083 7050 5478 -3944 -3559 -221 -4443 -5622 -9180 -5562 -7841 -8372 -7126 2206 -4931 -9098 2416 -6539 -3062 838 4909 -3585 8329 -5229 -155 5017 -183 -1881 -7013 -5226 -3664 -8141 -2806 -5360 4680 6767 1832 -1883 9548 6135 -2752 -8537 -496 591 -5142 7108 -3237 7867 -4171 -9062 2749 8683 -267 6378 -1460 -7208 -2232 4181 -7694 -728 7684 -6305 -7265 6397 7042 4645 -902 2844 -7662 -5610 2490 -8397 6239 -1107 6345 7769 -5953 -1925 1273 394 9922 -8556 -5220 5018 -3328 8578 -6957 -3703 4000 -927 -2503 -4848 5911 7668 -3822 -9783 -5327 6655 -941 2585 9843 249 4289 8189 9090 7598 7625 2764 -8805 9546 -9725 4005 1668 8861 6558 -2805 -7692 -1167 91 2542 7951 926 -3015 5638 3255 -2225 -7839 2987 7585 8132 5488 -6173 7344 1656 -94 -324 7389 6366 5910 -3126 5050 9715 -9780 7409 -8293 -8163 4345 4930 1207 -8264 -731 8724 3658 7612 -9816 4680 2892 6825 5463 2292 -7966 197 -2079 8925 -3731 -4343 6972 7357 4110 5918 6970 -3328 -4284 -4747 -1732 -9242 7879 9138 7438 6997 1343 -2948 -6812 -3328 -9756 2085 3632 -1773 9418 -3683 1668 6658 8842 -246 5228 2239 9531 9033 -3590 -1327 -9219 9040 9658 8358 -2861 -4104 -2666 4449 701 1159 -5636 -4648 6973 5538 -7157 -9062 9044 7665 5031 502 -4963 -5643 475 -2886 6359 5069 -5900 -6585 6759 8990 -7882 3226 7983 -872 -7651 6832 -9505 -2414 -4324 4241 -3508 -5315 344 -8386 3259 -7269 9930 -5356 -4468 -1701 6502 3996 8972 -7908 -7322 6502 -6393 5696 6965 -1521 7703 3392 3512 4089 -2772 2171 8124 1138 4520 1862 2318 -2028 -4862 -2225 -7882 7961 3370 -4987 -9698 5693 -1059 -5315 -1914 2759 8166 6074 1143 5649 -2387 -3681 1473 6909 8900 5050 -1678 -4824 2641 -3882 4122 5104 4320 2666 9184 -1093 4377 -3780 -9718 -8556 5689 -2718 -1801 2623 2191 7737 -9264 4238 -6591 6748 -5217 -7839 3258 6769 -496 551 7072 4796 4125 -8986 -8419 -8303 -386 9563 6191 -7958 4441 4041 -5488 9399 8615 6440 7363 -8037 -9718 4763 9734 1039 1986 -9974 1078 8494 6652 572 5734 -7879 -9862 8288 -1069 -7450 1386 2263 5887 1729 -4332 -6375 -5307 -8559 8667 -4072 9662 -2871 5698 -2557 -8141 -7969 -5089 7501 -9189 692 1450 -8740 -113 -2378 -802 -5315 6188 9637 -1753 -8837 -8983 -406 8498 820 -7352 3962 -8662 -2918 6344 -5907 3490 -6227 -6495 -9294 435 4298 -8332 7966 4396 2016 -7126 6759 4219 -5217 -303 -2775 3462 -4596 -8858 -9890 -9261 -8372 -1056 8685 -4002 8209 9864 4349 8779 -7399 6457 8288 7002 440 -7309 -7094 -5500 9073 -8797 -7035 -3060 -7364 -7076 6697 -8649 8006 -6094 -1044 6397 -488 -6331 3136 5767 -272 7359 -5340 -8 6513 1699 -9441 -200 -9490 -81 -3546 -9543 5840 4570 9153 9166 1668 -8887 -7145 -6185 -5461 5466 -6516 3672 9213 9075 650 5888 7506 -7022 -2306 5444 7064 1490 8926 8640 3274 -3121 -1599 -7695 2923 4720 940 -1364 -992 -2105 1201 9819 -7972 -613 4108 2389 -6492 3343 2093 -4145 7562 -2918 -9341 -2026 -2651 2596 7883 -2441 -7488 153 1466 -5999 -6284 1019 -4577 4440 -9538 -604 7426 -4343 2580 -3166 -301 -31 -5953 -4033 -4193 7436 2779 -6443 -9284 4903 -6196 1567 9753 -149 5241 -8669 8146 9412 -8519 633 9424 4790 8227 5119 -2923 6740 -3848 -7421 9150 -4155 -8617 6094 5260 4529 -2567 -2072 -8861 -3847 341 8073 -4647 -3357 2283 -1708 -4651 -8349 9787 921 384 5627 6612 2873 -9968 -3322 8314 -2990 -195 -8122 -213 -9726 -5083 2879 6439 -731 3662 -8016 8764 808 7054 -6537 -2063 -5160 3067 -6587 8378 1284 197 -1074 -3897 -9104 5308 -4704 2703 -5526 8165 8594 2498 591 2626 8243 -7065 3507 -2523 -135 -1688 2072 -8425 996 9215 -2041 5279 -5935 7693 -2746 -6103 4679 70 2286 1438 -6356 -886 9113 5683 4858 8822 -8251 -1380 8005 -9543 2793 -9871 -9783 -6325 1817 7900 -1273 -7737 -6228 -8504 1608 -6396 -3733 -3322 9456 5567 7409 3321 524 -1056 -9250 4751 6206 7940 3531 2945 -1728 -8301 -4394 -6428 -2523 -6539 -5737 -831 5799 -1850 713 7883 -8988 -3571 -6768 -6776 -4577 -9795 -6621 -4960 7306 -2066 7266 -6866 -6973 5781 -2216 -5961 -5578 153 -7265 4108 1682 2163 -8167 2493 -3983 5470 -9579 -7665 2800 25 4396 7371 -2088 9395 9303 7373 3982 1969 1709 -98 8350 -1481 1522 -3816 5361 1928 806 6359 -8018 -8602 4289 4125 8276 -6220 -6639 -3240 6181 918 -8279 -4786 4860 6816 -8011 -7406 3329 5306 -2972 -6954 -5757 6934 -246 1239 -2886 5361 -7745 838 -9422 -3697 -8190 -1054 9871 8769 9038 -2593 -6018 -1775 -9142 -5003 -1651 -8265 4022 -74 -8 -1099 -8017 -4363 -1213 6904 -7447 9351 -6487 6574 717 8413 -8417 -4155 -7694 6180 8853 -5334 -5250 -2993 -91 -3482 3336 -8591 5463 -7989 8494 4089 8217 -4568 -8487 6155 7908 -4454 -1724 -252 -3668 -409 1908 525 4905 -4294 -6883 -3604 -4319 -8121 -3776 -5128 9056 -2620 -5250 -3166 -5250 1392 9790 5449 5265 -5853 -5090 5591 -6700 -3177 1824 -2834 3613 -2709 7333 -7561 8701 -5350 565 9234 41 5456 5284 -906 5693 3645 5463 -440 -4145 -9740 -1767 3512 -7989 -5603 7024 -446 9762 1933 1631 4160 7710 -4053 -3054 7672 4596 -4642 4743 7484 -502 4450 802 3620 -2088 -930 4645 -4643 27 -7232 -8801 5879 -7909 9087 -1473 -3568 125 7867 7413 8688 -8086 8449 -5885 -8596 4554 5235 7486 7891 6979 -3934 -7594 685 -6339 -3646 -2461 433 9649 -4311 7513 934 -764 -9413 -8475 -3416 -1633 520 -81 -474 7684 -4533 -2581 -6991 1903 2078 -8378 -9934 2184 -3568 -2063 -6215 4881 258 8792 -4488 723 7879 -6465 -872 -725 8449 -9281 5676 -4261 -2066 4671 8503 4615 -616 6740 -2066 -7202 7067 9922 9432 9457 9771 -2063 7290 -3664 -6987 6121 -5274 3863 -7520 4805 2147 4708 1611 2406 3533 8396 503 -7084 -892 530 160 4427 -4490 2316 9169 9805 3982 3967 -6382 -2225 3674 -319 -6736 -6652 85 -9203 -3045 -2844 -6813 -3797 2197 8777 -2647 8262 -2575 -1783 7076 4557 -5464 -1017 -6210 -1984 -4265 -6539 -3060 8637 -6987 -8582 -3227 -9862 -7431 4738 -8111 -2709 6430 4143 6993 -2763 -3168 -2665 -1473 -1521 -272 9009 173 -2658 -1922 -2702 8117 195 318 605 3822 -608 7885 -8439 5365 8439 297 4905 -1319 7611 -3265 3872 8263 7204 -4739 -794 8933 -1367 -3950 8813 8219 9672 -6764 -8445 -5954 4930 -4154 -6264 2102 8361 -1491 -3320 1207 6198 6109 -4919 4533 -7322 6261 1014 6399 4396 3707 -9496 -8953 91 -521 269 8395 -3801 4665 -6831 -6715 1804 1672 2264 -70 4020 -3780 8106 -7561 7216 101 -6783 -9602 -9187 1490 9579 1984 3713 -745 137 3811 3583 940 7231 -6675 -2558 958 -7293 1137 -6667 -6885 -4996 723 -5035 -8591 -8864 3654 8372 5512 -4645 3490 -2135 -6235 -7193 -6783 -6621 -2486 682 9347 3736 2588 7216 7938 4751 -8573 9043 -7870 3580 -5668 -7875 -4405 2016 -7262 -4779 -6516 -5461 3148 -5068 -6971 8177 -3507 6886 -5906 6658 -8670 4288 445 -5313 -2709 -1674 5310 -5091 4314 -2786 2858 7983 4635 -3697 2469 -1857 -5878 4365 -7583 7458 -9996 -9190 -3126 3558 5543 -6240 907 9523 -4194 7403 3425 2428 -6366 -6084 -6130 -4541 -8427 3836 9696 8003 5432 8421 -2475 -7800 -9494 -8475 913 -9603 1368 -3529 2945 -9902 -7372 8152 -9583 4946 1343 -5856 5452 2392 4942 9268 8115 -9373 -7447 -9783 -8453 -5050 -5962 7741 -8163 -6654 8638 5801 3003 5758 -9001 2078 2818 7322 2479 8002 1148 -2099 -9652 -5327 -7065 4739 2380 4644 -5097 -1386 -6124 -6163 1490 -6680 -3125 5241 -3577 -4641 -6573 -3444 3480 4690 934 -9044 8005 -6414 2298 1203 8038 -7030 -8685 434 -129 -4251 -5663 -5934 -5962 5957 125 5879 8758 -4895 9774 -4326 -2265 -460 4269 9137 3949 -1375 1412 7132 -1850 5470 4949 2674 7560 3634 -9479 -1014 -5267 -6783 -6644 -7051 7311 -1469 -1604 -8299 -5840 -9543 5597 -3090 3023 197 420 2761 -3697 -367 3587 -9543 -8002 3186 8732 -3746 6990 3958 2380 -9493 -8574 -7649 8146 843 -702 -6146 7602 1688 -134 3087 4879 -4319 6842 -6858 -1489 -4810 8538 4194 -2930 -3359 -831 -9180 -4928 8528 1969 -1125 -3359 -2690 6221 6436 8088 -267 7465 3548 983 -5768 1590 8367 -521 -8212 4436 -5938 6575 4022 7981 -5057 7459 6133 9770 -9720 2386 3989 3912 -8558 1490 -626 4267 3456 -200 -315 -3188 7730 -6458 -8417 -6404 -3168 5742 -2278 1765 2158 7860 350 3659 7894 -596 -8439 -213 82 3635 -6331 -5942 8114 3167 3732 1722 3253 -4820 4396 -5620 -9146 -3562 -9311 9790 6366 -136 -8424 -9863 -5340 -6868 8674 7372 -4307 -3843 6885 -7737 4279 2931 -8453 -4642 7625 1170 -9740 4741 3233 -2328 2528 2613 1782 3625 -6539 -1571 2527 7382 8991 -7818 2803 -1367 -8948 723 6452 -2851 8447 4572 -9158 3034 -4454 -9944 3442 723 8315 -2789 3949 -412 9552 -9441 764 -5574 -3877 111 -1119 -272 1097 -4656 6965 8516 -6842 -1421 9922 8409 1668 -887 2633 -1928 -7668 2375 4008 -355 -7725 -7581 -8898 -4661 -4405 -1641 7171 -7127 -7422 -3150 5743 -733 -25 -4081 -9481 -7647 -3697 1479 -5089 9047 -3983 -5293 9482 -1174 -7920 1063 -1446 4061 -681 -4199 4751 5077 -2764 -6428 5600 -9490 5432 512 1973 7926 -7384 -1473 -4876 7144 -2280 7800 -7617 -4779 -4778 -6048 -9931 2016 5937 3314 -5379 3582 1632 -7125 -5068 4673 2240 7728 -8907 857 1489 -8429 9910 -8915 4716 -6072 9597 1033 -9024 3917 -7461 -3202 -8121 2468 -2769 -1146 -1568 8417 7085 -8321 -7841 7266 -9301 -7193 -7390 168 -1767 -7944 -2466 8649 -8389 -8110 -2294 7337 7679 -95 5156 5182 3655 3228 6673 -2358 -3166 8468 9886 6099 7717 -9781 5861 -7617 6026 -9215 -3474 -4908 -6783 -2273 -8200 2283 559 -1841 605 -8510 -4402 -4684 1055 8591 2814 -8575 -8668 8503 9322 7072 1213 -6189 -2273 2093 -5608 -4855 -6582 -9078 9581 -6633 6523 -6991 -1056 4296 8432 7786 1793 -3373 -5128 -3094 6112 1837 8651 -2567 -7969 -9659 4685 -579 -1473 1144 -6706 -6331 -3575 3226 -3403 5219 7517 1144 8181 -7840 -2544 5044 5227 1949 -3259 8350 -4671 -7260 7229 -8696 2923 -5657 -6539 -221 9037 9215 5973 -9479 3554 -5898 2171 8276 -96 -4028 -8110 3120 -5600 -570 2926 3235 6867 -5501 2222 -8340 3050 -9932 7646 -2558 1521 -7076 4493 922 -5442 -4680 -7050 -8855 2803 4219 2418 839 294 5184 -3171 8219 9380 -7827 1695 6782 -1245 -3957 8205 -7561 3841 7669 -5381 5600 -5406 -7966 -5510 8367 3588 8459 -8990 5536 5017 -8349 -6173 8574 -5375 680 -1872 -3303 -8662 -2620 -1642 -3226 6974 6896 6452 7885 263 7853 -3352 4601 6151 -3797 -5038 2156 -687 -6228 6817 -2190 8045 -6336 -7508 -7169 -7719 9279 2240 -5072 -9468 1077 4858 -4889 23 2934 -9721 -9422 2389 2378 9126 -6329 8887 2542 -9821 2584 -3523 8005 9844 5573 -930 7459 -880 2402 -818 864 -1452 -4504 -1481 7413 346 5276 -2609 -5433 -3463 -6198 3173 92 -6987 -3754 -8141 -496 -4220 9571 8388 2546 -7352 5606 -5902 -7737 9041 -6242 -270 6629 -997 -9490 9826 4716 -7020 4007 -613 -4160 -2666 4858 3369 2294 9048 4019 -8870 8965 6447 -259 8769 -8712 -2612 4398 6153 -3380 5476 -3086 8601 3989 -3104 4051 -2807 -2264 1453 -3645 3250 -883 -183 344 -5853 1001 3863 4118 -4155 -1205 -5256 1026 4577 7684 -4866 9607 -4188 8255 436 -7132 3157 -5961 5698 -1624 1005 2946 9101 7961 6060 4090 -4534 -7692 -5068 -2746 -7220 -1561 8240 4195 9875 5068 8028 6759 5432 -6020 -6649 4612 -5733 1287 8187 7520 1158 -6031 -7291 -2415 5567 -8556 7917 -8885 -173 9364 5066 3355 7566 -9458 -8034 1231 -421 -8615 934 4000 -5278 2668 -1587 2500 2381 -1184 2348 8981 -1636 -2750 5539 -7807 6568 -9372 7762 6328 -8058 -3106 -8520 -3864 26 -8400 -9018 3527 7917 3702 -821 2061 5162 4269 -7145 -5722 1744 -9843 -5986 9741 -4112 3739 1320 -4033 -9737 -7745 -2709 -5117 -3743 -4642 -1428 8459 5296 8679 129 -1515 -4809 4209 -4169 -831 -1218 8166 -4965 -4214 -3307 -9841 -4465 -5813 -2254 -1288 9759 4959 8900 -3776 -4623 -4457 -5912 -8861 328 9023 8912 3999 3915 -9255 1945 6271 3120 650 -765 396 7488 -5305 -1501 -2397 -4880 2412 4005 3473 6792 -8860 7677 6966 -1495 5683 -440 7966 -2073 3059 4178 -8265 8619 -3824 392 1458 -6635 -7194 -8340 -9740 -1288 6594 9952 7272 6081 -2150 -7086 8500 3907 1616 -2716 1459 3044 5133 -3734 -8084 -1876 4372 -382 -1335 -6016 1012 9592 8233 -6589 -4484 -1564 -7916 1212 -6902 7453 -4858 7785 -5117 -6991 7403 3552 -5081 4439 -9936 -2807 8261 -6598 -2960 54 7737 -7428 -5061 388 2228 -6973 7480 -9334 -3399 3276 5165 8933 2043 -1772 -7152 7635 -768 8853 6341 2361 -1322 1453 -5885 3329 1973 -9170 5757 5458 5988 -4483 -142 -9623 9246 5972 -6819 -4401 -9705 -5844 -3862 3967 -2357 -5292 -4591 1525 4642 -4294 -3259 7252 9056 957 5429 -4064 6638 6828 -2626 -6240 8226 -3731 -1843 -7170 -3030 3212 -6834 -7405 7758 -7951 -7561 -3870 -5111 1744 -2264 4849 -4314 1694 1647 -3697 387 -9143 -6308 -2651 7745 8413 9364 -9724 -7022 8982 -6502 258 -974 5936 -1424 2875 801 -4252 6786 1632 8899 -2988 3571 -1902 -5332 -5282 7447 3087 -6736 5509 4030 8205 -5433 -9418 -9927 5534 -8446 4283 -8477 1992 9838 -2890 -9038 1694 -6737 5918 4772 2700 -7406 4708 6234 -9250 4296 -6355 -6377 -1853 1647 -9128 -5695 -892 -1329 -6185 9079 4148 -224 8263 -823 -8161 -8860 586 -3297 3133 9598 7733 -7917 9037 3645 -1854 5337 543 396 1513 -1516 -2825 -3240 -1761 3719 3266 -9422 9899 1412 -2980 4478 4515 -9104 2084 -3562 -4573 -5628 7121 -5521 -734 -9946 7337 -7792 -6031 8085 -2601 6550 9453 -5736 -6444 -8625 -3609 -6432 -4680 4879 -7488 2986 -7360 -4130 1989 2567 -6315 3713 270 6099 -3521 7286 -3228 -7489 -9917 -9027 9615 -6149 2958 -6565 8174 -5670 5496 -935 -8860 -8668 2632 2257 -3606 -4405 6430 -4113 -1491 -6903 2739 2623 -5085 1945 2002 -5006 -874 -6163 -2323 8294 3087 -5772 7603 4638 -2310 4453 -8588 -1642 -1385 -9818 -960 -9926 -43 888 -7759 -5035 -2429 -9691 2083 -7783 2875 7789 6522 -4215 4276 -9611 -6092 5936 -7852 -5954 -4258 -3333 3770 -8049 -6214 -4751 -2041 -1055 4095 -3168 -6680 8391 5781 8491 -4358 958 -1586 3058 7062 -502 3259 -5873 1811 1843 3925 -9791 2283 -593 9244 5448 -1767 5082 -6516 -4409 -6091 -7875 -6940 -8740 -4786 4296 7745 -321 -4944 -3943 -8627 8649 -8407 5647 -9552 672 6662 -7212 -7123 7108 900 1564 -4719 850 5696 -9002 -2378 -2550 7398 -1166 -3064 8710 6624 -9843 -1397 4261 -6653 -5379 6990 7228 -5849 -8007 -1631 45 1968 -8542 -1367 7602 3758 4891 5683 4354 4091 -5914 -1488 -2084 4365 -5905 -3879 1155 -8163 -9899 9177 -4855 -8365 3757 8572 8146 867 -3792 5981 -8555 6982 6347 -3007 5570 -3079 8144 1398 7076 3107 1485 -6519 8705 3582 -5422 -8332 -1883 6451 -2996 4398 8981 5444 -1229 970 -7516 -7129 -5235 -1513 3816 -9301 9197 -4572 -3904 1832 7266 8026 9539 -1605 -7269 -2710 2166 -9902 -8058 -8755 -6112 -3958 265 -8497 2844 -4371 8312 3277 -5753 -7217 6116 9811 -2644 -8440 8749 1314 478 -6208 6657 874 7797 -4072 5432 3962 9790 2028 -5006 -3442 1259 4601 3816 7809 -4652 3519 3089 -2961 -8615 -7559 3625 -681 -5313 5073 8730 -3547 -6587 -5159 4254 9629 5551 -8857 -9422 -1831 -9023 -7445 5418 -328 1711 -2419 -1566 9726 341 7105 5762 -3889 7085 5515 -7824 6828 3370 7252 5167 -3336 4541 4858 562 7226 -6382 -9754 -4504 9892 -1852 -7759 -4841 2036 8334 9490 -457 -2570 743 2707 -6216 -8636 -372 -4675 -4675 -8192 -5837 779 -5035 331 -6518 2873 5920 4131 4790 -2434 5347 3104 -4324 921 3445 -42 1273 7403 2705 4289 8591 -2148 3232 -7818 -8942 346 -6089 9482 4262 7124 9177 2835 1185 3490 -1499 -6819 6692 1067 4135 6014 8193 -6420 -1001 -7269 -3353 7252 -2875 -6666 -8488 6263 8831 9563 -8864 5418 3743 -9058 -7665 -900 6572 -9062 3891 -9417 -1770 4704 -1913 -5596 6594 6886 -4416 9429 -5705 4823 5071 6693 562 -8789 9495 -9422 6676 -7363 6549 6464 -4336 -643 -3482 2446 3525 4411 -852 -3891 -7745 9132 2022 197 7331 3429 8457 1192 -802 -6069 82 -7778 -1575 1111 -7202 -6706 -852 6166 5949 -5853 6220 -4594 5979 5312 -3538 -8502 5657 8358 -7209 7474 4272 5943 9571 9504 -7211 1219 918 -9202 -9023 2139 -1654 7954 -2665 -8808 5005 9885 7785 3173 -8881 1845 4795 -8199 6254 9159 -6965 -1018 -650 1368 8233 2485 5399 -2264 -6850 -8752 -2890 7330 1320 -9705 9876 9706 -3027 6286 7379 8156 7568 897 -6470 -6613 3732 5570 7994 3588 9362 7337 8661 5119 -1958 2519 4905 9148 -4226 5563 3102 -8156 -7421 -5169 8045 -8575 4694 -4726 8724 6157 9176 8082 -2733 -6783 -4294 3958 4241 4296 4578 -9296 171 5600 -7022 4846 4731 -3559 7860 445 2353 -9859 5003 -4288 9186 3169 -5619 -7069 1306 94 -5035 4181 2446 921 3911 -5500 1937 -6226 -5552 -3725 -9267 2537 9612 6760 1001 6133 4894 285 -1841 9790 3938 -9437 1473 8477 -4645 -3920 -9203 -6326 -7614 8827 1726 7192 4478 5444 -4690 -1467 7115 -5953 7047 6140 -9232 118 -2596 7107 9790 214 -4571 3347 -1857 8201 7041 2573 94 -2169 -201 -267 -1044 1506 -3482 -1072 -4289 5753 9198 8419 8528 329 3895 -7082 -8790 2115 7835 4405 6093 9057 8877 1144 5939 9993 7723 -5555 -5853 -9495 -5752 -7312 4942 310 6958 9143 -995 900 5796 -6670 2536 4215 1838 7286 -9544 -9810 -5803 -9876 -3516 -4416 4982 9390 5591 8650 7574 -7951 3826 -4135 -6185 3900 -1851 -6130 8287 -5382 4241 1928 7203 3990 -3351 -2225 -4689 -3203 3526 6481 2374 9466 -3845 -9397 -9170 3327 7148 -4294 -8299 -5921 -1854 -7507 -1926 7969 -5376 -6585 -5788 5548 -1095 -4398 9800 -3168 -3552 -6175 -474 -5934 -6088 3850 -491 9741 530 -1624 -3699 -3268 5082 -1974 -9202 6758 1008 -19 6117 5949 8299 5936 -3824 5054 -3445 8344 -5734 -1974 6026 -9094 3044 -5945 8574 4860 2158 -1417 -486 -7965 8961 -1170 -3745 -3914 4797 -8892 -4980 4356 -5122 -1519 2560 4390 5108 3370 884 -9440 9119 -9591 8591 -153 -5962 9140 9071 1024 -7193 -6581 -3080 8376 4511 -9173 8071 -2918 -726 -5667 4259 4743 -7581 8177 -6110 7068 -2141 5047 -1806 -125 7458 -1471 2527 4570 -7522 -1878 -3734 -3603 9043 -1993 6423 451 6818 5912 7164 -2108 -9228 -9642 -4053 -3147 8575 -2083 -7916 -4928 -3241 -8058 5573 -9259 3003 -3229 5952 6205 -7054 8595 5973 4087 -815 5600 9365 3896 -1786 9554 -5108 -9691 2162 5683 -7094 -5900 -488 4926 7707 9429 -153 4295 -3110 5767 -3139 -6621 -2990 -8915 -6440 -8453 -183 58 4854 6457 8736 -6495 -431 838 2498 8278 2895 9861 -2089 6816 -1577 -7839 -6296 -6196 973 -2845 -4316 6973 2312 799 -3005 -9473 -5712 -1099 6440 4578 1828 -6032 3305 -5206 -9311 -1519 1190 -5796 -3236 -6831 6405 -4485 -5407 9280 512 -4828 -7508 9297 9993 394 8828 -9224 -6679 4946 -6668 -5433 9276 6479 2283 -2831 8478 -8519 9021 -2180 6867 -3497 2312 8539 1322 -2385 -2154 -5334 4248 491 -1635 5683 -6764 3154 -9666 -4960 9362 -367 6472 5108 7126 -7421 7139 -3697 -2558 298 -8001 -7507 982 4472 9260 1698 6373 -9783 5382 -5821 -8046 1668 -2420 2033 9054 440 2519 -7732 7983 8232 7987 580 3053 731 355 8500 3157 -3221 -6124 2228 -9610 4361 -4919 -9427 -5620 5892 -3920 7486 -7128 2707 7491 5564 1479 -5408 2488 3558 -9363 -314 6344 -4566 -107 3810 557 2106 -7367 1155 2115 4639 -9264 -1165 -3311 762 -3373 -6254 8933 5367 9584 3958 -289 -596 -6535 1008 7277 5470 -2357 -2066 -2658 4089 8454 6155 8302 7134 -8537 8117 526 -2458 -5519 -5340 6436 -7862 1453 -6783 9062 1616 3176 -3464 7604 1984 9207 771 -5292 -995 8811 -9479 -7528 -3830 7710 4402 -7843 4342 7919 -2625 -6469 -9592 -6013 -7940 5285 9634 -2011 1648 5796 -3303 2030 6885 -3746 -4730 -2651 -3710 2715 -5616 4870 9479 -5843 -721 -4027 -5433 7576 912 -3361 3565 4680 -5707 6005 8209 -57 -8825 -7368 5808 -9730 4381 -3800 -2659 6913 505 9645 -8184 5104 -3177 -6420 -5497 9212 9145 5508 -7862 2768 -3833 5130 9154 -7202 624 -51 -7 7819 -5596 4136 -4332 5702 7835 7797 6842 -74 -7906 7183 9629 -535 6135 7478 -7961 -3896 -4078 -3593 3674 -2355 9212 1950 2013 -8218 764 -4444 -6621 -6355 -8441 6010 1599 3912 -5856 4446 754 2039 -6326 3961 -4343 3672 -8439 6476 -6856 7126 5456 -8773 -2699 -5044 -1856 -8001 195 -5731 5130 -5068 -5422 -6987 -3383 -7057 -4171 -9145 2906 -2750 5692 -5722 3503 -1044 -3197 8389 -4541 -7780 2093 4297 5600 2067 4716 -1782 5485 1893 -66 3955 -6394 6835 -3837 6760 -6999 6274 8208 3336 2764 -1893 8283 2812 -8723 -2651 -6736 7171 1609 7458 2405 6450 -6229 2472 8778 -9680 1409 8098 -4649 3157 -5866 -1924 9588 -8784 9215 -8618 -2420 -6882 266 -1292 1235 4554 4844 2495 4483 4472 -3090 -5862 672 -4287 2380 2835 6133 -3234 6616 -4988 -9348 -7488 3136 4374 2667 -5170 -8503 -9136 4449 9188 6653 -3560 5767 5725 -6541 9602 6832 5683 -2220 -5476 -3061 -3776 -5701 -1984 4310 3850 -9389 3678 -9153 -2530 2542 -4510 -5422 -7421 -7275 4283 -2612 7474 3507 6801 -890 9874 -8573 6167 2553 -9418 -408 2414 -3529 5657 2986 -1417 9861 -7614 -7035 -3508 5738 7952 -7028 -1612 8591 1858 -3359 -7990 7348 -7269 6949 6209 1502 4740 -8449 8478 -650 8539 791 -3990 -2861 -4617 -4278 7498 9885 9448 1244 -7159 1450 -5562 5499 -7267 1122 4493 -5134 4008 7961 7286 -2983 -2190 -2635 1880 8160 8851 8378 4917 -7413 -4794 -8141 6153 -3703 856 -7405 1250 3996 -388 9954 839 -9441 -4430 8142 4667 -7077 -351 -6939 -5718 -9443 9842 9151 2812 9172 -9592 2731 2016 6504 6323 -4155 9597 -5422 -2351 7024 -9491 9226 -8595 1765 1908 8675 1505 -8487 253 6407 -9121 -19 1292 -5692 2630 -7673 6998 1232 -6756 -3751 -263 5952 -4574 3573 9579 7042 9084 8769 3480 1170 -9215 -8094 -6656 -745 -1256 -3609 9720 -7679 -8141 3269 8625 1890 6585 9280 -8001 2626 -2012 9942 -3218 8388 -2474 1884 7229 1113 -1335 -4676 -7614 8192 7499 -5531 -2082 9184 -4946 4874 2209 -4666 -8419 4411 5405 -7336 -9267 -8988 6780 7460 -3056 9562 8863 7323 -8206 -3177 5405 3167 -8042 9592 -9783 -7620 3760 2892 4708 -3150 3783 -8086 294 -2665 7447 -398 -1335 -7277 1296 -8261 -4449 -6587 5816 2348 -2980 5863 3669 3329 -4969 -9932 5563 4872 2001 -8079 5526 -2363 6259 3155 -5115 8337 8460 3372 3605 -2099 -7617 7350 2986 -893 -8529 -7157 -4140 -8607 -3090 -6143 6655 -5371 8831 5539 2980 -8902 6828 9849 -4707 -9153 -6891 -5349 -7399 179 -817 7076 -6356 3483 42 8990 4619 7860 4915 -1036 5638 2095 7321 3507 3871 -8758 4617 -6173 9156 7912 -5379 4926 -9982 -1579 -725 2264 -6905 -6751 -1301 1078 6064 -1473 -5061 -972 -6847 6773 8005 -5377 6093 1495 -8255 -1820 3125 -613 6812 4205 9279 -4265 8726 -8911 3926 -2807 -3638 -7132 5381 -51 -270 -316 5970 -491 3519 -3509 -8058 -2041 6513 -1957 3442 3451 3533 7441 -1654 -9170 -4072 -2664 425 -4294 -1856 5617 -3925 -2408 -7897 -5885 -1772 -9443 -133 -3759 -7495 6374 3739 7901 8603 1159 -9795 3871 8309 -1018 270 -3390 1786 5650 8387 3483 3078 -113 -5874 5641 -6424 9084 4928 -7054 -3522 -893 -1996 -7399 7373 -2775 9499 775 4881 1505 7384 -6993 1968 2892 3744 8900 3230 5449 -6566 -5063 -1545 4989 8546 -4577 7359 772 -5731 -4862 -1653 5142 -4246 8243 4109 -3864 9407 -9411 2061 8912 -5159 -9016 9346 5458 -3594 4178 3771 -6697 1159 -9104 201 4142 -4483 -7107 9054 9861 8421 3405 -811 -6231 -6319 3230 5918 -4158 9788 -6101 -8808 9466 -4140 -883 4038 9044 -3914 6732 847 9434 888 -3090 -3205 1406 -2181 2334 6234 -7728 -2370 3548 -8458 5098 -1472 2827 -681 -7616 4577 1867 54 -1119 -9388 2981 -9263 2195 -2495 5432 -9203 2984 -9724 -2904 9844 -890 1265 -8058 -7737 -8685 -6992 2869 -4453 1577 9629 9112 -734 -8321 -8110 3274 -2286 8878 -8630 -9128 9048 -5957 -6583 -5098 -7603 -4839 -7344 2398 2274 5963 -7164 5588 248 5217 -1925 -1925 -153 -2496 4468 1158 6472 -5011 4005 8777 -5796 8006 1681 -7057 -6190 0 -1371 443 3861 -1712 -3961 -7050 1937 1706 -4862 -6883 -2424 -5282 -872 -718 2837 -8519 2984 9541 6328 -9348 -557 7690 -3522 -7455 3503 8267 -7908 -9495 -5962 1495 -626 672 -863 2262 266 6885 -5631 6162 -5499 -3061 8317 7513 6457 -9598 -1579 -4131 -9580 -5553 -992 -2710 -388 -7278 -3259 8881 -8026 -8573 -5320 -6215 -2041 9922 7211 -7064 833 -8306 -438 6612 9609 4069 9551 6730 1259 -2705 8401 -9906 -4197 -9430 -3290 2613 -2335 -887 -7090 1321 9155 8358 -1323 3707 -3883 9499 6359 -637 6830 -7834 -4080 9090 6801 -733 1134 3264 3907 -3056 -6518 -3665 4529 9037 3662 -2278 -1217 2448 -6602 -1308 -407 -1453 7209 -4645 -1336 -9334 5745 -7951 5746 8169 7275 -3777 -965 -213 9308 604 5496 5871 -8573 3367 4985 1973 -1523 -2754 1378 -5433 -3882 5003 9155 -1238 354 3979 5130 -8550 -7422 -9846 1631 1764 -4680 -9165 -6990 -7668 -681 7144 -5038 8806 -2685 -6235 9607 -4099 -1892 -2273 -4591 -4568 327 5539 -9481 -8438 -4779 -9855 7816 3896 8991 -8058 -4504 -1214 -4064 7635 6427 4308 -5049 5472 -1424 7870 3208 -48 2961 2641 461 211 6444 1073 -2328 6977 -8552 1393 3509 3186 8538 -1826 5082 -5354 4000 4946 -2967 6507 1109 6106 -4866 -7737 5298 -8551 557 3045 -580 2807 682 -722 331 7581 6289 -9594 -4064 -6829 1334 -5134 3719 6838 9353 5606 -5761 -2690 231 -9618 -2099 1159 -4346 -6431 1343 5371 4555 8661 4137 6261 8971 9054 -1600 9849 718 5657 -673 -3509 -2981 158 3851 -7679 -3056 -7777 -8706 2024 -4215 8569 9048 8427 7828 -2709 -2872 4776 3832 8098 502 298 -6014 -2853 -431 -6771 -1164 8623 2195 4384 -7013 4419 2933 -7493 7112 2662 -3522 -8293 -9548 -8911 7398 9468 -9024 -8609 -3725 -8098 3815 8534 -57 3527 -6783 -3284 -5668 -8138 1545 -3726 -8104 4381 3283 856 -5692 -3478 -1118 1695 9246 4532 -9413 1502 -5717 -605 -928 9966 9598 2453 -6007 2633 -4899 -5263 -7413 8132 -4680 7180 605 -3629 1287 -3322 -1424 8710 -6356 -8329 -1315 -9176 8472 7441 -9760 2317 diff --git a/src/2022/day20/input0 b/src/2022/day20/input0 index e69de29..c0645c5 100644 --- a/src/2022/day20/input0 +++ b/src/2022/day20/input0 @@ -0,0 +1 @@ +1 2 -3 3 -2 0 4 diff --git a/test/test_2022.cpp b/test/test_2022.cpp index 50afb60..e3066d5 100644 --- a/test/test_2022.cpp +++ b/test/test_2022.cpp @@ -162,11 +162,11 @@ TEST_CASE("", "[2022]") { REQUIRE(0 == p.second); } -TEST_CASE("", "[2022]") { - line_view lv = load_file("../src/2022/day20/input0"); +TEST_CASE("Grove Positioning System", "[2022]") { + line_view lv = load_file("../src/2022/day20/input"); auto p = aoc2022::day20(lv); - REQUIRE(0 == p.first); - REQUIRE(0 == p.second); + REQUIRE(6712 == p.first); + REQUIRE(1595584274798 == p.second); } TEST_CASE("", "[2022]") { |