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