Initial commit, first 27 tasks
[project-euler.git] / euler27.ipynb
1 {
2 "cells": [
3 {
4 "cell_type": "code",
5 "execution_count": 6,
6 "metadata": {
7 "collapsed": false
8 },
9 "outputs": [
10 {
11 "data": {
12 "text/plain": [
13 "true"
14 ]
15 },
16 "execution_count": 6,
17 "metadata": {},
18 "output_type": "execute_result"
19 }
20 ],
21 "source": [
22 "require \"awesome_print\"\n",
23 "load 'primes.rb'"
24 ]
25 },
26 {
27 "cell_type": "code",
28 "execution_count": 8,
29 "metadata": {
30 "collapsed": false,
31 "scrolled": true
32 },
33 "outputs": [
34 {
35 "data": {
36 "text/plain": [
37 "#<Primes:0x0055d434088d98 @primes=[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223, 1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291, 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373, 1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511, 1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583, 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657, 1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811, 1823, 1831, 1847, 1861, 1867, 1871, 1873, 1877, 1879, 1889, 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973, 1979, 1987, 1993, 1997, 1999, 2003, 2011, 2017, 2027, 2029, 2039, 2053, 2063, 2069, 2081, 2083, 2087, 2089, 2099, 2111, 2113, 2129, 2131, 2137, 2141, 2143, 2153, 2161, 2179, 2203, 2207, 2213, 2221, 2237, 2239, 2243, 2251, 2267, 2269, 2273, 2281, 2287, 2293, 2297, 2309, 2311, 2333, 2339, 2341, 2347, 2351, 2357, 2371, 2377, 2381, 2383, 2389, 2393, 2399, 2411, 2417, 2423, 2437, 2441, 2447, 2459, 2467, 2473, 2477, 2503, 2521, 2531, 2539, 2543, 2549, 2551, 2557, 2579, 2591, 2593, 2609, 2617, 2621, 2633, 2647, 2657, 2659, 2663, 2671, 2677, 2683, 2687, 2689, 2693, 2699, 2707, 2711, 2713, 2719, 2729, 2731, 2741, 2749, 2753, 2767, 2777, 2789, 2791, 2797, 2801, 2803, 2819, 2833, 2837, 2843, 2851, 2857, 2861, 2879, 2887, 2897, 2903, 2909, 2917, 2927, 2939, 2953, 2957, 2963, 2969, 2971, 2999, 3001, 3011, 3019, 3023, 3037, 3041, 3049, 3061, 3067, 3079, 3083, 3089, 3109, 3119, 3121, 3137, 3163, 3167, 3169, 3181, 3187, 3191, 3203, 3209, 3217, 3221, 3229, 3251, 3253, 3257, 3259, 3271, 3299, 3301, 3307, 3313, 3319, 3323, 3329, 3331, 3343, 3347, 3359, 3361, 3371, 3373, 3389, 3391, 3407, 3413, 3433, 3449, 3457, 3461, 3463, 3467, 3469, 3491, 3499, 3511, 3517, 3527, 3529, 3533, 3539, 3541, 3547, 3557, 3559, 3571, 3581, 3583, 3593, 3607, 3613, 3617, 3623, 3631, 3637, 3643, 3659, 3671, 3673, 3677, 3691, 3697, 3701, 3709, 3719, 3727, 3733, 3739, 3761, 3767, 3769, 3779, 3793, 3797, 3803, 3821, 3823, 3833, 3847, 3851, 3853, 3863, 3877, 3881, 3889, 3907, 3911, 3917, 3919, 3923, 3929, 3931, 3943, 3947, 3967, 3989, 4001, 4003, 4007, 4013, 4019, 4021, 4027, 4049, 4051, 4057, 4073, 4079, 4091, 4093, 4099, 4111, 4127, 4129, 4133, 4139, 4153, 4157, 4159, 4177, 4201, 4211, 4217, 4219, 4229, 4231, 4241, 4243, 4253, 4259, 4261, 4271, 4273, 4283, 4289, 4297, 4327, 4337, 4339, 4349, 4357, 4363, 4373, 4391, 4397, 4409, 4421, 4423, 4441, 4447, 4451, 4457, 4463, 4481, 4483, 4493, 4507, 4513, 4517, 4519, 4523, 4547, 4549, 4561, 4567, 4583, 4591, 4597, 4603, 4621, 4637, 4639, 4643, 4649, 4651, 4657, 4663, 4673, 4679, 4691, 4703, 4721, 4723, 4729, 4733, 4751, 4759, 4783, 4787, 4789, 4793, 4799, 4801, 4813, 4817, 4831, 4861, 4871, 4877, 4889, 4903, 4909, 4919, 4931, 4933, 4937, 4943, 4951, 4957, 4967, 4969, 4973, 4987, 4993, 4999, 5003, 5009, 5011, 5021, 5023, 5039, 5051, 5059, 5077, 5081, 5087, 5099, 5101, 5107, 5113, 5119, 5147, 5153, 5167, 5171, 5179, 5189, 5197, 5209, 5227, 5231, 5233, 5237, 5261, 5273, 5279, 5281, 5297, 5303, 5309, 5323, 5333, 5347, 5351, 5381, 5387, 5393, 5399, 5407, 5413, 5417, 5419, 5431, 5437, 5441, 5443, 5449, 5471, 5477, 5479, 5483, 5501, 5503, 5507, 5519, 5521, 5527, 5531, 5557, 5563, 5569, 5573, 5581, 5591, 5623, 5639, 5641, 5647, 5651, 5653, 5657, 5659, 5669, 5683, 5689, 5693, 5701, 5711, 5717, 5737, 5741, 5743, 5749, 5779, 5783, 5791, 5801, 5807, 5813, 5821, 5827, 5839, 5843, 5849, 5851, 5857, 5861, 5867, 5869, 5879, 5881, 5897, 5903, 5923, 5927, 5939, 5953, 5981, 5987, 6007, 6011, 6029, 6037, 6043, 6047, 6053, 6067, 6073, 6079, 6089, 6091, 6101, 6113, 6121, 6131, 6133, 6143, 6151, 6163, 6173, 6197, 6199, 6203, 6211, 6217, 6221, 6229, 6247, 6257, 6263, 6269, 6271, 6277, 6287, 6299, 6301, 6311, 6317, 6323, 6329, 6337, 6343, 6353, 6359, 6361, 6367, 6373, 6379, 6389, 6397, 6421, 6427, 6449, 6451, 6469, 6473, 6481, 6491, 6521, 6529, 6547, 6551, 6553, 6563, 6569, 6571, 6577, 6581, 6599, 6607, 6619, 6637, 6653, 6659, 6661, 6673, 6679, 6689, 6691, 6701, 6703, 6709, 6719, 6733, 6737, 6761, 6763, 6779, 6781, 6791, 6793, 6803, 6823, 6827, 6829, 6833, 6841, 6857, 6863, 6869, 6871, 6883, 6899, 6907, 6911, 6917, 6947, 6949, 6959, 6961, 6967, 6971, 6977, 6983, 6991, 6997, 7001, 7013, 7019, 7027, 7039, 7043, 7057, 7069, 7079, 7103, 7109, 7121, 7127, 7129, 7151, 7159, 7177, 7187, 7193, 7207, 7211, 7213, 7219, 7229, 7237, 7243, 7247, 7253, 7283, 7297, 7307, 7309, 7321, 7331, 7333, 7349, 7351, 7369, 7393, 7411, 7417, 7433, 7451, 7457, 7459, 7477, 7481, 7487, 7489, 7499, 7507, 7517, 7523, 7529, 7537, 7541, 7547, 7549, 7559, 7561, 7573, 7577, 7583, 7589, 7591, 7603, 7607, 7621, 7639, 7643, 7649, 7669, 7673, 7681, 7687, 7691, 7699, 7703, 7717, 7723, 7727, 7741, 7753, 7757, 7759, 7789, 7793, 7817, 7823, 7829, 7841, 7853, 7867, 7873, 7877, 7879, 7883, 7901, 7907, 7919, 7927, 7933, 7937, 7949, 7951, 7963, 7993, 8009, 8011, 8017, 8039, 8053, 8059, 8069, 8081, 8087, 8089, 8093, 8101, 8111, 8117, 8123, 8147, 8161, 8167, 8171, 8179, 8191, 8209, 8219, 8221, 8231, 8233, 8237, 8243, 8263, 8269, 8273, 8287, 8291, 8293, 8297, 8311, 8317, 8329, 8353, 8363, 8369, 8377, 8387, 8389, 8419, 8423, 8429, 8431, 8443, 8447, 8461, 8467, 8501, 8513, 8521, 8527, 8537, 8539, 8543, 8563, 8573, 8581, 8597, 8599, 8609, 8623, 8627, 8629, 8641, 8647, 8663, 8669, 8677, 8681, 8689, 8693, 8699, 8707, 8713, 8719, 8731, 8737, 8741, 8747, 8753, 8761, 8779, 8783, 8803, 8807, 8819, 8821, 8831, 8837, 8839, 8849, 8861, 8863, 8867, 8887, 8893, 8923, 8929, 8933, 8941, 8951, 8963, 8969, 8971, 8999, 9001, 9007, 9011, 9013, 9029, 9041, 9043, 9049, 9059, 9067, 9091, 9103, 9109, 9127, 9133, 9137, 9151, 9157, 9161, 9173, 9181, 9187, 9199, 9203, 9209, 9221, 9227, 9239, 9241, 9257, 9277, 9281, 9283, 9293, 9311, 9319, 9323, 9337, 9341, 9343, 9349, 9371, 9377, 9391, 9397, 9403, 9413, 9419, 9421, 9431, 9433, 9437, 9439, 9461, 9463, 9467, 9473, 9479, 9491, 9497, 9511, 9521, 9533, 9539, 9547, 9551, 9587, 9601, 9613, 9619, 9623, 9629, 9631, 9643, 9649, 9661, 9677, 9679, 9689, 9697, 9719, 9721, 9733, 9739, 9743, 9749, 9767, 9769, 9781, 9787, 9791, 9803, 9811, 9817, 9829, 9833, 9839, 9851, 9857, 9859, 9871, 9883, 9887, 9901, 9907, 9923, 9929, 9931, 9941, 9949, 9967, 9973], @cache_up_to=30, @mod_candidates=[1, 7, 11, 13, 17, 19, 23, 29]>"
38 ]
39 },
40 "execution_count": 8,
41 "metadata": {},
42 "output_type": "execute_result"
43 }
44 ],
45 "source": [
46 "primes = Primes.instance;"
47 ]
48 },
49 {
50 "cell_type": "code",
51 "execution_count": 18,
52 "metadata": {
53 "collapsed": false
54 },
55 "outputs": [
56 {
57 "data": {
58 "text/plain": [
59 "false"
60 ]
61 },
62 "execution_count": 18,
63 "metadata": {},
64 "output_type": "execute_result"
65 }
66 ],
67 "source": [
68 "primes.include? 10008"
69 ]
70 },
71 {
72 "cell_type": "code",
73 "execution_count": 19,
74 "metadata": {
75 "collapsed": false,
76 "scrolled": true
77 },
78 "outputs": [
79 {
80 "data": {
81 "text/plain": [
82 "[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223, 1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291, 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373, 1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511, 1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583, 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657, 1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811, 1823, 1831, 1847, 1861, 1867, 1871, 1873, 1877, 1879, 1889, 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973, 1979, 1987, 1993, 1997, 1999, 2003, 2011, 2017, 2027, 2029, 2039, 2053, 2063, 2069, 2081, 2083, 2087, 2089, 2099, 2111, 2113, 2129, 2131, 2137, 2141, 2143, 2153, 2161, 2179, 2203, 2207, 2213, 2221, 2237, 2239, 2243, 2251, 2267, 2269, 2273, 2281, 2287, 2293, 2297, 2309, 2311, 2333, 2339, 2341, 2347, 2351, 2357, 2371, 2377, 2381, 2383, 2389, 2393, 2399, 2411, 2417, 2423, 2437, 2441, 2447, 2459, 2467, 2473, 2477, 2503, 2521, 2531, 2539, 2543, 2549, 2551, 2557, 2579, 2591, 2593, 2609, 2617, 2621, 2633, 2647, 2657, 2659, 2663, 2671, 2677, 2683, 2687, 2689, 2693, 2699, 2707, 2711, 2713, 2719, 2729, 2731, 2741, 2749, 2753, 2767, 2777, 2789, 2791, 2797, 2801, 2803, 2819, 2833, 2837, 2843, 2851, 2857, 2861, 2879, 2887, 2897, 2903, 2909, 2917, 2927, 2939, 2953, 2957, 2963, 2969, 2971, 2999, 3001, 3011, 3019, 3023, 3037, 3041, 3049, 3061, 3067, 3079, 3083, 3089, 3109, 3119, 3121, 3137, 3163, 3167, 3169, 3181, 3187, 3191, 3203, 3209, 3217, 3221, 3229, 3251, 3253, 3257, 3259, 3271, 3299, 3301, 3307, 3313, 3319, 3323, 3329, 3331, 3343, 3347, 3359, 3361, 3371, 3373, 3389, 3391, 3407, 3413, 3433, 3449, 3457, 3461, 3463, 3467, 3469, 3491, 3499, 3511, 3517, 3527, 3529, 3533, 3539, 3541, 3547, 3557, 3559, 3571, 3581, 3583, 3593, 3607, 3613, 3617, 3623, 3631, 3637, 3643, 3659, 3671, 3673, 3677, 3691, 3697, 3701, 3709, 3719, 3727, 3733, 3739, 3761, 3767, 3769, 3779, 3793, 3797, 3803, 3821, 3823, 3833, 3847, 3851, 3853, 3863, 3877, 3881, 3889, 3907, 3911, 3917, 3919, 3923, 3929, 3931, 3943, 3947, 3967, 3989, 4001, 4003, 4007, 4013, 4019, 4021, 4027, 4049, 4051, 4057, 4073, 4079, 4091, 4093, 4099, 4111, 4127, 4129, 4133, 4139, 4153, 4157, 4159, 4177, 4201, 4211, 4217, 4219, 4229, 4231, 4241, 4243, 4253, 4259, 4261, 4271, 4273, 4283, 4289, 4297, 4327, 4337, 4339, 4349, 4357, 4363, 4373, 4391, 4397, 4409, 4421, 4423, 4441, 4447, 4451, 4457, 4463, 4481, 4483, 4493, 4507, 4513, 4517, 4519, 4523, 4547, 4549, 4561, 4567, 4583, 4591, 4597, 4603, 4621, 4637, 4639, 4643, 4649, 4651, 4657, 4663, 4673, 4679, 4691, 4703, 4721, 4723, 4729, 4733, 4751, 4759, 4783, 4787, 4789, 4793, 4799, 4801, 4813, 4817, 4831, 4861, 4871, 4877, 4889, 4903, 4909, 4919, 4931, 4933, 4937, 4943, 4951, 4957, 4967, 4969, 4973, 4987, 4993, 4999, 5003, 5009, 5011, 5021, 5023, 5039, 5051, 5059, 5077, 5081, 5087, 5099, 5101, 5107, 5113, 5119, 5147, 5153, 5167, 5171, 5179, 5189, 5197, 5209, 5227, 5231, 5233, 5237, 5261, 5273, 5279, 5281, 5297, 5303, 5309, 5323, 5333, 5347, 5351, 5381, 5387, 5393, 5399, 5407, 5413, 5417, 5419, 5431, 5437, 5441, 5443, 5449, 5471, 5477, 5479, 5483, 5501, 5503, 5507, 5519, 5521, 5527, 5531, 5557, 5563, 5569, 5573, 5581, 5591, 5623, 5639, 5641, 5647, 5651, 5653, 5657, 5659, 5669, 5683, 5689, 5693, 5701, 5711, 5717, 5737, 5741, 5743, 5749, 5779, 5783, 5791, 5801, 5807, 5813, 5821, 5827, 5839, 5843, 5849, 5851, 5857, 5861, 5867, 5869, 5879, 5881, 5897, 5903, 5923, 5927, 5939, 5953, 5981, 5987, 6007, 6011, 6029, 6037, 6043, 6047, 6053, 6067, 6073, 6079, 6089, 6091, 6101, 6113, 6121, 6131, 6133, 6143, 6151, 6163, 6173, 6197, 6199, 6203, 6211, 6217, 6221, 6229, 6247, 6257, 6263, 6269, 6271, 6277, 6287, 6299, 6301, 6311, 6317, 6323, 6329, 6337, 6343, 6353, 6359, 6361, 6367, 6373, 6379, 6389, 6397, 6421, 6427, 6449, 6451, 6469, 6473, 6481, 6491, 6521, 6529, 6547, 6551, 6553, 6563, 6569, 6571, 6577, 6581, 6599, 6607, 6619, 6637, 6653, 6659, 6661, 6673, 6679, 6689, 6691, 6701, 6703, 6709, 6719, 6733, 6737, 6761, 6763, 6779, 6781, 6791, 6793, 6803, 6823, 6827, 6829, 6833, 6841, 6857, 6863, 6869, 6871, 6883, 6899, 6907, 6911, 6917, 6947, 6949, 6959, 6961, 6967, 6971, 6977, 6983, 6991, 6997, 7001, 7013, 7019, 7027, 7039, 7043, 7057, 7069, 7079, 7103, 7109, 7121, 7127, 7129, 7151, 7159, 7177, 7187, 7193, 7207, 7211, 7213, 7219, 7229, 7237, 7243, 7247, 7253, 7283, 7297, 7307, 7309, 7321, 7331, 7333, 7349, 7351, 7369, 7393, 7411, 7417, 7433, 7451, 7457, 7459, 7477, 7481, 7487, 7489, 7499, 7507, 7517, 7523, 7529, 7537, 7541, 7547, 7549, 7559, 7561, 7573, 7577, 7583, 7589, 7591, 7603, 7607, 7621, 7639, 7643, 7649, 7669, 7673, 7681, 7687, 7691, 7699, 7703, 7717, 7723, 7727, 7741, 7753, 7757, 7759, 7789, 7793, 7817, 7823, 7829, 7841, 7853, 7867, 7873, 7877, 7879, 7883, 7901, 7907, 7919, 7927, 7933, 7937, 7949, 7951, 7963, 7993, 8009, 8011, 8017, 8039, 8053, 8059, 8069, 8081, 8087, 8089, 8093, 8101, 8111, 8117, 8123, 8147, 8161, 8167, 8171, 8179, 8191, 8209, 8219, 8221, 8231, 8233, 8237, 8243, 8263, 8269, 8273, 8287, 8291, 8293, 8297, 8311, 8317, 8329, 8353, 8363, 8369, 8377, 8387, 8389, 8419, 8423, 8429, 8431, 8443, 8447, 8461, 8467, 8501, 8513, 8521, 8527, 8537, 8539, 8543, 8563, 8573, 8581, 8597, 8599, 8609, 8623, 8627, 8629, 8641, 8647, 8663, 8669, 8677, 8681, 8689, 8693, 8699, 8707, 8713, 8719, 8731, 8737, 8741, 8747, 8753, 8761, 8779, 8783, 8803, 8807, 8819, 8821, 8831, 8837, 8839, 8849, 8861, 8863, 8867, 8887, 8893, 8923, 8929, 8933, 8941, 8951, 8963, 8969, 8971, 8999, 9001, 9007, 9011, 9013, 9029, 9041, 9043, 9049, 9059, 9067, 9091, 9103, 9109, 9127, 9133, 9137, 9151, 9157, 9161, 9173, 9181, 9187, 9199, 9203, 9209, 9221, 9227, 9239, 9241, 9257, 9277, 9281, 9283, 9293, 9311, 9319, 9323, 9337, 9341, 9343, 9349, 9371, 9377, 9391, 9397, 9403, 9413, 9419, 9421, 9431, 9433, 9437, 9439, 9461, 9463, 9467, 9473, 9479, 9491, 9497, 9511, 9521, 9533, 9539, 9547, 9551, 9587, 9601, 9613, 9619, 9623, 9629, 9631, 9643, 9649, 9661, 9677, 9679, 9689, 9697, 9719, 9721, 9733, 9739, 9743, 9749, 9767, 9769, 9781, 9787, 9791, 9803, 9811, 9817, 9829, 9833, 9839, 9851, 9857, 9859, 9871, 9883, 9887, 9901, 9907, 9923, 9929, 9931, 9941, 9949, 9967, 9973, 10007, 10009]"
83 ]
84 },
85 "execution_count": 19,
86 "metadata": {},
87 "output_type": "execute_result"
88 }
89 ],
90 "source": [
91 "primes.primes"
92 ]
93 },
94 {
95 "cell_type": "code",
96 "execution_count": 3,
97 "metadata": {
98 "collapsed": false,
99 "scrolled": true
100 },
101 "outputs": [
102 {
103 "name": "stdout",
104 "output_type": "stream",
105 "text": [
106 "0: 41\n",
107 "1: 43\n",
108 "2: 47\n",
109 "3: 53\n",
110 "4: 61\n",
111 "5: 71\n",
112 "6: 83\n",
113 "7: 97\n",
114 "8: 113\n",
115 "9: 131\n",
116 "10: 151\n",
117 "11: 173\n",
118 "12: 197\n",
119 "13: 223\n",
120 "14: 251\n",
121 "15: 281\n",
122 "16: 313\n",
123 "17: 347\n",
124 "18: 383\n",
125 "19: 421\n",
126 "20: 461\n",
127 "21: 503\n",
128 "22: 547\n",
129 "23: 593\n",
130 "24: 641\n",
131 "25: 691\n",
132 "26: 743\n",
133 "27: 797\n",
134 "28: 853\n",
135 "29: 911\n",
136 "30: 971\n",
137 "31: 1033\n",
138 "32: 1097\n",
139 "33: 1163\n",
140 "34: 1231\n",
141 "35: 1301\n",
142 "36: 1373\n",
143 "37: 1447\n",
144 "38: 1523\n",
145 "39: 1601\n",
146 "40: 1681\n",
147 "41: 1763\n"
148 ]
149 },
150 {
151 "data": {
152 "text/plain": [
153 "42"
154 ]
155 },
156 "execution_count": 3,
157 "metadata": {},
158 "output_type": "execute_result"
159 }
160 ],
161 "source": [
162 "42.times do |i|\n",
163 " puts(\"#{i}: #{i**2 + i + 41}\")\n",
164 "end"
165 ]
166 },
167 {
168 "cell_type": "code",
169 "execution_count": 5,
170 "metadata": {
171 "collapsed": false,
172 "scrolled": true
173 },
174 "outputs": [
175 {
176 "name": "stdout",
177 "output_type": "stream",
178 "text": [
179 "0: 1601\n",
180 "1: 1523\n",
181 "2: 1447\n",
182 "3: 1373\n",
183 "4: 1301\n",
184 "5: 1231\n",
185 "6: 1163\n",
186 "7: 1097\n",
187 "8: 1033\n",
188 "9: 971\n",
189 "10: 911\n",
190 "11: 853\n",
191 "12: 797\n",
192 "13: 743\n",
193 "14: 691\n",
194 "15: 641\n",
195 "16: 593\n",
196 "17: 547\n",
197 "18: 503\n",
198 "19: 461\n",
199 "20: 421\n",
200 "21: 383\n",
201 "22: 347\n",
202 "23: 313\n",
203 "24: 281\n",
204 "25: 251\n",
205 "26: 223\n",
206 "27: 197\n",
207 "28: 173\n",
208 "29: 151\n",
209 "30: 131\n",
210 "31: 113\n",
211 "32: 97\n",
212 "33: 83\n",
213 "34: 71\n",
214 "35: 61\n",
215 "36: 53\n",
216 "37: 47\n",
217 "38: 43\n",
218 "39: 41\n",
219 "40: 41\n",
220 "41: 43\n",
221 "42: 47\n",
222 "43: 53\n",
223 "44: 61\n",
224 "45: 71\n",
225 "46: 83\n",
226 "47: 97\n",
227 "48: 113\n",
228 "49: 131\n",
229 "50: 151\n",
230 "51: 173\n",
231 "52: 197\n",
232 "53: 223\n",
233 "54: 251\n",
234 "55: 281\n",
235 "56: 313\n",
236 "57: 347\n",
237 "58: 383\n",
238 "59: 421\n",
239 "60: 461\n",
240 "61: 503\n",
241 "62: 547\n",
242 "63: 593\n",
243 "64: 641\n",
244 "65: 691\n",
245 "66: 743\n",
246 "67: 797\n",
247 "68: 853\n",
248 "69: 911\n",
249 "70: 971\n",
250 "71: 1033\n",
251 "72: 1097\n",
252 "73: 1163\n",
253 "74: 1231\n",
254 "75: 1301\n",
255 "76: 1373\n",
256 "77: 1447\n",
257 "78: 1523\n",
258 "79: 1601\n",
259 "80: 1681\n",
260 "81: 1763\n"
261 ]
262 },
263 {
264 "data": {
265 "text/plain": [
266 "82"
267 ]
268 },
269 "execution_count": 5,
270 "metadata": {},
271 "output_type": "execute_result"
272 }
273 ],
274 "source": [
275 "82.times do |i|\n",
276 " puts(\"#{i}: #{i**2 - 79* i + 1601}\")\n",
277 "end"
278 ]
279 },
280 {
281 "cell_type": "code",
282 "execution_count": 20,
283 "metadata": {
284 "collapsed": false
285 },
286 "outputs": [
287 {
288 "name": "stdout",
289 "output_type": "stream",
290 "text": [
291 "-9\n",
292 "-8\n",
293 "-7\n",
294 "-6\n",
295 "-5\n",
296 "-4\n",
297 "-3\n",
298 "-2\n",
299 "-1\n",
300 "0\n",
301 "1\n",
302 "2\n",
303 "3\n",
304 "4\n",
305 "5\n",
306 "6\n",
307 "7\n",
308 "8\n",
309 "9\n"
310 ]
311 },
312 {
313 "data": {
314 "text/plain": [
315 "-9..9"
316 ]
317 },
318 "execution_count": 20,
319 "metadata": {},
320 "output_type": "execute_result"
321 }
322 ],
323 "source": [
324 "(-9..9).each {|i| puts(i)}"
325 ]
326 },
327 {
328 "cell_type": "code",
329 "execution_count": 21,
330 "metadata": {
331 "collapsed": false
332 },
333 "outputs": [
334 {
335 "data": {
336 "text/plain": [
337 ":count_primes"
338 ]
339 },
340 "execution_count": 21,
341 "metadata": {},
342 "output_type": "execute_result"
343 }
344 ],
345 "source": [
346 "def count_primes(primes, a, b)\n",
347 " n = 0\n",
348 " y = b\n",
349 " count = 0\n",
350 " while primes.include? y\n",
351 " count += 1\n",
352 " n += 1\n",
353 " y = n ** 2 + a * n + b\n",
354 " end\n",
355 " count \n",
356 "end"
357 ]
358 },
359 {
360 "cell_type": "code",
361 "execution_count": 22,
362 "metadata": {
363 "collapsed": false
364 },
365 "outputs": [
366 {
367 "data": {
368 "text/plain": [
369 "40"
370 ]
371 },
372 "execution_count": 22,
373 "metadata": {},
374 "output_type": "execute_result"
375 }
376 ],
377 "source": [
378 "count_primes(primes, 1, 41)"
379 ]
380 },
381 {
382 "cell_type": "code",
383 "execution_count": 23,
384 "metadata": {
385 "collapsed": false
386 },
387 "outputs": [
388 {
389 "data": {
390 "text/plain": [
391 "80"
392 ]
393 },
394 "execution_count": 23,
395 "metadata": {},
396 "output_type": "execute_result"
397 }
398 ],
399 "source": [
400 "count_primes(primes, -79, 1601)"
401 ]
402 },
403 {
404 "cell_type": "code",
405 "execution_count": 33,
406 "metadata": {
407 "collapsed": false
408 },
409 "outputs": [
410 {
411 "data": {
412 "text/plain": [
413 "[[-50, 0], [-50, 1], [-50, 2], [-50, 3], [-50, 4], [-50, 5], [-50, 6], [-50, 7], [-50, 8], [-50, 9], [-50, 10], [-50, 11], [-50, 12], [-50, 13], [-50, 14], [-50, 15], [-50, 16], [-50, 17], [-50, 18], [-50, 19], [-50, 20], [-50, 21], [-50, 22], [-50, 23], [-50, 24], [-50, 25], [-50, 26], [-50, 27], [-50, 28], [-50, 29], [-50, 30], [-50, 31], [-50, 32], [-50, 33], [-50, 34], [-50, 35], [-50, 36], [-50, 37], [-50, 38], [-50, 39], [-50, 40], [-50, 41], [-50, 42], [-50, 43], [-50, 44], [-50, 45], [-50, 46], [-50, 47], [-50, 48], [-50, 49], [-50, 50], [-49, 0], [-49, 1], [-49, 2], [-49, 3], [-49, 4], [-49, 5], [-49, 6], [-49, 7], [-49, 8], [-49, 9], [-49, 10], [-49, 11], [-49, 12], [-49, 13], [-49, 14], [-49, 15], [-49, 16], [-49, 17], [-49, 18], [-49, 19], [-49, 20], [-49, 21], [-49, 22], [-49, 23], [-49, 24], [-49, 25], [-49, 26], [-49, 27], [-49, 28], [-49, 29], [-49, 30], [-49, 31], [-49, 32], [-49, 33], [-49, 34], [-49, 35], [-49, 36], [-49, 37], [-49, 38], [-49, 39], [-49, 40], [-49, 41], [-49, 42], [-49, 43], [-49, 44], [-49, 45], [-49, 46], [-49, 47], [-49, 48], [-49, 49], [-49, 50], [-48, 0], [-48, 1], [-48, 2], [-48, 3], [-48, 4], [-48, 5], [-48, 6], [-48, 7], [-48, 8], [-48, 9], [-48, 10], [-48, 11], [-48, 12], [-48, 13], [-48, 14], [-48, 15], [-48, 16], [-48, 17], [-48, 18], [-48, 19], [-48, 20], [-48, 21], [-48, 22], [-48, 23], [-48, 24], [-48, 25], [-48, 26], [-48, 27], [-48, 28], [-48, 29], [-48, 30], [-48, 31], [-48, 32], [-48, 33], [-48, 34], [-48, 35], [-48, 36], [-48, 37], [-48, 38], [-48, 39], [-48, 40], [-48, 41], [-48, 42], [-48, 43], [-48, 44], [-48, 45], [-48, 46], [-48, 47], [-48, 48], [-48, 49], [-48, 50], [-47, 0], [-47, 1], [-47, 2], [-47, 3], [-47, 4], [-47, 5], [-47, 6], [-47, 7], [-47, 8], [-47, 9], [-47, 10], [-47, 11], [-47, 12], [-47, 13], [-47, 14], [-47, 15], [-47, 16], [-47, 17], [-47, 18], [-47, 19], [-47, 20], [-47, 21], [-47, 22], [-47, 23], [-47, 24], [-47, 25], [-47, 26], [-47, 27], [-47, 28], [-47, 29], [-47, 30], [-47, 31], [-47, 32], [-47, 33], [-47, 34], [-47, 35], [-47, 36], [-47, 37], [-47, 38], [-47, 39], [-47, 40], [-47, 41], [-47, 42], [-47, 43], [-47, 44], [-47, 45], [-47, 46], [-47, 47], [-47, 48], [-47, 49], [-47, 50], [-46, 0], [-46, 1], [-46, 2], [-46, 3], [-46, 4], [-46, 5], [-46, 6], [-46, 7], [-46, 8], [-46, 9], [-46, 10], [-46, 11], [-46, 12], [-46, 13], [-46, 14], [-46, 15], [-46, 16], [-46, 17], [-46, 18], [-46, 19], [-46, 20], [-46, 21], [-46, 22], [-46, 23], [-46, 24], [-46, 25], [-46, 26], [-46, 27], [-46, 28], [-46, 29], [-46, 30], [-46, 31], [-46, 32], [-46, 33], [-46, 34], [-46, 35], [-46, 36], [-46, 37], [-46, 38], [-46, 39], [-46, 40], [-46, 41], [-46, 42], [-46, 43], [-46, 44], [-46, 45], [-46, 46], [-46, 47], [-46, 48], [-46, 49], [-46, 50], [-45, 0], [-45, 1], [-45, 2], [-45, 3], [-45, 4], [-45, 5], [-45, 6], [-45, 7], [-45, 8], [-45, 9], [-45, 10], [-45, 11], [-45, 12], [-45, 13], [-45, 14], [-45, 15], [-45, 16], [-45, 17], [-45, 18], [-45, 19], [-45, 20], [-45, 21], [-45, 22], [-45, 23], [-45, 24], [-45, 25], [-45, 26], [-45, 27], [-45, 28], [-45, 29], [-45, 30], [-45, 31], [-45, 32], [-45, 33], [-45, 34], [-45, 35], [-45, 36], [-45, 37], [-45, 38], [-45, 39], [-45, 40], [-45, 41], [-45, 42], [-45, 43], [-45, 44], [-45, 45], [-45, 46], [-45, 47], [-45, 48], [-45, 49], [-45, 50], [-44, 0], [-44, 1], [-44, 2], [-44, 3], [-44, 4], [-44, 5], [-44, 6], [-44, 7], [-44, 8], [-44, 9], [-44, 10], [-44, 11], [-44, 12], [-44, 13], [-44, 14], [-44, 15], [-44, 16], [-44, 17], [-44, 18], [-44, 19], [-44, 20], [-44, 21], [-44, 22], [-44, 23], [-44, 24], [-44, 25], [-44, 26], [-44, 27], [-44, 28], [-44, 29], [-44, 30], [-44, 31], [-44, 32], [-44, 33], [-44, 34], [-44, 35], [-44, 36], [-44, 37], [-44, 38], [-44, 39], [-44, 40], [-44, 41], [-44, 42], [-44, 43], [-44, 44], [-44, 45], [-44, 46], [-44, 47], [-44, 48], [-44, 49], [-44, 50], [-43, 0], [-43, 1], [-43, 2], [-43, 3], [-43, 4], [-43, 5], [-43, 6], [-43, 7], [-43, 8], [-43, 9], [-43, 10], [-43, 11], [-43, 12], [-43, 13], [-43, 14], [-43, 15], [-43, 16], [-43, 17], [-43, 18], [-43, 19], [-43, 20], [-43, 21], [-43, 22], [-43, 23], [-43, 24], [-43, 25], [-43, 26], [-43, 27], [-43, 28], [-43, 29], [-43, 30], [-43, 31], [-43, 32], [-43, 33], [-43, 34], [-43, 35], [-43, 36], [-43, 37], [-43, 38], [-43, 39], [-43, 40], [-43, 41], [-43, 42], [-43, 43], [-43, 44], [-43, 45], [-43, 46], [-43, 47], [-43, 48], [-43, 49], [-43, 50], [-42, 0], [-42, 1], [-42, 2], [-42, 3], [-42, 4], [-42, 5], [-42, 6], [-42, 7], [-42, 8], [-42, 9], [-42, 10], [-42, 11], [-42, 12], [-42, 13], [-42, 14], [-42, 15], [-42, 16], [-42, 17], [-42, 18], [-42, 19], [-42, 20], [-42, 21], [-42, 22], [-42, 23], [-42, 24], [-42, 25], [-42, 26], [-42, 27], [-42, 28], [-42, 29], [-42, 30], [-42, 31], [-42, 32], [-42, 33], [-42, 34], [-42, 35], [-42, 36], [-42, 37], [-42, 38], [-42, 39], [-42, 40], [-42, 41], [-42, 42], [-42, 43], [-42, 44], [-42, 45], [-42, 46], [-42, 47], [-42, 48], [-42, 49], [-42, 50], [-41, 0], [-41, 1], [-41, 2], [-41, 3], [-41, 4], [-41, 5], [-41, 6], [-41, 7], [-41, 8], [-41, 9], [-41, 10], [-41, 11], [-41, 12], [-41, 13], [-41, 14], [-41, 15], [-41, 16], [-41, 17], [-41, 18], [-41, 19], [-41, 20], [-41, 21], [-41, 22], [-41, 23], [-41, 24], [-41, 25], [-41, 26], [-41, 27], [-41, 28], [-41, 29], [-41, 30], [-41, 31], [-41, 32], [-41, 33], [-41, 34], [-41, 35], [-41, 36], [-41, 37], [-41, 38], [-41, 39], [-41, 40], [-41, 41], [-41, 42], [-41, 43], [-41, 44], [-41, 45], [-41, 46], [-41, 47], [-41, 48], [-41, 49], [-41, 50], [-40, 0], [-40, 1], [-40, 2], [-40, 3], [-40, 4], [-40, 5], [-40, 6], [-40, 7], [-40, 8], [-40, 9], [-40, 10], [-40, 11], [-40, 12], [-40, 13], [-40, 14], [-40, 15], [-40, 16], [-40, 17], [-40, 18], [-40, 19], [-40, 20], [-40, 21], [-40, 22], [-40, 23], [-40, 24], [-40, 25], [-40, 26], [-40, 27], [-40, 28], [-40, 29], [-40, 30], [-40, 31], [-40, 32], [-40, 33], [-40, 34], [-40, 35], [-40, 36], [-40, 37], [-40, 38], [-40, 39], [-40, 40], [-40, 41], [-40, 42], [-40, 43], [-40, 44], [-40, 45], [-40, 46], [-40, 47], [-40, 48], [-40, 49], [-40, 50], [-39, 0], [-39, 1], [-39, 2], [-39, 3], [-39, 4], [-39, 5], [-39, 6], [-39, 7], [-39, 8], [-39, 9], [-39, 10], [-39, 11], [-39, 12], [-39, 13], [-39, 14], [-39, 15], [-39, 16], [-39, 17], [-39, 18], [-39, 19], [-39, 20], [-39, 21], [-39, 22], [-39, 23], [-39, 24], [-39, 25], [-39, 26], [-39, 27], [-39, 28], [-39, 29], [-39, 30], [-39, 31], [-39, 32], [-39, 33], [-39, 34], [-39, 35], [-39, 36], [-39, 37], [-39, 38], [-39, 39], [-39, 40], [-39, 41], [-39, 42], [-39, 43], [-39, 44], [-39, 45], [-39, 46], [-39, 47], [-39, 48], [-39, 49], [-39, 50], [-38, 0], [-38, 1], [-38, 2], [-38, 3], [-38, 4], [-38, 5], [-38, 6], [-38, 7], [-38, 8], [-38, 9], [-38, 10], [-38, 11], [-38, 12], [-38, 13], [-38, 14], [-38, 15], [-38, 16], [-38, 17], [-38, 18], [-38, 19], [-38, 20], [-38, 21], [-38, 22], [-38, 23], [-38, 24], [-38, 25], [-38, 26], [-38, 27], [-38, 28], [-38, 29], [-38, 30], [-38, 31], [-38, 32], [-38, 33], [-38, 34], [-38, 35], [-38, 36], [-38, 37], [-38, 38], [-38, 39], [-38, 40], [-38, 41], [-38, 42], [-38, 43], [-38, 44], [-38, 45], [-38, 46], [-38, 47], [-38, 48], [-38, 49], [-38, 50], [-37, 0], [-37, 1], [-37, 2], [-37, 3], [-37, 4], [-37, 5], [-37, 6], [-37, 7], [-37, 8], [-37, 9], [-37, 10], [-37, 11], [-37, 12], [-37, 13], [-37, 14], [-37, 15], [-37, 16], [-37, 17], [-37, 18], [-37, 19], [-37, 20], [-37, 21], [-37, 22], [-37, 23], [-37, 24], [-37, 25], [-37, 26], [-37, 27], [-37, 28], [-37, 29], [-37, 30], [-37, 31], [-37, 32], [-37, 33], [-37, 34], [-37, 35], [-37, 36], [-37, 37], [-37, 38], [-37, 39], [-37, 40], [-37, 41], [-37, 42], [-37, 43], [-37, 44], [-37, 45], [-37, 46], [-37, 47], [-37, 48], [-37, 49], [-37, 50], [-36, 0], [-36, 1], [-36, 2], [-36, 3], [-36, 4], [-36, 5], [-36, 6], [-36, 7], [-36, 8], [-36, 9], [-36, 10], [-36, 11], [-36, 12], [-36, 13], [-36, 14], [-36, 15], [-36, 16], [-36, 17], [-36, 18], [-36, 19], [-36, 20], [-36, 21], [-36, 22], [-36, 23], [-36, 24], [-36, 25], [-36, 26], [-36, 27], [-36, 28], [-36, 29], [-36, 30], [-36, 31], [-36, 32], [-36, 33], [-36, 34], [-36, 35], [-36, 36], [-36, 37], [-36, 38], [-36, 39], [-36, 40], [-36, 41], [-36, 42], [-36, 43], [-36, 44], [-36, 45], [-36, 46], [-36, 47], [-36, 48], [-36, 49], [-36, 50], [-35, 0], [-35, 1], [-35, 2], [-35, 3], [-35, 4], [-35, 5], [-35, 6], [-35, 7], [-35, 8], [-35, 9], [-35, 10], [-35, 11], [-35, 12], [-35, 13], [-35, 14], [-35, 15], [-35, 16], [-35, 17], [-35, 18], [-35, 19], [-35, 20], [-35, 21], [-35, 22], [-35, 23], [-35, 24], [-35, 25], [-35, 26], [-35, 27], [-35, 28], [-35, 29], [-35, 30], [-35, 31], [-35, 32], [-35, 33], [-35, 34], [-35, 35], [-35, 36], [-35, 37], [-35, 38], [-35, 39], [-35, 40], [-35, 41], [-35, 42], [-35, 43], [-35, 44], [-35, 45], [-35, 46], [-35, 47], [-35, 48], [-35, 49], [-35, 50], [-34, 0], [-34, 1], [-34, 2], [-34, 3], [-34, 4], [-34, 5], [-34, 6], [-34, 7], [-34, 8], [-34, 9], [-34, 10], [-34, 11], [-34, 12], [-34, 13], [-34, 14], [-34, 15], [-34, 16], [-34, 17], [-34, 18], [-34, 19], [-34, 20], [-34, 21], [-34, 22], [-34, 23], [-34, 24], [-34, 25], [-34, 26], [-34, 27], [-34, 28], [-34, 29], [-34, 30], [-34, 31], [-34, 32], [-34, 33], [-34, 34], [-34, 35], [-34, 36], [-34, 37], [-34, 38], [-34, 39], [-34, 40], [-34, 41], [-34, 42], [-34, 43], [-34, 44], [-34, 45], [-34, 46], [-34, 47], [-34, 48], [-34, 49], [-34, 50], [-33, 0], [-33, 1], [-33, 2], [-33, 3], [-33, 4], [-33, 5], [-33, 6], [-33, 7], [-33, 8], [-33, 9], [-33, 10], [-33, 11], [-33, 12], [-33, 13], [-33, 14], [-33, 15], [-33, 16], [-33, 17], [-33, 18], [-33, 19], [-33, 20], [-33, 21], [-33, 22], [-33, 23], [-33, 24], [-33, 25], [-33, 26], [-33, 27], [-33, 28], [-33, 29], [-33, 30], [-33, 31], [-33, 32], [-33, 33], [-33, 34], [-33, 35], [-33, 36], [-33, 37], [-33, 38], [-33, 39], [-33, 40], [-33, 41], [-33, 42], [-33, 43], [-33, 44], [-33, 45], [-33, 46], [-33, 47], [-33, 48], [-33, 49], [-33, 50], [-32, 0], [-32, 1], [-32, 2], [-32, 3], [-32, 4], [-32, 5], [-32, 6], [-32, 7], [-32, 8], [-32, 9], [-32, 10], [-32, 11], [-32, 12], [-32, 13], [-32, 14], [-32, 15], [-32, 16], [-32, 17], [-32, 18], [-32, 19], [-32, 20], [-32, 21], [-32, 22], [-32, 23], [-32, 24], [-32, 25], [-32, 26], [-32, 27], [-32, 28], [-32, 29], [-32, 30], [-32, 31], [-32, 32], [-32, 33], [-32, 34], [-32, 35], [-32, 36], [-32, 37], [-32, 38], [-32, 39], [-32, 40], [-32, 41], [-32, 42], [-32, 43], [-32, 44], [-32, 45], [-32, 46], [-32, 47], [-32, 48], [-32, 49], [-32, 50], [-31, 0], [-31, 1], [-31, 2], [-31, 3], [-31, 4], [-31, 5], [-31, 6], [-31, 7], [-31, 8], [-31, 9], [-31, 10], [-31, 11], [-31, 12], [-31, 13], [-31, 14], [-31, 15], [-31, 16], [-31, 17], [-31, 18], [-31, 19], [-31, 20], [-31, 21], [-31, 22], [-31, 23], [-31, 24], [-31, 25], [-31, 26], [-31, 27], [-31, 28], [-31, 29], [-31, 30], [-31, 31], [-31, 32], [-31, 33], [-31, 34], [-31, 35], [-31, 36], [-31, 37], [-31, 38], [-31, 39], [-31, 40], [-31, 41], [-31, 42], [-31, 43], [-31, 44], [-31, 45], [-31, 46], [-31, 47], [-31, 48], [-31, 49], [-31, 50], [-30, 0], [-30, 1], [-30, 2], [-30, 3], [-30, 4], [-30, 5], [-30, 6], [-30, 7], [-30, 8], [-30, 9], [-30, 10], [-30, 11], [-30, 12], [-30, 13], [-30, 14], [-30, 15], [-30, 16], [-30, 17], [-30, 18], [-30, 19], [-30, 20], [-30, 21], [-30, 22], [-30, 23], [-30, 24], [-30, 25], [-30, 26], [-30, 27], [-30, 28], [-30, 29], [-30, 30], [-30, 31], [-30, 32], [-30, 33], [-30, 34], [-30, 35], [-30, 36], [-30, 37], [-30, 38], [-30, 39], [-30, 40], [-30, 41], [-30, 42], [-30, 43], [-30, 44], [-30, 45], [-30, 46], [-30, 47], [-30, 48], [-30, 49], [-30, 50], [-29, 0], [-29, 1], [-29, 2], [-29, 3], [-29, 4], [-29, 5], [-29, 6], [-29, 7], [-29, 8], [-29, 9], [-29, 10], [-29, 11], [-29, 12], [-29, 13], [-29, 14], [-29, 15], [-29, 16], [-29, 17], [-29, 18], [-29, 19], [-29, 20], [-29, 21], [-29, 22], [-29, 23], [-29, 24], [-29, 25], [-29, 26], [-29, 27], [-29, 28], [-29, 29], [-29, 30], [-29, 31], [-29, 32], [-29, 33], [-29, 34], [-29, 35], [-29, 36], [-29, 37], [-29, 38], [-29, 39], [-29, 40], [-29, 41], [-29, 42], [-29, 43], [-29, 44], [-29, 45], [-29, 46], [-29, 47], [-29, 48], [-29, 49], [-29, 50], [-28, 0], [-28, 1], [-28, 2], [-28, 3], [-28, 4], [-28, 5], [-28, 6], [-28, 7], [-28, 8], [-28, 9], [-28, 10], [-28, 11], [-28, 12], [-28, 13], [-28, 14], [-28, 15], [-28, 16], [-28, 17], [-28, 18], [-28, 19], [-28, 20], [-28, 21], [-28, 22], [-28, 23], [-28, 24], [-28, 25], [-28, 26], [-28, 27], [-28, 28], [-28, 29], [-28, 30], [-28, 31], [-28, 32], [-28, 33], [-28, 34], [-28, 35], [-28, 36], [-28, 37], [-28, 38], [-28, 39], [-28, 40], [-28, 41], [-28, 42], [-28, 43], [-28, 44], [-28, 45], [-28, 46], [-28, 47], [-28, 48], [-28, 49], [-28, 50], [-27, 0], [-27, 1], [-27, 2], [-27, 3], [-27, 4], [-27, 5], [-27, 6], [-27, 7], [-27, 8], [-27, 9], [-27, 10], [-27, 11], [-27, 12], [-27, 13], [-27, 14], [-27, 15], [-27, 16], [-27, 17], [-27, 18], [-27, 19], [-27, 20], [-27, 21], [-27, 22], [-27, 23], [-27, 24], [-27, 25], [-27, 26], [-27, 27], [-27, 28], [-27, 29], [-27, 30], [-27, 31], [-27, 32], [-27, 33], [-27, 34], [-27, 35], [-27, 36], [-27, 37], [-27, 38], [-27, 39], [-27, 40], [-27, 41], [-27, 42], [-27, 43], [-27, 44], [-27, 45], [-27, 46], [-27, 47], [-27, 48], [-27, 49], [-27, 50], [-26, 0], [-26, 1], [-26, 2], [-26, 3], [-26, 4], [-26, 5], [-26, 6], [-26, 7], [-26, 8], [-26, 9], [-26, 10], [-26, 11], [-26, 12], [-26, 13], [-26, 14], [-26, 15], [-26, 16], [-26, 17], [-26, 18], [-26, 19], [-26, 20], [-26, 21], [-26, 22], [-26, 23], [-26, 24], [-26, 25], [-26, 26], [-26, 27], [-26, 28], [-26, 29], [-26, 30], [-26, 31], [-26, 32], [-26, 33], [-26, 34], [-26, 35], [-26, 36], [-26, 37], [-26, 38], [-26, 39], [-26, 40], [-26, 41], [-26, 42], [-26, 43], [-26, 44], [-26, 45], [-26, 46], [-26, 47], [-26, 48], [-26, 49], [-26, 50], [-25, 0], [-25, 1], [-25, 2], [-25, 3], [-25, 4], [-25, 5], [-25, 6], [-25, 7], [-25, 8], [-25, 9], [-25, 10], [-25, 11], [-25, 12], [-25, 13], [-25, 14], [-25, 15], [-25, 16], [-25, 17], [-25, 18], [-25, 19], [-25, 20], [-25, 21], [-25, 22], [-25, 23], [-25, 24], [-25, 25], [-25, 26], [-25, 27], [-25, 28], [-25, 29], [-25, 30], [-25, 31], [-25, 32], [-25, 33], [-25, 34], [-25, 35], [-25, 36], [-25, 37], [-25, 38], [-25, 39], [-25, 40], [-25, 41], [-25, 42], [-25, 43], [-25, 44], [-25, 45], [-25, 46], [-25, 47], [-25, 48], [-25, 49], [-25, 50], [-24, 0], [-24, 1], [-24, 2], [-24, 3], [-24, 4], [-24, 5], [-24, 6], [-24, 7], [-24, 8], [-24, 9], [-24, 10], [-24, 11], [-24, 12], [-24, 13], [-24, 14], [-24, 15], [-24, 16], [-24, 17], [-24, 18], [-24, 19], [-24, 20], [-24, 21], [-24, 22], [-24, 23], [-24, 24], [-24, 25], [-24, 26], [-24, 27], [-24, 28], [-24, 29], [-24, 30], [-24, 31], [-24, 32], [-24, 33], [-24, 34], [-24, 35], [-24, 36], [-24, 37], [-24, 38], [-24, 39], [-24, 40], [-24, 41], [-24, 42], [-24, 43], [-24, 44], [-24, 45], [-24, 46], [-24, 47], [-24, 48], [-24, 49], [-24, 50], [-23, 0], [-23, 1], [-23, 2], [-23, 3], [-23, 4], [-23, 5], [-23, 6], [-23, 7], [-23, 8], [-23, 9], [-23, 10], [-23, 11], [-23, 12], [-23, 13], [-23, 14], [-23, 15], [-23, 16], [-23, 17], [-23, 18], [-23, 19], [-23, 20], [-23, 21], [-23, 22], [-23, 23], [-23, 24], [-23, 25], [-23, 26], [-23, 27], [-23, 28], [-23, 29], [-23, 30], [-23, 31], [-23, 32], [-23, 33], [-23, 34], [-23, 35], [-23, 36], [-23, 37], [-23, 38], [-23, 39], [-23, 40], [-23, 41], [-23, 42], [-23, 43], [-23, 44], [-23, 45], [-23, 46], [-23, 47], [-23, 48], [-23, 49], [-23, 50], [-22, 0], [-22, 1], [-22, 2], [-22, 3], [-22, 4], [-22, 5], [-22, 6], [-22, 7], [-22, 8], [-22, 9], [-22, 10], [-22, 11], [-22, 12], [-22, 13], [-22, 14], [-22, 15], [-22, 16], [-22, 17], [-22, 18], [-22, 19], [-22, 20], [-22, 21], [-22, 22], [-22, 23], [-22, 24], [-22, 25], [-22, 26], [-22, 27], [-22, 28], [-22, 29], [-22, 30], [-22, 31], [-22, 32], [-22, 33], [-22, 34], [-22, 35], [-22, 36], [-22, 37], [-22, 38], [-22, 39], [-22, 40], [-22, 41], [-22, 42], [-22, 43], [-22, 44], [-22, 45], [-22, 46], [-22, 47], [-22, 48], [-22, 49], [-22, 50], [-21, 0], [-21, 1], [-21, 2], [-21, 3], [-21, 4], [-21, 5], [-21, 6], [-21, 7], [-21, 8], [-21, 9], [-21, 10], [-21, 11], [-21, 12], [-21, 13], [-21, 14], [-21, 15], [-21, 16], [-21, 17], [-21, 18], [-21, 19], [-21, 20], [-21, 21], [-21, 22], [-21, 23], [-21, 24], [-21, 25], [-21, 26], [-21, 27], [-21, 28], [-21, 29], [-21, 30], [-21, 31], [-21, 32], [-21, 33], [-21, 34], [-21, 35], [-21, 36], [-21, 37], [-21, 38], [-21, 39], [-21, 40], [-21, 41], [-21, 42], [-21, 43], [-21, 44], [-21, 45], [-21, 46], [-21, 47], [-21, 48], [-21, 49], [-21, 50], [-20, 0], [-20, 1], [-20, 2], [-20, 3], [-20, 4], [-20, 5], [-20, 6], [-20, 7], [-20, 8], [-20, 9], [-20, 10], [-20, 11], [-20, 12], [-20, 13], [-20, 14], [-20, 15], [-20, 16], [-20, 17], [-20, 18], [-20, 19], [-20, 20], [-20, 21], [-20, 22], [-20, 23], [-20, 24], [-20, 25], [-20, 26], [-20, 27], [-20, 28], [-20, 29], [-20, 30], [-20, 31], [-20, 32], [-20, 33], [-20, 34], [-20, 35], [-20, 36], [-20, 37], [-20, 38], [-20, 39], [-20, 40], [-20, 41], [-20, 42], [-20, 43], [-20, 44], [-20, 45], [-20, 46], [-20, 47], [-20, 48], [-20, 49], [-20, 50], [-19, 0], [-19, 1], [-19, 2], [-19, 3], [-19, 4], [-19, 5], [-19, 6], [-19, 7], [-19, 8], [-19, 9], [-19, 10], [-19, 11], [-19, 12], [-19, 13], [-19, 14], [-19, 15], [-19, 16], [-19, 17], [-19, 18], [-19, 19], [-19, 20], [-19, 21], [-19, 22], [-19, 23], [-19, 24], [-19, 25], [-19, 26], [-19, 27], [-19, 28], [-19, 29], [-19, 30], [-19, 31], [-19, 32], [-19, 33], [-19, 34], [-19, 35], [-19, 36], [-19, 37], [-19, 38], [-19, 39], [-19, 40], [-19, 41], [-19, 42], [-19, 43], [-19, 44], [-19, 45], [-19, 46], [-19, 47], [-19, 48], [-19, 49], [-19, 50], [-18, 0], [-18, 1], [-18, 2], [-18, 3], [-18, 4], [-18, 5], [-18, 6], [-18, 7], [-18, 8], [-18, 9], [-18, 10], [-18, 11], [-18, 12], [-18, 13], [-18, 14], [-18, 15], [-18, 16], [-18, 17], [-18, 18], [-18, 19], [-18, 20], [-18, 21], [-18, 22], [-18, 23], [-18, 24], [-18, 25], [-18, 26], [-18, 27], [-18, 28], [-18, 29], [-18, 30], [-18, 31], [-18, 32], [-18, 33], [-18, 34], [-18, 35], [-18, 36], [-18, 37], [-18, 38], [-18, 39], [-18, 40], [-18, 41], [-18, 42], [-18, 43], [-18, 44], [-18, 45], [-18, 46], [-18, 47], [-18, 48], [-18, 49], [-18, 50], [-17, 0], [-17, 1], [-17, 2], [-17, 3], [-17, 4], [-17, 5], [-17, 6], [-17, 7], [-17, 8], [-17, 9], [-17, 10], [-17, 11], [-17, 12], [-17, 13], [-17, 14], [-17, 15], [-17, 16], [-17, 17], [-17, 18], [-17, 19], [-17, 20], [-17, 21], [-17, 22], [-17, 23], [-17, 24], [-17, 25], [-17, 26], [-17, 27], [-17, 28], [-17, 29], [-17, 30], [-17, 31], [-17, 32], [-17, 33], [-17, 34], [-17, 35], [-17, 36], [-17, 37], [-17, 38], [-17, 39], [-17, 40], [-17, 41], [-17, 42], [-17, 43], [-17, 44], [-17, 45], [-17, 46], [-17, 47], [-17, 48], [-17, 49], [-17, 50], [-16, 0], [-16, 1], [-16, 2], [-16, 3], [-16, 4], [-16, 5], [-16, 6], [-16, 7], [-16, 8], [-16, 9], [-16, 10], [-16, 11], [-16, 12], [-16, 13], [-16, 14], [-16, 15], [-16, 16], [-16, 17], [-16, 18], [-16, 19], [-16, 20], [-16, 21], [-16, 22], [-16, 23], [-16, 24], [-16, 25], [-16, 26], [-16, 27], [-16, 28], [-16, 29], [-16, 30], [-16, 31], [-16, 32], [-16, 33], [-16, 34], [-16, 35], [-16, 36], [-16, 37], [-16, 38], [-16, 39], [-16, 40], [-16, 41], [-16, 42], [-16, 43], [-16, 44], [-16, 45], [-16, 46], [-16, 47], [-16, 48], [-16, 49], [-16, 50], [-15, 0], [-15, 1], [-15, 2], [-15, 3], [-15, 4], [-15, 5], [-15, 6], [-15, 7], [-15, 8], [-15, 9], [-15, 10], [-15, 11], [-15, 12], [-15, 13], [-15, 14], [-15, 15], [-15, 16], [-15, 17], [-15, 18], [-15, 19], [-15, 20], [-15, 21], [-15, 22], [-15, 23], [-15, 24], [-15, 25], [-15, 26], [-15, 27], [-15, 28], [-15, 29], [-15, 30], [-15, 31], [-15, 32], [-15, 33], [-15, 34], [-15, 35], [-15, 36], [-15, 37], [-15, 38], [-15, 39], [-15, 40], [-15, 41], [-15, 42], [-15, 43], [-15, 44], [-15, 45], [-15, 46], [-15, 47], [-15, 48], [-15, 49], [-15, 50], [-14, 0], [-14, 1], [-14, 2], [-14, 3], [-14, 4], [-14, 5], [-14, 6], [-14, 7], [-14, 8], [-14, 9], [-14, 10], [-14, 11], [-14, 12], [-14, 13], [-14, 14], [-14, 15], [-14, 16], [-14, 17], [-14, 18], [-14, 19], [-14, 20], [-14, 21], [-14, 22], [-14, 23], [-14, 24], [-14, 25], [-14, 26], [-14, 27], [-14, 28], [-14, 29], [-14, 30], [-14, 31], [-14, 32], [-14, 33], [-14, 34], [-14, 35], [-14, 36], [-14, 37], [-14, 38], [-14, 39], [-14, 40], [-14, 41], [-14, 42], [-14, 43], [-14, 44], [-14, 45], [-14, 46], [-14, 47], [-14, 48], [-14, 49], [-14, 50], [-13, 0], [-13, 1], [-13, 2], [-13, 3], [-13, 4], [-13, 5], [-13, 6], [-13, 7], [-13, 8], [-13, 9], [-13, 10], [-13, 11], [-13, 12], [-13, 13], [-13, 14], [-13, 15], [-13, 16], [-13, 17], [-13, 18], [-13, 19], [-13, 20], [-13, 21], [-13, 22], [-13, 23], [-13, 24], [-13, 25], [-13, 26], [-13, 27], [-13, 28], [-13, 29], [-13, 30], [-13, 31], [-13, 32], [-13, 33], [-13, 34], [-13, 35], [-13, 36], [-13, 37], [-13, 38], [-13, 39], [-13, 40], [-13, 41], [-13, 42], [-13, 43], [-13, 44], [-13, 45], [-13, 46], [-13, 47], [-13, 48], [-13, 49], [-13, 50], [-12, 0], [-12, 1], [-12, 2], [-12, 3], [-12, 4], [-12, 5], [-12, 6], [-12, 7], [-12, 8], [-12, 9], [-12, 10], [-12, 11], [-12, 12], [-12, 13], [-12, 14], [-12, 15], [-12, 16], [-12, 17], [-12, 18], [-12, 19], [-12, 20], [-12, 21], [-12, 22], [-12, 23], [-12, 24], [-12, 25], [-12, 26], [-12, 27], [-12, 28], [-12, 29], [-12, 30], [-12, 31], [-12, 32], [-12, 33], [-12, 34], [-12, 35], [-12, 36], [-12, 37], [-12, 38], [-12, 39], [-12, 40], [-12, 41], [-12, 42], [-12, 43], [-12, 44], [-12, 45], [-12, 46], [-12, 47], [-12, 48], [-12, 49], [-12, 50], [-11, 0], [-11, 1], [-11, 2], [-11, 3], [-11, 4], [-11, 5], [-11, 6], [-11, 7], [-11, 8], [-11, 9], [-11, 10], [-11, 11], [-11, 12], [-11, 13], [-11, 14], [-11, 15], [-11, 16], [-11, 17], [-11, 18], [-11, 19], [-11, 20], [-11, 21], [-11, 22], [-11, 23], [-11, 24], [-11, 25], [-11, 26], [-11, 27], [-11, 28], [-11, 29], [-11, 30], [-11, 31], [-11, 32], [-11, 33], [-11, 34], [-11, 35], [-11, 36], [-11, 37], [-11, 38], [-11, 39], [-11, 40], [-11, 41], [-11, 42], [-11, 43], [-11, 44], [-11, 45], [-11, 46], [-11, 47], [-11, 48], [-11, 49], [-11, 50], [-10, 0], [-10, 1], [-10, 2], [-10, 3], [-10, 4], [-10, 5], [-10, 6], [-10, 7], [-10, 8], [-10, 9], [-10, 10], [-10, 11], [-10, 12], [-10, 13], [-10, 14], [-10, 15], [-10, 16], [-10, 17], [-10, 18], [-10, 19], [-10, 20], [-10, 21], [-10, 22], [-10, 23], [-10, 24], [-10, 25], [-10, 26], [-10, 27], [-10, 28], [-10, 29], [-10, 30], [-10, 31], [-10, 32], [-10, 33], [-10, 34], [-10, 35], [-10, 36], [-10, 37], [-10, 38], [-10, 39], [-10, 40], [-10, 41], [-10, 42], [-10, 43], [-10, 44], [-10, 45], [-10, 46], [-10, 47], [-10, 48], [-10, 49], [-10, 50], [-9, 0], [-9, 1], [-9, 2], [-9, 3], [-9, 4], [-9, 5], [-9, 6], [-9, 7], [-9, 8], [-9, 9], [-9, 10], [-9, 11], [-9, 12], [-9, 13], [-9, 14], [-9, 15], [-9, 16], [-9, 17], [-9, 18], [-9, 19], [-9, 20], [-9, 21], [-9, 22], [-9, 23], [-9, 24], [-9, 25], [-9, 26], [-9, 27], [-9, 28], [-9, 29], [-9, 30], [-9, 31], [-9, 32], [-9, 33], [-9, 34], [-9, 35], [-9, 36], [-9, 37], [-9, 38], [-9, 39], [-9, 40], [-9, 41], [-9, 42], [-9, 43], [-9, 44], [-9, 45], [-9, 46], [-9, 47], [-9, 48], [-9, 49], [-9, 50], [-8, 0], [-8, 1], [-8, 2], [-8, 3], [-8, 4], [-8, 5], [-8, 6], [-8, 7], [-8, 8], [-8, 9], [-8, 10], [-8, 11], [-8, 12], [-8, 13], [-8, 14], [-8, 15], [-8, 16], [-8, 17], [-8, 18], [-8, 19], [-8, 20], [-8, 21], [-8, 22], [-8, 23], [-8, 24], [-8, 25], [-8, 26], [-8, 27], [-8, 28], [-8, 29], [-8, 30], [-8, 31], [-8, 32], [-8, 33], [-8, 34], [-8, 35], [-8, 36], [-8, 37], [-8, 38], [-8, 39], [-8, 40], [-8, 41], [-8, 42], [-8, 43], [-8, 44], [-8, 45], [-8, 46], [-8, 47], [-8, 48], [-8, 49], [-8, 50], [-7, 0], [-7, 1], [-7, 2], [-7, 3], [-7, 4], [-7, 5], [-7, 6], [-7, 7], [-7, 8], [-7, 9], [-7, 10], [-7, 11], [-7, 12], [-7, 13], [-7, 14], [-7, 15], [-7, 16], [-7, 17], [-7, 18], [-7, 19], [-7, 20], [-7, 21], [-7, 22], [-7, 23], [-7, 24], [-7, 25], [-7, 26], [-7, 27], [-7, 28], [-7, 29], [-7, 30], [-7, 31], [-7, 32], [-7, 33], [-7, 34], [-7, 35], [-7, 36], [-7, 37], [-7, 38], [-7, 39], [-7, 40], [-7, 41], [-7, 42], [-7, 43], [-7, 44], [-7, 45], [-7, 46], [-7, 47], [-7, 48], [-7, 49], [-7, 50], [-6, 0], [-6, 1], [-6, 2], [-6, 3], [-6, 4], [-6, 5], [-6, 6], [-6, 7], [-6, 8], [-6, 9], [-6, 10], [-6, 11], [-6, 12], [-6, 13], [-6, 14], [-6, 15], [-6, 16], [-6, 17], [-6, 18], [-6, 19], [-6, 20], [-6, 21], [-6, 22], [-6, 23], [-6, 24], [-6, 25], [-6, 26], [-6, 27], [-6, 28], [-6, 29], [-6, 30], [-6, 31], [-6, 32], [-6, 33], [-6, 34], [-6, 35], [-6, 36], [-6, 37], [-6, 38], [-6, 39], [-6, 40], [-6, 41], [-6, 42], [-6, 43], [-6, 44], [-6, 45], [-6, 46], [-6, 47], [-6, 48], [-6, 49], [-6, 50], [-5, 0], [-5, 1], [-5, 2], [-5, 3], [-5, 4], [-5, 5], [-5, 6], [-5, 7], [-5, 8], [-5, 9], [-5, 10], [-5, 11], [-5, 12], [-5, 13], [-5, 14], [-5, 15], [-5, 16], [-5, 17], [-5, 18], [-5, 19], [-5, 20], [-5, 21], [-5, 22], [-5, 23], [-5, 24], [-5, 25], [-5, 26], [-5, 27], [-5, 28], [-5, 29], [-5, 30], [-5, 31], [-5, 32], [-5, 33], [-5, 34], [-5, 35], [-5, 36], [-5, 37], [-5, 38], [-5, 39], [-5, 40], [-5, 41], [-5, 42], [-5, 43], [-5, 44], [-5, 45], [-5, 46], [-5, 47], [-5, 48], [-5, 49], [-5, 50], [-4, 0], [-4, 1], [-4, 2], [-4, 3], [-4, 4], [-4, 5], [-4, 6], [-4, 7], [-4, 8], [-4, 9], [-4, 10], [-4, 11], [-4, 12], [-4, 13], [-4, 14], [-4, 15], [-4, 16], [-4, 17], [-4, 18], [-4, 19], [-4, 20], [-4, 21], [-4, 22], [-4, 23], [-4, 24], [-4, 25], [-4, 26], [-4, 27], [-4, 28], [-4, 29], [-4, 30], [-4, 31], [-4, 32], [-4, 33], [-4, 34], [-4, 35], [-4, 36], [-4, 37], [-4, 38], [-4, 39], [-4, 40], [-4, 41], [-4, 42], [-4, 43], [-4, 44], [-4, 45], [-4, 46], [-4, 47], [-4, 48], [-4, 49], [-4, 50], [-3, 0], [-3, 1], [-3, 2], [-3, 3], [-3, 4], [-3, 5], [-3, 6], [-3, 7], [-3, 8], [-3, 9], [-3, 10], [-3, 11], [-3, 12], [-3, 13], [-3, 14], [-3, 15], [-3, 16], [-3, 17], [-3, 18], [-3, 19], [-3, 20], [-3, 21], [-3, 22], [-3, 23], [-3, 24], [-3, 25], [-3, 26], [-3, 27], [-3, 28], [-3, 29], [-3, 30], [-3, 31], [-3, 32], [-3, 33], [-3, 34], [-3, 35], [-3, 36], [-3, 37], [-3, 38], [-3, 39], [-3, 40], [-3, 41], [-3, 42], [-3, 43], [-3, 44], [-3, 45], [-3, 46], [-3, 47], [-3, 48], [-3, 49], [-3, 50], [-2, 0], [-2, 1], [-2, 2], [-2, 3], [-2, 4], [-2, 5], [-2, 6], [-2, 7], [-2, 8], [-2, 9], [-2, 10], [-2, 11], [-2, 12], [-2, 13], [-2, 14], [-2, 15], [-2, 16], [-2, 17], [-2, 18], [-2, 19], [-2, 20], [-2, 21], [-2, 22], [-2, 23], [-2, 24], [-2, 25], [-2, 26], [-2, 27], [-2, 28], [-2, 29], [-2, 30], [-2, 31], [-2, 32], [-2, 33], [-2, 34], [-2, 35], [-2, 36], [-2, 37], [-2, 38], [-2, 39], [-2, 40], [-2, 41], [-2, 42], [-2, 43], [-2, 44], [-2, 45], [-2, 46], [-2, 47], [-2, 48], [-2, 49], [-2, 50], [-1, 0], [-1, 1], [-1, 2], [-1, 3], [-1, 4], [-1, 5], [-1, 6], [-1, 7], [-1, 8], [-1, 9], [-1, 10], [-1, 11], [-1, 12], [-1, 13], [-1, 14], [-1, 15], [-1, 16], [-1, 17], [-1, 18], [-1, 19], [-1, 20], [-1, 21], [-1, 22], [-1, 23], [-1, 24], [-1, 25], [-1, 26], [-1, 27], [-1, 28], [-1, 29], [-1, 30], [-1, 31], [-1, 32], [-1, 33], [-1, 34], [-1, 35], [-1, 36], [-1, 37], [-1, 38], [-1, 39], [-1, 40], [-1, 41], [-1, 42], [-1, 43], [-1, 44], [-1, 45], [-1, 46], [-1, 47], [-1, 48], [-1, 49], [-1, 50], [0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [0, 10], [0, 11], [0, 12], [0, 13], [0, 14], [0, 15], [0, 16], [0, 17], [0, 18], [0, 19], [0, 20], [0, 21], [0, 22], [0, 23], [0, 24], [0, 25], [0, 26], [0, 27], [0, 28], [0, 29], [0, 30], [0, 31], [0, 32], [0, 33], [0, 34], [0, 35], [0, 36], [0, 37], [0, 38], [0, 39], [0, 40], [0, 41], [0, 42], [0, 43], [0, 44], [0, 45], [0, 46], [0, 47], [0, 48], [0, 49], [0, 50], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [1, 9], [1, 10], [1, 11], [1, 12], [1, 13], [1, 14], [1, 15], [1, 16], [1, 17], [1, 18], [1, 19], [1, 20], [1, 21], [1, 22], [1, 23], [1, 24], [1, 25], [1, 26], [1, 27], [1, 28], [1, 29], [1, 30], [1, 31], [1, 32], [1, 33], [1, 34], [1, 35], [1, 36], [1, 37], [1, 38], [1, 39], [1, 40], [1, 41], [1, 42], [1, 43], [1, 44], [1, 45], [1, 46], [1, 47], [1, 48], [1, 49], [1, 50], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [2, 9], [2, 10], [2, 11], [2, 12], [2, 13], [2, 14], [2, 15], [2, 16], [2, 17], [2, 18], [2, 19], [2, 20], [2, 21], [2, 22], [2, 23], [2, 24], [2, 25], [2, 26], [2, 27], [2, 28], [2, 29], [2, 30], [2, 31], [2, 32], [2, 33], [2, 34], [2, 35], [2, 36], [2, 37], [2, 38], [2, 39], [2, 40], [2, 41], [2, 42], [2, 43], [2, 44], [2, 45], [2, 46], [2, 47], [2, 48], [2, 49], [2, 50], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], [3, 9], [3, 10], [3, 11], [3, 12], [3, 13], [3, 14], [3, 15], [3, 16], [3, 17], [3, 18], [3, 19], [3, 20], [3, 21], [3, 22], [3, 23], [3, 24], [3, 25], [3, 26], [3, 27], [3, 28], [3, 29], [3, 30], [3, 31], [3, 32], [3, 33], [3, 34], [3, 35], [3, 36], [3, 37], [3, 38], [3, 39], [3, 40], [3, 41], [3, 42], [3, 43], [3, 44], [3, 45], [3, 46], [3, 47], [3, 48], [3, 49], [3, 50], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [4, 8], [4, 9], [4, 10], [4, 11], [4, 12], [4, 13], [4, 14], [4, 15], [4, 16], [4, 17], [4, 18], [4, 19], [4, 20], [4, 21], [4, 22], [4, 23], [4, 24], [4, 25], [4, 26], [4, 27], [4, 28], [4, 29], [4, 30], [4, 31], [4, 32], [4, 33], [4, 34], [4, 35], [4, 36], [4, 37], [4, 38], [4, 39], [4, 40], [4, 41], [4, 42], [4, 43], [4, 44], [4, 45], [4, 46], [4, 47], [4, 48], [4, 49], [4, 50], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [5, 9], [5, 10], [5, 11], [5, 12], [5, 13], [5, 14], [5, 15], [5, 16], [5, 17], [5, 18], [5, 19], [5, 20], [5, 21], [5, 22], [5, 23], [5, 24], [5, 25], [5, 26], [5, 27], [5, 28], [5, 29], [5, 30], [5, 31], [5, 32], [5, 33], [5, 34], [5, 35], [5, 36], [5, 37], [5, 38], [5, 39], [5, 40], [5, 41], [5, 42], [5, 43], [5, 44], [5, 45], [5, 46], [5, 47], [5, 48], [5, 49], [5, 50], [6, 0], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [6, 9], [6, 10], [6, 11], [6, 12], [6, 13], [6, 14], [6, 15], [6, 16], [6, 17], [6, 18], [6, 19], [6, 20], [6, 21], [6, 22], [6, 23], [6, 24], [6, 25], [6, 26], [6, 27], [6, 28], [6, 29], [6, 30], [6, 31], [6, 32], [6, 33], [6, 34], [6, 35], [6, 36], [6, 37], [6, 38], [6, 39], [6, 40], [6, 41], [6, 42], [6, 43], [6, 44], [6, 45], [6, 46], [6, 47], [6, 48], [6, 49], [6, 50], [7, 0], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7], [7, 8], [7, 9], [7, 10], [7, 11], [7, 12], [7, 13], [7, 14], [7, 15], [7, 16], [7, 17], [7, 18], [7, 19], [7, 20], [7, 21], [7, 22], [7, 23], [7, 24], [7, 25], [7, 26], [7, 27], [7, 28], [7, 29], [7, 30], [7, 31], [7, 32], [7, 33], [7, 34], [7, 35], [7, 36], [7, 37], [7, 38], [7, 39], [7, 40], [7, 41], [7, 42], [7, 43], [7, 44], [7, 45], [7, 46], [7, 47], [7, 48], [7, 49], [7, 50], [8, 0], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 6], [8, 7], [8, 8], [8, 9], [8, 10], [8, 11], [8, 12], [8, 13], [8, 14], [8, 15], [8, 16], [8, 17], [8, 18], [8, 19], [8, 20], [8, 21], [8, 22], [8, 23], [8, 24], [8, 25], [8, 26], [8, 27], [8, 28], [8, 29], [8, 30], [8, 31], [8, 32], [8, 33], [8, 34], [8, 35], [8, 36], [8, 37], [8, 38], [8, 39], [8, 40], [8, 41], [8, 42], [8, 43], [8, 44], [8, 45], [8, 46], [8, 47], [8, 48], [8, 49], [8, 50], [9, 0], [9, 1], [9, 2], [9, 3], [9, 4], [9, 5], [9, 6], [9, 7], [9, 8], [9, 9], [9, 10], [9, 11], [9, 12], [9, 13], [9, 14], [9, 15], [9, 16], [9, 17], [9, 18], [9, 19], [9, 20], [9, 21], [9, 22], [9, 23], [9, 24], [9, 25], [9, 26], [9, 27], [9, 28], [9, 29], [9, 30], [9, 31], [9, 32], [9, 33], [9, 34], [9, 35], [9, 36], [9, 37], [9, 38], [9, 39], [9, 40], [9, 41], [9, 42], [9, 43], [9, 44], [9, 45], [9, 46], [9, 47], [9, 48], [9, 49], [9, 50], [10, 0], [10, 1], [10, 2], [10, 3], [10, 4], [10, 5], [10, 6], [10, 7], [10, 8], [10, 9], [10, 10], [10, 11], [10, 12], [10, 13], [10, 14], [10, 15], [10, 16], [10, 17], [10, 18], [10, 19], [10, 20], [10, 21], [10, 22], [10, 23], [10, 24], [10, 25], [10, 26], [10, 27], [10, 28], [10, 29], [10, 30], [10, 31], [10, 32], [10, 33], [10, 34], [10, 35], [10, 36], [10, 37], [10, 38], [10, 39], [10, 40], [10, 41], [10, 42], [10, 43], [10, 44], [10, 45], [10, 46], [10, 47], [10, 48], [10, 49], [10, 50], [11, 0], [11, 1], [11, 2], [11, 3], [11, 4], [11, 5], [11, 6], [11, 7], [11, 8], [11, 9], [11, 10], [11, 11], [11, 12], [11, 13], [11, 14], [11, 15], [11, 16], [11, 17], [11, 18], [11, 19], [11, 20], [11, 21], [11, 22], [11, 23], [11, 24], [11, 25], [11, 26], [11, 27], [11, 28], [11, 29], [11, 30], [11, 31], [11, 32], [11, 33], [11, 34], [11, 35], [11, 36], [11, 37], [11, 38], [11, 39], [11, 40], [11, 41], [11, 42], [11, 43], [11, 44], [11, 45], [11, 46], [11, 47], [11, 48], [11, 49], [11, 50], [12, 0], [12, 1], [12, 2], [12, 3], [12, 4], [12, 5], [12, 6], [12, 7], [12, 8], [12, 9], [12, 10], [12, 11], [12, 12], [12, 13], [12, 14], [12, 15], [12, 16], [12, 17], [12, 18], [12, 19], [12, 20], [12, 21], [12, 22], [12, 23], [12, 24], [12, 25], [12, 26], [12, 27], [12, 28], [12, 29], [12, 30], [12, 31], [12, 32], [12, 33], [12, 34], [12, 35], [12, 36], [12, 37], [12, 38], [12, 39], [12, 40], [12, 41], [12, 42], [12, 43], [12, 44], [12, 45], [12, 46], [12, 47], [12, 48], [12, 49], [12, 50], [13, 0], [13, 1], [13, 2], [13, 3], [13, 4], [13, 5], [13, 6], [13, 7], [13, 8], [13, 9], [13, 10], [13, 11], [13, 12], [13, 13], [13, 14], [13, 15], [13, 16], [13, 17], [13, 18], [13, 19], [13, 20], [13, 21], [13, 22], [13, 23], [13, 24], [13, 25], [13, 26], [13, 27], [13, 28], [13, 29], [13, 30], [13, 31], [13, 32], [13, 33], [13, 34], [13, 35], [13, 36], [13, 37], [13, 38], [13, 39], [13, 40], [13, 41], [13, 42], [13, 43], [13, 44], [13, 45], [13, 46], [13, 47], [13, 48], [13, 49], [13, 50], [14, 0], [14, 1], [14, 2], [14, 3], [14, 4], [14, 5], [14, 6], [14, 7], [14, 8], [14, 9], [14, 10], [14, 11], [14, 12], [14, 13], [14, 14], [14, 15], [14, 16], [14, 17], [14, 18], [14, 19], [14, 20], [14, 21], [14, 22], [14, 23], [14, 24], [14, 25], [14, 26], [14, 27], [14, 28], [14, 29], [14, 30], [14, 31], [14, 32], [14, 33], [14, 34], [14, 35], [14, 36], [14, 37], [14, 38], [14, 39], [14, 40], [14, 41], [14, 42], [14, 43], [14, 44], [14, 45], [14, 46], [14, 47], [14, 48], [14, 49], [14, 50], [15, 0], [15, 1], [15, 2], [15, 3], [15, 4], [15, 5], [15, 6], [15, 7], [15, 8], [15, 9], [15, 10], [15, 11], [15, 12], [15, 13], [15, 14], [15, 15], [15, 16], [15, 17], [15, 18], [15, 19], [15, 20], [15, 21], [15, 22], [15, 23], [15, 24], [15, 25], [15, 26], [15, 27], [15, 28], [15, 29], [15, 30], [15, 31], [15, 32], [15, 33], [15, 34], [15, 35], [15, 36], [15, 37], [15, 38], [15, 39], [15, 40], [15, 41], [15, 42], [15, 43], [15, 44], [15, 45], [15, 46], [15, 47], [15, 48], [15, 49], [15, 50], [16, 0], [16, 1], [16, 2], [16, 3], [16, 4], [16, 5], [16, 6], [16, 7], [16, 8], [16, 9], [16, 10], [16, 11], [16, 12], [16, 13], [16, 14], [16, 15], [16, 16], [16, 17], [16, 18], [16, 19], [16, 20], [16, 21], [16, 22], [16, 23], [16, 24], [16, 25], [16, 26], [16, 27], [16, 28], [16, 29], [16, 30], [16, 31], [16, 32], [16, 33], [16, 34], [16, 35], [16, 36], [16, 37], [16, 38], [16, 39], [16, 40], [16, 41], [16, 42], [16, 43], [16, 44], [16, 45], [16, 46], [16, 47], [16, 48], [16, 49], [16, 50], [17, 0], [17, 1], [17, 2], [17, 3], [17, 4], [17, 5], [17, 6], [17, 7], [17, 8], [17, 9], [17, 10], [17, 11], [17, 12], [17, 13], [17, 14], [17, 15], [17, 16], [17, 17], [17, 18], [17, 19], [17, 20], [17, 21], [17, 22], [17, 23], [17, 24], [17, 25], [17, 26], [17, 27], [17, 28], [17, 29], [17, 30], [17, 31], [17, 32], [17, 33], [17, 34], [17, 35], [17, 36], [17, 37], [17, 38], [17, 39], [17, 40], [17, 41], [17, 42], [17, 43], [17, 44], [17, 45], [17, 46], [17, 47], [17, 48], [17, 49], [17, 50], [18, 0], [18, 1], [18, 2], [18, 3], [18, 4], [18, 5], [18, 6], [18, 7], [18, 8], [18, 9], [18, 10], [18, 11], [18, 12], [18, 13], [18, 14], [18, 15], [18, 16], [18, 17], [18, 18], [18, 19], [18, 20], [18, 21], [18, 22], [18, 23], [18, 24], [18, 25], [18, 26], [18, 27], [18, 28], [18, 29], [18, 30], [18, 31], [18, 32], [18, 33], [18, 34], [18, 35], [18, 36], [18, 37], [18, 38], [18, 39], [18, 40], [18, 41], [18, 42], [18, 43], [18, 44], [18, 45], [18, 46], [18, 47], [18, 48], [18, 49], [18, 50], [19, 0], [19, 1], [19, 2], [19, 3], [19, 4], [19, 5], [19, 6], [19, 7], [19, 8], [19, 9], [19, 10], [19, 11], [19, 12], [19, 13], [19, 14], [19, 15], [19, 16], [19, 17], [19, 18], [19, 19], [19, 20], [19, 21], [19, 22], [19, 23], [19, 24], [19, 25], [19, 26], [19, 27], [19, 28], [19, 29], [19, 30], [19, 31], [19, 32], [19, 33], [19, 34], [19, 35], [19, 36], [19, 37], [19, 38], [19, 39], [19, 40], [19, 41], [19, 42], [19, 43], [19, 44], [19, 45], [19, 46], [19, 47], [19, 48], [19, 49], [19, 50], [20, 0], [20, 1], [20, 2], [20, 3], [20, 4], [20, 5], [20, 6], [20, 7], [20, 8], [20, 9], [20, 10], [20, 11], [20, 12], [20, 13], [20, 14], [20, 15], [20, 16], [20, 17], [20, 18], [20, 19], [20, 20], [20, 21], [20, 22], [20, 23], [20, 24], [20, 25], [20, 26], [20, 27], [20, 28], [20, 29], [20, 30], [20, 31], [20, 32], [20, 33], [20, 34], [20, 35], [20, 36], [20, 37], [20, 38], [20, 39], [20, 40], [20, 41], [20, 42], [20, 43], [20, 44], [20, 45], [20, 46], [20, 47], [20, 48], [20, 49], [20, 50], [21, 0], [21, 1], [21, 2], [21, 3], [21, 4], [21, 5], [21, 6], [21, 7], [21, 8], [21, 9], [21, 10], [21, 11], [21, 12], [21, 13], [21, 14], [21, 15], [21, 16], [21, 17], [21, 18], [21, 19], [21, 20], [21, 21], [21, 22], [21, 23], [21, 24], [21, 25], [21, 26], [21, 27], [21, 28], [21, 29], [21, 30], [21, 31], [21, 32], [21, 33], [21, 34], [21, 35], [21, 36], [21, 37], [21, 38], [21, 39], [21, 40], [21, 41], [21, 42], [21, 43], [21, 44], [21, 45], [21, 46], [21, 47], [21, 48], [21, 49], [21, 50], [22, 0], [22, 1], [22, 2], [22, 3], [22, 4], [22, 5], [22, 6], [22, 7], [22, 8], [22, 9], [22, 10], [22, 11], [22, 12], [22, 13], [22, 14], [22, 15], [22, 16], [22, 17], [22, 18], [22, 19], [22, 20], [22, 21], [22, 22], [22, 23], [22, 24], [22, 25], [22, 26], [22, 27], [22, 28], [22, 29], [22, 30], [22, 31], [22, 32], [22, 33], [22, 34], [22, 35], [22, 36], [22, 37], [22, 38], [22, 39], [22, 40], [22, 41], [22, 42], [22, 43], [22, 44], [22, 45], [22, 46], [22, 47], [22, 48], [22, 49], [22, 50], [23, 0], [23, 1], [23, 2], [23, 3], [23, 4], [23, 5], [23, 6], [23, 7], [23, 8], [23, 9], [23, 10], [23, 11], [23, 12], [23, 13], [23, 14], [23, 15], [23, 16], [23, 17], [23, 18], [23, 19], [23, 20], [23, 21], [23, 22], [23, 23], [23, 24], [23, 25], [23, 26], [23, 27], [23, 28], [23, 29], [23, 30], [23, 31], [23, 32], [23, 33], [23, 34], [23, 35], [23, 36], [23, 37], [23, 38], [23, 39], [23, 40], [23, 41], [23, 42], [23, 43], [23, 44], [23, 45], [23, 46], [23, 47], [23, 48], [23, 49], [23, 50], [24, 0], [24, 1], [24, 2], [24, 3], [24, 4], [24, 5], [24, 6], [24, 7], [24, 8], [24, 9], [24, 10], [24, 11], [24, 12], [24, 13], [24, 14], [24, 15], [24, 16], [24, 17], [24, 18], [24, 19], [24, 20], [24, 21], [24, 22], [24, 23], [24, 24], [24, 25], [24, 26], [24, 27], [24, 28], [24, 29], [24, 30], [24, 31], [24, 32], [24, 33], [24, 34], [24, 35], [24, 36], [24, 37], [24, 38], [24, 39], [24, 40], [24, 41], [24, 42], [24, 43], [24, 44], [24, 45], [24, 46], [24, 47], [24, 48], [24, 49], [24, 50], [25, 0], [25, 1], [25, 2], [25, 3], [25, 4], [25, 5], [25, 6], [25, 7], [25, 8], [25, 9], [25, 10], [25, 11], [25, 12], [25, 13], [25, 14], [25, 15], [25, 16], [25, 17], [25, 18], [25, 19], [25, 20], [25, 21], [25, 22], [25, 23], [25, 24], [25, 25], [25, 26], [25, 27], [25, 28], [25, 29], [25, 30], [25, 31], [25, 32], [25, 33], [25, 34], [25, 35], [25, 36], [25, 37], [25, 38], [25, 39], [25, 40], [25, 41], [25, 42], [25, 43], [25, 44], [25, 45], [25, 46], [25, 47], [25, 48], [25, 49], [25, 50], [26, 0], [26, 1], [26, 2], [26, 3], [26, 4], [26, 5], [26, 6], [26, 7], [26, 8], [26, 9], [26, 10], [26, 11], [26, 12], [26, 13], [26, 14], [26, 15], [26, 16], [26, 17], [26, 18], [26, 19], [26, 20], [26, 21], [26, 22], [26, 23], [26, 24], [26, 25], [26, 26], [26, 27], [26, 28], [26, 29], [26, 30], [26, 31], [26, 32], [26, 33], [26, 34], [26, 35], [26, 36], [26, 37], [26, 38], [26, 39], [26, 40], [26, 41], [26, 42], [26, 43], [26, 44], [26, 45], [26, 46], [26, 47], [26, 48], [26, 49], [26, 50], [27, 0], [27, 1], [27, 2], [27, 3], [27, 4], [27, 5], [27, 6], [27, 7], [27, 8], [27, 9], [27, 10], [27, 11], [27, 12], [27, 13], [27, 14], [27, 15], [27, 16], [27, 17], [27, 18], [27, 19], [27, 20], [27, 21], [27, 22], [27, 23], [27, 24], [27, 25], [27, 26], [27, 27], [27, 28], [27, 29], [27, 30], [27, 31], [27, 32], [27, 33], [27, 34], [27, 35], [27, 36], [27, 37], [27, 38], [27, 39], [27, 40], [27, 41], [27, 42], [27, 43], [27, 44], [27, 45], [27, 46], [27, 47], [27, 48], [27, 49], [27, 50], [28, 0], [28, 1], [28, 2], [28, 3], [28, 4], [28, 5], [28, 6], [28, 7], [28, 8], [28, 9], [28, 10], [28, 11], [28, 12], [28, 13], [28, 14], [28, 15], [28, 16], [28, 17], [28, 18], [28, 19], [28, 20], [28, 21], [28, 22], [28, 23], [28, 24], [28, 25], [28, 26], [28, 27], [28, 28], [28, 29], [28, 30], [28, 31], [28, 32], [28, 33], [28, 34], [28, 35], [28, 36], [28, 37], [28, 38], [28, 39], [28, 40], [28, 41], [28, 42], [28, 43], [28, 44], [28, 45], [28, 46], [28, 47], [28, 48], [28, 49], [28, 50], [29, 0], [29, 1], [29, 2], [29, 3], [29, 4], [29, 5], [29, 6], [29, 7], [29, 8], [29, 9], [29, 10], [29, 11], [29, 12], [29, 13], [29, 14], [29, 15], [29, 16], [29, 17], [29, 18], [29, 19], [29, 20], [29, 21], [29, 22], [29, 23], [29, 24], [29, 25], [29, 26], [29, 27], [29, 28], [29, 29], [29, 30], [29, 31], [29, 32], [29, 33], [29, 34], [29, 35], [29, 36], [29, 37], [29, 38], [29, 39], [29, 40], [29, 41], [29, 42], [29, 43], [29, 44], [29, 45], [29, 46], [29, 47], [29, 48], [29, 49], [29, 50], [30, 0], [30, 1], [30, 2], [30, 3], [30, 4], [30, 5], [30, 6], [30, 7], [30, 8], [30, 9], [30, 10], [30, 11], [30, 12], [30, 13], [30, 14], [30, 15], [30, 16], [30, 17], [30, 18], [30, 19], [30, 20], [30, 21], [30, 22], [30, 23], [30, 24], [30, 25], [30, 26], [30, 27], [30, 28], [30, 29], [30, 30], [30, 31], [30, 32], [30, 33], [30, 34], [30, 35], [30, 36], [30, 37], [30, 38], [30, 39], [30, 40], [30, 41], [30, 42], [30, 43], [30, 44], [30, 45], [30, 46], [30, 47], [30, 48], [30, 49], [30, 50], [31, 0], [31, 1], [31, 2], [31, 3], [31, 4], [31, 5], [31, 6], [31, 7], [31, 8], [31, 9], [31, 10], [31, 11], [31, 12], [31, 13], [31, 14], [31, 15], [31, 16], [31, 17], [31, 18], [31, 19], [31, 20], [31, 21], [31, 22], [31, 23], [31, 24], [31, 25], [31, 26], [31, 27], [31, 28], [31, 29], [31, 30], [31, 31], [31, 32], [31, 33], [31, 34], [31, 35], [31, 36], [31, 37], [31, 38], [31, 39], [31, 40], [31, 41], [31, 42], [31, 43], [31, 44], [31, 45], [31, 46], [31, 47], [31, 48], [31, 49], [31, 50], [32, 0], [32, 1], [32, 2], [32, 3], [32, 4], [32, 5], [32, 6], [32, 7], [32, 8], [32, 9], [32, 10], [32, 11], [32, 12], [32, 13], [32, 14], [32, 15], [32, 16], [32, 17], [32, 18], [32, 19], [32, 20], [32, 21], [32, 22], [32, 23], [32, 24], [32, 25], [32, 26], [32, 27], [32, 28], [32, 29], [32, 30], [32, 31], [32, 32], [32, 33], [32, 34], [32, 35], [32, 36], [32, 37], [32, 38], [32, 39], [32, 40], [32, 41], [32, 42], [32, 43], [32, 44], [32, 45], [32, 46], [32, 47], [32, 48], [32, 49], [32, 50], [33, 0], [33, 1], [33, 2], [33, 3], [33, 4], [33, 5], [33, 6], [33, 7], [33, 8], [33, 9], [33, 10], [33, 11], [33, 12], [33, 13], [33, 14], [33, 15], [33, 16], [33, 17], [33, 18], [33, 19], [33, 20], [33, 21], [33, 22], [33, 23], [33, 24], [33, 25], [33, 26], [33, 27], [33, 28], [33, 29], [33, 30], [33, 31], [33, 32], [33, 33], [33, 34], [33, 35], [33, 36], [33, 37], [33, 38], [33, 39], [33, 40], [33, 41], [33, 42], [33, 43], [33, 44], [33, 45], [33, 46], [33, 47], [33, 48], [33, 49], [33, 50], [34, 0], [34, 1], [34, 2], [34, 3], [34, 4], [34, 5], [34, 6], [34, 7], [34, 8], [34, 9], [34, 10], [34, 11], [34, 12], [34, 13], [34, 14], [34, 15], [34, 16], [34, 17], [34, 18], [34, 19], [34, 20], [34, 21], [34, 22], [34, 23], [34, 24], [34, 25], [34, 26], [34, 27], [34, 28], [34, 29], [34, 30], [34, 31], [34, 32], [34, 33], [34, 34], [34, 35], [34, 36], [34, 37], [34, 38], [34, 39], [34, 40], [34, 41], [34, 42], [34, 43], [34, 44], [34, 45], [34, 46], [34, 47], [34, 48], [34, 49], [34, 50], [35, 0], [35, 1], [35, 2], [35, 3], [35, 4], [35, 5], [35, 6], [35, 7], [35, 8], [35, 9], [35, 10], [35, 11], [35, 12], [35, 13], [35, 14], [35, 15], [35, 16], [35, 17], [35, 18], [35, 19], [35, 20], [35, 21], [35, 22], [35, 23], [35, 24], [35, 25], [35, 26], [35, 27], [35, 28], [35, 29], [35, 30], [35, 31], [35, 32], [35, 33], [35, 34], [35, 35], [35, 36], [35, 37], [35, 38], [35, 39], [35, 40], [35, 41], [35, 42], [35, 43], [35, 44], [35, 45], [35, 46], [35, 47], [35, 48], [35, 49], [35, 50], [36, 0], [36, 1], [36, 2], [36, 3], [36, 4], [36, 5], [36, 6], [36, 7], [36, 8], [36, 9], [36, 10], [36, 11], [36, 12], [36, 13], [36, 14], [36, 15], [36, 16], [36, 17], [36, 18], [36, 19], [36, 20], [36, 21], [36, 22], [36, 23], [36, 24], [36, 25], [36, 26], [36, 27], [36, 28], [36, 29], [36, 30], [36, 31], [36, 32], [36, 33], [36, 34], [36, 35], [36, 36], [36, 37], [36, 38], [36, 39], [36, 40], [36, 41], [36, 42], [36, 43], [36, 44], [36, 45], [36, 46], [36, 47], [36, 48], [36, 49], [36, 50], [37, 0], [37, 1], [37, 2], [37, 3], [37, 4], [37, 5], [37, 6], [37, 7], [37, 8], [37, 9], [37, 10], [37, 11], [37, 12], [37, 13], [37, 14], [37, 15], [37, 16], [37, 17], [37, 18], [37, 19], [37, 20], [37, 21], [37, 22], [37, 23], [37, 24], [37, 25], [37, 26], [37, 27], [37, 28], [37, 29], [37, 30], [37, 31], [37, 32], [37, 33], [37, 34], [37, 35], [37, 36], [37, 37], [37, 38], [37, 39], [37, 40], [37, 41], [37, 42], [37, 43], [37, 44], [37, 45], [37, 46], [37, 47], [37, 48], [37, 49], [37, 50], [38, 0], [38, 1], [38, 2], [38, 3], [38, 4], [38, 5], [38, 6], [38, 7], [38, 8], [38, 9], [38, 10], [38, 11], [38, 12], [38, 13], [38, 14], [38, 15], [38, 16], [38, 17], [38, 18], [38, 19], [38, 20], [38, 21], [38, 22], [38, 23], [38, 24], [38, 25], [38, 26], [38, 27], [38, 28], [38, 29], [38, 30], [38, 31], [38, 32], [38, 33], [38, 34], [38, 35], [38, 36], [38, 37], [38, 38], [38, 39], [38, 40], [38, 41], [38, 42], [38, 43], [38, 44], [38, 45], [38, 46], [38, 47], [38, 48], [38, 49], [38, 50], [39, 0], [39, 1], [39, 2], [39, 3], [39, 4], [39, 5], [39, 6], [39, 7], [39, 8], [39, 9], [39, 10], [39, 11], [39, 12], [39, 13], [39, 14], [39, 15], [39, 16], [39, 17], [39, 18], [39, 19], [39, 20], [39, 21], [39, 22], [39, 23], [39, 24], [39, 25], [39, 26], [39, 27], [39, 28], [39, 29], [39, 30], [39, 31], [39, 32], [39, 33], [39, 34], [39, 35], [39, 36], [39, 37], [39, 38], [39, 39], [39, 40], [39, 41], [39, 42], [39, 43], [39, 44], [39, 45], [39, 46], [39, 47], [39, 48], [39, 49], [39, 50], [40, 0], [40, 1], [40, 2], [40, 3], [40, 4], [40, 5], [40, 6], [40, 7], [40, 8], [40, 9], [40, 10], [40, 11], [40, 12], [40, 13], [40, 14], [40, 15], [40, 16], [40, 17], [40, 18], [40, 19], [40, 20], [40, 21], [40, 22], [40, 23], [40, 24], [40, 25], [40, 26], [40, 27], [40, 28], [40, 29], [40, 30], [40, 31], [40, 32], [40, 33], [40, 34], [40, 35], [40, 36], [40, 37], [40, 38], [40, 39], [40, 40], [40, 41], [40, 42], [40, 43], [40, 44], [40, 45], [40, 46], [40, 47], [40, 48], [40, 49], [40, 50], [41, 0], [41, 1], [41, 2], [41, 3], [41, 4], [41, 5], [41, 6], [41, 7], [41, 8], [41, 9], [41, 10], [41, 11], [41, 12], [41, 13], [41, 14], [41, 15], [41, 16], [41, 17], [41, 18], [41, 19], [41, 20], [41, 21], [41, 22], [41, 23], [41, 24], [41, 25], [41, 26], [41, 27], [41, 28], [41, 29], [41, 30], [41, 31], [41, 32], [41, 33], [41, 34], [41, 35], [41, 36], [41, 37], [41, 38], [41, 39], [41, 40], [41, 41], [41, 42], [41, 43], [41, 44], [41, 45], [41, 46], [41, 47], [41, 48], [41, 49], [41, 50], [42, 0], [42, 1], [42, 2], [42, 3], [42, 4], [42, 5], [42, 6], [42, 7], [42, 8], [42, 9], [42, 10], [42, 11], [42, 12], [42, 13], [42, 14], [42, 15], [42, 16], [42, 17], [42, 18], [42, 19], [42, 20], [42, 21], [42, 22], [42, 23], [42, 24], [42, 25], [42, 26], [42, 27], [42, 28], [42, 29], [42, 30], [42, 31], [42, 32], [42, 33], [42, 34], [42, 35], [42, 36], [42, 37], [42, 38], [42, 39], [42, 40], [42, 41], [42, 42], [42, 43], [42, 44], [42, 45], [42, 46], [42, 47], [42, 48], [42, 49], [42, 50], [43, 0], [43, 1], [43, 2], [43, 3], [43, 4], [43, 5], [43, 6], [43, 7], [43, 8], [43, 9], [43, 10], [43, 11], [43, 12], [43, 13], [43, 14], [43, 15], [43, 16], [43, 17], [43, 18], [43, 19], [43, 20], [43, 21], [43, 22], [43, 23], [43, 24], [43, 25], [43, 26], [43, 27], [43, 28], [43, 29], [43, 30], [43, 31], [43, 32], [43, 33], [43, 34], [43, 35], [43, 36], [43, 37], [43, 38], [43, 39], [43, 40], [43, 41], [43, 42], [43, 43], [43, 44], [43, 45], [43, 46], [43, 47], [43, 48], [43, 49], [43, 50], [44, 0], [44, 1], [44, 2], [44, 3], [44, 4], [44, 5], [44, 6], [44, 7], [44, 8], [44, 9], [44, 10], [44, 11], [44, 12], [44, 13], [44, 14], [44, 15], [44, 16], [44, 17], [44, 18], [44, 19], [44, 20], [44, 21], [44, 22], [44, 23], [44, 24], [44, 25], [44, 26], [44, 27], [44, 28], [44, 29], [44, 30], [44, 31], [44, 32], [44, 33], [44, 34], [44, 35], [44, 36], [44, 37], [44, 38], [44, 39], [44, 40], [44, 41], [44, 42], [44, 43], [44, 44], [44, 45], [44, 46], [44, 47], [44, 48], [44, 49], [44, 50], [45, 0], [45, 1], [45, 2], [45, 3], [45, 4], [45, 5], [45, 6], [45, 7], [45, 8], [45, 9], [45, 10], [45, 11], [45, 12], [45, 13], [45, 14], [45, 15], [45, 16], [45, 17], [45, 18], [45, 19], [45, 20], [45, 21], [45, 22], [45, 23], [45, 24], [45, 25], [45, 26], [45, 27], [45, 28], [45, 29], [45, 30], [45, 31], [45, 32], [45, 33], [45, 34], [45, 35], [45, 36], [45, 37], [45, 38], [45, 39], [45, 40], [45, 41], [45, 42], [45, 43], [45, 44], [45, 45], [45, 46], [45, 47], [45, 48], [45, 49], [45, 50], [46, 0], [46, 1], [46, 2], [46, 3], [46, 4], [46, 5], [46, 6], [46, 7], [46, 8], [46, 9], [46, 10], [46, 11], [46, 12], [46, 13], [46, 14], [46, 15], [46, 16], [46, 17], [46, 18], [46, 19], [46, 20], [46, 21], [46, 22], [46, 23], [46, 24], [46, 25], [46, 26], [46, 27], [46, 28], [46, 29], [46, 30], [46, 31], [46, 32], [46, 33], [46, 34], [46, 35], [46, 36], [46, 37], [46, 38], [46, 39], [46, 40], [46, 41], [46, 42], [46, 43], [46, 44], [46, 45], [46, 46], [46, 47], [46, 48], [46, 49], [46, 50], [47, 0], [47, 1], [47, 2], [47, 3], [47, 4], [47, 5], [47, 6], [47, 7], [47, 8], [47, 9], [47, 10], [47, 11], [47, 12], [47, 13], [47, 14], [47, 15], [47, 16], [47, 17], [47, 18], [47, 19], [47, 20], [47, 21], [47, 22], [47, 23], [47, 24], [47, 25], [47, 26], [47, 27], [47, 28], [47, 29], [47, 30], [47, 31], [47, 32], [47, 33], [47, 34], [47, 35], [47, 36], [47, 37], [47, 38], [47, 39], [47, 40], [47, 41], [47, 42], [47, 43], [47, 44], [47, 45], [47, 46], [47, 47], [47, 48], [47, 49], [47, 50], [48, 0], [48, 1], [48, 2], [48, 3], [48, 4], [48, 5], [48, 6], [48, 7], [48, 8], [48, 9], [48, 10], [48, 11], [48, 12], [48, 13], [48, 14], [48, 15], [48, 16], [48, 17], [48, 18], [48, 19], [48, 20], [48, 21], [48, 22], [48, 23], [48, 24], [48, 25], [48, 26], [48, 27], [48, 28], [48, 29], [48, 30], [48, 31], [48, 32], [48, 33], [48, 34], [48, 35], [48, 36], [48, 37], [48, 38], [48, 39], [48, 40], [48, 41], [48, 42], [48, 43], [48, 44], [48, 45], [48, 46], [48, 47], [48, 48], [48, 49], [48, 50], [49, 0], [49, 1], [49, 2], [49, 3], [49, 4], [49, 5], [49, 6], [49, 7], [49, 8], [49, 9], [49, 10], [49, 11], [49, 12], [49, 13], [49, 14], [49, 15], [49, 16], [49, 17], [49, 18], [49, 19], [49, 20], [49, 21], [49, 22], [49, 23], [49, 24], [49, 25], [49, 26], [49, 27], [49, 28], [49, 29], [49, 30], [49, 31], [49, 32], [49, 33], [49, 34], [49, 35], [49, 36], [49, 37], [49, 38], [49, 39], [49, 40], [49, 41], [49, 42], [49, 43], [49, 44], [49, 45], [49, 46], [49, 47], [49, 48], [49, 49], [49, 50], [50, 0], [50, 1], [50, 2], [50, 3], [50, 4], [50, 5], [50, 6], [50, 7], [50, 8], [50, 9], [50, 10], [50, 11], [50, 12], [50, 13], [50, 14], [50, 15], [50, 16], [50, 17], [50, 18], [50, 19], [50, 20], [50, 21], [50, 22], [50, 23], [50, 24], [50, 25], [50, 26], [50, 27], [50, 28], [50, 29], [50, 30], [50, 31], [50, 32], [50, 33], [50, 34], [50, 35], [50, 36], [50, 37], [50, 38], [50, 39], [50, 40], [50, 41], [50, 42], [50, 43], [50, 44], [50, 45], [50, 46], [50, 47], [50, 48], [50, 49], [50, 50]]"
414 ]
415 },
416 "execution_count": 33,
417 "metadata": {},
418 "output_type": "execute_result"
419 }
420 ],
421 "source": [
422 "coeffs = (-50..50).to_a.product((0..50).to_a);"
423 ]
424 },
425 {
426 "cell_type": "code",
427 "execution_count": 34,
428 "metadata": {
429 "collapsed": false
430 },
431 "outputs": [
432 {
433 "data": {
434 "text/plain": [
435 "[0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 2, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 3, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 0, 0, 2, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 16, 0, 1, 0, 0, 0, 22, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 2, 0, 2, 0, 0, 0, 1, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 15, 0, 0, 0, 0, 0, 21, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 2, 0, 3, 0, 0, 0, 8, 0, 2, 0, 0, 0, 14, 0, 0, 0, 0, 0, 20, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 2, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 2, 0, 0, 0, 7, 0, 1, 0, 0, 0, 13, 0, 1, 0, 0, 0, 19, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 43, 0, 0, 0, 0, 0, 1, 1, 0, 2, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 4, 0, 6, 0, 0, 0, 1, 0, 12, 0, 0, 0, 1, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 42, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 3, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 0, 5, 0, 2, 0, 0, 0, 11, 0, 2, 0, 0, 0, 17, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 3, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 41, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 2, 0, 4, 0, 1, 0, 0, 0, 10, 0, 1, 0, 0, 0, 16, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 40, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 3, 0, 1, 0, 3, 0, 0, 0, 1, 0, 9, 0, 0, 0, 1, 0, 15, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 39, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 5, 0, 2, 0, 0, 0, 2, 0, 2, 0, 0, 0, 8, 0, 1, 0, 0, 0, 14, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 1, 0, 0, 0, 38, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 2, 0, 3, 0, 1, 0, 0, 0, 4, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 13, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 2, 0, 1, 0, 5, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 0, 0, 12, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 4, 0, 2, 0, 0, 0, 5, 0, 1, 0, 0, 0, 4, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 1, 0, 0, 0, 11, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 2, 0, 2, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 3, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 3, 0, 1, 0, 6, 0, 0, 0, 1, 0, 11, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 3, 0, 1, 0, 0, 0, 2, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 5, 0, 0, 0, 0, 0, 10, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 2, 0, 1, 0, 1, 0, 0, 0, 3, 0, 1, 0, 0, 0, 15, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 1, 0, 0, 0, 9, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 6, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 14, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 2, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 3, 0, 2, 0, 0, 0, 17, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 2, 0, 4, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 4, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 16, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 3, 0, 1, 0, 1, 0, 0, 0, 1, 0, 12, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 2, 0, 0, 0, 4, 0, 2, 0, 0, 0, 5, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 11, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 4, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 3, 0, 1, 0, 2, 0, 0, 0, 1, 0, 3, 0, 0, 0, 1, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 3, 0, 2, 0, 0, 0, 2, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 2, 0, 3, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 6, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 2, 0, 1, 0, 3, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 2, 0, 1, 0, 0, 0, 3, 0, 1, 0, 0, 0, 5, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 4, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 2, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 3, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 4, 0, 0, 0, 1, 0, 4, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 3, 0, 1, 0, 0, 0, 3, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 2, 0, 1, 0, 1, 0, 0, 0, 6, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0]"
436 ]
437 },
438 "execution_count": 34,
439 "metadata": {},
440 "output_type": "execute_result"
441 }
442 ],
443 "source": [
444 "coeffs.map {|a, b| count_primes(primes, a, b)}"
445 ]
446 },
447 {
448 "cell_type": "code",
449 "execution_count": 35,
450 "metadata": {
451 "collapsed": false
452 },
453 "outputs": [
454 {
455 "data": {
456 "text/plain": [
457 "[-5, 47]"
458 ]
459 },
460 "execution_count": 35,
461 "metadata": {},
462 "output_type": "execute_result"
463 }
464 ],
465 "source": [
466 "coeffs.max_by {|a, b| count_primes(primes, a, b)}"
467 ]
468 },
469 {
470 "cell_type": "code",
471 "execution_count": 36,
472 "metadata": {
473 "collapsed": false
474 },
475 "outputs": [
476 {
477 "data": {
478 "text/plain": [
479 "43"
480 ]
481 },
482 "execution_count": 36,
483 "metadata": {},
484 "output_type": "execute_result"
485 }
486 ],
487 "source": [
488 "count_primes(primes, -5, 47)"
489 ]
490 },
491 {
492 "cell_type": "code",
493 "execution_count": 37,
494 "metadata": {
495 "collapsed": false,
496 "scrolled": true
497 },
498 "outputs": [
499 {
500 "name": "stdout",
501 "output_type": "stream",
502 "text": [
503 "0: 47 true\n",
504 "1: 43 true\n",
505 "2: 41 true\n",
506 "3: 41 true\n",
507 "4: 43 true\n",
508 "5: 47 true\n",
509 "6: 53 true\n",
510 "7: 61 true\n",
511 "8: 71 true\n",
512 "9: 83 true\n",
513 "10: 97 true\n",
514 "11: 113 true\n",
515 "12: 131 true\n",
516 "13: 151 true\n",
517 "14: 173 true\n",
518 "15: 197 true\n",
519 "16: 223 true\n",
520 "17: 251 true\n",
521 "18: 281 true\n",
522 "19: 313 true\n",
523 "20: 347 true\n",
524 "21: 383 true\n",
525 "22: 421 true\n",
526 "23: 461 true\n",
527 "24: 503 true\n",
528 "25: 547 true\n",
529 "26: 593 true\n",
530 "27: 641 true\n",
531 "28: 691 true\n",
532 "29: 743 true\n",
533 "30: 797 true\n",
534 "31: 853 true\n",
535 "32: 911 true\n",
536 "33: 971 true\n",
537 "34: 1033 true\n",
538 "35: 1097 true\n",
539 "36: 1163 true\n",
540 "37: 1231 true\n",
541 "38: 1301 true\n",
542 "39: 1373 true\n",
543 "40: 1447 true\n",
544 "41: 1523 true\n",
545 "42: 1601 true\n",
546 "43: 1681 false\n",
547 "44: 1763 false\n"
548 ]
549 },
550 {
551 "data": {
552 "text/plain": [
553 "45"
554 ]
555 },
556 "execution_count": 37,
557 "metadata": {},
558 "output_type": "execute_result"
559 }
560 ],
561 "source": [
562 "45.times do |i|\n",
563 " puts(\"#{i}: #{i**2 - 5 * i + 47} #{primes.include? i**2 - 5 * i + 47}\")\n",
564 "end"
565 ]
566 },
567 {
568 "cell_type": "code",
569 "execution_count": 39,
570 "metadata": {
571 "collapsed": false
572 },
573 "outputs": [
574 {
575 "name": "stdout",
576 "output_type": "stream",
577 "text": [
578 "-61, 971 : -59231\n"
579 ]
580 }
581 ],
582 "source": [
583 "coeffs = (-999..999).to_a.product((0..1000).to_a)\n",
584 "am, bm = coeffs.max_by {|a, b| count_primes(primes, a, b)}\n",
585 "puts \"#{am}, #{bm} : #{am * bm}\""
586 ]
587 },
588 {
589 "cell_type": "code",
590 "execution_count": null,
591 "metadata": {
592 "collapsed": true
593 },
594 "outputs": [],
595 "source": []
596 }
597 ],
598 "metadata": {
599 "kernelspec": {
600 "display_name": "Ruby 2.4.0",
601 "language": "ruby",
602 "name": "ruby"
603 },
604 "language_info": {
605 "file_extension": ".rb",
606 "mimetype": "application/x-ruby",
607 "name": "ruby",
608 "version": "2.4.0"
609 }
610 },
611 "nbformat": 4,
612 "nbformat_minor": 0
613 }