diff --git a/2016/ruby/day_03.rb b/2016/ruby/day_03.rb new file mode 100644 index 0000000..c7e88b4 --- /dev/null +++ b/2016/ruby/day_03.rb @@ -0,0 +1,2016 @@ +def valid_triangle?(a, b, c) + a+b > c && a+c > b && b+c > a +end + +if __FILE__ == $0 + candidates = DATA.read.lines.each_slice(3).flat_map do |a, b, c| + a = a.scan(/\d+/).map(&:to_i) + b = b.scan(/\d+/).map(&:to_i) + c = c.scan(/\d+/).map(&:to_i) + a.zip(b).zip(c).map(&:flatten) + end + p candidates.select {|sides| valid_triangle?(*sides)}.size +end + +require 'minitest' +# require 'minitest/autorun' + +class TestDay3 < Minitest::Test + def test_day_3 + refute valid_triangle?(5, 10, 25) + end +end + +__END__ + 566 477 376 + 575 488 365 + 50 18 156 + 558 673 498 + 133 112 510 + 670 613 25 + 84 197 643 + 910 265 611 + 894 252 545 + 581 3 598 + 98 742 574 + 628 746 193 + 129 677 265 + 187 445 169 + 288 242 128 + 569 744 439 + 685 748 471 + 256 23 157 + 218 343 491 + 777 905 633 + 778 867 840 + 672 772 947 + 500 763 420 + 449 665 653 + 23 558 858 + 745 407 904 + 766 194 576 + 11 541 423 + 179 690 274 + 174 747 279 + 741 538 336 + 507 698 667 + 689 920 467 + 405 861 35 + 575 631 992 + 317 573 981 + 817 536 44 + 816 205 653 + 45 631 683 + 509 300 418 + 712 192 865 + 666 133 859 + 32 331 54 + 572 432 259 + 552 456 267 + 766 931 643 + 902 840 557 + 465 318 175 + 491 863 329 + 463 795 564 + 589 213 805 + 340 323 123 + 602 812 499 + 898 931 555 + 899 835 341 + 316 487 789 + 677 790 797 + 341 502 123 + 502 196 136 + 702 617 82 + 939 581 362 + 801 834 951 + 464 941 843 + 7 756 971 + 273 297 661 + 270 620 387 + 776 96 80 + 891 125 92 + 376 175 141 + 435 247 949 + 719 586 478 + 578 662 801 + 446 202 556 + 596 336 5 + 855 202 558 + 541 314 17 + 43 295 959 + 507 433 942 + 380 721 579 + 313 670 629 + 301 341 59 + 338 776 161 + 202 291 844 + 528 564 736 + 411 765 465 + 489 98 611 + 301 817 959 + 895 836 890 + 249 313 267 + 726 976 881 + 300 601 657 + 985 91 438 + 925 596 905 + 250 850 331 + 104 714 258 + 312 189 196 + 36 62 611 + 218 756 600 + 225 803 736 + 765 250 259 + 768 438 728 + 268 613 578 + 951 816 919 + 706 923 495 + 430 487 915 + 416 964 623 + 737 699 581 + 836 981 90 + 740 471 498 + 17 781 602 + 732 527 191 + 57 126 235 + 778 344 370 + 822 398 366 + 245 597 127 + 407 658 902 + 542 545 985 + 786 663 93 + 872 512 690 + 897 151 655 + 226 362 164 + 257 629 168 + 94 280 86 + 577 611 45 + 648 756 953 + 89 556 924 + 116 330 373 + 730 297 713 + 836 630 486 + 431 10 177 + 350 21 950 + 442 34 831 + 219 115 125 + 259 111 836 + 56 13 825 + 837 648 336 + 414 314 670 + 787 906 792 + 232 526 550 + 220 409 216 + 383 241 720 + 101 724 8 + 108 695 885 + 23 33 894 + 458 827 435 + 489 664 675 + 272 542 261 + 18 250 218 + 896 60 659 + 906 284 823 + 179 668 925 + 174 362 227 + 211 589 911 + 514 333 704 + 575 716 896 + 762 382 597 + 344 783 294 + 408 795 209 + 91 119 110 + 717 616 307 + 760 106 333 + 374 563 514 + 454 51 709 + 564 499 158 + 566 541 601 + 901 327 137 + 417 859 921 + 726 627 828 + 534 416 475 + 221 533 310 + 731 423 274 + 534 636 902 + 463 513 606 + 921 148 829 + 314 151 657 + 454 238 935 + 468 244 703 + 253 124 615 + 427 524 804 + 194 545 380 + 913 998 210 + 203 797 141 + 993 320 265 + 208 144 488 + 791 710 361 + 953 637 413 + 372 472 926 + 686 216 677 + 775 476 473 + 683 224 524 + 670 424 556 + 286 642 660 + 578 964 895 + 715 938 675 + 727 48 846 + 386 538 362 + 271 702 241 + 620 537 487 + 689 388 118 + 223 315 599 + 477 445 509 + 369 787 300 + 645 679 536 + 613 461 511 + 586 730 876 + 597 586 541 + 745 452 960 + 577 77 581 + 733 177 562 + 923 191 64 + 521 751 297 + 422 780 709 + 521 887 550 + 808 681 829 + 907 938 753 + 507 307 991 + 752 386 22 + 684 270 155 + 91 234 151 + 568 950 170 + 651 954 210 + 789 31 307 + 550 71 560 + 463 715 400 + 491 765 600 + 131 455 904 + 592 453 555 + 559 788 676 + 391 484 363 + 405 404 280 + 68 114 556 + 307 518 632 + 49 549 907 + 288 287 482 + 729 36 395 + 440 768 636 + 838 772 889 + 99 231 794 + 181 81 684 + 252 253 843 + 738 717 531 + 125 311 536 + 727 508 487 + 992 76 234 + 680 114 100 + 501 165 292 + 597 562 167 + 223 887 429 + 613 345 482 + 209 45 787 + 98 175 821 + 178 196 252 + 345 127 459 + 767 896 750 + 601 965 522 + 792 541 699 + 989 350 109 + 337 799 588 + 276 531 244 + 461 655 162 + 413 284 340 + 327 93 556 + 431 873 989 + 164 826 956 + 279 486 578 + 488 275 248 + 672 462 539 + 636 448 39 + 116 504 619 + 550 353 618 + 803 506 5 + 641 482 513 + 190 973 509 + 4 105 745 + 443 619 243 + 440 519 754 + 624 62 907 + 644 231 907 + 232 238 900 + 866 749 665 + 490 988 547 + 815 482 135 + 331 992 234 + 252 812 623 + 95 661 698 + 15 378 91 + 986 338 255 + 979 205 218 + 927 59 302 + 161 231 250 + 855 250 389 + 588 356 40 + 279 90 105 + 707 273 77 + 846 311 842 + 870 305 833 + 77 477 346 + 638 496 395 + 642 374 864 + 73 526 717 + 851 399 892 + 873 444 889 + 988 133 217 + 950 702 591 + 989 338 278 + 307 628 794 + 815 568 390 + 974 725 622 + 463 296 984 + 605 409 526 + 665 554 473 + 106 852 381 + 874 597 620 + 481 609 245 + 604 18 655 + 702 611 814 + 711 341 254 + 130 458 865 + 677 689 278 + 926 675 223 + 363 15 154 + 189 785 793 + 189 556 925 + 92 332 617 + 1 884 831 + 176 37 482 + 174 856 362 + 432 978 371 + 957 662 493 + 749 873 714 + 259 938 328 + 692 837 649 + 721 949 456 + 488 304 194 + 270 776 448 + 446 879 257 + 647 705 462 + 720 305 25 + 230 489 454 + 920 303 582 + 325 20 478 + 970 303 168 + 628 29 916 + 398 209 489 + 248 194 426 + 426 276 899 + 14 274 981 + 430 12 799 + 229 235 745 + 268 663 528 + 283 439 906 + 542 983 253 + 214 938 241 + 575 123 228 + 704 628 326 + 567 678 468 + 439 984 300 + 580 228 520 + 229 668 370 + 512 701 624 + 267 912 271 + 666 839 776 + 804 362 559 + 400 565 127 + 418 349 450 + 136 671 460 + 302 515 931 + 185 764 911 + 441 574 331 + 902 856 448 + 123 934 288 + 890 143 683 + 307 470 748 + 339 169 127 + 114 339 834 + 789 639 631 + 676 82 453 + 247 563 394 + 436 655 703 + 352 906 631 + 277 367 327 + 585 757 427 + 545 710 988 + 153 705 689 + 98 300 882 + 140 491 135 + 193 220 911 + 371 739 602 + 538 419 864 + 280 786 352 + 795 750 697 + 808 341 79 + 361 606 668 + 57 277 452 + 524 267 976 + 525 45 762 + 462 885 782 + 90 837 156 + 510 394 826 + 617 23 812 + 443 755 483 + 255 756 866 + 931 404 762 + 184 496 236 + 841 792 640 + 932 259 869 + 893 697 951 + 37 451 493 + 939 592 146 + 789 104 25 + 477 617 150 + 427 506 86 + 723 243 717 + 795 705 638 + 908 506 556 + 741 755 408 + 608 852 240 + 613 717 393 + 392 59 448 + 877 724 100 + 61 141 24 + 101 257 130 + 139 313 147 + 999 130 568 + 82 256 539 + 941 183 193 + 279 793 217 + 628 347 824 + 503 506 905 + 646 629 909 + 785 518 510 + 510 199 701 + 413 201 703 + 399 548 247 + 11 396 606 + 250 981 822 + 314 758 810 + 513 476 139 + 830 232 74 + 448 693 690 + 503 556 646 + 604 448 579 + 21 441 367 + 603 155 428 + 589 655 64 + 524 726 849 + 262 556 808 + 693 19 969 + 102 306 91 + 773 287 939 + 49 2 177 + 937 54 697 + 967 51 745 + 388 262 356 + 193 636 387 + 554 537 478 + 510 689 720 + 693 670 665 + 905 32 730 + 516 420 525 + 109 627 935 + 421 282 693 + 504 374 435 + 241 619 662 + 277 809 333 + 319 43 766 + 787 803 267 + 941 828 722 + 710 489 10 + 654 395 148 + 95 733 154 + 270 163 706 + 247 564 771 + 269 635 204 + 560 604 137 + 379 164 72 + 282 557 149 + 871 461 499 + 140 475 289 + 816 12 533 + 974 361 166 + 769 545 848 + 543 493 875 + 475 192 926 + 342 564 976 + 501 448 782 + 94 172 75 + 275 856 267 + 215 853 210 + 41 496 331 + 829 583 434 + 818 306 478 + 660 431 552 + 509 716 355 + 404 812 211 + 549 63 271 + 422 642 655 + 397 590 389 + 698 235 288 + 319 95 603 + 810 218 336 + 709 590 89 + 749 734 884 + 118 896 862 + 550 398 700 + 505 207 165 + 449 339 778 + 664 929 821 + 724 926 630 + 89 21 391 + 698 176 786 + 718 479 938 + 391 577 266 + 634 178 29 + 56 373 972 + 687 259 969 + 98 480 250 + 951 134 237 + 939 491 15 + 899 303 834 + 252 416 295 + 887 537 926 + 496 232 609 + 130 534 575 + 519 436 934 + 639 648 29 + 625 127 541 + 291 544 511 + 744 570 404 + 430 772 439 + 381 304 231 + 525 527 785 + 137 802 499 + 542 632 966 + 637 482 42 + 207 643 532 + 527 816 501 + 194 982 271 + 862 943 367 + 846 217 324 + 872 894 184 + 911 776 718 + 939 849 594 + 745 354 472 + 838 305 284 + 744 157 759 + 436 263 650 + 605 326 348 + 319 530 463 + 639 358 479 + 675 826 732 + 609 682 912 + 97 714 874 + 848 330 858 + 874 646 24 + 508 518 881 + 567 481 576 + 431 561 603 + 934 715 700 + 833 311 198 + 323 661 724 + 997 162 319 + 93 395 412 + 977 497 232 + 858 448 225 + 900 316 259 + 107 458 401 + 397 723 817 + 720 328 17 + 346 631 802 + 824 567 852 + 810 234 269 + 251 784 926 + 490 316 317 + 637 291 350 + 593 583 602 + 450 116 310 + 907 210 231 + 904 264 396 + 612 221 267 + 144 156 136 + 683 248 293 + 64 786 842 + 52 606 511 + 26 192 927 + 830 422 399 + 956 349 575 + 254 130 660 + 431 515 161 + 961 522 198 + 995 873 43 + 967 855 268 + 487 898 564 + 595 378 636 + 707 203 268 + 710 226 775 + 277 120 551 + 675 631 758 + 203 160 294 + 873 667 637 + 279 597 765 + 26 667 338 + 305 963 550 + 163 858 901 + 328 832 537 + 204 25 494 + 601 307 594 + 71 405 613 + 642 691 258 + 341 439 293 + 93 470 627 + 361 30 430 + 942 70 305 + 831 963 304 + 368 925 25 + 115 82 139 + 53 185 545 + 160 247 536 + 462 260 666 + 296 696 84 + 465 683 683 + 591 228 220 + 743 744 432 + 165 758 559 + 651 933 87 + 872 37 514 + 340 970 512 + 576 654 416 + 27 383 888 + 567 840 586 + 722 822 425 + 657 872 880 + 91 453 574 + 28 970 437 + 955 274 342 + 933 753 172 + 582 836 289 + 642 966 727 + 240 298 925 + 253 241 795 + 115 374 68 + 354 162 821 + 283 587 328 + 627 566 650 + 712 159 846 + 365 973 654 + 848 281 89 + 901 900 568 + 211 583 905 + 296 480 895 + 433 337 45 + 229 741 115 + 249 675 433 + 179 507 470 + 796 121 16 + 963 523 101 + 469 485 112 + 343 846 7 + 391 733 732 + 89 419 735 + 571 797 25 + 785 740 519 + 436 198 533 + 96 387 856 + 250 391 421 + 215 15 842 + 389 128 120 + 323 673 729 + 87 583 624 + 807 454 314 + 970 227 247 + 652 230 405 + 391 534 677 + 993 253 880 + 747 688 284 + 492 932 421 + 290 800 344 + 696 151 586 + 535 61 371 + 493 455 676 + 138 417 892 + 851 568 234 + 480 639 309 + 903 829 404 + 662 85 687 + 703 112 607 + 410 151 995 + 275 465 774 + 97 579 152 + 301 516 913 + 960 436 672 + 870 230 800 + 151 263 674 + 97 515 754 + 763 67 705 + 720 516 398 + 817 696 171 + 770 89 606 + 655 660 736 + 536 236 421 + 713 104 578 + 607 296 729 + 432 222 852 + 626 751 769 + 529 954 670 + 927 18 64 + 559 840 376 + 592 819 312 + 423 489 842 + 766 14 657 + 350 498 198 + 777 199 736 + 767 639 924 + 17 684 692 + 652 739 958 + 735 874 486 + 175 308 988 + 625 615 601 + 125 235 645 + 752 791 50 + 263 568 505 + 475 307 580 + 241 679 757 + 89 812 852 + 133 824 507 + 94 396 868 + 285 756 877 + 424 811 336 + 587 202 550 + 623 402 145 + 169 730 142 + 652 649 22 + 42 181 68 + 160 20 161 + 132 166 179 + 566 277 716 + 521 381 640 + 168 212 123 + 489 333 741 + 62 328 71 + 506 16 721 + 360 388 194 + 516 412 767 + 713 686 964 + 711 765 514 + 959 285 600 + 759 610 862 + 715 308 357 + 348 41 10 + 731 306 360 + 902 727 296 + 867 770 187 + 63 794 254 + 196 410 505 + 693 527 570 + 725 386 119 + 322 796 62 + 480 514 92 + 514 825 38 + 346 422 647 + 210 455 853 + 142 40 340 + 298 382 190 + 433 867 205 + 346 489 315 + 860 258 369 + 845 976 997 + 114 974 851 + 168 441 671 + 868 467 717 + 824 26 616 + 911 581 779 + 853 127 81 + 640 681 776 + 926 331 747 + 576 681 846 + 626 673 515 + 361 462 553 + 188 968 946 + 512 933 571 + 357 238 647 + 698 738 668 + 786 602 599 + 946 216 264 + 700 485 646 + 553 382 781 + 180 127 629 + 637 622 628 + 798 504 116 + 337 59 665 + 701 287 318 + 389 251 716 + 570 551 491 + 256 889 465 + 665 720 734 + 630 801 550 + 637 699 547 + 319 277 130 + 807 803 576 + 231 314 966 + 944 813 672 + 510 539 729 + 339 673 746 + 829 616 34 + 320 151 16 + 318 128 482 + 4 146 473 + 226 777 102 + 207 731 253 + 139 162 344 + 134 404 641 + 564 974 592 + 569 771 878 + 570 646 794 + 589 126 159 + 507 754 908 + 832 358 827 + 572 251 974 + 922 454 938 + 964 819 26 + 963 150 603 + 50 916 630 + 578 63 306 + 333 897 826 + 716 886 733 + 93 726 208 + 876 729 569 + 876 3 755 + 271 294 734 + 886 677 723 + 643 688 273 + 896 404 627 + 991 524 399 + 155 165 685 + 195 634 821 + 650 277 711 + 459 697 131 + 436 855 749 + 196 97 765 + 529 765 313 + 781 986 44 + 966 768 340 + 218 706 304 + 489 179 646 + 61 267 435 + 466 364 718 + 392 149 666 + 467 152 791 + 180 286 624 + 151 170 372 + 870 267 612 + 897 107 768 + 2 487 286 + 902 669 833 + 902 742 635 + 397 258 175 + 742 95 866 + 957 213 717 + 723 555 749 + 528 527 14 + 203 83 762 + 247 428 68 + 656 153 208 + 644 496 268 + 14 641 16 + 515 670 176 + 523 58 192 + 424 617 72 + 766 588 999 + 653 202 943 + 219 567 386 + 177 799 633 + 229 499 572 + 579 445 767 + 365 247 682 + 771 518 125 + 310 151 329 + 849 782 365 + 613 769 364 + 479 495 603 + 551 260 105 + 717 326 650 + 476 48 883 + 537 368 839 + 136 321 105 + 370 683 482 + 396 576 186 + 58 549 594 + 37 532 381 + 940 248 161 + 915 546 228 + 629 860 96 + 672 121 741 + 283 932 834 + 162 737 544 + 66 967 333 + 199 916 591 + 880 571 265 + 953 573 132 + 224 51 196 + 562 494 245 + 853 94 317 + 550 519 80 + 349 741 972 + 814 201 949 + 464 779 408 + 32 790 544 + 263 785 261 + 260 19 562 + 592 362 648 + 661 292 897 + 247 222 349 + 947 306 89 + 126 329 366 + 857 466 329 + 594 744 791 + 546 202 429 + 526 619 501 + 54 693 748 + 138 682 753 + 182 283 74 + 613 333 444 + 9 403 359 + 618 160 457 + 312 162 510 + 536 506 191 + 309 375 567 + 72 548 736 + 678 983 50 + 638 990 699 + 263 204 770 + 362 13 268 + 603 214 866 + 564 522 46 + 864 918 863 + 307 863 842 + 364 940 152 + 827 403 778 + 960 825 792 + 13 811 777 + 890 912 391 + 880 384 443 + 735 649 473 + 937 443 635 + 702 768 256 + 604 809 720 + 407 56 908 + 422 823 198 + 376 523 140 + 906 236 927 + 851 473 978 + 449 835 308 + 800 156 332 + 384 969 62 + 282 338 353 + 868 472 884 + 681 749 966 + 744 430 279 + 137 425 4 + 631 184 285 + 781 850 209 + 450 376 696 + 698 833 851 + 307 749 415 + 952 124 766 + 842 847 658 + 95 49 635 + 578 934 703 + 491 903 253 + 721 679 85 + 801 363 502 + 501 622 421 + 657 98 602 + 745 979 905 + 925 884 326 + 88 601 144 + 379 699 426 + 319 379 293 + 564 328 773 + 579 716 455 + 331 478 990 + 789 304 216 + 387 466 567 + 942 206 417 + 840 321 46 + 128 457 227 + 819 597 243 + 666 160 978 + 226 513 80 + 454 502 927 + 860 578 640 + 983 130 721 + 263 540 201 + 591 692 499 + 569 939 531 + 87 814 872 + 753 650 280 + 265 715 441 + 988 141 611 + 746 238 590 + 789 735 639 + 147 552 139 + 37 954 595 + 342 411 696 + 330 629 474 + 314 736 149 + 596 684 86 + 772 248 136 + 442 384 616 + 563 153 418 + 498 299 818 + 408 375 746 + 446 394 745 + 177 17 534 + 257 630 592 + 619 878 657 + 612 711 637 + 594 980 637 + 399 57 594 + 829 952 547 + 286 730 148 + 828 225 934 + 671 639 963 + 249 393 818 + 343 531 687 + 229 775 270 + 987 44 875 + 896 666 346 + 936 638 753 + 299 838 549 + 824 735 59 + 766 277 572 + 582 151 777 + 610 144 505 + 120 76 902 + 300 882 441 + 677 435 161 + 631 843 567 + 62 401 375 + 263 744 375 + 310 463 141 + 108 479 719 + 484 266 17 + 382 247 712 + 158 558 705 + 48 479 686 + 209 339 958 + 20 212 453 + 858 254 120 + 872 430 344 + 801 700 786 + 991 700 911 + 644 213 692 + 911 149 433 + 752 795 344 + 762 862 332 + 764 35 500 + 391 639 489 + 809 601 497 + 148 874 83 + 552 4 126 + 524 880 195 + 530 430 179 + 497 345 219 + 810 694 47 + 995 128 999 + 73 149 917 + 978 234 146 + 394 735 35 + 483 478 236 + 293 707 271 + 614 458 753 + 44 531 638 + 599 893 188 + 729 731 863 + 693 915 859 + 192 205 17 + 999 119 541 + 943 262 318 + 123 305 514 + 339 536 246 + 585 228 300 + 904 330 325 + 127 806 45 + 366 429 536 + 480 801 555 + 656 977 669 + 611 969 5 + 659 123 671 + 644 292 524 + 557 143 298 + 383 202 824 + 306 144 97 + 427 541 20 + 735 490 109 + 14 379 582 + 418 367 756 + 406 740 823 + 832 461 125 + 36 692 764 + 830 497 768 + 632 572 31 + 996 607 705 + 400 451 712 + 586 598 235 + 806 364 406 + 409 841 606 + 971 282 437 + 162 208 944 + 957 174 591 + 567 110 844 + 412 211 378 + 181 113 637 + 145 600 443 + 359 588 426 + 335 707 255 + 345 476 975 + 864 521 972 + 832 78 5 + 556 541 905 + 389 712 588 + 848 412 813 + 833 121 316 + 744 743 472 + 872 837 421 + 185 793 219 + 995 168 61 + 901 837 158 + 693 955 245 + 232 634 550 + 725 502 451 + 526 966 477 + 589 607 682 + 901 366 247 + 815 769 769 + 828 627 947 + 121 664 262 + 708 863 3 + 522 968 186 + 429 808 186 + 378 162 364 + 398 361 86 + 194 235 285 + 657 176 376 + 526 787 136 + 170 696 290 + 513 117 970 + 617 797 235 + 603 889 900 + 706 142 594 + 291 321 96 + 746 388 668 + 764 762 718 + 567 821 703 + 968 421 883 + 926 456 320 + 952 963 262 + 489 785 540 + 446 933 970 + 361 607 136 + 230 682 987 + 27 153 528 + 437 3 502 + 430 153 51 + 349 206 892 + 162 683 862 + 366 878 244 + 976 258 195 + 827 80 381 + 476 246 569 + 881 123 222 + 724 342 409 + 565 421 511 + 703 402 344 + 704 549 486 + 16 311 414 + 198 894 65 + 904 475 93 + 967 688 43 + 246 96 527 + 195 327 220 + 134 355 395 + 222 416 988 + 541 343 90 + 708 109 900 + 245 574 287 + 979 617 284 + 804 889 130 + 174 798 507 + 66 623 519 + 142 276 146 + 308 772 509 + 28 773 82 + 319 8 524 + 507 952 927 + 471 867 924 + 64 535 874 + 959 165 236 + 475 98 117 + 961 201 293 + 397 757 621 + 311 287 215 + 492 602 425 + 111 56 243 + 606 69 927 + 692 41 875 + 523 927 982 + 410 810 947 + 188 120 120 + 543 569 92 + 838 442 414 + 595 789 505 + 16 896 639 + 642 843 845 + 644 116 938 + 26 347 466 + 376 664 681 + 404 946 571 + 766 195 436 + 427 134 509 + 336 85 163 + 575 689 670 + 598 236 705 + 53 498 76 + 977 35 38 + 674 41 911 + 572 37 901 + 118 714 700 + 499 958 771 + 477 841 86 + 633 877 670 + 776 873 625 + 260 88 85 + 281 816 296 + 568 966 670 + 653 267 684 + 245 23 935 + 316 235 462 + 99 246 739 + 278 652 240 + 367 542 525 + 150 246 563 + 422 937 236 + 57 994 430 + 472 188 202 + 636 778 684 + 756 912 605 + 461 769 534 + 646 508 56 + 963 305 767 + 618 686 769 + 684 750 1 + 567 173 333 + 896 805 330 + 821 987 638 + 805 127 644 + 74 899 12 + 444 434 269 + 449 147 181 + 35 542 321 + 320 105 163 + 815 289 546 + 537 208 691 + 754 345 54 + 116 804 780 + 694 512 744 + 941 423 795 + 936 147 702 + 8 327 865 + 42 141 761 + 189 658 273 + 214 545 668 + 259 219 322 + 455 782 551 + 512 646 526 + 127 710 932 + 169 615 729 + 55 482 381 + 571 98 930 + 362 721 296 + 645 684 804 + 701 257 529 + 731 711 683 + 225 575 423 + 918 23 492 + 917 271 217 + 5 293 537 + 733 595 105 + 741 433 932 + 31 259 920 + 303 691 396 + 363 580 863 + 427 474 576 + 703 175 246 + 529 280 209 + 641 412 319 + 530 890 726 + 382 779 433 + 284 147 323 + 860 703 766 + 292 427 768 + 606 666 736 + 638 384 264 + 97 398 574 + 564 627 455 + 678 442 618 + 432 28 687 + 343 466 101 + 304 594 5 + 402 43 474 + 498 552 476 + 243 113 538 + 938 102 498 + 829 44 470 + 208 449 197 + 352 286 425 + 503 600 241 + 531 209 490 + 615 758 363 + 518 783 258 + 886 636 579 + 386 960 821 + 678 547 784 + 481 843 238 + 476 256 6 + 2 973 233 + 331 144 822 + 410 545 872 + 558 546 49 + 1 388 106 + 384 557 457 + 387 699 460 + 592 809 571 + 388 942 111 + 651 756 647 + 860 518 794 + 722 894 731 + 324 881 256 + 429 197 383 + 226 239 685 + 489 51 339 + 746 402 745 + 756 608 434 + 220 452 629 + 773 631 798 + 296 137 537 + 942 704 260 + 820 565 673 + 745 666 110 + 411 406 721 + 44 522 531 + 777 394 494 + 807 835 66 + 36 362 38 + 113 290 975 + 141 124 953 + 38 663 51 + 507 677 316 + 514 115 360 + 956 194 865 + 642 677 111 + 682 868 889 + 173 507 339 + 270 546 318 + 279 115 177 + 803 915 913 + 139 107 187 + 925 995 943 + 467 471 233 + 433 321 977 + 689 358 961 + 544 479 788 + 450 403 438 + 868 155 740 + 583 251 384 + 163 220 215 + 732 43 519 + 253 323 234 + 481 314 873 + 298 284 975 + 574 480 690 + 357 181 86 + 292 627 695 + 817 908 950 + 302 137 865 + 553 991 507 + 660 645 933 + 752 819 831 + 437 189 346 + 144 283 738 + 108 491 429 + 91 209 688 + 289 24 138 + 676 604 82 + 670 585 204 + 78 439 403 + 81 674 548 + 65 476 475 + 904 502 542 + 873 723 506 + 909 628 337 + 918 227 277 + 929 208 324 + 255 125 477 + 415 30 618 + 981 24 546 + 588 38 694 + 876 102 663 + 628 262 927 + 419 277 964 + 160 523 632 + 424 250 582 + 452 773 68 + 466 162 225 + 913 64 463 + 486 95 612 + 350 264 427 + 723 184 872 + 868 376 701 + 441 318 509 + 506 286 58 + 528 448 513 + 166 533 92 + 169 552 414 + 298 85 320 + 663 883 192 + 664 572 433 + 12 738 538 + 330 943 94 + 398 814 754 + 273 195 682 + 980 461 544 + 282 558 554 + 788 117 660 + 336 326 337 + 465 184 829 + 352 180 988 + 130 707 122 + 854 295 141 + 943 444 176 + 14 4 473 + 514 11 603 + 525 10 892 + 22 700 427 + 400 673 470 + 411 288 583 + 448 431 582 + 466 752 501 + 722 530 104 + 509 673 464 + 727 112 677 + 567 614 716 + 677 9 561 + 620 976 603 + 324 965 87 + 215 738 844 + 206 128 637 + 91 727 427 + 625 343 624 + 639 770 757 + 859 691 710 + 278 140 634 + 405 798 561 + 356 903 78 + 54 748 890 + 858 870 310 + 821 723 983 + 385 489 431 + 776 261 962 + 834 527 752 + 798 945 282 + 802 788 288 + 73 899 228 + 689 667 74 + 995 691 603 + 656 320 652 + 841 63 62 + 176 797 83 + 736 788 20 + 558 775 454 + 275 858 544 + 792 353 95 + 494 939 694 + 126 964 408 + 388 65 952 + 229 368 992 + 408 180 481 + 618 347 793 + 860 4 641 + 49 296 895 + 901 294 563 + 24 434 159 + 368 911 593 + 380 864 492 + 637 378 275 + 614 383 295 + 246 326 514 + 373 617 382 + 409 214 294 + 263 802 419 + 820 909 683 + 136 452 290 + 860 558 491 + 789 235 334 + 116 508 41 + 721 691 303 + 14 176 77 + 217 281 289 + 231 337 237 + 348 400 206 + 382 317 684 + 33 187 667 + 467 434 77 + 534 588 846 + 905 483 871 + 810 422 10 + 724 260 181 + 155 259 189 + 223 860 544 + 271 706 576 + 109 431 554 + 904 486 465 + 65 317 535 + 837 365 126 + 496 700 349 + 642 252 496 + 750 706 505 + 956 978 875 + 845 953 89 + 138 259 805 + 787 793 322 + 59 739 128 + 790 957 389 + 126 232 160 + 391 807 909 + 454 814 762 + 532 358 272 + 81 718 554 + 482 413 655 + 185 141 894 + 734 96 739 + 583 204 372 + 587 314 772 + 402 496 292 + 798 187 543 + 516 824 922 + 409 146 140 + 408 922 840 + 50 373 244 + 355 476 321 + 365 181 219 + 601 842 642 + 426 426 889 + 482 828 584 + 589 698 588 + 835 97 287 + 759 769 768 + 858 520 481 + 947 517 219 + 266 101 400 + 110 65 448 + 920 310 431 + 926 318 23 + 388 698 374 + 45 753 406 + 421 68 374 + 203 268 623 + 345 586 611 + 344 678 32 + 542 830 187 + 487 916 456 + 211 905 567 + 760 36 585 + 327 380 425 + 793 405 604 + 432 630 267 + 804 307 366 + 678 716 108 + 437 316 22 + 441 214 160 + 329 364 149 + 726 82 76 + 896 857 361 + 298 796 294 + 652 406 409 + 855 123 704 + 430 461 744 + 909 130 88 + 847 910 968 + 499 898 952 + 662 458 83 + 335 589 395 + 863 481 361 + 829 217 305 + 822 306 635 + 664 212 610 + 271 203 675 + 95 409 236 + 337 408 517 + 749 357 294 + 646 214 322 + 457 181 157 + 649 391 73 + 756 258 84 + 201 312 11 + 660 14 560 + 128 491 96 + 676 507 570 + 302 944 54 + 25 48 296 + 313 916 351 + 932 496 355 + 437 198 217 + 826 627 370 + 312 259 193 + 293 718 654 + 142 459 647 + 233 336 90 + 81 360 232 + 168 23 144 + 442 523 662 + 151 952 260 + 444 963 489 + 302 934 249 + 687 523 698 + 672 494 462 + 461 198 649 + 540 410 269 + 539 515 839 + 76 494 81 + 514 571 496 + 438 216 557 + 279 215 690 + 581 362 667 + 318 229 53 + 427 590 52 + 510 61 485 + 168 596 451 + 960 61 155 + 475 32 291 + 933 57 182 + 458 702 818 + 740 29 821 + 896 716 738 + 842 614 701 + 398 466 502 + 739 612 737 + 297 349 887 + 262 303 886 + 404 302 428 + 668 758 600 + 674 815 379 + 44 395 225 + 673 341 476 + 516 403 384 + 392 168 134 + 907 562 511 + 555 406 413 + 818 737 773 + 745 588 545 + 323 27 639 + 555 571 802 + 326 712 513 + 729 310 664 + 810 468 804 + 509 79 438 + 418 680 403 + 314 600 470 + 186 678 12 + 302 381 921 + 380 946 932 + 104 725 596 + 113 950 471 + 11 478 291 + 520 535 519 + 574 113 668 + 862 541 617 + 606 173 314 + 960 141 857 + 837 154 926 + 933 161 137 + 255 86 277 + 794 117 308 + 664 305 588 + 321 329 554 + 961 22 181 + 433 604 132 + 655 546 431 + 553 187 373 + 797 526 674 + 563 122 203 + 352 613 626 + 780 196 549 + 253 191 547 + 746 15 412 + 193 523 391 + 281 537 657 + 90 99 658 + 892 737 646 + 503 717 663 + 693 205 50 + 700 409 662 + 465 896 15 + 865 901 661 + 508 664 192 + 770 36 898 + 980 638 809 + 301 307 626 + 724 803 839 + 851 514 256 + 521 225 170 + 678 217 789 + 735 289 904 + 501 745 719 + 896 434 575 + 819 850 977 + 607 691 590 + 28 840 476 + 623 647 167 + 890 740 708 + 465 674 219 + 753 127 674 + 370 149 657 + 189 802 476 + 455 734 376 + 37 988 149 + 947 966 168 + 921 20 311 + 798 911 338 + 768 467 681 + 102 554 488 + 747 178 608 + 747 507 690 + 372 490 197 + 22 974 389 + 717 173 396 + 734 881 363 + 560 889 821 + 721 54 963 + 164 836 833 + 135 687 910 + 204 995 188 + 188 623 865 + 877 495 264 + 335 316 399 + 593 234 300 + 655 418 169 + 471 551 86 + 444 381 226 + 820 461 304 + 38 90 334 + 845 471 47 + 449 124 218 + 694 134 547 + 270 31 551 + 434 195 750 + 774 171 789 + 877 92 222 + 843 153 340 + 758 184 326 + 252 239 372 + 651 915 540 + 740 369 10 + 828 998 547 + 814 903 348 + 491 364 548 + 549 612 267 + 429 170 705 + 978 231 210 + 917 339 866 + 432 133 494 + 983 409 450 + 567 465 246 + 744 885 684 + 717 876 790 + 183 11 138 + 984 740 311 + 686 528 843 + 757 343 712 + 31 752 940 + 17 254 106 + 11 956 974 + 495 572 789 + 440 496 763 + 183 254 25 + 152 559 980 + 146 573 585 + 200 456 938 + 371 716 716 + 228 742 679 + 205 167 988 + 81 223 806 + 509 421 192 + 544 485 828 + 112 205 502 + 45 133 555 + 155 134 784 + 179 196 625 + 81 18 589 + 165 187 754 + 63 341 774 + 197 266 913 + 229 306 680 + 509 317 787 + 976 260 535 + 661 228 518 + 289 398 700 + 173 398 645 + 170 370 283 + 574 346 446 + 422 511 42 + 275 305 482 + 118 698 869 + 338 616 897 + 334 520 229 + 461 570 136 + 84 336 245 + 531 242 157 + 646 786 356 + 372 841 124 + 701 67 294 + 481 880 626 + 155 951 361 + 365 273 946 + 555 163 93 + 163 11 515 + 582 168 495 + 128 732 752 + 489 685 558 + 529 788 341 + 820 489 73 + 941 118 684 + 188 545 680 + 64 923 188 + 639 859 445 + 656 985 606 + 769 169 9 + 931 310 472 + 205 177 472 + 702 72 27 + 490 977 472 + 914 972 495 + 837 417 333 + 437 505 440 + 947 881 490 + 379 998 906 + 371 789 763 + 604 804 200 + 250 622 969 + 778 445 924 + 844 925 78 + 346 843 440 + 409 228 396 + 73 902 717 + 759 75 511 + 720 172 435 + 427 155 938 + 75 920 213 + 49 895 187 + 122 33 211 + 216 875 709 + 169 644 534 + 47 243 546 + 942 591 200 + 874 790 870 + 667 478 797 + 475 900 250 + 92 442 709 + 386 505 856 + 70 747 595 + 390 854 740 + 333 267 730 + 576 421 336 + 872 428 352 + 884 676 20 + 119 686 6 + 126 171 145 + 6 548 140 + 296 406 627 + 276 546 653 + 329 232 356 + 811 203 648 + 757 762 656 + 117 717 71 + 718 17 608 + 965 859 794 + 707 870 536 + 251 549 245 + 259 814 314 + 498 510 247 + 885 287 649 + 339 312 690 + 839 518 589 + 691 875 327 + 549 852 692 + 421 764 399 + 841 938 617 + 683 73 682 + 838 903 513 + 155 700 266 + 529 492 436 + 501 209 572 + 177 405 185 + 70 407 98 + 183 151 184 + 144 4 719 + 387 261 642 + 391 259 283 + 336 371 946 + 902 810 751 + 714 509 251 + 124 194 440 + 928 357 256 + 921 241 599 + 725 694 141 + 219 281 864 + 650 757 979 + 515 678 735 + 553 766 397 + 771 749 360 + 273 414 543 + 92 185 692 + 365 480 246 + 153 416 246 + 527 431 831 + 387 385 991 + 610 849 42 + 761 473 507 + 268 863 467 + 797 777 614 + 567 810 153 + 384 43 459 + 656 78 14 + 884 328 89 + 565 340 99 + 315 431 403 + 169 687 408 + 451 365 7 + 706 807 561 + 324 769 821 + 645 257 467 + 90 654 617 + 230 859 466 + 309 363 691 + 903 656 499 + 165 880 548 + 966 474 64 + 640 851 817 + 585 967 754 + 340 699 880 + 253 575 32 + 783 349 971 + 748 532 972 + 132 312 789 + 673 254 152 + 769 90 643 + 485 483 3 + 228 254 423 + 281 282 418 + 279 536 891 + 566 876 988 + 753 959 569 + 629 379 773 + 194 468 866 + 690 307 128 + 813 568 374 + 798 387 873 + 980 363 555 + 337 750 620 + 565 783 190 + 780 32 746 + 716 222 594 + 319 50 443 + 498 212 408 + 106 552 95 + 96 465 866 + 143 216 903 + 570 209 371 + 73 136 163 + 579 290 400 + 836 640 252 + 190 81 864 + 684 657 892 + 405 876 982 + 722 499 926 + 567 764 62 + 383 573 458 + 111 337 947 + 381 366 568 + 883 323 560 + 942 136 297 + 103 324 576