├── days ├── day3 │ ├── sample-input.txt │ ├── default.nix │ ├── part2.nix │ └── input.txt ├── day1 │ ├── default.nix │ ├── part2.nix │ └── input.txt └── day2 │ ├── default.nix │ ├── part2.nix │ └── input.txt └── README.md /days/day3/sample-input.txt: -------------------------------------------------------------------------------- 1 | 00100 2 | 11110 3 | 10110 4 | 10111 5 | 10101 6 | 01111 7 | 00111 8 | 11100 9 | 10000 10 | 11001 11 | 00010 12 | 01010 13 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AoC2021 2 | Advent of Code for 2021 3 | 4 | ## Run the code 5 | ``` 6 | nix-instantiate --eval ./days/dayN/ 7 | # or 8 | nix eval -f ./days/dayN/ 9 | ``` 10 | -------------------------------------------------------------------------------- /days/day1/default.nix: -------------------------------------------------------------------------------- 1 | with import { }; 2 | 3 | let 4 | input = builtins.readFile ./input.txt; 5 | strings = lib.splitString "\n" input; 6 | sanitized = lib.filter (s: s != "") strings; 7 | numbers = builtins.map (s: lib.toInt s) sanitized; 8 | differences = lib.zipListsWith (n1: n2: n2 - n1) numbers (lib.tail numbers); 9 | in 10 | builtins.length (lib.filter (n: n > 0) differences) 11 | 12 | -------------------------------------------------------------------------------- /days/day1/part2.nix: -------------------------------------------------------------------------------- 1 | with import { }; 2 | 3 | let 4 | # read file into [ Int ] 5 | input = builtins.readFile ./input.txt; 6 | strings = lib.splitString "\n" input; 7 | sanitized = lib.filter (s: s != "") strings; 8 | numbers = builtins.map (s: lib.toInt s) sanitized; 9 | 10 | # create the window of values 11 | numbers' = lib.tail numbers; 12 | numbers'' = lib.tail numbers'; 13 | zipAdd = lib.zipListsWith (n1: n2: n2 + n1); 14 | zipSub = lib.zipListsWith (n1: n2: n2 - n1); 15 | window = zipAdd numbers numbers'; 16 | window' = zipAdd window numbers''; 17 | 18 | # find the differneces 19 | differences = zipSub window' (lib.tail window'); 20 | in 21 | builtins.length (lib.filter (n: n > 0) differences) 22 | 23 | -------------------------------------------------------------------------------- /days/day2/default.nix: -------------------------------------------------------------------------------- 1 | with import { }; 2 | 3 | let 4 | startingPosition = { depth = 0; distance = 0; }; 5 | input = builtins.readFile ./input.txt; 6 | strings = lib.splitString "\n" input; 7 | sanitized = lib.filter (s: s != "") strings; 8 | 9 | step = acc: next: let 10 | values = lib.splitString " " next; 11 | command = lib.elemAt values 0; 12 | distance = lib.toInt (lib.elemAt values 1); 13 | in if command == "forward" then 14 | acc // { distance = acc.distance + distance; } 15 | else if command == "up" then 16 | acc // { depth = acc.depth - distance; } 17 | else if command == "down" then 18 | acc // { depth = acc.depth + distance; } 19 | else 20 | throw "something wrong happened. ${next}"; 21 | 22 | applyMoves = builtins.foldl' step startingPosition sanitized; 23 | in 24 | applyMoves.distance * applyMoves.depth 25 | 26 | -------------------------------------------------------------------------------- /days/day2/part2.nix: -------------------------------------------------------------------------------- 1 | with import { }; 2 | 3 | let 4 | startingPosition = { depth = 0; aim = 0; distance = 0; }; 5 | input = builtins.readFile ./input.txt; 6 | strings = lib.splitString "\n" input; 7 | sanitized = lib.filter (s: s != "") strings; 8 | 9 | step = acc: next: let 10 | values = lib.splitString " " next; 11 | command = lib.elemAt values 0; 12 | distance = lib.toInt (lib.elemAt values 1); 13 | in if command == "forward" then 14 | acc // { distance = acc.distance + distance; depth = acc.depth + (acc.aim * distance); } 15 | else if command == "up" then 16 | acc // { aim = acc.aim - distance; } 17 | else if command == "down" then 18 | acc // { aim = acc.aim + distance; } 19 | else 20 | throw "something wrong happened. ${next}"; 21 | 22 | applyMoves = builtins.foldl' step startingPosition sanitized; 23 | in 24 | applyMoves.distance * applyMoves.depth 25 | 26 | -------------------------------------------------------------------------------- /days/day3/default.nix: -------------------------------------------------------------------------------- 1 | with import { }; 2 | 3 | let 4 | startingAccs = [ 5 | { one = 0; zero = 0; } 6 | { one = 0; zero = 0; } 7 | { one = 0; zero = 0; } 8 | { one = 0; zero = 0; } 9 | { one = 0; zero = 0; } 10 | { one = 0; zero = 0; } 11 | { one = 0; zero = 0; } 12 | { one = 0; zero = 0; } 13 | { one = 0; zero = 0; } 14 | { one = 0; zero = 0; } 15 | { one = 0; zero = 0; } 16 | { one = 0; zero = 0; } 17 | ]; 18 | exponents = lib.reverseList (lib.lists.range 0 11); 19 | 20 | input = builtins.readFile ./input.txt; 21 | strings = lib.splitString "\n" input; 22 | characters = builtins.map (s: lib.strings.stringToCharacters s) strings; 23 | sanitized = lib.filter (l: l != [ ]) characters; 24 | 25 | step = acc: char: 26 | if char == "0" then 27 | acc // { zero = acc.zero + 1; } 28 | else if char == "1" then 29 | acc // { one = acc.one + 1; } 30 | else 31 | throw "something wrong happened. ${char}"; 32 | 33 | stepRow = lib.zipListsWith step; 34 | foldRates = builtins.foldl' stepRow startingAccs sanitized; 35 | 36 | pow = 37 | let 38 | pow' = base: exponent: value: 39 | if exponent == 0 40 | then 1 41 | else if exponent <= 1 42 | then value 43 | else (pow' base (exponent - 1) (value * base)); 44 | in base: exponent: pow' base exponent base; 45 | 46 | # [ Int ] -> Int 47 | binaryDigitsToSum = digits: let 48 | sum = builtins.foldl' (a: b: a + b) 0; 49 | digitToDecimal = lib.zipListsWith (exp: digit: if digit == 0 then 0 else pow 2 exp) exponents digits; 50 | in sum digitToDecimal; 51 | 52 | findRate = comp: rates: builtins.map comp rates; 53 | findGamma = value: if value.one > value.zero then 1 else 0; 54 | findEpsilon = value: if value.one < value.zero then 1 else 0; 55 | 56 | gamma = binaryDigitsToSum (findRate findGamma foldRates); 57 | epsilon = binaryDigitsToSum (findRate findEpsilon foldRates); 58 | in 59 | gamma * epsilon 60 | 61 | -------------------------------------------------------------------------------- /days/day3/part2.nix: -------------------------------------------------------------------------------- 1 | with import { }; 2 | 3 | let 4 | startingAccs = [ 5 | { one = 0; zero = 0; } 6 | { one = 0; zero = 0; } 7 | { one = 0; zero = 0; } 8 | { one = 0; zero = 0; } 9 | { one = 0; zero = 0; } 10 | { one = 0; zero = 0; } 11 | { one = 0; zero = 0; } 12 | { one = 0; zero = 0; } 13 | { one = 0; zero = 0; } 14 | { one = 0; zero = 0; } 15 | { one = 0; zero = 0; } 16 | { one = 0; zero = 0; } 17 | ]; 18 | exponents = lib.reverseList (lib.lists.range 0 11); 19 | 20 | input = builtins.readFile ./input.txt; 21 | strings = lib.splitString "\n" input; 22 | characters = builtins.map (s: lib.strings.stringToCharacters s) strings; 23 | sanitized = lib.filter (l: l != [ ]) characters; 24 | 25 | step = acc: char: 26 | if char == "0" then 27 | acc // { zero = acc.zero + 1; } 28 | else if char == "1" then 29 | acc // { one = acc.one + 1; } 30 | else 31 | throw "something wrong happened. ${char}"; 32 | 33 | stepRow = lib.zipListsWith step; 34 | foldRates = builtins.foldl' stepRow startingAccs sanitized; 35 | 36 | filterResults = findGas: rates: values: 37 | let 38 | filterResults' = rates: values: index: 39 | let 40 | lengthOfValues = builtins.length values; 41 | predAtIndex = value: "${toString (lib.elemAt rates index)}" == (lib.elemAt value index); 42 | newValues = lib.filter predAtIndex values; 43 | newRates = findRate findGas (builtins.foldl' stepRow startingAccs newValues); 44 | in if lengthOfValues == 1 45 | then lib.head values 46 | else if index >= (builtins.length rates) 47 | then throw "Have more than one value left: ${toString values}" 48 | else 49 | filterResults' newRates newValues (index + 1); 50 | in filterResults' rates values 0; 51 | 52 | 53 | pow = 54 | let 55 | pow' = base: exponent: value: 56 | if exponent == 0 57 | then 1 58 | else if exponent <= 1 59 | then value 60 | else (pow' base (exponent - 1) (value * base)); 61 | in base: exponent: pow' base exponent base; 62 | 63 | # [ Int ] -> Int 64 | binaryDigitsToSum = digits: let 65 | sum = builtins.foldl' (a: b: a + b) 0; 66 | digitToDecimal = lib.zipListsWith (exp: digit: if digit == 0 then 0 else pow 2 exp) exponents digits; 67 | in sum digitToDecimal; 68 | 69 | findRate = comp: rates: builtins.map comp rates; 70 | findOxygen = value: if value.one >= value.zero then 1 else 0; 71 | findCO2 = value: if value.one < value.zero then 1 else 0; 72 | 73 | oxygenRates = findRate findOxygen foldRates; 74 | CO2Rates = findRate findCO2 foldRates; 75 | 76 | oxygenResult = filterResults findOxygen oxygenRates sanitized; 77 | CO2Result = filterResults findCO2 CO2Rates sanitized; 78 | 79 | oxygenSum = binaryDigitsToSum (builtins.map lib.toInt oxygenResult); 80 | CO2Sum = binaryDigitsToSum (builtins.map lib.toInt CO2Result); 81 | in 82 | oxygenSum * CO2Sum 83 | -------------------------------------------------------------------------------- /days/day2/input.txt: -------------------------------------------------------------------------------- 1 | forward 8 2 | forward 3 3 | down 8 4 | forward 4 5 | down 2 6 | down 4 7 | down 8 8 | down 4 9 | down 7 10 | up 4 11 | down 6 12 | down 2 13 | forward 7 14 | down 5 15 | down 7 16 | down 5 17 | forward 8 18 | forward 4 19 | forward 3 20 | down 4 21 | forward 2 22 | up 3 23 | up 6 24 | forward 7 25 | down 4 26 | down 2 27 | forward 7 28 | up 3 29 | forward 8 30 | down 4 31 | down 6 32 | forward 3 33 | forward 9 34 | down 9 35 | down 6 36 | forward 8 37 | up 8 38 | forward 3 39 | down 8 40 | down 4 41 | forward 7 42 | forward 3 43 | up 9 44 | down 8 45 | forward 7 46 | forward 5 47 | forward 3 48 | down 1 49 | down 4 50 | forward 1 51 | down 6 52 | forward 9 53 | up 2 54 | forward 3 55 | down 2 56 | down 1 57 | up 5 58 | down 8 59 | down 7 60 | down 5 61 | down 9 62 | up 7 63 | forward 4 64 | down 9 65 | down 8 66 | down 4 67 | forward 3 68 | down 1 69 | up 8 70 | down 1 71 | down 8 72 | forward 4 73 | up 1 74 | forward 7 75 | down 6 76 | down 2 77 | forward 3 78 | down 9 79 | forward 9 80 | forward 4 81 | down 1 82 | up 6 83 | down 1 84 | up 2 85 | down 4 86 | down 9 87 | down 7 88 | forward 5 89 | down 3 90 | up 9 91 | forward 4 92 | up 5 93 | down 9 94 | forward 1 95 | forward 7 96 | forward 1 97 | down 8 98 | forward 5 99 | down 2 100 | down 4 101 | down 3 102 | forward 4 103 | down 9 104 | up 7 105 | up 1 106 | forward 4 107 | up 2 108 | forward 4 109 | forward 4 110 | down 1 111 | down 5 112 | forward 6 113 | forward 1 114 | down 6 115 | forward 8 116 | forward 8 117 | forward 6 118 | down 3 119 | forward 3 120 | forward 1 121 | forward 5 122 | forward 7 123 | down 5 124 | forward 8 125 | down 7 126 | down 8 127 | forward 7 128 | forward 8 129 | down 7 130 | forward 7 131 | up 2 132 | up 9 133 | down 1 134 | forward 1 135 | forward 6 136 | up 3 137 | up 6 138 | down 2 139 | down 4 140 | forward 2 141 | up 8 142 | forward 5 143 | up 9 144 | up 5 145 | down 2 146 | forward 5 147 | forward 9 148 | up 3 149 | forward 7 150 | down 4 151 | down 3 152 | down 2 153 | forward 9 154 | up 4 155 | down 7 156 | down 1 157 | forward 9 158 | forward 3 159 | up 4 160 | forward 1 161 | up 6 162 | forward 5 163 | forward 2 164 | forward 2 165 | down 9 166 | forward 1 167 | up 7 168 | forward 3 169 | down 1 170 | down 5 171 | up 8 172 | down 5 173 | forward 5 174 | forward 5 175 | down 9 176 | up 5 177 | forward 8 178 | up 9 179 | down 1 180 | forward 1 181 | down 7 182 | up 3 183 | down 9 184 | down 9 185 | down 5 186 | up 6 187 | forward 7 188 | down 5 189 | down 2 190 | down 5 191 | forward 3 192 | forward 2 193 | forward 9 194 | forward 5 195 | forward 6 196 | up 7 197 | up 7 198 | forward 4 199 | forward 2 200 | up 4 201 | up 6 202 | down 8 203 | up 9 204 | up 5 205 | down 8 206 | forward 4 207 | up 9 208 | forward 8 209 | forward 3 210 | down 6 211 | down 6 212 | down 7 213 | down 6 214 | forward 7 215 | up 5 216 | down 2 217 | down 5 218 | forward 2 219 | up 5 220 | forward 7 221 | down 5 222 | up 4 223 | up 2 224 | forward 2 225 | forward 9 226 | forward 5 227 | forward 8 228 | up 4 229 | forward 6 230 | up 7 231 | forward 5 232 | down 2 233 | down 3 234 | down 8 235 | up 2 236 | down 2 237 | up 1 238 | up 7 239 | down 1 240 | down 6 241 | down 9 242 | down 7 243 | forward 8 244 | up 8 245 | up 9 246 | down 9 247 | forward 6 248 | forward 6 249 | down 6 250 | forward 3 251 | forward 4 252 | forward 6 253 | forward 7 254 | down 5 255 | down 8 256 | forward 7 257 | forward 9 258 | down 4 259 | up 9 260 | forward 8 261 | down 6 262 | down 1 263 | down 2 264 | forward 4 265 | down 5 266 | up 1 267 | forward 1 268 | down 6 269 | forward 4 270 | forward 2 271 | forward 6 272 | down 8 273 | up 2 274 | up 8 275 | forward 3 276 | down 6 277 | forward 7 278 | down 1 279 | forward 1 280 | forward 8 281 | down 8 282 | down 8 283 | down 2 284 | forward 8 285 | down 4 286 | up 8 287 | down 6 288 | forward 2 289 | down 5 290 | up 3 291 | up 1 292 | down 2 293 | forward 4 294 | up 7 295 | forward 2 296 | up 9 297 | forward 1 298 | down 5 299 | forward 3 300 | up 9 301 | up 4 302 | down 4 303 | up 6 304 | down 1 305 | forward 9 306 | up 5 307 | forward 5 308 | up 4 309 | down 6 310 | forward 2 311 | up 6 312 | forward 5 313 | forward 5 314 | down 4 315 | up 7 316 | forward 2 317 | down 9 318 | down 8 319 | down 7 320 | forward 4 321 | forward 7 322 | down 4 323 | forward 9 324 | up 2 325 | forward 1 326 | up 4 327 | down 8 328 | forward 9 329 | up 2 330 | up 5 331 | down 7 332 | up 6 333 | forward 7 334 | up 1 335 | forward 3 336 | down 3 337 | down 2 338 | down 6 339 | down 6 340 | forward 3 341 | down 2 342 | down 2 343 | down 5 344 | down 4 345 | down 6 346 | down 2 347 | forward 7 348 | down 6 349 | forward 4 350 | down 5 351 | down 7 352 | down 3 353 | forward 2 354 | forward 8 355 | forward 1 356 | up 6 357 | down 8 358 | down 4 359 | up 5 360 | forward 5 361 | down 7 362 | forward 5 363 | forward 8 364 | forward 7 365 | down 8 366 | down 5 367 | down 3 368 | up 2 369 | forward 8 370 | forward 7 371 | down 6 372 | up 1 373 | down 9 374 | down 3 375 | down 7 376 | down 2 377 | forward 9 378 | forward 2 379 | forward 4 380 | forward 8 381 | forward 3 382 | forward 2 383 | down 3 384 | down 8 385 | up 7 386 | down 7 387 | down 1 388 | forward 8 389 | down 2 390 | up 4 391 | forward 9 392 | down 6 393 | forward 5 394 | forward 8 395 | forward 1 396 | forward 4 397 | down 6 398 | down 1 399 | down 6 400 | forward 1 401 | forward 7 402 | down 3 403 | down 3 404 | down 1 405 | up 2 406 | down 6 407 | down 5 408 | down 6 409 | forward 5 410 | forward 2 411 | forward 1 412 | forward 8 413 | up 5 414 | down 2 415 | down 9 416 | down 9 417 | down 5 418 | down 3 419 | up 6 420 | forward 2 421 | down 7 422 | down 7 423 | down 2 424 | down 2 425 | up 6 426 | forward 8 427 | forward 6 428 | forward 4 429 | down 1 430 | forward 7 431 | down 5 432 | up 9 433 | forward 5 434 | down 4 435 | down 9 436 | up 7 437 | forward 1 438 | up 3 439 | up 7 440 | forward 6 441 | forward 8 442 | up 6 443 | up 3 444 | forward 4 445 | up 3 446 | down 1 447 | forward 8 448 | forward 1 449 | up 3 450 | forward 7 451 | up 2 452 | forward 6 453 | forward 2 454 | down 2 455 | down 9 456 | down 9 457 | forward 1 458 | forward 8 459 | down 5 460 | forward 4 461 | forward 5 462 | forward 5 463 | down 9 464 | forward 8 465 | up 8 466 | down 6 467 | down 2 468 | down 5 469 | down 6 470 | up 9 471 | up 8 472 | down 4 473 | down 9 474 | up 4 475 | forward 6 476 | forward 1 477 | forward 3 478 | up 4 479 | up 3 480 | forward 3 481 | forward 8 482 | down 1 483 | down 2 484 | down 2 485 | forward 9 486 | forward 4 487 | up 2 488 | forward 7 489 | down 4 490 | up 1 491 | forward 2 492 | forward 9 493 | forward 8 494 | down 4 495 | down 7 496 | up 7 497 | down 1 498 | forward 3 499 | down 7 500 | down 8 501 | up 2 502 | forward 2 503 | forward 8 504 | forward 4 505 | forward 4 506 | down 5 507 | forward 8 508 | down 2 509 | up 7 510 | down 1 511 | up 9 512 | up 5 513 | down 3 514 | forward 6 515 | forward 2 516 | forward 6 517 | down 5 518 | down 6 519 | forward 9 520 | up 5 521 | up 6 522 | down 4 523 | down 5 524 | up 4 525 | down 6 526 | down 2 527 | down 5 528 | down 4 529 | forward 7 530 | forward 6 531 | down 8 532 | forward 2 533 | down 5 534 | down 7 535 | down 2 536 | forward 8 537 | forward 6 538 | down 3 539 | forward 4 540 | up 6 541 | down 9 542 | down 3 543 | forward 3 544 | forward 3 545 | down 9 546 | up 1 547 | up 3 548 | forward 3 549 | forward 6 550 | forward 1 551 | forward 4 552 | forward 3 553 | forward 3 554 | forward 3 555 | down 6 556 | down 8 557 | forward 3 558 | down 5 559 | forward 8 560 | forward 3 561 | down 4 562 | up 3 563 | up 1 564 | down 7 565 | forward 7 566 | up 6 567 | forward 7 568 | down 4 569 | down 7 570 | up 9 571 | down 9 572 | forward 8 573 | down 5 574 | down 2 575 | forward 9 576 | down 3 577 | forward 4 578 | forward 4 579 | forward 4 580 | forward 6 581 | down 1 582 | up 5 583 | forward 8 584 | down 6 585 | forward 5 586 | up 5 587 | up 5 588 | down 2 589 | down 9 590 | down 7 591 | up 3 592 | up 7 593 | up 6 594 | forward 2 595 | forward 6 596 | up 9 597 | forward 5 598 | forward 2 599 | up 4 600 | down 4 601 | down 5 602 | forward 7 603 | down 5 604 | down 7 605 | forward 3 606 | down 6 607 | down 1 608 | forward 6 609 | up 5 610 | up 6 611 | up 3 612 | down 9 613 | up 7 614 | forward 9 615 | down 3 616 | forward 4 617 | up 2 618 | forward 9 619 | down 2 620 | up 2 621 | up 5 622 | forward 1 623 | down 8 624 | down 1 625 | down 8 626 | up 2 627 | forward 9 628 | forward 1 629 | up 2 630 | down 1 631 | up 1 632 | forward 2 633 | down 7 634 | forward 9 635 | up 1 636 | forward 8 637 | down 5 638 | down 5 639 | down 9 640 | forward 5 641 | down 7 642 | down 1 643 | forward 9 644 | down 5 645 | forward 9 646 | forward 9 647 | down 6 648 | down 5 649 | down 6 650 | forward 3 651 | down 4 652 | up 8 653 | down 6 654 | up 4 655 | down 9 656 | up 1 657 | up 2 658 | up 8 659 | forward 6 660 | down 7 661 | down 4 662 | down 9 663 | down 3 664 | forward 9 665 | down 5 666 | forward 6 667 | down 6 668 | forward 7 669 | down 9 670 | forward 2 671 | forward 2 672 | down 8 673 | down 7 674 | forward 5 675 | down 8 676 | forward 6 677 | down 1 678 | forward 6 679 | forward 7 680 | forward 3 681 | forward 2 682 | forward 1 683 | forward 1 684 | down 9 685 | forward 7 686 | up 9 687 | down 5 688 | forward 6 689 | down 4 690 | down 2 691 | forward 4 692 | forward 3 693 | forward 9 694 | down 8 695 | down 2 696 | forward 4 697 | down 8 698 | down 6 699 | forward 9 700 | down 7 701 | forward 1 702 | up 1 703 | forward 3 704 | down 5 705 | down 8 706 | up 6 707 | forward 9 708 | forward 4 709 | down 2 710 | forward 4 711 | up 2 712 | forward 9 713 | down 5 714 | down 1 715 | down 9 716 | forward 5 717 | down 9 718 | forward 1 719 | down 9 720 | forward 8 721 | down 5 722 | forward 9 723 | forward 8 724 | up 8 725 | down 7 726 | up 9 727 | down 5 728 | up 9 729 | forward 7 730 | forward 7 731 | forward 1 732 | up 2 733 | up 2 734 | forward 6 735 | up 5 736 | up 5 737 | down 7 738 | forward 2 739 | up 8 740 | forward 8 741 | down 8 742 | forward 7 743 | forward 8 744 | down 7 745 | down 8 746 | forward 4 747 | forward 2 748 | down 8 749 | up 4 750 | down 1 751 | up 7 752 | forward 4 753 | forward 3 754 | down 6 755 | up 6 756 | forward 6 757 | down 1 758 | forward 3 759 | down 6 760 | forward 6 761 | up 3 762 | up 1 763 | up 5 764 | down 1 765 | up 9 766 | down 8 767 | forward 7 768 | forward 9 769 | up 2 770 | forward 2 771 | forward 6 772 | up 2 773 | up 3 774 | forward 1 775 | forward 2 776 | forward 8 777 | down 6 778 | forward 5 779 | down 8 780 | forward 2 781 | up 1 782 | down 1 783 | down 3 784 | forward 9 785 | down 6 786 | down 1 787 | down 6 788 | down 6 789 | down 6 790 | down 1 791 | up 6 792 | down 6 793 | forward 6 794 | down 5 795 | down 2 796 | up 5 797 | forward 7 798 | down 3 799 | forward 9 800 | forward 2 801 | down 2 802 | down 1 803 | down 9 804 | up 3 805 | down 2 806 | forward 2 807 | forward 6 808 | down 4 809 | up 7 810 | up 3 811 | up 9 812 | forward 3 813 | forward 8 814 | forward 9 815 | forward 4 816 | forward 2 817 | up 7 818 | up 5 819 | down 9 820 | forward 1 821 | up 1 822 | down 7 823 | forward 5 824 | forward 5 825 | down 3 826 | forward 1 827 | forward 6 828 | up 8 829 | down 4 830 | down 2 831 | up 2 832 | forward 2 833 | forward 1 834 | down 4 835 | up 9 836 | down 1 837 | down 4 838 | down 6 839 | forward 3 840 | forward 7 841 | down 4 842 | up 8 843 | down 6 844 | forward 7 845 | forward 4 846 | up 2 847 | down 8 848 | forward 5 849 | down 1 850 | forward 7 851 | down 1 852 | up 6 853 | down 9 854 | forward 3 855 | forward 1 856 | up 2 857 | up 4 858 | forward 8 859 | forward 1 860 | up 8 861 | forward 3 862 | forward 7 863 | up 9 864 | up 6 865 | up 9 866 | down 9 867 | down 5 868 | forward 8 869 | forward 7 870 | down 5 871 | forward 7 872 | forward 6 873 | forward 8 874 | up 4 875 | forward 6 876 | down 6 877 | up 8 878 | down 7 879 | up 8 880 | forward 6 881 | forward 7 882 | down 4 883 | forward 4 884 | up 2 885 | forward 9 886 | down 6 887 | down 2 888 | down 8 889 | forward 6 890 | up 2 891 | up 8 892 | forward 2 893 | down 3 894 | forward 7 895 | forward 6 896 | down 9 897 | up 1 898 | forward 1 899 | down 8 900 | down 8 901 | forward 4 902 | forward 4 903 | up 6 904 | down 8 905 | up 8 906 | forward 1 907 | forward 1 908 | down 6 909 | up 3 910 | up 7 911 | forward 1 912 | forward 1 913 | up 2 914 | forward 2 915 | down 4 916 | up 8 917 | forward 1 918 | up 7 919 | down 2 920 | forward 2 921 | down 1 922 | forward 1 923 | down 4 924 | forward 4 925 | forward 8 926 | up 5 927 | down 6 928 | up 8 929 | forward 4 930 | down 3 931 | up 6 932 | forward 3 933 | forward 4 934 | down 5 935 | forward 1 936 | forward 6 937 | forward 4 938 | forward 1 939 | down 7 940 | down 4 941 | forward 2 942 | down 6 943 | forward 3 944 | down 5 945 | forward 3 946 | forward 4 947 | forward 4 948 | forward 9 949 | down 5 950 | forward 7 951 | forward 7 952 | forward 9 953 | down 1 954 | up 6 955 | forward 1 956 | down 9 957 | forward 3 958 | down 7 959 | up 8 960 | up 6 961 | down 7 962 | forward 2 963 | down 9 964 | forward 9 965 | forward 6 966 | down 9 967 | forward 6 968 | down 8 969 | forward 1 970 | up 6 971 | down 1 972 | forward 6 973 | down 9 974 | forward 6 975 | forward 7 976 | forward 3 977 | forward 8 978 | forward 5 979 | forward 8 980 | down 9 981 | down 2 982 | forward 3 983 | down 3 984 | up 4 985 | down 4 986 | down 3 987 | forward 3 988 | forward 3 989 | down 5 990 | forward 5 991 | forward 1 992 | down 9 993 | down 3 994 | up 7 995 | forward 9 996 | up 1 997 | down 1 998 | down 6 999 | up 1 1000 | forward 2 1001 | -------------------------------------------------------------------------------- /days/day3/input.txt: -------------------------------------------------------------------------------- 1 | 110001010111 2 | 011011110010 3 | 110011110011 4 | 101000010111 5 | 011101100100 6 | 111001011100 7 | 011100000101 8 | 011110110011 9 | 001001111111 10 | 111000010000 11 | 001000101100 12 | 011100111010 13 | 011100111000 14 | 011100010001 15 | 100001100000 16 | 111010111110 17 | 100011000101 18 | 010111000101 19 | 100110110011 20 | 101010110011 21 | 110101110010 22 | 110111100010 23 | 000001100100 24 | 010010011010 25 | 001001001100 26 | 101000000111 27 | 100100110011 28 | 111111100011 29 | 110010001010 30 | 100010110011 31 | 111101101001 32 | 101001001101 33 | 110111011101 34 | 100100101101 35 | 111111000011 36 | 001110010110 37 | 010110110010 38 | 010011100000 39 | 110011100011 40 | 111101001011 41 | 100001101000 42 | 100101100011 43 | 010101100110 44 | 101000001001 45 | 010001011100 46 | 111001010010 47 | 000110000110 48 | 110110111111 49 | 111111010000 50 | 110111110011 51 | 110110010010 52 | 000001001111 53 | 010001000111 54 | 101101100110 55 | 110011100100 56 | 101000010100 57 | 010100010000 58 | 100011001001 59 | 011000111101 60 | 000101011101 61 | 000110111110 62 | 011000101100 63 | 110101101001 64 | 100011110011 65 | 110101010001 66 | 100010100000 67 | 110010010001 68 | 000101101011 69 | 101100111011 70 | 111110110001 71 | 011001000100 72 | 001101111000 73 | 100100100101 74 | 101111001000 75 | 011010110110 76 | 001110011111 77 | 101011001001 78 | 110000100010 79 | 011110100110 80 | 001100101100 81 | 000110000001 82 | 011111001111 83 | 011000110010 84 | 001100011111 85 | 111100010100 86 | 010011111000 87 | 000100101010 88 | 101111100101 89 | 010000001100 90 | 100100101111 91 | 100011101100 92 | 000001111000 93 | 001110000011 94 | 011101011001 95 | 000001111101 96 | 000011001011 97 | 111111000110 98 | 000001011100 99 | 011001100000 100 | 111001011101 101 | 011010000011 102 | 101010101110 103 | 010110010101 104 | 000011101101 105 | 010010011000 106 | 000010100111 107 | 001000000111 108 | 111111011100 109 | 101010010000 110 | 101001001100 111 | 000000100111 112 | 101010101100 113 | 010110100111 114 | 001010001101 115 | 111000000101 116 | 111001101100 117 | 011110010001 118 | 011001111010 119 | 010010011011 120 | 011110111000 121 | 010111110000 122 | 001110001011 123 | 010001001011 124 | 011001001010 125 | 011001001101 126 | 001101011101 127 | 100110100000 128 | 100001111110 129 | 101110100011 130 | 100010111111 131 | 001010010011 132 | 000010011001 133 | 011001111101 134 | 000100000010 135 | 100110010011 136 | 001111001000 137 | 110001011101 138 | 000100011000 139 | 111110000000 140 | 111001101000 141 | 100111000100 142 | 010000010100 143 | 011000110111 144 | 000110001101 145 | 101100110010 146 | 011111101001 147 | 000000100010 148 | 000001101000 149 | 111001111101 150 | 111100010111 151 | 110000010101 152 | 110000101100 153 | 101111010011 154 | 000100010101 155 | 100111100011 156 | 110100101111 157 | 101000001000 158 | 001000100000 159 | 100111111010 160 | 001101111101 161 | 000000101000 162 | 100111101100 163 | 100111010100 164 | 111100010110 165 | 100001010011 166 | 010010001000 167 | 111101010101 168 | 101110101010 169 | 111110001110 170 | 001010111010 171 | 100110001000 172 | 101111001111 173 | 110010011101 174 | 110001110101 175 | 011101000000 176 | 010011110110 177 | 001110101001 178 | 011110011010 179 | 110010111100 180 | 010000100001 181 | 010010000100 182 | 111111000101 183 | 010111100111 184 | 101010110010 185 | 100010010011 186 | 101011010000 187 | 000101100000 188 | 011001000011 189 | 010110000000 190 | 101011101111 191 | 001101001110 192 | 001100100110 193 | 011111110011 194 | 010000101101 195 | 000111101101 196 | 111100101101 197 | 000011001101 198 | 110011111100 199 | 011000110000 200 | 000001010010 201 | 111100111111 202 | 001010000100 203 | 000011010010 204 | 010001000001 205 | 111010111000 206 | 110001010011 207 | 000000101011 208 | 011110011011 209 | 100110111000 210 | 010010110010 211 | 000010111110 212 | 110010001001 213 | 000111001001 214 | 001000011100 215 | 111111011010 216 | 000000110101 217 | 111011111011 218 | 100001110111 219 | 010001110000 220 | 010101100100 221 | 011010100001 222 | 111000101101 223 | 001100110110 224 | 010001111110 225 | 100000101011 226 | 011111111001 227 | 111000001100 228 | 011111100011 229 | 110110110000 230 | 011000101010 231 | 101000000011 232 | 101111110100 233 | 011000101101 234 | 001000011010 235 | 101001100111 236 | 101100001101 237 | 100100101100 238 | 001101011001 239 | 001111100111 240 | 011100101001 241 | 110010000000 242 | 010100111000 243 | 000011010111 244 | 000000100110 245 | 101001000000 246 | 000110100100 247 | 110001110011 248 | 001011001101 249 | 100000111100 250 | 101011011111 251 | 000010110110 252 | 010101110100 253 | 111100111001 254 | 111010101101 255 | 101100001001 256 | 011111000111 257 | 010001101000 258 | 100000001111 259 | 011111101100 260 | 011111100111 261 | 111101111110 262 | 110110100101 263 | 011110001011 264 | 100111100001 265 | 000001101101 266 | 100110101110 267 | 100000010011 268 | 110000000001 269 | 001001101001 270 | 000001111111 271 | 111001001010 272 | 101011100101 273 | 100100000000 274 | 110001101011 275 | 011111001011 276 | 010010001011 277 | 000101010011 278 | 110010110100 279 | 101010101011 280 | 100100001100 281 | 000001100011 282 | 101010000010 283 | 111101100100 284 | 001011010111 285 | 000001010001 286 | 001010001011 287 | 100110000011 288 | 000010101010 289 | 110111011100 290 | 001100111000 291 | 111011010111 292 | 100100110000 293 | 000010111010 294 | 000011010001 295 | 100001111111 296 | 111111000100 297 | 010111111000 298 | 100101010010 299 | 001111111010 300 | 001111011100 301 | 111101100111 302 | 111011011011 303 | 111000100110 304 | 011101001011 305 | 010100101010 306 | 010100001111 307 | 010000001111 308 | 000000000010 309 | 010011010111 310 | 001101001011 311 | 101011001011 312 | 011001101101 313 | 100000000111 314 | 100110011010 315 | 000101000110 316 | 101100010011 317 | 101011011100 318 | 001101010100 319 | 110101110111 320 | 001100001000 321 | 001001100100 322 | 111101011010 323 | 001100100100 324 | 100000100010 325 | 001110111001 326 | 101101001110 327 | 001101110111 328 | 010101100101 329 | 000011111110 330 | 001000111101 331 | 110011101011 332 | 110101011000 333 | 000000100101 334 | 100110100001 335 | 111111101101 336 | 010100101111 337 | 110101011010 338 | 011010011100 339 | 101101010001 340 | 101001010011 341 | 011111001100 342 | 101001010111 343 | 011100100011 344 | 101011110000 345 | 010111001010 346 | 111011000111 347 | 100111001101 348 | 001110111010 349 | 100001111000 350 | 111011010011 351 | 110000101010 352 | 011010000000 353 | 110001111010 354 | 100101000100 355 | 010000110100 356 | 101000101010 357 | 011010101110 358 | 010000111100 359 | 101011100100 360 | 101101111010 361 | 111011111110 362 | 000101010111 363 | 000010111000 364 | 011101101010 365 | 101110100110 366 | 010000011010 367 | 101100100000 368 | 010011010101 369 | 101100011100 370 | 011010101010 371 | 010111101010 372 | 111011100111 373 | 111111110010 374 | 101101100100 375 | 111001010100 376 | 011000001110 377 | 110110001110 378 | 111110100110 379 | 001011011100 380 | 101000010010 381 | 100000101010 382 | 010000011110 383 | 001001110111 384 | 001001001011 385 | 110010011110 386 | 001111001100 387 | 110110100010 388 | 111100000111 389 | 010101101011 390 | 001111111001 391 | 101011000000 392 | 011100011000 393 | 000001000000 394 | 100101001100 395 | 110010011001 396 | 111100111110 397 | 010000110110 398 | 110000111000 399 | 110111100001 400 | 000100100010 401 | 100010001110 402 | 010000111101 403 | 111100011000 404 | 110000000101 405 | 000000000001 406 | 010011111100 407 | 011011111101 408 | 111001111010 409 | 001001001001 410 | 010101011010 411 | 011010011111 412 | 001111000011 413 | 101111111111 414 | 000111101000 415 | 011000111110 416 | 001100101101 417 | 101000000110 418 | 000100001010 419 | 111110010101 420 | 000011101000 421 | 011010101000 422 | 100111100000 423 | 111001111111 424 | 010101000111 425 | 011000100101 426 | 001001110001 427 | 101101011011 428 | 001000001100 429 | 111110111010 430 | 011110111010 431 | 111101100001 432 | 011111101000 433 | 110100010100 434 | 010001110011 435 | 000011010011 436 | 010000110010 437 | 000011111011 438 | 101111011000 439 | 010101111110 440 | 100100101011 441 | 001000011011 442 | 011000100000 443 | 100100111101 444 | 001010110011 445 | 000000000000 446 | 000110111011 447 | 001001011001 448 | 011101010010 449 | 000111000011 450 | 010001000100 451 | 011110011111 452 | 010010111011 453 | 100000000011 454 | 001100111101 455 | 000001000110 456 | 000010000010 457 | 101111001010 458 | 000111000001 459 | 100101011100 460 | 111001110100 461 | 100111001111 462 | 011110111111 463 | 010101011110 464 | 101010011011 465 | 101000010101 466 | 101001101000 467 | 001001011101 468 | 010110101100 469 | 101110111100 470 | 000111011110 471 | 010111001101 472 | 001101100010 473 | 011101001111 474 | 100111111111 475 | 000110101110 476 | 011110001110 477 | 110011100111 478 | 010011100101 479 | 100101000011 480 | 100101010011 481 | 111000110110 482 | 110111011111 483 | 000100011110 484 | 100000000001 485 | 010111111111 486 | 100000100011 487 | 110010011111 488 | 111101110110 489 | 001000001001 490 | 001100011001 491 | 111100110001 492 | 100110100101 493 | 010111101000 494 | 000000000110 495 | 000011011001 496 | 100100001111 497 | 001111100100 498 | 001011010011 499 | 001000110011 500 | 110100010010 501 | 011100110111 502 | 011010110010 503 | 011001110110 504 | 011011100010 505 | 001110101011 506 | 101101100111 507 | 101101111100 508 | 000110000101 509 | 000001110010 510 | 001101110010 511 | 101011000100 512 | 000110000000 513 | 001001011111 514 | 100101101011 515 | 001010100001 516 | 110000111110 517 | 011111101111 518 | 110110111100 519 | 001000010110 520 | 000101111110 521 | 111001000001 522 | 000100110011 523 | 110110000101 524 | 101100101011 525 | 101110000010 526 | 011101100001 527 | 010011000001 528 | 010111000011 529 | 010111011101 530 | 101010100001 531 | 000111011011 532 | 101110010000 533 | 110000000010 534 | 101100011101 535 | 011000011000 536 | 001111101101 537 | 101000001010 538 | 101011010001 539 | 011111100001 540 | 101001011110 541 | 100101011000 542 | 011110001100 543 | 111100011110 544 | 010011101110 545 | 001001110000 546 | 001001000011 547 | 100001010000 548 | 000110010000 549 | 110111010111 550 | 000100110101 551 | 001110101000 552 | 101011000011 553 | 001011100000 554 | 111111111111 555 | 111111011110 556 | 110001100001 557 | 001000001111 558 | 101000100100 559 | 001011001001 560 | 110110001101 561 | 000100000000 562 | 011100001101 563 | 110011001000 564 | 001111011101 565 | 010000111111 566 | 010110011110 567 | 011110111011 568 | 101111011101 569 | 001100011000 570 | 001011111001 571 | 000110001011 572 | 011011010100 573 | 111110001011 574 | 010000110111 575 | 001100011101 576 | 011110111001 577 | 000010101001 578 | 001110000001 579 | 011111010101 580 | 000010010100 581 | 000101011001 582 | 100100000001 583 | 001111101011 584 | 111110010011 585 | 000111111011 586 | 001101010110 587 | 001100111001 588 | 000100011101 589 | 111010010111 590 | 000100000001 591 | 001011101111 592 | 101001110011 593 | 001011110101 594 | 011000001101 595 | 110011001011 596 | 011110111100 597 | 110110101000 598 | 011010001101 599 | 110111001000 600 | 110010010101 601 | 011010001011 602 | 000011100111 603 | 011000110001 604 | 001100001111 605 | 110010011010 606 | 101100101100 607 | 001100000110 608 | 010101001111 609 | 000011000100 610 | 110001000111 611 | 001001011000 612 | 001001001000 613 | 000010111101 614 | 100101001010 615 | 011100111100 616 | 101000011011 617 | 101011010111 618 | 111001000011 619 | 100100100110 620 | 011001011011 621 | 000011110011 622 | 001101000111 623 | 011010010100 624 | 101010101000 625 | 100010110000 626 | 100001011110 627 | 100000110110 628 | 001011101001 629 | 000110100011 630 | 111000101010 631 | 111001011001 632 | 101111010010 633 | 011100101010 634 | 100010111000 635 | 010100101110 636 | 011001110000 637 | 000010001101 638 | 101110000111 639 | 011011001111 640 | 011110001000 641 | 010010100011 642 | 110001100010 643 | 001101011011 644 | 110100000101 645 | 101110100111 646 | 001110111011 647 | 000110100101 648 | 100100100001 649 | 101000111100 650 | 100011101110 651 | 110010000101 652 | 101100011001 653 | 100000010111 654 | 011100100101 655 | 000010011011 656 | 001011001100 657 | 011001000000 658 | 000101000101 659 | 100001001100 660 | 000001101010 661 | 110111101100 662 | 111001101010 663 | 110000110111 664 | 000110010001 665 | 011100000000 666 | 010000111010 667 | 000101000000 668 | 010000101010 669 | 010011110001 670 | 101011010101 671 | 100000110111 672 | 101001110010 673 | 100011011100 674 | 010011100011 675 | 100000100111 676 | 110100110000 677 | 000100001011 678 | 101101011000 679 | 010110011001 680 | 010110111111 681 | 101110010101 682 | 011110001101 683 | 110001001000 684 | 001001101100 685 | 100111010011 686 | 001100010011 687 | 110101111001 688 | 100010101011 689 | 111010001110 690 | 110001100111 691 | 111000010010 692 | 001000001011 693 | 111001000010 694 | 100100100100 695 | 110010101001 696 | 111101101010 697 | 111111100101 698 | 100010010001 699 | 001010010110 700 | 111101011000 701 | 001010111100 702 | 001001111110 703 | 100010100110 704 | 100001110100 705 | 001111001101 706 | 101100100111 707 | 101101100101 708 | 100101110111 709 | 000111110111 710 | 000111001000 711 | 010101000010 712 | 011000111100 713 | 001001001110 714 | 111101010001 715 | 001011010101 716 | 100011000111 717 | 100000001001 718 | 011100011110 719 | 010111011011 720 | 011000010011 721 | 101101011110 722 | 000000100011 723 | 111110010010 724 | 111010011101 725 | 001000100100 726 | 110101100001 727 | 100101101000 728 | 001110111111 729 | 010001000101 730 | 111110000101 731 | 101000001101 732 | 110101010000 733 | 111110101110 734 | 011111011000 735 | 001001001111 736 | 000101010110 737 | 001100110000 738 | 001111101000 739 | 101000100101 740 | 010000000010 741 | 110011000010 742 | 000000001100 743 | 010000101011 744 | 010101011011 745 | 101011010100 746 | 010001011011 747 | 111100011001 748 | 100000111110 749 | 110001101010 750 | 100111101001 751 | 100110001110 752 | 110001010101 753 | 101100001000 754 | 100001000010 755 | 000110100001 756 | 001010000000 757 | 011111100000 758 | 111110101111 759 | 000001101001 760 | 000000111110 761 | 101111101001 762 | 001010000010 763 | 011110010010 764 | 101111000111 765 | 111110101010 766 | 000100001000 767 | 000111000000 768 | 110010010110 769 | 000001111110 770 | 010110101010 771 | 001010100011 772 | 001111011001 773 | 111001001111 774 | 100100010111 775 | 101100001011 776 | 100111000110 777 | 111010111101 778 | 010001011110 779 | 101110000011 780 | 010111000010 781 | 110110001011 782 | 111010100011 783 | 111100011101 784 | 101101101001 785 | 110100001000 786 | 110001011001 787 | 110010100001 788 | 111110010110 789 | 010100100011 790 | 001000011101 791 | 001011001010 792 | 011100111011 793 | 001111100110 794 | 001101100110 795 | 001011000001 796 | 010100100110 797 | 100100100111 798 | 010100011011 799 | 000101110001 800 | 010110011111 801 | 000001011101 802 | 110101011001 803 | 001101101010 804 | 011111111010 805 | 111001100011 806 | 100001000111 807 | 110110011111 808 | 100101010001 809 | 011100100010 810 | 100100011000 811 | 101111001011 812 | 111001011000 813 | 110000101110 814 | 010100100101 815 | 110011101000 816 | 001101000011 817 | 111101100101 818 | 011010011011 819 | 100110001101 820 | 111001111100 821 | 001000100010 822 | 000101111101 823 | 101110011000 824 | 001011111010 825 | 111100101001 826 | 011000101001 827 | 001111010111 828 | 001100110010 829 | 011000011011 830 | 110111011000 831 | 100100000110 832 | 011010110000 833 | 110111101111 834 | 111000111101 835 | 111111100110 836 | 000101010010 837 | 010101001010 838 | 110100110101 839 | 011011100101 840 | 110110111011 841 | 100010111110 842 | 100110111010 843 | 100011001010 844 | 100100100000 845 | 101000110110 846 | 001010101010 847 | 011001101111 848 | 001110110000 849 | 010001100100 850 | 011000100100 851 | 001011001011 852 | 110111100110 853 | 010110010111 854 | 001011011010 855 | 111100001010 856 | 000010001100 857 | 011010001111 858 | 100100001101 859 | 100010011100 860 | 000010001000 861 | 101001010000 862 | 110101001101 863 | 010110111100 864 | 101001100100 865 | 100000111010 866 | 010000010001 867 | 011101011101 868 | 100011110010 869 | 100100011111 870 | 100011100101 871 | 001010010010 872 | 000110011111 873 | 010000000111 874 | 111001101101 875 | 010011000010 876 | 000001111010 877 | 010010001111 878 | 101011100001 879 | 101100111100 880 | 100001000000 881 | 110111110010 882 | 100110000111 883 | 100000111011 884 | 111010011110 885 | 011011011011 886 | 101011000110 887 | 011100011001 888 | 000101011100 889 | 010000101111 890 | 100010100001 891 | 111000100101 892 | 011010010001 893 | 110110100011 894 | 100000011100 895 | 101110101101 896 | 000010110100 897 | 101011111110 898 | 001000100111 899 | 101001001010 900 | 001111110101 901 | 001001000010 902 | 001100101110 903 | 111000001000 904 | 000000100000 905 | 000100111110 906 | 111111110100 907 | 110101001100 908 | 001100000010 909 | 100011011001 910 | 000110000010 911 | 100010101101 912 | 111110101011 913 | 110100000000 914 | 000100111001 915 | 001111001011 916 | 110111011011 917 | 001111100010 918 | 101111011010 919 | 111010011011 920 | 100111101010 921 | 011011011001 922 | 010100000011 923 | 001111010001 924 | 101010101101 925 | 110000011111 926 | 001111111111 927 | 000110000100 928 | 101111101010 929 | 101011011101 930 | 010001011010 931 | 001001011011 932 | 101011010010 933 | 111010000010 934 | 011100101000 935 | 101001011010 936 | 000111110101 937 | 110011011101 938 | 101010010011 939 | 101100001111 940 | 111001010001 941 | 100100010110 942 | 010100100001 943 | 011110110101 944 | 110100000111 945 | 110101001000 946 | 101000010000 947 | 110000000011 948 | 011111110110 949 | 100001010100 950 | 011111000101 951 | 010010101001 952 | 000111100100 953 | 001010000110 954 | 100100110110 955 | 110010101101 956 | 010001111101 957 | 101100000000 958 | 001100000000 959 | 011111111110 960 | 110001100101 961 | 000111001100 962 | 011101111110 963 | 000100110000 964 | 111111111000 965 | 101110010001 966 | 100111000010 967 | 100111011110 968 | 000100111010 969 | 110101011011 970 | 001000111110 971 | 101101110110 972 | 110110010011 973 | 011010100101 974 | 001010101111 975 | 100110111001 976 | 010001111100 977 | 010110101000 978 | 011000000000 979 | 010001011111 980 | 010101101111 981 | 111001010110 982 | 100001001011 983 | 110000100111 984 | 011100000001 985 | 110101100000 986 | 110010110010 987 | 111010111001 988 | 011010111000 989 | 101100000110 990 | 010100011111 991 | 001010111000 992 | 101100101101 993 | 011000111010 994 | 000001001100 995 | 001111010010 996 | 011010100000 997 | 110100110111 998 | 101101000100 999 | 001110001101 1000 | 111001101111 1001 | -------------------------------------------------------------------------------- /days/day1/input.txt: -------------------------------------------------------------------------------- 1 | 148 2 | 167 3 | 168 4 | 169 5 | 182 6 | 188 7 | 193 8 | 209 9 | 195 10 | 206 11 | 214 12 | 219 13 | 225 14 | 219 15 | 211 16 | 215 17 | 216 18 | 195 19 | 200 20 | 197 21 | 226 22 | 231 23 | 234 24 | 248 25 | 249 26 | 265 27 | 262 28 | 275 29 | 271 30 | 283 31 | 297 32 | 302 33 | 306 34 | 307 35 | 309 36 | 313 37 | 306 38 | 307 39 | 310 40 | 307 41 | 306 42 | 284 43 | 291 44 | 296 45 | 297 46 | 298 47 | 302 48 | 297 49 | 295 50 | 296 51 | 297 52 | 293 53 | 294 54 | 295 55 | 303 56 | 302 57 | 304 58 | 305 59 | 303 60 | 288 61 | 289 62 | 290 63 | 291 64 | 290 65 | 288 66 | 302 67 | 304 68 | 282 69 | 283 70 | 290 71 | 301 72 | 304 73 | 301 74 | 330 75 | 337 76 | 341 77 | 340 78 | 337 79 | 341 80 | 342 81 | 343 82 | 301 83 | 311 84 | 312 85 | 302 86 | 317 87 | 318 88 | 319 89 | 345 90 | 347 91 | 354 92 | 358 93 | 356 94 | 357 95 | 362 96 | 361 97 | 357 98 | 375 99 | 376 100 | 383 101 | 384 102 | 382 103 | 383 104 | 384 105 | 391 106 | 400 107 | 410 108 | 413 109 | 419 110 | 421 111 | 424 112 | 426 113 | 425 114 | 427 115 | 429 116 | 432 117 | 433 118 | 434 119 | 440 120 | 446 121 | 444 122 | 453 123 | 461 124 | 463 125 | 461 126 | 464 127 | 463 128 | 489 129 | 486 130 | 485 131 | 486 132 | 499 133 | 498 134 | 493 135 | 494 136 | 485 137 | 490 138 | 499 139 | 498 140 | 506 141 | 510 142 | 519 143 | 524 144 | 520 145 | 521 146 | 543 147 | 550 148 | 551 149 | 553 150 | 564 151 | 567 152 | 568 153 | 572 154 | 597 155 | 579 156 | 592 157 | 597 158 | 618 159 | 620 160 | 628 161 | 651 162 | 674 163 | 671 164 | 684 165 | 719 166 | 718 167 | 730 168 | 727 169 | 729 170 | 724 171 | 720 172 | 737 173 | 740 174 | 753 175 | 763 176 | 764 177 | 762 178 | 772 179 | 774 180 | 773 181 | 771 182 | 777 183 | 774 184 | 783 185 | 791 186 | 792 187 | 791 188 | 801 189 | 822 190 | 821 191 | 814 192 | 811 193 | 812 194 | 817 195 | 835 196 | 844 197 | 837 198 | 839 199 | 841 200 | 855 201 | 872 202 | 881 203 | 895 204 | 910 205 | 900 206 | 902 207 | 913 208 | 914 209 | 911 210 | 917 211 | 918 212 | 923 213 | 933 214 | 932 215 | 931 216 | 915 217 | 912 218 | 923 219 | 939 220 | 940 221 | 941 222 | 943 223 | 947 224 | 948 225 | 931 226 | 933 227 | 944 228 | 933 229 | 947 230 | 948 231 | 949 232 | 956 233 | 949 234 | 948 235 | 969 236 | 973 237 | 989 238 | 993 239 | 994 240 | 993 241 | 1007 242 | 1010 243 | 1020 244 | 1024 245 | 1026 246 | 1031 247 | 1032 248 | 1028 249 | 1045 250 | 1015 251 | 1018 252 | 1024 253 | 998 254 | 1000 255 | 1006 256 | 994 257 | 995 258 | 993 259 | 1010 260 | 1011 261 | 1010 262 | 1015 263 | 1021 264 | 1039 265 | 1045 266 | 1041 267 | 1049 268 | 1044 269 | 1050 270 | 1063 271 | 1066 272 | 1051 273 | 1056 274 | 1059 275 | 1060 276 | 1059 277 | 1064 278 | 1067 279 | 1066 280 | 1067 281 | 1069 282 | 1072 283 | 1074 284 | 1077 285 | 1078 286 | 1080 287 | 1086 288 | 1079 289 | 1089 290 | 1093 291 | 1099 292 | 1102 293 | 1103 294 | 1108 295 | 1119 296 | 1138 297 | 1139 298 | 1144 299 | 1148 300 | 1151 301 | 1152 302 | 1151 303 | 1155 304 | 1154 305 | 1153 306 | 1157 307 | 1159 308 | 1164 309 | 1168 310 | 1172 311 | 1171 312 | 1182 313 | 1189 314 | 1190 315 | 1192 316 | 1194 317 | 1196 318 | 1197 319 | 1222 320 | 1216 321 | 1220 322 | 1206 323 | 1205 324 | 1196 325 | 1200 326 | 1210 327 | 1203 328 | 1200 329 | 1212 330 | 1218 331 | 1219 332 | 1205 333 | 1211 334 | 1212 335 | 1213 336 | 1176 337 | 1187 338 | 1174 339 | 1175 340 | 1180 341 | 1181 342 | 1187 343 | 1185 344 | 1211 345 | 1212 346 | 1199 347 | 1231 348 | 1234 349 | 1249 350 | 1250 351 | 1247 352 | 1235 353 | 1234 354 | 1236 355 | 1237 356 | 1266 357 | 1265 358 | 1286 359 | 1289 360 | 1282 361 | 1283 362 | 1273 363 | 1282 364 | 1267 365 | 1271 366 | 1278 367 | 1291 368 | 1307 369 | 1294 370 | 1292 371 | 1320 372 | 1323 373 | 1314 374 | 1317 375 | 1342 376 | 1344 377 | 1319 378 | 1326 379 | 1330 380 | 1329 381 | 1331 382 | 1335 383 | 1338 384 | 1360 385 | 1364 386 | 1381 387 | 1389 388 | 1386 389 | 1387 390 | 1388 391 | 1389 392 | 1391 393 | 1395 394 | 1398 395 | 1404 396 | 1405 397 | 1408 398 | 1412 399 | 1427 400 | 1410 401 | 1425 402 | 1409 403 | 1410 404 | 1412 405 | 1411 406 | 1394 407 | 1406 408 | 1407 409 | 1404 410 | 1413 411 | 1418 412 | 1417 413 | 1442 414 | 1443 415 | 1444 416 | 1445 417 | 1458 418 | 1452 419 | 1453 420 | 1466 421 | 1465 422 | 1466 423 | 1465 424 | 1476 425 | 1484 426 | 1487 427 | 1490 428 | 1494 429 | 1495 430 | 1502 431 | 1498 432 | 1501 433 | 1496 434 | 1498 435 | 1492 436 | 1501 437 | 1499 438 | 1477 439 | 1480 440 | 1483 441 | 1484 442 | 1483 443 | 1488 444 | 1494 445 | 1491 446 | 1489 447 | 1503 448 | 1535 449 | 1544 450 | 1547 451 | 1549 452 | 1550 453 | 1557 454 | 1542 455 | 1540 456 | 1542 457 | 1543 458 | 1544 459 | 1542 460 | 1541 461 | 1546 462 | 1542 463 | 1540 464 | 1526 465 | 1534 466 | 1536 467 | 1549 468 | 1542 469 | 1552 470 | 1553 471 | 1554 472 | 1569 473 | 1568 474 | 1569 475 | 1563 476 | 1560 477 | 1572 478 | 1568 479 | 1544 480 | 1552 481 | 1559 482 | 1563 483 | 1556 484 | 1577 485 | 1594 486 | 1596 487 | 1581 488 | 1580 489 | 1570 490 | 1552 491 | 1560 492 | 1561 493 | 1558 494 | 1559 495 | 1560 496 | 1561 497 | 1560 498 | 1554 499 | 1562 500 | 1565 501 | 1561 502 | 1570 503 | 1571 504 | 1572 505 | 1568 506 | 1565 507 | 1574 508 | 1616 509 | 1607 510 | 1604 511 | 1606 512 | 1609 513 | 1607 514 | 1608 515 | 1609 516 | 1618 517 | 1621 518 | 1622 519 | 1623 520 | 1628 521 | 1637 522 | 1648 523 | 1656 524 | 1653 525 | 1649 526 | 1651 527 | 1654 528 | 1693 529 | 1697 530 | 1705 531 | 1706 532 | 1705 533 | 1712 534 | 1709 535 | 1708 536 | 1715 537 | 1717 538 | 1721 539 | 1723 540 | 1730 541 | 1729 542 | 1740 543 | 1732 544 | 1733 545 | 1740 546 | 1746 547 | 1747 548 | 1744 549 | 1748 550 | 1746 551 | 1745 552 | 1747 553 | 1749 554 | 1750 555 | 1744 556 | 1747 557 | 1749 558 | 1751 559 | 1749 560 | 1751 561 | 1782 562 | 1783 563 | 1767 564 | 1769 565 | 1799 566 | 1777 567 | 1783 568 | 1784 569 | 1786 570 | 1790 571 | 1791 572 | 1802 573 | 1804 574 | 1807 575 | 1824 576 | 1825 577 | 1840 578 | 1852 579 | 1872 580 | 1874 581 | 1871 582 | 1866 583 | 1861 584 | 1860 585 | 1861 586 | 1842 587 | 1840 588 | 1841 589 | 1842 590 | 1841 591 | 1832 592 | 1848 593 | 1851 594 | 1834 595 | 1846 596 | 1844 597 | 1826 598 | 1829 599 | 1840 600 | 1841 601 | 1844 602 | 1848 603 | 1820 604 | 1831 605 | 1833 606 | 1822 607 | 1814 608 | 1819 609 | 1833 610 | 1832 611 | 1824 612 | 1814 613 | 1815 614 | 1818 615 | 1829 616 | 1832 617 | 1833 618 | 1847 619 | 1846 620 | 1848 621 | 1850 622 | 1880 623 | 1889 624 | 1887 625 | 1888 626 | 1881 627 | 1880 628 | 1883 629 | 1885 630 | 1882 631 | 1881 632 | 1868 633 | 1870 634 | 1855 635 | 1862 636 | 1863 637 | 1870 638 | 1866 639 | 1875 640 | 1894 641 | 1896 642 | 1880 643 | 1898 644 | 1917 645 | 1918 646 | 1914 647 | 1919 648 | 1907 649 | 1905 650 | 1893 651 | 1901 652 | 1899 653 | 1909 654 | 1910 655 | 1918 656 | 1921 657 | 1930 658 | 1929 659 | 1935 660 | 1917 661 | 1919 662 | 1917 663 | 1907 664 | 1911 665 | 1910 666 | 1911 667 | 1930 668 | 1958 669 | 1964 670 | 1971 671 | 1972 672 | 1950 673 | 1963 674 | 1967 675 | 1968 676 | 1965 677 | 1973 678 | 1975 679 | 1965 680 | 1963 681 | 1949 682 | 1950 683 | 1953 684 | 1952 685 | 1957 686 | 1974 687 | 1992 688 | 2022 689 | 2021 690 | 2022 691 | 2025 692 | 2024 693 | 2032 694 | 2048 695 | 2074 696 | 2068 697 | 2072 698 | 2068 699 | 2085 700 | 2091 701 | 2111 702 | 2095 703 | 2091 704 | 2089 705 | 2103 706 | 2107 707 | 2117 708 | 2123 709 | 2128 710 | 2136 711 | 2134 712 | 2140 713 | 2141 714 | 2140 715 | 2141 716 | 2122 717 | 2125 718 | 2129 719 | 2142 720 | 2106 721 | 2101 722 | 2104 723 | 2122 724 | 2131 725 | 2156 726 | 2178 727 | 2187 728 | 2182 729 | 2180 730 | 2177 731 | 2178 732 | 2179 733 | 2197 734 | 2198 735 | 2197 736 | 2198 737 | 2202 738 | 2204 739 | 2210 740 | 2211 741 | 2212 742 | 2207 743 | 2206 744 | 2211 745 | 2216 746 | 2209 747 | 2210 748 | 2202 749 | 2207 750 | 2206 751 | 2207 752 | 2210 753 | 2213 754 | 2185 755 | 2187 756 | 2188 757 | 2203 758 | 2206 759 | 2213 760 | 2233 761 | 2238 762 | 2249 763 | 2250 764 | 2252 765 | 2253 766 | 2240 767 | 2246 768 | 2248 769 | 2235 770 | 2237 771 | 2255 772 | 2257 773 | 2235 774 | 2245 775 | 2240 776 | 2246 777 | 2237 778 | 2255 779 | 2282 780 | 2283 781 | 2291 782 | 2304 783 | 2305 784 | 2306 785 | 2309 786 | 2319 787 | 2321 788 | 2323 789 | 2318 790 | 2317 791 | 2316 792 | 2317 793 | 2323 794 | 2314 795 | 2326 796 | 2313 797 | 2314 798 | 2316 799 | 2317 800 | 2320 801 | 2317 802 | 2326 803 | 2322 804 | 2348 805 | 2349 806 | 2335 807 | 2331 808 | 2338 809 | 2343 810 | 2344 811 | 2345 812 | 2335 813 | 2332 814 | 2339 815 | 2340 816 | 2335 817 | 2346 818 | 2347 819 | 2343 820 | 2342 821 | 2344 822 | 2333 823 | 2326 824 | 2351 825 | 2355 826 | 2363 827 | 2366 828 | 2364 829 | 2393 830 | 2410 831 | 2411 832 | 2433 833 | 2440 834 | 2413 835 | 2407 836 | 2403 837 | 2404 838 | 2407 839 | 2427 840 | 2425 841 | 2430 842 | 2446 843 | 2449 844 | 2450 845 | 2448 846 | 2453 847 | 2454 848 | 2456 849 | 2455 850 | 2456 851 | 2455 852 | 2460 853 | 2451 854 | 2464 855 | 2463 856 | 2468 857 | 2471 858 | 2472 859 | 2456 860 | 2467 861 | 2471 862 | 2481 863 | 2505 864 | 2524 865 | 2534 866 | 2533 867 | 2531 868 | 2526 869 | 2527 870 | 2522 871 | 2534 872 | 2535 873 | 2538 874 | 2537 875 | 2538 876 | 2541 877 | 2542 878 | 2544 879 | 2543 880 | 2529 881 | 2519 882 | 2508 883 | 2522 884 | 2526 885 | 2554 886 | 2560 887 | 2554 888 | 2558 889 | 2562 890 | 2576 891 | 2580 892 | 2581 893 | 2589 894 | 2573 895 | 2596 896 | 2600 897 | 2601 898 | 2606 899 | 2607 900 | 2611 901 | 2606 902 | 2624 903 | 2631 904 | 2634 905 | 2663 906 | 2661 907 | 2663 908 | 2676 909 | 2680 910 | 2678 911 | 2680 912 | 2677 913 | 2672 914 | 2685 915 | 2716 916 | 2713 917 | 2690 918 | 2698 919 | 2699 920 | 2716 921 | 2720 922 | 2719 923 | 2720 924 | 2724 925 | 2722 926 | 2724 927 | 2725 928 | 2727 929 | 2733 930 | 2736 931 | 2739 932 | 2740 933 | 2753 934 | 2762 935 | 2763 936 | 2793 937 | 2808 938 | 2787 939 | 2778 940 | 2782 941 | 2771 942 | 2783 943 | 2795 944 | 2803 945 | 2808 946 | 2832 947 | 2833 948 | 2842 949 | 2843 950 | 2839 951 | 2840 952 | 2807 953 | 2808 954 | 2806 955 | 2825 956 | 2836 957 | 2838 958 | 2842 959 | 2848 960 | 2817 961 | 2818 962 | 2821 963 | 2820 964 | 2844 965 | 2859 966 | 2830 967 | 2824 968 | 2825 969 | 2850 970 | 2853 971 | 2852 972 | 2830 973 | 2835 974 | 2839 975 | 2828 976 | 2827 977 | 2828 978 | 2826 979 | 2827 980 | 2815 981 | 2816 982 | 2819 983 | 2818 984 | 2792 985 | 2789 986 | 2793 987 | 2801 988 | 2778 989 | 2779 990 | 2780 991 | 2783 992 | 2808 993 | 2824 994 | 2792 995 | 2811 996 | 2810 997 | 2777 998 | 2774 999 | 2773 1000 | 2782 1001 | 2781 1002 | 2790 1003 | 2785 1004 | 2789 1005 | 2785 1006 | 2786 1007 | 2785 1008 | 2782 1009 | 2783 1010 | 2785 1011 | 2788 1012 | 2785 1013 | 2790 1014 | 2816 1015 | 2834 1016 | 2835 1017 | 2836 1018 | 2842 1019 | 2846 1020 | 2839 1021 | 2861 1022 | 2863 1023 | 2868 1024 | 2867 1025 | 2864 1026 | 2849 1027 | 2850 1028 | 2851 1029 | 2852 1030 | 2826 1031 | 2815 1032 | 2814 1033 | 2820 1034 | 2821 1035 | 2837 1036 | 2865 1037 | 2866 1038 | 2851 1039 | 2856 1040 | 2861 1041 | 2867 1042 | 2874 1043 | 2871 1044 | 2872 1045 | 2861 1046 | 2842 1047 | 2843 1048 | 2840 1049 | 2872 1050 | 2879 1051 | 2873 1052 | 2881 1053 | 2877 1054 | 2880 1055 | 2873 1056 | 2872 1057 | 2902 1058 | 2906 1059 | 2900 1060 | 2899 1061 | 2911 1062 | 2914 1063 | 2924 1064 | 2925 1065 | 2920 1066 | 2909 1067 | 2901 1068 | 2924 1069 | 2936 1070 | 2938 1071 | 2947 1072 | 2950 1073 | 2962 1074 | 2963 1075 | 2955 1076 | 2953 1077 | 2970 1078 | 2967 1079 | 2947 1080 | 2958 1081 | 2961 1082 | 2962 1083 | 2952 1084 | 2953 1085 | 2951 1086 | 2947 1087 | 2945 1088 | 2952 1089 | 2956 1090 | 2959 1091 | 2961 1092 | 2960 1093 | 2965 1094 | 2966 1095 | 2962 1096 | 2964 1097 | 2972 1098 | 2975 1099 | 2985 1100 | 2982 1101 | 2996 1102 | 2997 1103 | 2991 1104 | 2994 1105 | 2995 1106 | 2994 1107 | 2978 1108 | 2987 1109 | 2994 1110 | 3003 1111 | 2994 1112 | 2993 1113 | 2998 1114 | 3000 1115 | 3004 1116 | 3005 1117 | 3006 1118 | 3024 1119 | 3046 1120 | 3049 1121 | 3053 1122 | 3052 1123 | 3064 1124 | 3067 1125 | 3065 1126 | 3067 1127 | 3068 1128 | 3063 1129 | 3065 1130 | 3067 1131 | 3063 1132 | 3066 1133 | 3068 1134 | 3079 1135 | 3085 1136 | 3086 1137 | 3088 1138 | 3090 1139 | 3093 1140 | 3119 1141 | 3144 1142 | 3143 1143 | 3144 1144 | 3146 1145 | 3159 1146 | 3160 1147 | 3162 1148 | 3164 1149 | 3160 1150 | 3158 1151 | 3143 1152 | 3138 1153 | 3135 1154 | 3140 1155 | 3145 1156 | 3137 1157 | 3134 1158 | 3140 1159 | 3141 1160 | 3135 1161 | 3134 1162 | 3133 1163 | 3123 1164 | 3124 1165 | 3123 1166 | 3124 1167 | 3126 1168 | 3125 1169 | 3109 1170 | 3105 1171 | 3106 1172 | 3120 1173 | 3100 1174 | 3112 1175 | 3114 1176 | 3122 1177 | 3121 1178 | 3120 1179 | 3131 1180 | 3140 1181 | 3141 1182 | 3152 1183 | 3153 1184 | 3154 1185 | 3155 1186 | 3162 1187 | 3160 1188 | 3161 1189 | 3177 1190 | 3190 1191 | 3191 1192 | 3192 1193 | 3194 1194 | 3196 1195 | 3190 1196 | 3187 1197 | 3199 1198 | 3193 1199 | 3200 1200 | 3199 1201 | 3214 1202 | 3212 1203 | 3175 1204 | 3150 1205 | 3153 1206 | 3177 1207 | 3181 1208 | 3165 1209 | 3183 1210 | 3185 1211 | 3187 1212 | 3188 1213 | 3187 1214 | 3201 1215 | 3203 1216 | 3202 1217 | 3200 1218 | 3209 1219 | 3218 1220 | 3217 1221 | 3216 1222 | 3208 1223 | 3204 1224 | 3203 1225 | 3179 1226 | 3185 1227 | 3188 1228 | 3195 1229 | 3196 1230 | 3193 1231 | 3194 1232 | 3211 1233 | 3216 1234 | 3208 1235 | 3210 1236 | 3211 1237 | 3212 1238 | 3204 1239 | 3205 1240 | 3209 1241 | 3232 1242 | 3234 1243 | 3255 1244 | 3254 1245 | 3264 1246 | 3267 1247 | 3269 1248 | 3274 1249 | 3278 1250 | 3290 1251 | 3301 1252 | 3303 1253 | 3305 1254 | 3306 1255 | 3304 1256 | 3305 1257 | 3302 1258 | 3307 1259 | 3308 1260 | 3297 1261 | 3302 1262 | 3307 1263 | 3306 1264 | 3307 1265 | 3306 1266 | 3274 1267 | 3275 1268 | 3276 1269 | 3278 1270 | 3281 1271 | 3280 1272 | 3274 1273 | 3299 1274 | 3298 1275 | 3276 1276 | 3275 1277 | 3278 1278 | 3281 1279 | 3284 1280 | 3285 1281 | 3281 1282 | 3282 1283 | 3244 1284 | 3239 1285 | 3240 1286 | 3217 1287 | 3236 1288 | 3238 1289 | 3240 1290 | 3245 1291 | 3248 1292 | 3255 1293 | 3256 1294 | 3260 1295 | 3261 1296 | 3271 1297 | 3289 1298 | 3302 1299 | 3303 1300 | 3304 1301 | 3305 1302 | 3304 1303 | 3306 1304 | 3307 1305 | 3334 1306 | 3338 1307 | 3341 1308 | 3340 1309 | 3360 1310 | 3354 1311 | 3353 1312 | 3366 1313 | 3369 1314 | 3374 1315 | 3377 1316 | 3368 1317 | 3361 1318 | 3378 1319 | 3385 1320 | 3384 1321 | 3382 1322 | 3386 1323 | 3384 1324 | 3388 1325 | 3381 1326 | 3358 1327 | 3359 1328 | 3363 1329 | 3364 1330 | 3365 1331 | 3366 1332 | 3368 1333 | 3392 1334 | 3419 1335 | 3436 1336 | 3438 1337 | 3452 1338 | 3479 1339 | 3480 1340 | 3483 1341 | 3494 1342 | 3500 1343 | 3511 1344 | 3524 1345 | 3535 1346 | 3560 1347 | 3571 1348 | 3584 1349 | 3600 1350 | 3598 1351 | 3591 1352 | 3593 1353 | 3598 1354 | 3599 1355 | 3598 1356 | 3599 1357 | 3610 1358 | 3608 1359 | 3610 1360 | 3611 1361 | 3615 1362 | 3616 1363 | 3620 1364 | 3606 1365 | 3622 1366 | 3625 1367 | 3629 1368 | 3636 1369 | 3635 1370 | 3640 1371 | 3635 1372 | 3636 1373 | 3634 1374 | 3635 1375 | 3652 1376 | 3654 1377 | 3655 1378 | 3657 1379 | 3642 1380 | 3647 1381 | 3654 1382 | 3661 1383 | 3621 1384 | 3620 1385 | 3621 1386 | 3628 1387 | 3604 1388 | 3597 1389 | 3598 1390 | 3587 1391 | 3588 1392 | 3591 1393 | 3595 1394 | 3594 1395 | 3596 1396 | 3597 1397 | 3598 1398 | 3603 1399 | 3604 1400 | 3605 1401 | 3632 1402 | 3627 1403 | 3630 1404 | 3631 1405 | 3632 1406 | 3642 1407 | 3643 1408 | 3644 1409 | 3649 1410 | 3653 1411 | 3652 1412 | 3653 1413 | 3654 1414 | 3653 1415 | 3669 1416 | 3688 1417 | 3696 1418 | 3697 1419 | 3704 1420 | 3707 1421 | 3710 1422 | 3704 1423 | 3718 1424 | 3721 1425 | 3725 1426 | 3751 1427 | 3757 1428 | 3760 1429 | 3776 1430 | 3775 1431 | 3782 1432 | 3778 1433 | 3792 1434 | 3804 1435 | 3818 1436 | 3819 1437 | 3806 1438 | 3810 1439 | 3795 1440 | 3806 1441 | 3821 1442 | 3823 1443 | 3858 1444 | 3860 1445 | 3858 1446 | 3865 1447 | 3868 1448 | 3875 1449 | 3876 1450 | 3878 1451 | 3888 1452 | 3891 1453 | 3893 1454 | 3884 1455 | 3889 1456 | 3897 1457 | 3891 1458 | 3894 1459 | 3896 1460 | 3924 1461 | 3925 1462 | 3926 1463 | 3927 1464 | 3934 1465 | 3938 1466 | 3966 1467 | 3972 1468 | 3973 1469 | 3977 1470 | 3976 1471 | 4003 1472 | 4017 1473 | 4023 1474 | 4019 1475 | 4017 1476 | 3988 1477 | 3997 1478 | 4010 1479 | 4017 1480 | 4018 1481 | 3994 1482 | 3995 1483 | 3985 1484 | 3987 1485 | 3997 1486 | 4004 1487 | 4003 1488 | 4005 1489 | 4009 1490 | 4007 1491 | 4021 1492 | 4023 1493 | 3998 1494 | 3991 1495 | 4021 1496 | 4020 1497 | 4027 1498 | 4026 1499 | 4030 1500 | 4043 1501 | 4047 1502 | 4048 1503 | 4046 1504 | 4045 1505 | 4046 1506 | 4059 1507 | 4050 1508 | 4064 1509 | 4065 1510 | 4077 1511 | 4083 1512 | 4087 1513 | 4079 1514 | 4087 1515 | 4082 1516 | 4083 1517 | 4111 1518 | 4112 1519 | 4122 1520 | 4123 1521 | 4126 1522 | 4129 1523 | 4138 1524 | 4139 1525 | 4172 1526 | 4160 1527 | 4135 1528 | 4136 1529 | 4147 1530 | 4182 1531 | 4181 1532 | 4180 1533 | 4184 1534 | 4188 1535 | 4191 1536 | 4194 1537 | 4195 1538 | 4176 1539 | 4185 1540 | 4180 1541 | 4187 1542 | 4188 1543 | 4189 1544 | 4190 1545 | 4211 1546 | 4205 1547 | 4208 1548 | 4220 1549 | 4236 1550 | 4239 1551 | 4240 1552 | 4243 1553 | 4240 1554 | 4269 1555 | 4275 1556 | 4274 1557 | 4272 1558 | 4282 1559 | 4281 1560 | 4286 1561 | 4285 1562 | 4248 1563 | 4247 1564 | 4250 1565 | 4249 1566 | 4244 1567 | 4272 1568 | 4265 1569 | 4269 1570 | 4295 1571 | 4280 1572 | 4279 1573 | 4273 1574 | 4256 1575 | 4245 1576 | 4247 1577 | 4248 1578 | 4228 1579 | 4229 1580 | 4231 1581 | 4245 1582 | 4259 1583 | 4261 1584 | 4268 1585 | 4270 1586 | 4272 1587 | 4276 1588 | 4305 1589 | 4322 1590 | 4325 1591 | 4333 1592 | 4329 1593 | 4330 1594 | 4331 1595 | 4328 1596 | 4332 1597 | 4340 1598 | 4367 1599 | 4363 1600 | 4375 1601 | 4399 1602 | 4408 1603 | 4434 1604 | 4412 1605 | 4420 1606 | 4421 1607 | 4422 1608 | 4433 1609 | 4416 1610 | 4430 1611 | 4434 1612 | 4437 1613 | 4438 1614 | 4445 1615 | 4446 1616 | 4448 1617 | 4450 1618 | 4465 1619 | 4468 1620 | 4482 1621 | 4484 1622 | 4461 1623 | 4462 1624 | 4461 1625 | 4462 1626 | 4464 1627 | 4461 1628 | 4464 1629 | 4465 1630 | 4470 1631 | 4478 1632 | 4480 1633 | 4461 1634 | 4471 1635 | 4464 1636 | 4462 1637 | 4463 1638 | 4464 1639 | 4465 1640 | 4454 1641 | 4457 1642 | 4455 1643 | 4456 1644 | 4467 1645 | 4480 1646 | 4490 1647 | 4491 1648 | 4499 1649 | 4500 1650 | 4517 1651 | 4524 1652 | 4540 1653 | 4551 1654 | 4552 1655 | 4559 1656 | 4560 1657 | 4559 1658 | 4565 1659 | 4558 1660 | 4557 1661 | 4562 1662 | 4568 1663 | 4573 1664 | 4578 1665 | 4557 1666 | 4573 1667 | 4574 1668 | 4572 1669 | 4588 1670 | 4613 1671 | 4614 1672 | 4600 1673 | 4602 1674 | 4601 1675 | 4598 1676 | 4597 1677 | 4601 1678 | 4611 1679 | 4612 1680 | 4613 1681 | 4621 1682 | 4622 1683 | 4645 1684 | 4651 1685 | 4650 1686 | 4663 1687 | 4660 1688 | 4657 1689 | 4660 1690 | 4667 1691 | 4666 1692 | 4669 1693 | 4666 1694 | 4654 1695 | 4657 1696 | 4669 1697 | 4672 1698 | 4651 1699 | 4652 1700 | 4655 1701 | 4653 1702 | 4654 1703 | 4669 1704 | 4670 1705 | 4671 1706 | 4672 1707 | 4673 1708 | 4675 1709 | 4681 1710 | 4682 1711 | 4687 1712 | 4691 1713 | 4692 1714 | 4688 1715 | 4687 1716 | 4713 1717 | 4725 1718 | 4719 1719 | 4720 1720 | 4730 1721 | 4728 1722 | 4725 1723 | 4720 1724 | 4721 1725 | 4722 1726 | 4714 1727 | 4716 1728 | 4724 1729 | 4707 1730 | 4716 1731 | 4707 1732 | 4706 1733 | 4707 1734 | 4708 1735 | 4709 1736 | 4710 1737 | 4711 1738 | 4726 1739 | 4694 1740 | 4701 1741 | 4697 1742 | 4698 1743 | 4678 1744 | 4679 1745 | 4680 1746 | 4670 1747 | 4661 1748 | 4677 1749 | 4678 1750 | 4660 1751 | 4649 1752 | 4650 1753 | 4653 1754 | 4655 1755 | 4650 1756 | 4657 1757 | 4658 1758 | 4660 1759 | 4663 1760 | 4686 1761 | 4691 1762 | 4686 1763 | 4676 1764 | 4658 1765 | 4656 1766 | 4655 1767 | 4657 1768 | 4656 1769 | 4655 1770 | 4670 1771 | 4661 1772 | 4658 1773 | 4659 1774 | 4663 1775 | 4664 1776 | 4673 1777 | 4691 1778 | 4694 1779 | 4696 1780 | 4698 1781 | 4702 1782 | 4706 1783 | 4714 1784 | 4709 1785 | 4707 1786 | 4708 1787 | 4719 1788 | 4725 1789 | 4744 1790 | 4754 1791 | 4782 1792 | 4778 1793 | 4808 1794 | 4826 1795 | 4830 1796 | 4838 1797 | 4841 1798 | 4848 1799 | 4855 1800 | 4866 1801 | 4862 1802 | 4865 1803 | 4852 1804 | 4881 1805 | 4873 1806 | 4875 1807 | 4874 1808 | 4876 1809 | 4869 1810 | 4866 1811 | 4870 1812 | 4867 1813 | 4866 1814 | 4883 1815 | 4912 1816 | 4918 1817 | 4938 1818 | 4960 1819 | 4948 1820 | 4956 1821 | 4961 1822 | 4978 1823 | 4993 1824 | 4994 1825 | 4998 1826 | 5000 1827 | 5001 1828 | 5007 1829 | 5009 1830 | 5015 1831 | 5002 1832 | 5005 1833 | 5039 1834 | 5037 1835 | 5043 1836 | 5044 1837 | 5051 1838 | 5053 1839 | 5057 1840 | 5058 1841 | 5059 1842 | 5058 1843 | 5065 1844 | 5067 1845 | 5066 1846 | 5069 1847 | 5070 1848 | 5077 1849 | 5076 1850 | 5077 1851 | 5078 1852 | 5079 1853 | 5085 1854 | 5081 1855 | 5087 1856 | 5107 1857 | 5122 1858 | 5123 1859 | 5099 1860 | 5066 1861 | 5083 1862 | 5109 1863 | 5105 1864 | 5106 1865 | 5090 1866 | 5112 1867 | 5102 1868 | 5109 1869 | 5108 1870 | 5109 1871 | 5108 1872 | 5109 1873 | 5118 1874 | 5114 1875 | 5117 1876 | 5119 1877 | 5139 1878 | 5144 1879 | 5142 1880 | 5148 1881 | 5151 1882 | 5147 1883 | 5148 1884 | 5160 1885 | 5172 1886 | 5154 1887 | 5156 1888 | 5155 1889 | 5164 1890 | 5155 1891 | 5143 1892 | 5122 1893 | 5147 1894 | 5162 1895 | 5163 1896 | 5151 1897 | 5152 1898 | 5157 1899 | 5163 1900 | 5203 1901 | 5211 1902 | 5222 1903 | 5224 1904 | 5241 1905 | 5239 1906 | 5250 1907 | 5254 1908 | 5250 1909 | 5251 1910 | 5252 1911 | 5256 1912 | 5276 1913 | 5274 1914 | 5246 1915 | 5248 1916 | 5251 1917 | 5250 1918 | 5254 1919 | 5267 1920 | 5285 1921 | 5286 1922 | 5292 1923 | 5290 1924 | 5289 1925 | 5293 1926 | 5294 1927 | 5299 1928 | 5303 1929 | 5305 1930 | 5306 1931 | 5316 1932 | 5317 1933 | 5319 1934 | 5320 1935 | 5326 1936 | 5325 1937 | 5330 1938 | 5329 1939 | 5332 1940 | 5336 1941 | 5338 1942 | 5339 1943 | 5349 1944 | 5353 1945 | 5354 1946 | 5346 1947 | 5348 1948 | 5349 1949 | 5358 1950 | 5359 1951 | 5360 1952 | 5361 1953 | 5377 1954 | 5380 1955 | 5390 1956 | 5391 1957 | 5403 1958 | 5402 1959 | 5405 1960 | 5404 1961 | 5406 1962 | 5405 1963 | 5406 1964 | 5405 1965 | 5406 1966 | 5434 1967 | 5443 1968 | 5444 1969 | 5458 1970 | 5478 1971 | 5484 1972 | 5491 1973 | 5492 1974 | 5504 1975 | 5507 1976 | 5508 1977 | 5514 1978 | 5512 1979 | 5523 1980 | 5529 1981 | 5534 1982 | 5535 1983 | 5558 1984 | 5560 1985 | 5561 1986 | 5534 1987 | 5543 1988 | 5538 1989 | 5537 1990 | 5533 1991 | 5554 1992 | 5558 1993 | 5557 1994 | 5554 1995 | 5590 1996 | 5601 1997 | 5604 1998 | 5623 1999 | 5626 2000 | 5625 2001 | 2002 | --------------------------------------------------------------------------------