fix infinite check bug
[rofl0r-oopoker.git] / pokereval.cpp
blob01a38857f49213ddd3e87edb1b55291c11b96d32
1 /*
3 Fast poker hand evaluation. Taken from XPokerEval by James Devlin, cleaned up and combined together
4 in this file for OOPoker by Lode Vandevenne.
6 All credits go to (in no particular order):
8 Cactus Kev (http://www.suffecool.net/poker/evaluator.html)
9 XPokerEval by James Devlin (http://www.codingthewheel.com/archives/poker-hand-evaluator-roundup)
10 2+2 poker forums (http://archives1.twoplustwo.com/showflat.php?Number=8513906) and all the people involved in the poker hand evaluator created there
12 The cleanup was done to:
13 -remove dependencies on Windows API, it's now multiplatform
14 -made path for handranks.dat file a bit more customizable
15 -made a few parameters const when possible, to make it obvious that it won't change the order of your input
16 -added a few more comments in the header about card formats (luckily the implementation was already very well documented!)
17 -put it in a namespace to avoid name clashing
18 -use slightly more portable 64-bit integer types
19 -put the relevant functionality in a single cpp file to make it easier to include in any project
21 LICENSE
23 All of the source code included in this C++ file is open, meaning it's either
24 GPL, in the public domain, etc. Please check the credits above to find the
25 origins of the code and the license that applies.
27 THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
28 WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
29 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
30 DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
31 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
32 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
33 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
34 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
35 STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
36 IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37 POSSIBILITY OF SUCH DAMAGE.
40 #include "pokereval.h"
42 #include <stdint.h>
43 #include <stdio.h>
44 #include <string.h>
45 #include <string>
46 #include <iostream>
48 static std::string HANDRANKSFILE = "handranks.dat";
52 namespace PokerEval
54 void setHandsRanksFilePath(const std::string& path)
56 HANDRANKSFILE = path;
60 ** this is a table lookup for all "flush" hands (e.g. both
61 ** flushes and straight-flushes. entries containing a zero
62 ** mean that combination is not possible with a five-card
63 ** flush hand.
65 short flushes[] = {
66 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
67 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
68 0, 0, 0, 1599, 0, 0, 0, 0, 0, 0, 0, 1598, 0, 0, 0, 1597, 0, 1596,
69 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1595, 0, 0, 0,
70 0, 0, 0, 0, 1594, 0, 0, 0, 1593, 0, 1592, 1591, 0, 0, 0, 0, 0, 0,
71 0, 0, 1590, 0, 0, 0, 1589, 0, 1588, 1587, 0, 0, 0, 0, 1586, 0,
72 1585, 1584, 0, 0, 1583, 1582, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
73 0, 0, 0, 0, 0, 0, 0, 0, 1581, 0, 0, 0, 0, 0, 0, 0, 1580, 0, 0, 0,
74 1579, 0, 1578, 1577, 0, 0, 0, 0, 0, 0, 0, 0, 1576, 0, 0, 0, 1575,
75 0, 1574, 1573, 0, 0, 0, 0, 1572, 0, 1571, 1570, 0, 0, 1569, 1568,
76 0, 1567, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1566, 0, 0, 0, 1565, 0,
77 1564, 1563, 0, 0, 0, 0, 1562, 0, 1561, 1560, 0, 0, 1559, 1558, 0,
78 1557, 0, 0, 0, 0, 0, 0, 1556, 0, 1555, 1554, 0, 0, 1553, 1552, 0,
79 1551, 0, 0, 0, 0, 1550, 1549, 0, 1548, 0, 0, 0, 6, 0, 0, 0, 0, 0,
80 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1547, 0, 0, 0,
81 0, 0, 0, 0, 1546, 0, 0, 0, 1545, 0, 1544, 1543, 0, 0, 0, 0, 0, 0,
82 0, 0, 1542, 0, 0, 0, 1541, 0, 1540, 1539, 0, 0, 0, 0, 1538, 0,
83 1537, 1536, 0, 0, 1535, 1534, 0, 1533, 0, 0, 0, 0, 0, 0, 0, 0, 0,
84 0, 1532, 0, 0, 0, 1531, 0, 1530, 1529, 0, 0, 0, 0, 1528, 0, 1527,
85 1526, 0, 0, 1525, 1524, 0, 1523, 0, 0, 0, 0, 0, 0, 1522, 0, 1521,
86 1520, 0, 0, 1519, 1518, 0, 1517, 0, 0, 0, 0, 1516, 1515, 0, 1514,
87 0, 0, 0, 1513, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1512, 0,
88 0, 0, 1511, 0, 1510, 1509, 0, 0, 0, 0, 1508, 0, 1507, 1506, 0, 0,
89 1505, 1504, 0, 1503, 0, 0, 0, 0, 0, 0, 1502, 0, 1501, 1500, 0, 0,
90 1499, 1498, 0, 1497, 0, 0, 0, 0, 1496, 1495, 0, 1494, 0, 0, 0,
91 1493, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1492, 0, 1491, 1490, 0, 0,
92 1489, 1488, 0, 1487, 0, 0, 0, 0, 1486, 1485, 0, 1484, 0, 0, 0,
93 1483, 0, 0, 0, 0, 0, 0, 0, 0, 1482, 1481, 0, 1480, 0, 0, 0, 1479,
94 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
95 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1478, 0, 0, 0, 0,
96 0, 0, 0, 1477, 0, 0, 0, 1476, 0, 1475, 1474, 0, 0, 0, 0, 0, 0, 0,
97 0, 1473, 0, 0, 0, 1472, 0, 1471, 1470, 0, 0, 0, 0, 1469, 0, 1468,
98 1467, 0, 0, 1466, 1465, 0, 1464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
99 1463, 0, 0, 0, 1462, 0, 1461, 1460, 0, 0, 0, 0, 1459, 0, 1458,
100 1457, 0, 0, 1456, 1455, 0, 1454, 0, 0, 0, 0, 0, 0, 1453, 0, 1452,
101 1451, 0, 0, 1450, 1449, 0, 1448, 0, 0, 0, 0, 1447, 1446, 0, 1445,
102 0, 0, 0, 1444, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1443, 0,
103 0, 0, 1442, 0, 1441, 1440, 0, 0, 0, 0, 1439, 0, 1438, 1437, 0, 0,
104 1436, 1435, 0, 1434, 0, 0, 0, 0, 0, 0, 1433, 0, 1432, 1431, 0, 0,
105 1430, 1429, 0, 1428, 0, 0, 0, 0, 1427, 1426, 0, 1425, 0, 0, 0,
106 1424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1423, 0, 1422, 1421, 0, 0,
107 1420, 1419, 0, 1418, 0, 0, 0, 0, 1417, 1416, 0, 1415, 0, 0, 0,
108 1414, 0, 0, 0, 0, 0, 0, 0, 0, 1413, 1412, 0, 1411, 0, 0, 0, 1410,
109 0, 0, 0, 0, 0, 0, 0, 1409, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
110 0, 0, 0, 0, 0, 0, 0, 0, 0, 1408, 0, 0, 0, 1407, 0, 1406, 1405, 0,
111 0, 0, 0, 1404, 0, 1403, 1402, 0, 0, 1401, 1400, 0, 1399, 0, 0, 0,
112 0, 0, 0, 1398, 0, 1397, 1396, 0, 0, 1395, 1394, 0, 1393, 0, 0, 0,
113 0, 1392, 1391, 0, 1390, 0, 0, 0, 1389, 0, 0, 0, 0, 0, 0, 0, 0, 0,
114 0, 1388, 0, 1387, 1386, 0, 0, 1385, 1384, 0, 1383, 0, 0, 0, 0,
115 1382, 1381, 0, 1380, 0, 0, 0, 1379, 0, 0, 0, 0, 0, 0, 0, 0, 1378,
116 1377, 0, 1376, 0, 0, 0, 1375, 0, 0, 0, 0, 0, 0, 0, 1374, 0, 0, 0,
117 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1373, 0, 1372, 1371,
118 0, 0, 1370, 1369, 0, 1368, 0, 0, 0, 0, 1367, 1366, 0, 1365, 0, 0,
119 0, 1364, 0, 0, 0, 0, 0, 0, 0, 0, 1363, 1362, 0, 1361, 0, 0, 0,
120 1360, 0, 0, 0, 0, 0, 0, 0, 1359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121 0, 0, 0, 0, 0, 1358, 1357, 0, 1356, 0, 0, 0, 1355, 0, 0, 0, 0, 0,
122 0, 0, 1354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,
123 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
124 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
125 1353, 0, 0, 0, 0, 0, 0, 0, 1352, 0, 0, 0, 1351, 0, 1350, 1349, 0,
126 0, 0, 0, 0, 0, 0, 0, 1348, 0, 0, 0, 1347, 0, 1346, 1345, 0, 0, 0,
127 0, 1344, 0, 1343, 1342, 0, 0, 1341, 1340, 0, 1339, 0, 0, 0, 0, 0,
128 0, 0, 0, 0, 0, 1338, 0, 0, 0, 1337, 0, 1336, 1335, 0, 0, 0, 0,
129 1334, 0, 1333, 1332, 0, 0, 1331, 1330, 0, 1329, 0, 0, 0, 0, 0, 0,
130 1328, 0, 1327, 1326, 0, 0, 1325, 1324, 0, 1323, 0, 0, 0, 0, 1322,
131 1321, 0, 1320, 0, 0, 0, 1319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
132 0, 0, 1318, 0, 0, 0, 1317, 0, 1316, 1315, 0, 0, 0, 0, 1314, 0,
133 1313, 1312, 0, 0, 1311, 1310, 0, 1309, 0, 0, 0, 0, 0, 0, 1308, 0,
134 1307, 1306, 0, 0, 1305, 1304, 0, 1303, 0, 0, 0, 0, 1302, 1301, 0,
135 1300, 0, 0, 0, 1299, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1298, 0, 1297,
136 1296, 0, 0, 1295, 1294, 0, 1293, 0, 0, 0, 0, 1292, 1291, 0, 1290,
137 0, 0, 0, 1289, 0, 0, 0, 0, 0, 0, 0, 0, 1288, 1287, 0, 1286, 0, 0,
138 0, 1285, 0, 0, 0, 0, 0, 0, 0, 1284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
139 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1283, 0, 0, 0, 1282, 0, 1281,
140 1280, 0, 0, 0, 0, 1279, 0, 1278, 1277, 0, 0, 1276, 1275, 0, 1274,
141 0, 0, 0, 0, 0, 0, 1273, 0, 1272, 1271, 0, 0, 1270, 1269, 0, 1268,
142 0, 0, 0, 0, 1267, 1266, 0, 1265, 0, 0, 0, 1264, 0, 0, 0, 0, 0, 0,
143 0, 0, 0, 0, 1263, 0, 1262, 1261, 0, 0, 1260, 1259, 0, 1258, 0, 0,
144 0, 0, 1257, 1256, 0, 1255, 0, 0, 0, 1254, 0, 0, 0, 0, 0, 0, 0, 0,
145 1253, 1252, 0, 1251, 0, 0, 0, 1250, 0, 0, 0, 0, 0, 0, 0, 1249, 0,
146 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1248, 0, 1247,
147 1246, 0, 0, 1245, 1244, 0, 1243, 0, 0, 0, 0, 1242, 1241, 0, 1240,
148 0, 0, 0, 1239, 0, 0, 0, 0, 0, 0, 0, 0, 1238, 1237, 0, 1236, 0, 0,
149 0, 1235, 0, 0, 0, 0, 0, 0, 0, 1234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
150 0, 0, 0, 0, 0, 0, 1233, 1232, 0, 1231, 0, 0, 0, 1230, 0, 0, 0, 0,
151 0, 0, 0, 1229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1228,
152 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
153 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1227, 0, 0, 0,
154 1226, 0, 1225, 1224, 0, 0, 0, 0, 1223, 0, 1222, 1221, 0, 0, 1220,
155 1219, 0, 1218, 0, 0, 0, 0, 0, 0, 1217, 0, 1216, 1215, 0, 0, 1214,
156 1213, 0, 1212, 0, 0, 0, 0, 1211, 1210, 0, 1209, 0, 0, 0, 1208, 0,
157 0, 0, 0, 0, 0, 0, 0, 0, 0, 1207, 0, 1206, 1205, 0, 0, 1204, 1203,
158 0, 1202, 0, 0, 0, 0, 1201, 1200, 0, 1199, 0, 0, 0, 1198, 0, 0, 0,
159 0, 0, 0, 0, 0, 1197, 1196, 0, 1195, 0, 0, 0, 1194, 0, 0, 0, 0, 0,
160 0, 0, 1193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
161 1192, 0, 1191, 1190, 0, 0, 1189, 1188, 0, 1187, 0, 0, 0, 0, 1186,
162 1185, 0, 1184, 0, 0, 0, 1183, 0, 0, 0, 0, 0, 0, 0, 0, 1182, 1181,
163 0, 1180, 0, 0, 0, 1179, 0, 0, 0, 0, 0, 0, 0, 1178, 0, 0, 0, 0, 0,
164 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1177, 1176, 0, 1175, 0, 0, 0,
165 1174, 0, 0, 0, 0, 0, 0, 0, 1173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
166 0, 0, 0, 0, 1172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
167 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1171, 0,
168 1170, 1169, 0, 0, 1168, 1167, 0, 1166, 0, 0, 0, 0, 1165, 1164, 0,
169 1163, 0, 0, 0, 1162, 0, 0, 0, 0, 0, 0, 0, 0, 1161, 1160, 0, 1159,
170 0, 0, 0, 1158, 0, 0, 0, 0, 0, 0, 0, 1157, 0, 0, 0, 0, 0, 0, 0, 0,
171 0, 0, 0, 0, 0, 0, 0, 0, 1156, 1155, 0, 1154, 0, 0, 0, 1153, 0, 0,
172 0, 0, 0, 0, 0, 1152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
173 1151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
174 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1150, 1149, 0, 1148, 0, 0, 0,
175 1147, 0, 0, 0, 0, 0, 0, 0, 1146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
176 0, 0, 0, 0, 1145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
177 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,
178 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
179 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
180 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
181 0, 0, 0, 0, 0, 0, 1144, 0, 0, 0, 0, 0, 0, 0, 1143, 0, 0, 0, 1142,
182 0, 1141, 1140, 0, 0, 0, 0, 0, 0, 0, 0, 1139, 0, 0, 0, 1138, 0,
183 1137, 1136, 0, 0, 0, 0, 1135, 0, 1134, 1133, 0, 0, 1132, 1131, 0,
184 1130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1129, 0, 0, 0, 1128, 0, 1127,
185 1126, 0, 0, 0, 0, 1125, 0, 1124, 1123, 0, 0, 1122, 1121, 0, 1120,
186 0, 0, 0, 0, 0, 0, 1119, 0, 1118, 1117, 0, 0, 1116, 1115, 0, 1114,
187 0, 0, 0, 0, 1113, 1112, 0, 1111, 0, 0, 0, 1110, 0, 0, 0, 0, 0, 0,
188 0, 0, 0, 0, 0, 0, 0, 0, 1109, 0, 0, 0, 1108, 0, 1107, 1106, 0, 0,
189 0, 0, 1105, 0, 1104, 1103, 0, 0, 1102, 1101, 0, 1100, 0, 0, 0, 0,
190 0, 0, 1099, 0, 1098, 1097, 0, 0, 1096, 1095, 0, 1094, 0, 0, 0, 0,
191 1093, 1092, 0, 1091, 0, 0, 0, 1090, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
192 1089, 0, 1088, 1087, 0, 0, 1086, 1085, 0, 1084, 0, 0, 0, 0, 1083,
193 1082, 0, 1081, 0, 0, 0, 1080, 0, 0, 0, 0, 0, 0, 0, 0, 1079, 1078,
194 0, 1077, 0, 0, 0, 1076, 0, 0, 0, 0, 0, 0, 0, 1075, 0, 0, 0, 0, 0,
195 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1074, 0, 0, 0,
196 1073, 0, 1072, 1071, 0, 0, 0, 0, 1070, 0, 1069, 1068, 0, 0, 1067,
197 1066, 0, 1065, 0, 0, 0, 0, 0, 0, 1064, 0, 1063, 1062, 0, 0, 1061,
198 1060, 0, 1059, 0, 0, 0, 0, 1058, 1057, 0, 1056, 0, 0, 0, 1055, 0,
199 0, 0, 0, 0, 0, 0, 0, 0, 0, 1054, 0, 1053, 1052, 0, 0, 1051, 1050,
200 0, 1049, 0, 0, 0, 0, 1048, 1047, 0, 1046, 0, 0, 0, 1045, 0, 0, 0,
201 0, 0, 0, 0, 0, 1044, 1043, 0, 1042, 0, 0, 0, 1041, 0, 0, 0, 0, 0,
202 0, 0, 1040, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
203 1039, 0, 1038, 1037, 0, 0, 1036, 1035, 0, 1034, 0, 0, 0, 0, 1033,
204 1032, 0, 1031, 0, 0, 0, 1030, 0, 0, 0, 0, 0, 0, 0, 0, 1029, 1028,
205 0, 1027, 0, 0, 0, 1026, 0, 0, 0, 0, 0, 0, 0, 1025, 0, 0, 0, 0, 0,
206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1024, 1023, 0, 1022, 0, 0, 0,
207 1021, 0, 0, 0, 0, 0, 0, 0, 1020, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
208 0, 0, 0, 0, 1019, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
209 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
210 1018, 0, 0, 0, 1017, 0, 1016, 1015, 0, 0, 0, 0, 1014, 0, 1013,
211 1012, 0, 0, 1011, 1010, 0, 1009, 0, 0, 0, 0, 0, 0, 1008, 0, 1007,
212 1006, 0, 0, 1005, 1004, 0, 1003, 0, 0, 0, 0, 1002, 1001, 0, 1000,
213 0, 0, 0, 999, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 998, 0, 997, 996, 0,
214 0, 995, 994, 0, 993, 0, 0, 0, 0, 992, 991, 0, 990, 0, 0, 0, 989,
215 0, 0, 0, 0, 0, 0, 0, 0, 988, 987, 0, 986, 0, 0, 0, 985, 0, 0, 0,
216 0, 0, 0, 0, 984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
217 0, 0, 983, 0, 982, 981, 0, 0, 980, 979, 0, 978, 0, 0, 0, 0, 977,
218 976, 0, 975, 0, 0, 0, 974, 0, 0, 0, 0, 0, 0, 0, 0, 973, 972, 0,
219 971, 0, 0, 0, 970, 0, 0, 0, 0, 0, 0, 0, 969, 0, 0, 0, 0, 0, 0, 0,
220 0, 0, 0, 0, 0, 0, 0, 0, 0, 968, 967, 0, 966, 0, 0, 0, 965, 0, 0,
221 0, 0, 0, 0, 0, 964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
222 963, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
223 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 962, 0, 961, 960, 0, 0,
224 959, 958, 0, 957, 0, 0, 0, 0, 956, 955, 0, 954, 0, 0, 0, 953, 0,
225 0, 0, 0, 0, 0, 0, 0, 952, 951, 0, 950, 0, 0, 0, 949, 0, 0, 0, 0,
226 0, 0, 0, 948, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
227 947, 946, 0, 945, 0, 0, 0, 944, 0, 0, 0, 0, 0, 0, 0, 943, 0, 0,
228 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 942, 0, 0, 0, 0, 0, 0, 0,
229 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
230 0, 0, 0, 941, 940, 0, 939, 0, 0, 0, 938, 0, 0, 0, 0, 0, 0, 0,
231 937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 936, 0, 0, 0,
232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
233 0, 0, 0, 0, 0, 0, 935, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
234 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
235 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
236 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 934, 0, 0, 0, 933, 0, 932,
237 931, 0, 0, 0, 0, 930, 0, 929, 928, 0, 0, 927, 926, 0, 925, 0, 0,
238 0, 0, 0, 0, 924, 0, 923, 922, 0, 0, 921, 920, 0, 919, 0, 0, 0, 0,
239 918, 917, 0, 916, 0, 0, 0, 915, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
240 914, 0, 913, 912, 0, 0, 911, 910, 0, 909, 0, 0, 0, 0, 908, 907,
241 0, 906, 0, 0, 0, 905, 0, 0, 0, 0, 0, 0, 0, 0, 904, 903, 0, 902,
242 0, 0, 0, 901, 0, 0, 0, 0, 0, 0, 0, 900, 0, 0, 0, 0, 0, 0, 0, 0,
243 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 899, 0, 898, 897, 0, 0, 896, 895,
244 0, 894, 0, 0, 0, 0, 893, 892, 0, 891, 0, 0, 0, 890, 0, 0, 0, 0,
245 0, 0, 0, 0, 889, 888, 0, 887, 0, 0, 0, 886, 0, 0, 0, 0, 0, 0, 0,
246 885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 884, 883, 0,
247 882, 0, 0, 0, 881, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0,
248 0, 0, 0, 0, 0, 0, 0, 0, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
249 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
250 878, 0, 877, 876, 0, 0, 875, 874, 0, 873, 0, 0, 0, 0, 872, 871,
251 0, 870, 0, 0, 0, 869, 0, 0, 0, 0, 0, 0, 0, 0, 868, 867, 0, 866,
252 0, 0, 0, 865, 0, 0, 0, 0, 0, 0, 0, 864, 0, 0, 0, 0, 0, 0, 0, 0,
253 0, 0, 0, 0, 0, 0, 0, 0, 863, 862, 0, 861, 0, 0, 0, 860, 0, 0, 0,
254 0, 0, 0, 0, 859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
255 858, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
256 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, 856, 0, 855, 0, 0, 0,
257 854, 0, 0, 0, 0, 0, 0, 0, 853, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
258 0, 0, 0, 0, 852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
259 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 851, 0, 0, 0, 0, 0,
260 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
261 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
262 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 850, 0, 849,
263 848, 0, 0, 847, 846, 0, 845, 0, 0, 0, 0, 844, 843, 0, 842, 0, 0,
264 0, 841, 0, 0, 0, 0, 0, 0, 0, 0, 840, 839, 0, 838, 0, 0, 0, 837,
265 0, 0, 0, 0, 0, 0, 0, 836, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
266 0, 0, 0, 835, 834, 0, 833, 0, 0, 0, 832, 0, 0, 0, 0, 0, 0, 0,
267 831, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 830, 0, 0, 0,
268 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
269 0, 0, 0, 0, 0, 0, 0, 829, 828, 0, 827, 0, 0, 0, 826, 0, 0, 0, 0,
270 0, 0, 0, 825, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 824,
271 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
272 0, 0, 0, 0, 0, 0, 0, 0, 0, 823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
273 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
274 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
275 0, 0, 0, 0, 0, 0, 0, 0, 0, 822, 821, 0, 820, 0, 0, 0, 819, 0, 0,
276 0, 0, 0, 0, 0, 818, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
277 817, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
278 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 816, 0, 0, 0, 0, 0, 0, 0, 0, 0,
279 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
280 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
281 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
282 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
283 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
284 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
285 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
286 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
287 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
288 10, 0, 0, 0, 0, 0, 0, 0, 815, 0, 0, 0, 814, 0, 813, 812, 0, 0, 0,
289 0, 0, 0, 0, 0, 811, 0, 0, 0, 810, 0, 809, 808, 0, 0, 0, 0, 807,
290 0, 806, 805, 0, 0, 804, 803, 0, 802, 0, 0, 0, 0, 0, 0, 0, 0, 0,
291 0, 801, 0, 0, 0, 800, 0, 799, 798, 0, 0, 0, 0, 797, 0, 796, 795,
292 0, 0, 794, 793, 0, 792, 0, 0, 0, 0, 0, 0, 791, 0, 790, 789, 0, 0,
293 788, 787, 0, 786, 0, 0, 0, 0, 785, 784, 0, 783, 0, 0, 0, 782, 0,
294 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 781, 0, 0, 0, 780, 0, 779,
295 778, 0, 0, 0, 0, 777, 0, 776, 775, 0, 0, 774, 773, 0, 772, 0, 0,
296 0, 0, 0, 0, 771, 0, 770, 769, 0, 0, 768, 767, 0, 766, 0, 0, 0, 0,
297 765, 764, 0, 763, 0, 0, 0, 762, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
298 761, 0, 760, 759, 0, 0, 758, 757, 0, 756, 0, 0, 0, 0, 755, 754,
299 0, 753, 0, 0, 0, 752, 0, 0, 0, 0, 0, 0, 0, 0, 751, 750, 0, 749,
300 0, 0, 0, 748, 0, 0, 0, 0, 0, 0, 0, 747, 0, 0, 0, 0, 0, 0, 0, 0,
301 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 746, 0, 0, 0, 745, 0,
302 744, 743, 0, 0, 0, 0, 742, 0, 741, 740, 0, 0, 739, 738, 0, 737,
303 0, 0, 0, 0, 0, 0, 736, 0, 735, 734, 0, 0, 733, 732, 0, 731, 0, 0,
304 0, 0, 730, 729, 0, 728, 0, 0, 0, 727, 0, 0, 0, 0, 0, 0, 0, 0, 0,
305 0, 726, 0, 725, 724, 0, 0, 723, 722, 0, 721, 0, 0, 0, 0, 720,
306 719, 0, 718, 0, 0, 0, 717, 0, 0, 0, 0, 0, 0, 0, 0, 716, 715, 0,
307 714, 0, 0, 0, 713, 0, 0, 0, 0, 0, 0, 0, 712, 0, 0, 0, 0, 0, 0, 0,
308 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 711, 0, 710, 709, 0, 0, 708,
309 707, 0, 706, 0, 0, 0, 0, 705, 704, 0, 703, 0, 0, 0, 702, 0, 0, 0,
310 0, 0, 0, 0, 0, 701, 700, 0, 699, 0, 0, 0, 698, 0, 0, 0, 0, 0, 0,
311 0, 697, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 696, 695,
312 0, 694, 0, 0, 0, 693, 0, 0, 0, 0, 0, 0, 0, 692, 0, 0, 0, 0, 0, 0,
313 0, 0, 0, 0, 0, 0, 0, 0, 0, 691, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
314 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
315 0, 0, 0, 0, 0, 690, 0, 0, 0, 689, 0, 688, 687, 0, 0, 0, 0, 686,
316 0, 685, 684, 0, 0, 683, 682, 0, 681, 0, 0, 0, 0, 0, 0, 680, 0,
317 679, 678, 0, 0, 677, 676, 0, 675, 0, 0, 0, 0, 674, 673, 0, 672,
318 0, 0, 0, 671, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 670, 0, 669, 668, 0,
319 0, 667, 666, 0, 665, 0, 0, 0, 0, 664, 663, 0, 662, 0, 0, 0, 661,
320 0, 0, 0, 0, 0, 0, 0, 0, 660, 659, 0, 658, 0, 0, 0, 657, 0, 0, 0,
321 0, 0, 0, 0, 656, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
322 0, 0, 655, 0, 654, 653, 0, 0, 652, 651, 0, 650, 0, 0, 0, 0, 649,
323 648, 0, 647, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 645, 644, 0,
324 643, 0, 0, 0, 642, 0, 0, 0, 0, 0, 0, 0, 641, 0, 0, 0, 0, 0, 0, 0,
325 0, 0, 0, 0, 0, 0, 0, 0, 0, 640, 639, 0, 638, 0, 0, 0, 637, 0, 0,
326 0, 0, 0, 0, 0, 636, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
327 635, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
328 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 634, 0, 633, 632, 0, 0,
329 631, 630, 0, 629, 0, 0, 0, 0, 628, 627, 0, 626, 0, 0, 0, 625, 0,
330 0, 0, 0, 0, 0, 0, 0, 624, 623, 0, 622, 0, 0, 0, 621, 0, 0, 0, 0,
331 0, 0, 0, 620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
332 619, 618, 0, 617, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 615, 0, 0,
333 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 614, 0, 0, 0, 0, 0, 0, 0,
334 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
335 0, 0, 0, 613, 612, 0, 611, 0, 0, 0, 610, 0, 0, 0, 0, 0, 0, 0,
336 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 608, 0, 0, 0,
337 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
338 0, 0, 0, 0, 0, 0, 607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
339 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
340 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
341 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, 0, 0, 0, 605, 0, 604,
342 603, 0, 0, 0, 0, 602, 0, 601, 600, 0, 0, 599, 598, 0, 597, 0, 0,
343 0, 0, 0, 0, 596, 0, 595, 594, 0, 0, 593, 592, 0, 591, 0, 0, 0, 0,
344 590, 589, 0, 588, 0, 0, 0, 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
345 586, 0, 585, 584, 0, 0, 583, 582, 0, 581, 0, 0, 0, 0, 580, 579,
346 0, 578, 0, 0, 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, 576, 575, 0, 574,
347 0, 0, 0, 573, 0, 0, 0, 0, 0, 0, 0, 572, 0, 0, 0, 0, 0, 0, 0, 0,
348 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 571, 0, 570, 569, 0, 0, 568, 567,
349 0, 566, 0, 0, 0, 0, 565, 564, 0, 563, 0, 0, 0, 562, 0, 0, 0, 0,
350 0, 0, 0, 0, 561, 560, 0, 559, 0, 0, 0, 558, 0, 0, 0, 0, 0, 0, 0,
351 557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 556, 555, 0,
352 554, 0, 0, 0, 553, 0, 0, 0, 0, 0, 0, 0, 552, 0, 0, 0, 0, 0, 0, 0,
353 0, 0, 0, 0, 0, 0, 0, 0, 551, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
354 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
355 550, 0, 549, 548, 0, 0, 547, 546, 0, 545, 0, 0, 0, 0, 544, 543,
356 0, 542, 0, 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, 0, 540, 539, 0, 538,
357 0, 0, 0, 537, 0, 0, 0, 0, 0, 0, 0, 536, 0, 0, 0, 0, 0, 0, 0, 0,
358 0, 0, 0, 0, 0, 0, 0, 0, 535, 534, 0, 533, 0, 0, 0, 532, 0, 0, 0,
359 0, 0, 0, 0, 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
360 530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
361 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 529, 528, 0, 527, 0, 0, 0,
362 526, 0, 0, 0, 0, 0, 0, 0, 525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
363 0, 0, 0, 0, 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
364 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 523, 0, 0, 0, 0, 0,
365 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
366 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
367 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 522, 0, 521,
368 520, 0, 0, 519, 518, 0, 517, 0, 0, 0, 0, 516, 515, 0, 514, 0, 0,
369 0, 513, 0, 0, 0, 0, 0, 0, 0, 0, 512, 511, 0, 510, 0, 0, 0, 509,
370 0, 0, 0, 0, 0, 0, 0, 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
371 0, 0, 0, 507, 506, 0, 505, 0, 0, 0, 504, 0, 0, 0, 0, 0, 0, 0,
372 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 502, 0, 0, 0,
373 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
374 0, 0, 0, 0, 0, 0, 0, 501, 500, 0, 499, 0, 0, 0, 498, 0, 0, 0, 0,
375 0, 0, 0, 497, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 496,
376 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
377 0, 0, 0, 0, 0, 0, 0, 0, 0, 495, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
379 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
380 0, 0, 0, 0, 0, 0, 0, 0, 0, 494, 493, 0, 492, 0, 0, 0, 491, 0, 0,
381 0, 0, 0, 0, 0, 490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
382 489, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
383 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 488, 0, 0, 0, 0, 0, 0, 0, 0, 0,
384 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
385 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
386 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
387 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
388 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
389 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
390 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
392 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 486, 0, 0, 0, 485, 0,
393 484, 483, 0, 0, 0, 0, 482, 0, 481, 480, 0, 0, 479, 478, 0, 477,
394 0, 0, 0, 0, 0, 0, 476, 0, 475, 474, 0, 0, 473, 472, 0, 471, 0, 0,
395 0, 0, 470, 469, 0, 468, 0, 0, 0, 467, 0, 0, 0, 0, 0, 0, 0, 0, 0,
396 0, 466, 0, 465, 464, 0, 0, 463, 462, 0, 461, 0, 0, 0, 0, 460,
397 459, 0, 458, 0, 0, 0, 457, 0, 0, 0, 0, 0, 0, 0, 0, 456, 455, 0,
398 454, 0, 0, 0, 453, 0, 0, 0, 0, 0, 0, 0, 452, 0, 0, 0, 0, 0, 0, 0,
399 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 451, 0, 450, 449, 0, 0, 448,
400 447, 0, 446, 0, 0, 0, 0, 445, 444, 0, 443, 0, 0, 0, 442, 0, 0, 0,
401 0, 0, 0, 0, 0, 441, 440, 0, 439, 0, 0, 0, 438, 0, 0, 0, 0, 0, 0,
402 0, 437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 436, 435,
403 0, 434, 0, 0, 0, 433, 0, 0, 0, 0, 0, 0, 0, 432, 0, 0, 0, 0, 0, 0,
404 0, 0, 0, 0, 0, 0, 0, 0, 0, 431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
406 0, 430, 0, 429, 428, 0, 0, 427, 426, 0, 425, 0, 0, 0, 0, 424,
407 423, 0, 422, 0, 0, 0, 421, 0, 0, 0, 0, 0, 0, 0, 0, 420, 419, 0,
408 418, 0, 0, 0, 417, 0, 0, 0, 0, 0, 0, 0, 416, 0, 0, 0, 0, 0, 0, 0,
409 0, 0, 0, 0, 0, 0, 0, 0, 0, 415, 414, 0, 413, 0, 0, 0, 412, 0, 0,
410 0, 0, 0, 0, 0, 411, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
411 410, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 409, 408, 0, 407, 0, 0, 0,
413 406, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
414 0, 0, 0, 0, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
415 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 403, 0, 0, 0, 0, 0,
416 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
417 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
418 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 402, 0, 401,
419 400, 0, 0, 399, 398, 0, 397, 0, 0, 0, 0, 396, 395, 0, 394, 0, 0,
420 0, 393, 0, 0, 0, 0, 0, 0, 0, 0, 392, 391, 0, 390, 0, 0, 0, 389,
421 0, 0, 0, 0, 0, 0, 0, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
422 0, 0, 0, 387, 386, 0, 385, 0, 0, 0, 384, 0, 0, 0, 0, 0, 0, 0,
423 383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 382, 0, 0, 0,
424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
425 0, 0, 0, 0, 0, 0, 0, 381, 380, 0, 379, 0, 0, 0, 378, 0, 0, 0, 0,
426 0, 0, 0, 377, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 376,
427 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
428 0, 0, 0, 0, 0, 0, 0, 0, 0, 375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
429 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
430 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
431 0, 0, 0, 0, 0, 0, 0, 0, 0, 374, 373, 0, 372, 0, 0, 0, 371, 0, 0,
432 0, 0, 0, 0, 0, 370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
433 369, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
434 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, 0, 0, 0, 0, 0, 0, 0, 0,
435 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
436 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
437 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
438 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
439 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
440 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
441 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
442 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
443 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 366, 0, 365, 364, 0, 0, 363, 362,
444 0, 361, 0, 0, 0, 0, 360, 359, 0, 358, 0, 0, 0, 357, 0, 0, 0, 0,
445 0, 0, 0, 0, 356, 355, 0, 354, 0, 0, 0, 353, 0, 0, 0, 0, 0, 0, 0,
446 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 351, 350, 0,
447 349, 0, 0, 0, 348, 0, 0, 0, 0, 0, 0, 0, 347, 0, 0, 0, 0, 0, 0, 0,
448 0, 0, 0, 0, 0, 0, 0, 0, 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
449 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 345,
450 344, 0, 343, 0, 0, 0, 342, 0, 0, 0, 0, 0, 0, 0, 341, 0, 0, 0, 0,
451 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 340, 0, 0, 0, 0, 0, 0, 0, 0, 0,
452 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
453 339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
454 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
455 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
456 338, 337, 0, 336, 0, 0, 0, 335, 0, 0, 0, 0, 0, 0, 0, 334, 0, 0,
457 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 333, 0, 0, 0, 0, 0, 0, 0,
458 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
459 0, 0, 332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
460 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
461 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
462 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
463 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
464 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
465 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
466 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
467 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
468 330, 329, 0, 328, 0, 0, 0, 327, 0, 0, 0, 0, 0, 0, 0, 326, 0, 0,
469 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 325, 0, 0, 0, 0, 0, 0, 0,
470 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
471 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
472 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
473 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
474 0, 323, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
475 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
476 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
477 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
478 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
479 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
485 ** this is a table lookup for all non-flush hands consisting
486 ** of five unique ranks (i.e. either Straights or High Card
487 ** hands). it's similar to the above "flushes" array.
489 short unique5[] = {
490 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
491 0, 0, 0, 0, 0, 0, 0, 0, 0, 1608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
492 0, 0, 0, 0, 7462, 0, 0, 0, 0, 0, 0, 0, 7461, 0, 0, 0, 7460, 0,
493 7459, 1607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7458,
494 0, 0, 0, 0, 0, 0, 0, 7457, 0, 0, 0, 7456, 0, 7455, 7454, 0, 0, 0,
495 0, 0, 0, 0, 0, 7453, 0, 0, 0, 7452, 0, 7451, 7450, 0, 0, 0, 0,
496 7449, 0, 7448, 7447, 0, 0, 7446, 7445, 0, 1606, 0, 0, 0, 0, 0, 0,
497 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7444, 0, 0, 0, 0, 0, 0, 0,
498 7443, 0, 0, 0, 7442, 0, 7441, 7440, 0, 0, 0, 0, 0, 0, 0, 0, 7439,
499 0, 0, 0, 7438, 0, 7437, 7436, 0, 0, 0, 0, 7435, 0, 7434, 7433, 0,
500 0, 7432, 7431, 0, 7430, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7429, 0, 0,
501 0, 7428, 0, 7427, 7426, 0, 0, 0, 0, 7425, 0, 7424, 7423, 0, 0,
502 7422, 7421, 0, 7420, 0, 0, 0, 0, 0, 0, 7419, 0, 7418, 7417, 0, 0,
503 7416, 7415, 0, 7414, 0, 0, 0, 0, 7413, 7412, 0, 7411, 0, 0, 0,
504 1605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
505 0, 0, 7410, 0, 0, 0, 0, 0, 0, 0, 7409, 0, 0, 0, 7408, 0, 7407,
506 7406, 0, 0, 0, 0, 0, 0, 0, 0, 7405, 0, 0, 0, 7404, 0, 7403, 7402,
507 0, 0, 0, 0, 7401, 0, 7400, 7399, 0, 0, 7398, 7397, 0, 7396, 0, 0,
508 0, 0, 0, 0, 0, 0, 0, 0, 7395, 0, 0, 0, 7394, 0, 7393, 7392, 0, 0,
509 0, 0, 7391, 0, 7390, 7389, 0, 0, 7388, 7387, 0, 7386, 0, 0, 0, 0,
510 0, 0, 7385, 0, 7384, 7383, 0, 0, 7382, 7381, 0, 7380, 0, 0, 0, 0,
511 7379, 7378, 0, 7377, 0, 0, 0, 7376, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
512 0, 0, 0, 0, 7375, 0, 0, 0, 7374, 0, 7373, 7372, 0, 0, 0, 0, 7371,
513 0, 7370, 7369, 0, 0, 7368, 7367, 0, 7366, 0, 0, 0, 0, 0, 0, 7365,
514 0, 7364, 7363, 0, 0, 7362, 7361, 0, 7360, 0, 0, 0, 0, 7359, 7358,
515 0, 7357, 0, 0, 0, 7356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7355, 0,
516 7354, 7353, 0, 0, 7352, 7351, 0, 7350, 0, 0, 0, 0, 7349, 7348, 0,
517 7347, 0, 0, 0, 7346, 0, 0, 0, 0, 0, 0, 0, 0, 7345, 7344, 0, 7343,
518 0, 0, 0, 7342, 0, 0, 0, 0, 0, 0, 0, 1604, 0, 0, 0, 0, 0, 0, 0, 0,
519 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
520 7341, 0, 0, 0, 0, 0, 0, 0, 7340, 0, 0, 0, 7339, 0, 7338, 7337, 0,
521 0, 0, 0, 0, 0, 0, 0, 7336, 0, 0, 0, 7335, 0, 7334, 7333, 0, 0, 0,
522 0, 7332, 0, 7331, 7330, 0, 0, 7329, 7328, 0, 7327, 0, 0, 0, 0, 0,
523 0, 0, 0, 0, 0, 7326, 0, 0, 0, 7325, 0, 7324, 7323, 0, 0, 0, 0,
524 7322, 0, 7321, 7320, 0, 0, 7319, 7318, 0, 7317, 0, 0, 0, 0, 0, 0,
525 7316, 0, 7315, 7314, 0, 0, 7313, 7312, 0, 7311, 0, 0, 0, 0, 7310,
526 7309, 0, 7308, 0, 0, 0, 7307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
527 0, 0, 7306, 0, 0, 0, 7305, 0, 7304, 7303, 0, 0, 0, 0, 7302, 0,
528 7301, 7300, 0, 0, 7299, 7298, 0, 7297, 0, 0, 0, 0, 0, 0, 7296, 0,
529 7295, 7294, 0, 0, 7293, 7292, 0, 7291, 0, 0, 0, 0, 7290, 7289, 0,
530 7288, 0, 0, 0, 7287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7286, 0, 7285,
531 7284, 0, 0, 7283, 7282, 0, 7281, 0, 0, 0, 0, 7280, 7279, 0, 7278,
532 0, 0, 0, 7277, 0, 0, 0, 0, 0, 0, 0, 0, 7276, 7275, 0, 7274, 0, 0,
533 0, 7273, 0, 0, 0, 0, 0, 0, 0, 7272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
534 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7271, 0, 0, 0, 7270, 0, 7269,
535 7268, 0, 0, 0, 0, 7267, 0, 7266, 7265, 0, 0, 7264, 7263, 0, 7262,
536 0, 0, 0, 0, 0, 0, 7261, 0, 7260, 7259, 0, 0, 7258, 7257, 0, 7256,
537 0, 0, 0, 0, 7255, 7254, 0, 7253, 0, 0, 0, 7252, 0, 0, 0, 0, 0, 0,
538 0, 0, 0, 0, 7251, 0, 7250, 7249, 0, 0, 7248, 7247, 0, 7246, 0, 0,
539 0, 0, 7245, 7244, 0, 7243, 0, 0, 0, 7242, 0, 0, 0, 0, 0, 0, 0, 0,
540 7241, 7240, 0, 7239, 0, 0, 0, 7238, 0, 0, 0, 0, 0, 0, 0, 7237, 0,
541 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7236, 0, 7235,
542 7234, 0, 0, 7233, 7232, 0, 7231, 0, 0, 0, 0, 7230, 7229, 0, 7228,
543 0, 0, 0, 7227, 0, 0, 0, 0, 0, 0, 0, 0, 7226, 7225, 0, 7224, 0, 0,
544 0, 7223, 0, 0, 0, 0, 0, 0, 0, 7222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
545 0, 0, 0, 0, 0, 0, 7221, 7220, 0, 7219, 0, 0, 0, 7218, 0, 0, 0, 0,
546 0, 0, 0, 7217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1603,
547 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
548 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
549 0, 0, 7216, 0, 0, 0, 0, 0, 0, 0, 7215, 0, 0, 0, 7214, 0, 7213,
550 7212, 0, 0, 0, 0, 0, 0, 0, 0, 7211, 0, 0, 0, 7210, 0, 7209, 7208,
551 0, 0, 0, 0, 7207, 0, 7206, 7205, 0, 0, 7204, 7203, 0, 7202, 0, 0,
552 0, 0, 0, 0, 0, 0, 0, 0, 7201, 0, 0, 0, 7200, 0, 7199, 7198, 0, 0,
553 0, 0, 7197, 0, 7196, 7195, 0, 0, 7194, 7193, 0, 7192, 0, 0, 0, 0,
554 0, 0, 7191, 0, 7190, 7189, 0, 0, 7188, 7187, 0, 7186, 0, 0, 0, 0,
555 7185, 7184, 0, 7183, 0, 0, 0, 7182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
556 0, 0, 0, 0, 7181, 0, 0, 0, 7180, 0, 7179, 7178, 0, 0, 0, 0, 7177,
557 0, 7176, 7175, 0, 0, 7174, 7173, 0, 7172, 0, 0, 0, 0, 0, 0, 7171,
558 0, 7170, 7169, 0, 0, 7168, 7167, 0, 7166, 0, 0, 0, 0, 7165, 7164,
559 0, 7163, 0, 0, 0, 7162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7161, 0,
560 7160, 7159, 0, 0, 7158, 7157, 0, 7156, 0, 0, 0, 0, 7155, 7154, 0,
561 7153, 0, 0, 0, 7152, 0, 0, 0, 0, 0, 0, 0, 0, 7151, 7150, 0, 7149,
562 0, 0, 0, 7148, 0, 0, 0, 0, 0, 0, 0, 7147, 0, 0, 0, 0, 0, 0, 0, 0,
563 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7146, 0, 0, 0, 7145, 0,
564 7144, 7143, 0, 0, 0, 0, 7142, 0, 7141, 7140, 0, 0, 7139, 7138, 0,
565 7137, 0, 0, 0, 0, 0, 0, 7136, 0, 7135, 7134, 0, 0, 7133, 7132, 0,
566 7131, 0, 0, 0, 0, 7130, 7129, 0, 7128, 0, 0, 0, 7127, 0, 0, 0, 0,
567 0, 0, 0, 0, 0, 0, 7126, 0, 7125, 7124, 0, 0, 7123, 7122, 0, 7121,
568 0, 0, 0, 0, 7120, 7119, 0, 7118, 0, 0, 0, 7117, 0, 0, 0, 0, 0, 0,
569 0, 0, 7116, 7115, 0, 7114, 0, 0, 0, 7113, 0, 0, 0, 0, 0, 0, 0,
570 7112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7111,
571 0, 7110, 7109, 0, 0, 7108, 7107, 0, 7106, 0, 0, 0, 0, 7105, 7104,
572 0, 7103, 0, 0, 0, 7102, 0, 0, 0, 0, 0, 0, 0, 0, 7101, 7100, 0,
573 7099, 0, 0, 0, 7098, 0, 0, 0, 0, 0, 0, 0, 7097, 0, 0, 0, 0, 0, 0,
574 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7096, 7095, 0, 7094, 0, 0, 0, 7093,
575 0, 0, 0, 0, 0, 0, 0, 7092, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
576 0, 0, 7091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
577 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7090,
578 0, 0, 0, 7089, 0, 7088, 7087, 0, 0, 0, 0, 7086, 0, 7085, 7084, 0,
579 0, 7083, 7082, 0, 7081, 0, 0, 0, 0, 0, 0, 7080, 0, 7079, 7078, 0,
580 0, 7077, 7076, 0, 7075, 0, 0, 0, 0, 7074, 7073, 0, 7072, 0, 0, 0,
581 7071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7070, 0, 7069, 7068, 0, 0,
582 7067, 7066, 0, 7065, 0, 0, 0, 0, 7064, 7063, 0, 7062, 0, 0, 0,
583 7061, 0, 0, 0, 0, 0, 0, 0, 0, 7060, 7059, 0, 7058, 0, 0, 0, 7057,
584 0, 0, 0, 0, 0, 0, 0, 7056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
585 0, 0, 0, 0, 0, 7055, 0, 7054, 7053, 0, 0, 7052, 7051, 0, 7050, 0,
586 0, 0, 0, 7049, 7048, 0, 7047, 0, 0, 0, 7046, 0, 0, 0, 0, 0, 0, 0,
587 0, 7045, 7044, 0, 7043, 0, 0, 0, 7042, 0, 0, 0, 0, 0, 0, 0, 7041,
588 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7040, 7039, 0,
589 7038, 0, 0, 0, 7037, 0, 0, 0, 0, 0, 0, 0, 7036, 0, 0, 0, 0, 0, 0,
590 0, 0, 0, 0, 0, 0, 0, 0, 0, 7035, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
591 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
592 0, 7034, 0, 7033, 7032, 0, 0, 7031, 7030, 0, 7029, 0, 0, 0, 0,
593 7028, 7027, 0, 7026, 0, 0, 0, 7025, 0, 0, 0, 0, 0, 0, 0, 0, 7024,
594 7023, 0, 7022, 0, 0, 0, 7021, 0, 0, 0, 0, 0, 0, 0, 7020, 0, 0, 0,
595 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7019, 7018, 0, 7017, 0, 0,
596 0, 7016, 0, 0, 0, 0, 0, 0, 0, 7015, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
597 0, 0, 0, 0, 0, 7014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
598 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7013, 7012, 0,
599 7011, 0, 0, 0, 7010, 0, 0, 0, 0, 0, 0, 0, 7009, 0, 0, 0, 0, 0, 0,
600 0, 0, 0, 0, 0, 0, 0, 0, 0, 7008, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
601 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1602,
602 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
603 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
604 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
605 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7007, 0, 0, 0, 0, 0, 0, 0,
606 7006, 0, 0, 0, 7005, 0, 7004, 7003, 0, 0, 0, 0, 0, 0, 0, 0, 7002,
607 0, 0, 0, 7001, 0, 7000, 6999, 0, 0, 0, 0, 6998, 0, 6997, 6996, 0,
608 0, 6995, 6994, 0, 6993, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6992, 0, 0,
609 0, 6991, 0, 6990, 6989, 0, 0, 0, 0, 6988, 0, 6987, 6986, 0, 0,
610 6985, 6984, 0, 6983, 0, 0, 0, 0, 0, 0, 6982, 0, 6981, 6980, 0, 0,
611 6979, 6978, 0, 6977, 0, 0, 0, 0, 6976, 6975, 0, 6974, 0, 0, 0,
612 6973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6972, 0, 0, 0,
613 6971, 0, 6970, 6969, 0, 0, 0, 0, 6968, 0, 6967, 6966, 0, 0, 6965,
614 6964, 0, 6963, 0, 0, 0, 0, 0, 0, 6962, 0, 6961, 6960, 0, 0, 6959,
615 6958, 0, 6957, 0, 0, 0, 0, 6956, 6955, 0, 6954, 0, 0, 0, 6953, 0,
616 0, 0, 0, 0, 0, 0, 0, 0, 0, 6952, 0, 6951, 6950, 0, 0, 6949, 6948,
617 0, 6947, 0, 0, 0, 0, 6946, 6945, 0, 6944, 0, 0, 0, 6943, 0, 0, 0,
618 0, 0, 0, 0, 0, 6942, 6941, 0, 6940, 0, 0, 0, 6939, 0, 0, 0, 0, 0,
619 0, 0, 6938, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
620 0, 0, 0, 0, 6937, 0, 0, 0, 6936, 0, 6935, 6934, 0, 0, 0, 0, 6933,
621 0, 6932, 6931, 0, 0, 6930, 6929, 0, 6928, 0, 0, 0, 0, 0, 0, 6927,
622 0, 6926, 6925, 0, 0, 6924, 6923, 0, 6922, 0, 0, 0, 0, 6921, 6920,
623 0, 6919, 0, 0, 0, 6918, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6917, 0,
624 6916, 6915, 0, 0, 6914, 6913, 0, 6912, 0, 0, 0, 0, 6911, 6910, 0,
625 6909, 0, 0, 0, 6908, 0, 0, 0, 0, 0, 0, 0, 0, 6907, 6906, 0, 6905,
626 0, 0, 0, 6904, 0, 0, 0, 0, 0, 0, 0, 6903, 0, 0, 0, 0, 0, 0, 0, 0,
627 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6902, 0, 6901, 6900, 0, 0, 6899,
628 6898, 0, 6897, 0, 0, 0, 0, 6896, 6895, 0, 6894, 0, 0, 0, 6893, 0,
629 0, 0, 0, 0, 0, 0, 0, 6892, 6891, 0, 6890, 0, 0, 0, 6889, 0, 0, 0,
630 0, 0, 0, 0, 6888, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
631 6887, 6886, 0, 6885, 0, 0, 0, 6884, 0, 0, 0, 0, 0, 0, 0, 6883, 0,
632 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6882, 0, 0, 0, 0, 0, 0,
633 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
634 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6881, 0, 0, 0, 6880, 0, 6879, 6878,
635 0, 0, 0, 0, 6877, 0, 6876, 6875, 0, 0, 6874, 6873, 0, 6872, 0, 0,
636 0, 0, 0, 0, 6871, 0, 6870, 6869, 0, 0, 6868, 6867, 0, 6866, 0, 0,
637 0, 0, 6865, 6864, 0, 6863, 0, 0, 0, 6862, 0, 0, 0, 0, 0, 0, 0, 0,
638 0, 0, 6861, 0, 6860, 6859, 0, 0, 6858, 6857, 0, 6856, 0, 0, 0, 0,
639 6855, 6854, 0, 6853, 0, 0, 0, 6852, 0, 0, 0, 0, 0, 0, 0, 0, 6851,
640 6850, 0, 6849, 0, 0, 0, 6848, 0, 0, 0, 0, 0, 0, 0, 6847, 0, 0, 0,
641 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6846, 0, 6845, 6844,
642 0, 0, 6843, 6842, 0, 6841, 0, 0, 0, 0, 6840, 6839, 0, 6838, 0, 0,
643 0, 6837, 0, 0, 0, 0, 0, 0, 0, 0, 6836, 6835, 0, 6834, 0, 0, 0,
644 6833, 0, 0, 0, 0, 0, 0, 0, 6832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
645 0, 0, 0, 0, 0, 6831, 6830, 0, 6829, 0, 0, 0, 6828, 0, 0, 0, 0, 0,
646 0, 0, 6827, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6826, 0,
647 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
648 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6825, 0, 6824, 6823, 0, 0, 6822,
649 6821, 0, 6820, 0, 0, 0, 0, 6819, 6818, 0, 6817, 0, 0, 0, 6816, 0,
650 0, 0, 0, 0, 0, 0, 0, 6815, 6814, 0, 6813, 0, 0, 0, 6812, 0, 0, 0,
651 0, 0, 0, 0, 6811, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
652 6810, 6809, 0, 6808, 0, 0, 0, 6807, 0, 0, 0, 0, 0, 0, 0, 6806, 0,
653 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6805, 0, 0, 0, 0, 0, 0,
654 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
655 0, 0, 0, 0, 6804, 6803, 0, 6802, 0, 0, 0, 6801, 0, 0, 0, 0, 0, 0,
656 0, 6800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6799, 0, 0,
657 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
658 0, 0, 0, 0, 0, 0, 0, 6798, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
659 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
660 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
661 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6797, 0, 0, 0, 6796, 0,
662 6795, 6794, 0, 0, 0, 0, 6793, 0, 6792, 6791, 0, 0, 6790, 6789, 0,
663 6788, 0, 0, 0, 0, 0, 0, 6787, 0, 6786, 6785, 0, 0, 6784, 6783, 0,
664 6782, 0, 0, 0, 0, 6781, 6780, 0, 6779, 0, 0, 0, 6778, 0, 0, 0, 0,
665 0, 0, 0, 0, 0, 0, 6777, 0, 6776, 6775, 0, 0, 6774, 6773, 0, 6772,
666 0, 0, 0, 0, 6771, 6770, 0, 6769, 0, 0, 0, 6768, 0, 0, 0, 0, 0, 0,
667 0, 0, 6767, 6766, 0, 6765, 0, 0, 0, 6764, 0, 0, 0, 0, 0, 0, 0,
668 6763, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6762,
669 0, 6761, 6760, 0, 0, 6759, 6758, 0, 6757, 0, 0, 0, 0, 6756, 6755,
670 0, 6754, 0, 0, 0, 6753, 0, 0, 0, 0, 0, 0, 0, 0, 6752, 6751, 0,
671 6750, 0, 0, 0, 6749, 0, 0, 0, 0, 0, 0, 0, 6748, 0, 0, 0, 0, 0, 0,
672 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6747, 6746, 0, 6745, 0, 0, 0, 6744,
673 0, 0, 0, 0, 0, 0, 0, 6743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
674 0, 0, 6742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
675 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6741, 0, 6740,
676 6739, 0, 0, 6738, 6737, 0, 6736, 0, 0, 0, 0, 6735, 6734, 0, 6733,
677 0, 0, 0, 6732, 0, 0, 0, 0, 0, 0, 0, 0, 6731, 6730, 0, 6729, 0, 0,
678 0, 6728, 0, 0, 0, 0, 0, 0, 0, 6727, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
679 0, 0, 0, 0, 0, 0, 6726, 6725, 0, 6724, 0, 0, 0, 6723, 0, 0, 0, 0,
680 0, 0, 0, 6722, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6721,
681 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
682 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6720, 6719, 0, 6718, 0, 0, 0, 6717,
683 0, 0, 0, 0, 0, 0, 0, 6716, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
684 0, 0, 6715, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
685 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6714, 0, 0, 0, 0, 0, 0, 0,
686 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
687 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
688 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6713, 0, 6712, 6711,
689 0, 0, 6710, 6709, 0, 6708, 0, 0, 0, 0, 6707, 6706, 0, 6705, 0, 0,
690 0, 6704, 0, 0, 0, 0, 0, 0, 0, 0, 6703, 6702, 0, 6701, 0, 0, 0,
691 6700, 0, 0, 0, 0, 0, 0, 0, 6699, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
692 0, 0, 0, 0, 0, 6698, 6697, 0, 6696, 0, 0, 0, 6695, 0, 0, 0, 0, 0,
693 0, 0, 6694, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6693, 0,
694 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
695 0, 0, 0, 0, 0, 0, 0, 0, 0, 6692, 6691, 0, 6690, 0, 0, 0, 6689, 0,
696 0, 0, 0, 0, 0, 0, 6688, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
697 0, 6687, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
698 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6686, 0, 0, 0, 0, 0, 0, 0, 0,
699 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
700 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
701 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6685, 6684, 0, 6683, 0, 0, 0,
702 6682, 0, 0, 0, 0, 0, 0, 0, 6681, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
703 0, 0, 0, 0, 6680, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
704 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6679, 0, 0, 0, 0, 0,
705 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
706 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
707 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1601, 0, 0, 0, 0, 0, 0,
708 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
709 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
710 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
711 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
712 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
713 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
714 0, 0, 0, 0, 1609, 0, 0, 0, 0, 0, 0, 0, 6678, 0, 0, 0, 6677, 0,
715 6676, 6675, 0, 0, 0, 0, 0, 0, 0, 0, 6674, 0, 0, 0, 6673, 0, 6672,
716 6671, 0, 0, 0, 0, 6670, 0, 6669, 6668, 0, 0, 6667, 6666, 0, 6665,
717 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6664, 0, 0, 0, 6663, 0, 6662, 6661,
718 0, 0, 0, 0, 6660, 0, 6659, 6658, 0, 0, 6657, 6656, 0, 6655, 0, 0,
719 0, 0, 0, 0, 6654, 0, 6653, 6652, 0, 0, 6651, 6650, 0, 6649, 0, 0,
720 0, 0, 6648, 6647, 0, 6646, 0, 0, 0, 6645, 0, 0, 0, 0, 0, 0, 0, 0,
721 0, 0, 0, 0, 0, 0, 6644, 0, 0, 0, 6643, 0, 6642, 6641, 0, 0, 0, 0,
722 6640, 0, 6639, 6638, 0, 0, 6637, 6636, 0, 6635, 0, 0, 0, 0, 0, 0,
723 6634, 0, 6633, 6632, 0, 0, 6631, 6630, 0, 6629, 0, 0, 0, 0, 6628,
724 6627, 0, 6626, 0, 0, 0, 6625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6624,
725 0, 6623, 6622, 0, 0, 6621, 6620, 0, 6619, 0, 0, 0, 0, 6618, 6617,
726 0, 6616, 0, 0, 0, 6615, 0, 0, 0, 0, 0, 0, 0, 0, 6614, 6613, 0,
727 6612, 0, 0, 0, 6611, 0, 0, 0, 0, 0, 0, 0, 6610, 0, 0, 0, 0, 0, 0,
728 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6609, 0, 0, 0,
729 6608, 0, 6607, 6606, 0, 0, 0, 0, 6605, 0, 6604, 6603, 0, 0, 6602,
730 6601, 0, 6600, 0, 0, 0, 0, 0, 0, 6599, 0, 6598, 6597, 0, 0, 6596,
731 6595, 0, 6594, 0, 0, 0, 0, 6593, 6592, 0, 6591, 0, 0, 0, 6590, 0,
732 0, 0, 0, 0, 0, 0, 0, 0, 0, 6589, 0, 6588, 6587, 0, 0, 6586, 6585,
733 0, 6584, 0, 0, 0, 0, 6583, 6582, 0, 6581, 0, 0, 0, 6580, 0, 0, 0,
734 0, 0, 0, 0, 0, 6579, 6578, 0, 6577, 0, 0, 0, 6576, 0, 0, 0, 0, 0,
735 0, 0, 6575, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
736 6574, 0, 6573, 6572, 0, 0, 6571, 6570, 0, 6569, 0, 0, 0, 0, 6568,
737 6567, 0, 6566, 0, 0, 0, 6565, 0, 0, 0, 0, 0, 0, 0, 0, 6564, 6563,
738 0, 6562, 0, 0, 0, 6561, 0, 0, 0, 0, 0, 0, 0, 6560, 0, 0, 0, 0, 0,
739 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6559, 6558, 0, 6557, 0, 0, 0,
740 6556, 0, 0, 0, 0, 0, 0, 0, 6555, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
741 0, 0, 0, 0, 6554, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
742 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
743 6553, 0, 0, 0, 6552, 0, 6551, 6550, 0, 0, 0, 0, 6549, 0, 6548,
744 6547, 0, 0, 6546, 6545, 0, 6544, 0, 0, 0, 0, 0, 0, 6543, 0, 6542,
745 6541, 0, 0, 6540, 6539, 0, 6538, 0, 0, 0, 0, 6537, 6536, 0, 6535,
746 0, 0, 0, 6534, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6533, 0, 6532, 6531,
747 0, 0, 6530, 6529, 0, 6528, 0, 0, 0, 0, 6527, 6526, 0, 6525, 0, 0,
748 0, 6524, 0, 0, 0, 0, 0, 0, 0, 0, 6523, 6522, 0, 6521, 0, 0, 0,
749 6520, 0, 0, 0, 0, 0, 0, 0, 6519, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
750 0, 0, 0, 0, 0, 0, 0, 6518, 0, 6517, 6516, 0, 0, 6515, 6514, 0,
751 6513, 0, 0, 0, 0, 6512, 6511, 0, 6510, 0, 0, 0, 6509, 0, 0, 0, 0,
752 0, 0, 0, 0, 6508, 6507, 0, 6506, 0, 0, 0, 6505, 0, 0, 0, 0, 0, 0,
753 0, 6504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6503,
754 6502, 0, 6501, 0, 0, 0, 6500, 0, 0, 0, 0, 0, 0, 0, 6499, 0, 0, 0,
755 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6498, 0, 0, 0, 0, 0, 0, 0, 0,
756 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
757 0, 0, 0, 0, 6497, 0, 6496, 6495, 0, 0, 6494, 6493, 0, 6492, 0, 0,
758 0, 0, 6491, 6490, 0, 6489, 0, 0, 0, 6488, 0, 0, 0, 0, 0, 0, 0, 0,
759 6487, 6486, 0, 6485, 0, 0, 0, 6484, 0, 0, 0, 0, 0, 0, 0, 6483, 0,
760 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6482, 6481, 0, 6480,
761 0, 0, 0, 6479, 0, 0, 0, 0, 0, 0, 0, 6478, 0, 0, 0, 0, 0, 0, 0, 0,
762 0, 0, 0, 0, 0, 0, 0, 6477, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
763 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6476,
764 6475, 0, 6474, 0, 0, 0, 6473, 0, 0, 0, 0, 0, 0, 0, 6472, 0, 0, 0,
765 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6471, 0, 0, 0, 0, 0, 0, 0, 0,
766 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
767 0, 6470, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
768 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
769 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
770 0, 0, 0, 0, 0, 0, 0, 6469, 0, 0, 0, 6468, 0, 6467, 6466, 0, 0, 0,
771 0, 6465, 0, 6464, 6463, 0, 0, 6462, 6461, 0, 6460, 0, 0, 0, 0, 0,
772 0, 6459, 0, 6458, 6457, 0, 0, 6456, 6455, 0, 6454, 0, 0, 0, 0,
773 6453, 6452, 0, 6451, 0, 0, 0, 6450, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
774 6449, 0, 6448, 6447, 0, 0, 6446, 6445, 0, 6444, 0, 0, 0, 0, 6443,
775 6442, 0, 6441, 0, 0, 0, 6440, 0, 0, 0, 0, 0, 0, 0, 0, 6439, 6438,
776 0, 6437, 0, 0, 0, 6436, 0, 0, 0, 0, 0, 0, 0, 6435, 0, 0, 0, 0, 0,
777 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6434, 0, 6433, 6432, 0, 0,
778 6431, 6430, 0, 6429, 0, 0, 0, 0, 6428, 6427, 0, 6426, 0, 0, 0,
779 6425, 0, 0, 0, 0, 0, 0, 0, 0, 6424, 6423, 0, 6422, 0, 0, 0, 6421,
780 0, 0, 0, 0, 0, 0, 0, 6420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
781 0, 0, 0, 6419, 6418, 0, 6417, 0, 0, 0, 6416, 0, 0, 0, 0, 0, 0, 0,
782 6415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6414, 0, 0, 0,
783 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
784 0, 0, 0, 0, 0, 0, 0, 0, 0, 6413, 0, 6412, 6411, 0, 0, 6410, 6409,
785 0, 6408, 0, 0, 0, 0, 6407, 6406, 0, 6405, 0, 0, 0, 6404, 0, 0, 0,
786 0, 0, 0, 0, 0, 6403, 6402, 0, 6401, 0, 0, 0, 6400, 0, 0, 0, 0, 0,
787 0, 0, 6399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6398,
788 6397, 0, 6396, 0, 0, 0, 6395, 0, 0, 0, 0, 0, 0, 0, 6394, 0, 0, 0,
789 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6393, 0, 0, 0, 0, 0, 0, 0, 0,
790 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
791 0, 0, 6392, 6391, 0, 6390, 0, 0, 0, 6389, 0, 0, 0, 0, 0, 0, 0,
792 6388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6387, 0, 0, 0,
793 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
794 0, 0, 0, 0, 0, 0, 6386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
795 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
796 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
797 0, 0, 0, 0, 0, 0, 0, 0, 6385, 0, 6384, 6383, 0, 0, 6382, 6381, 0,
798 6380, 0, 0, 0, 0, 6379, 6378, 0, 6377, 0, 0, 0, 6376, 0, 0, 0, 0,
799 0, 0, 0, 0, 6375, 6374, 0, 6373, 0, 0, 0, 6372, 0, 0, 0, 0, 0, 0,
800 0, 6371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6370,
801 6369, 0, 6368, 0, 0, 0, 6367, 0, 0, 0, 0, 0, 0, 0, 6366, 0, 0, 0,
802 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6365, 0, 0, 0, 0, 0, 0, 0, 0,
803 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
804 0, 0, 6364, 6363, 0, 6362, 0, 0, 0, 6361, 0, 0, 0, 0, 0, 0, 0,
805 6360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6359, 0, 0, 0,
806 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
807 0, 0, 0, 0, 0, 0, 6358, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
808 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
809 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
810 0, 0, 0, 0, 0, 0, 6357, 6356, 0, 6355, 0, 0, 0, 6354, 0, 0, 0, 0,
811 0, 0, 0, 6353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6352,
812 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
813 0, 0, 0, 0, 0, 0, 0, 0, 0, 6351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
814 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
815 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
816 0, 0, 0, 0, 0, 0, 0, 0, 6350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
817 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
818 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
819 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
820 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
821 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
822 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6349, 0, 0, 0, 6348, 0, 6347,
823 6346, 0, 0, 0, 0, 6345, 0, 6344, 6343, 0, 0, 6342, 6341, 0, 6340,
824 0, 0, 0, 0, 0, 0, 6339, 0, 6338, 6337, 0, 0, 6336, 6335, 0, 6334,
825 0, 0, 0, 0, 6333, 6332, 0, 6331, 0, 0, 0, 6330, 0, 0, 0, 0, 0, 0,
826 0, 0, 0, 0, 6329, 0, 6328, 6327, 0, 0, 6326, 6325, 0, 6324, 0, 0,
827 0, 0, 6323, 6322, 0, 6321, 0, 0, 0, 6320, 0, 0, 0, 0, 0, 0, 0, 0,
828 6319, 6318, 0, 6317, 0, 0, 0, 6316, 0, 0, 0, 0, 0, 0, 0, 6315, 0,
829 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6314, 0, 6313,
830 6312, 0, 0, 6311, 6310, 0, 6309, 0, 0, 0, 0, 6308, 6307, 0, 6306,
831 0, 0, 0, 6305, 0, 0, 0, 0, 0, 0, 0, 0, 6304, 6303, 0, 6302, 0, 0,
832 0, 6301, 0, 0, 0, 0, 0, 0, 0, 6300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
833 0, 0, 0, 0, 0, 0, 6299, 6298, 0, 6297, 0, 0, 0, 6296, 0, 0, 0, 0,
834 0, 0, 0, 6295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6294,
835 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
836 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6293, 0, 6292, 6291, 0, 0,
837 6290, 6289, 0, 6288, 0, 0, 0, 0, 6287, 6286, 0, 6285, 0, 0, 0,
838 6284, 0, 0, 0, 0, 0, 0, 0, 0, 6283, 6282, 0, 6281, 0, 0, 0, 6280,
839 0, 0, 0, 0, 0, 0, 0, 6279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
840 0, 0, 0, 6278, 6277, 0, 6276, 0, 0, 0, 6275, 0, 0, 0, 0, 0, 0, 0,
841 6274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6273, 0, 0, 0,
842 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
843 0, 0, 0, 0, 0, 0, 0, 6272, 6271, 0, 6270, 0, 0, 0, 6269, 0, 0, 0,
844 0, 0, 0, 0, 6268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
845 6267, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
846 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6266, 0, 0, 0, 0, 0, 0, 0, 0, 0,
847 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
848 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
849 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6265, 0, 6264, 6263, 0, 0,
850 6262, 6261, 0, 6260, 0, 0, 0, 0, 6259, 6258, 0, 6257, 0, 0, 0,
851 6256, 0, 0, 0, 0, 0, 0, 0, 0, 6255, 6254, 0, 6253, 0, 0, 0, 6252,
852 0, 0, 0, 0, 0, 0, 0, 6251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
853 0, 0, 0, 6250, 6249, 0, 6248, 0, 0, 0, 6247, 0, 0, 0, 0, 0, 0, 0,
854 6246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6245, 0, 0, 0,
855 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
856 0, 0, 0, 0, 0, 0, 0, 6244, 6243, 0, 6242, 0, 0, 0, 6241, 0, 0, 0,
857 0, 0, 0, 0, 6240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
858 6239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
859 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6238, 0, 0, 0, 0, 0, 0, 0, 0, 0,
860 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
861 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
862 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6237, 6236, 0, 6235, 0, 0, 0,
863 6234, 0, 0, 0, 0, 0, 0, 0, 6233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
864 0, 0, 0, 0, 6232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
865 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6231, 0, 0, 0, 0, 0,
866 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
867 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
868 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6230, 0, 0, 0, 0, 0, 0,
869 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
870 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
871 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
872 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
873 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
874 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6229, 0, 6228, 6227, 0,
875 0, 6226, 6225, 0, 6224, 0, 0, 0, 0, 6223, 6222, 0, 6221, 0, 0, 0,
876 6220, 0, 0, 0, 0, 0, 0, 0, 0, 6219, 6218, 0, 6217, 0, 0, 0, 6216,
877 0, 0, 0, 0, 0, 0, 0, 6215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
878 0, 0, 0, 6214, 6213, 0, 6212, 0, 0, 0, 6211, 0, 0, 0, 0, 0, 0, 0,
879 6210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6209, 0, 0, 0,
880 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
881 0, 0, 0, 0, 0, 0, 0, 6208, 6207, 0, 6206, 0, 0, 0, 6205, 0, 0, 0,
882 0, 0, 0, 0, 6204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
883 6203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
884 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6202, 0, 0, 0, 0, 0, 0, 0, 0, 0,
885 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
886 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
887 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6201, 6200, 0, 6199, 0, 0, 0,
888 6198, 0, 0, 0, 0, 0, 0, 0, 6197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
889 0, 0, 0, 0, 6196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
890 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6195, 0, 0, 0, 0, 0,
891 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
892 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
893 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6194, 0, 0, 0, 0, 0, 0,
894 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
895 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
896 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
897 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
898 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
899 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6193, 6192, 0, 6191, 0, 0, 0,
900 6190, 0, 0, 0, 0, 0, 0, 0, 6189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
901 0, 0, 0, 0, 6188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
902 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6187, 0, 0, 0, 0, 0,
903 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
904 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
905 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6186, 0, 0, 0, 0, 0, 0,
906 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
907 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
908 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
909 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
910 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
911 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1600
915 int products[] = {
916 48, 72, 80, 108, 112, 120, 162, 168, 176, 180, 200, 208, 252,
917 264, 270, 272, 280, 300, 304, 312, 368, 378, 392, 396, 405, 408,
918 420, 440, 450, 456, 464, 468, 496, 500, 520, 552, 567, 588, 592,
919 594, 612, 616, 630, 656, 660, 675, 680, 684, 696, 700, 702, 728,
920 744, 750, 760, 780, 828, 882, 888, 891, 918, 920, 924, 945, 952,
921 968, 980, 984, 990, 1020, 1026, 1044, 1050, 1053, 1064, 1092,
922 1100, 1116, 1125, 1140, 1144, 1160, 1170, 1240, 1242, 1250, 1288,
923 1300, 1323, 1332, 1352, 1372, 1377, 1380, 1386, 1428, 1452, 1470,
924 1476, 1480, 1485, 1496, 1530, 1539, 1540, 1566, 1575, 1596, 1624,
925 1638, 1640, 1650, 1672, 1674, 1700, 1710, 1716, 1736, 1740, 1750,
926 1755, 1768, 1820, 1860, 1863, 1875, 1900, 1932, 1950, 1976, 1998,
927 2024, 2028, 2058, 2070, 2072, 2079, 2142, 2156, 2178, 2205, 2214,
928 2220, 2244, 2295, 2296, 2300, 2312, 2349, 2380, 2392, 2394, 2420,
929 2436, 2450, 2457, 2460, 2475, 2508, 2511, 2548, 2550, 2552, 2565,
930 2574, 2584, 2604, 2610, 2625, 2652, 2660, 2728, 2750, 2790, 2850,
931 2860, 2888, 2898, 2900, 2925, 2964, 2997, 3016, 3036, 3042, 3087,
932 3100, 3105, 3108, 3128, 3213, 3220, 3224, 3234, 3250, 3256, 3267,
933 3321, 3330, 3332, 3366, 3380, 3388, 3430, 3444, 3450, 3465, 3468,
934 3496, 3588, 3591, 3608, 3630, 3654, 3675, 3690, 3700, 3724, 3740,
935 3762, 3822, 3825, 3828, 3848, 3850, 3861, 3876, 3906, 3915, 3944,
936 3978, 4004, 4060, 4092, 4095, 4100, 4125, 4180, 4185, 4216, 4232,
937 4250, 4264, 4275, 4332, 4340, 4347, 4350, 4375, 4408, 4420, 4446,
938 4508, 4524, 4550, 4554, 4563, 4650, 4662, 4692, 4712, 4732, 4750,
939 4802, 4836, 4851, 4875, 4884, 4940, 4995, 4998, 5032, 5049, 5060,
940 5070, 5082, 5145, 5166, 5175, 5180, 5202, 5236, 5244, 5324, 5336,
941 5355, 5382, 5390, 5412, 5445, 5481, 5535, 5550, 5576, 5586, 5624,
942 5643, 5684, 5704, 5733, 5740, 5742, 5750, 5772, 5775, 5780, 5814,
943 5852, 5859, 5916, 5950, 5967, 5980, 5985, 6050, 6076, 6125, 6138,
944 6150, 6188, 6232, 6292, 6324, 6348, 6370, 6375, 6380, 6396, 6435,
945 6460, 6498, 6525, 6612, 6650, 6669, 6728, 6762, 6786, 6808, 6820,
946 6825, 6831, 6875, 6916, 6975, 6993, 7038, 7068, 7084, 7098, 7125,
947 7150, 7192, 7203, 7220, 7245, 7250, 7252, 7254, 7326, 7436, 7497,
948 7540, 7544, 7546, 7548, 7605, 7623, 7688, 7749, 7750, 7803, 7820,
949 7866, 7986, 8004, 8036, 8050, 8060, 8073, 8085, 8092, 8118, 8125,
950 8140, 8228, 8325, 8330, 8364, 8372, 8379, 8415, 8436, 8450, 8470,
951 8526, 8556, 8575, 8584, 8613, 8625, 8658, 8670, 8721, 8740, 8788,
952 8874, 8918, 8925, 8932, 9009, 9020, 9044, 9075, 9114, 9135, 9176,
953 9196, 9207, 9225, 9250, 9310, 9348, 9350, 9405, 9438, 9486, 9512,
954 9522, 9548, 9555, 9594, 9620, 9625, 9724, 9747, 9765, 9860, 9918,
955 9945, 9975, 10092, 10108, 10143, 10150, 10168, 10179, 10212,
956 10250, 10450, 10540, 10556, 10557, 10580, 10602, 10625, 10647,
957 10660, 10725, 10788, 10830, 10850, 10868, 10875, 10878, 10881,
958 10948, 10952, 10989, 11020, 11050, 11115, 11132, 11154, 11270,
959 11284, 11316, 11319, 11322, 11375, 11385, 11396, 11492, 11532,
960 11625, 11655, 11662, 11780, 11781, 11799, 11830, 11858, 11875,
961 11979, 12005, 12006, 12054, 12075, 12136, 12138, 12177, 12236,
962 12342, 12350, 12495, 12546, 12580, 12628, 12650, 12654, 12675,
963 12705, 12716, 12789, 12834, 12844, 12876, 12915, 12950, 12987,
964 13005, 13034, 13156, 13167, 13182, 13310, 13311, 13340, 13377,
965 13448, 13455, 13468, 13475, 13671, 13764, 13794, 13804, 13875,
966 13923, 13940, 13965, 14014, 14022, 14025, 14036, 14060, 14157,
967 14210, 14212, 14229, 14260, 14268, 14283, 14350, 14355, 14375,
968 14391, 14450, 14535, 14756, 14812, 14875, 14877, 14924, 14950,
969 15004, 15028, 15125, 15138, 15162, 15190, 15225, 15252, 15318,
970 15345, 15375, 15428, 15548, 15561, 15580, 15675, 15730, 15778,
971 15870, 15884, 15903, 15925, 15939, 15950, 16150, 16182, 16245,
972 16275, 16317, 16428, 16492, 16562, 16575, 16588, 16625, 16698,
973 16731, 16796, 16820, 16905, 16965, 16974, 16983, 17020, 17050,
974 17204, 17238, 17298, 17493, 17595, 17612, 17732, 17745, 17787,
975 17875, 17908, 17980, 18009, 18050, 18081, 18125, 18130, 18135,
976 18204, 18207, 18315, 18326, 18513, 18525, 18590, 18634, 18676,
977 18772, 18819, 18837, 18850, 18860, 18865, 18975, 18981, 19074,
978 19220, 19228, 19251, 19266, 19314, 19375, 19425, 19516, 19550,
979 19551, 19604, 19652, 19665, 19684, 19773, 19844, 19894, 19964,
980 19965, 20090, 20097, 20125, 20150, 20172, 20230, 20295, 20332,
981 20349, 20350, 20482, 20570, 20646, 20691, 20825, 20956, 21021,
982 21033, 21054, 21125, 21164, 21175, 21266, 21315, 21402, 21460,
983 21483, 21525, 21645, 21658, 21675, 21692, 21812, 21850, 21879,
984 21964, 21970, 22022, 22185, 22218, 22295, 22425, 22506, 22542,
985 22550, 22707, 22724, 22743, 22785, 22878, 22940, 22977, 22990,
986 23125, 23188, 23275, 23276, 23322, 23375, 23452, 23548, 23595,
987 23667, 23715, 23751, 23780, 23805, 23826, 23828, 23925, 23985,
988 24050, 24206, 24225, 24244, 24273, 24453, 24548, 24633, 24642,
989 24650, 24794, 24795, 24843, 25012, 25025, 25047, 25172, 25230,
990 25270, 25375, 25382, 25389, 25420, 25461, 25575, 25625, 25636,
991 25641, 25857, 25916, 25947, 26026, 26125, 26350, 26404, 26411,
992 26450, 26505, 26588, 26650, 26862, 26908, 27075, 27125, 27195,
993 27306, 27380, 27404, 27436, 27489, 27508, 27531, 27550, 27625,
994 27676, 27716, 27830, 27885, 27951, 28126, 28158, 28175, 28275,
995 28305, 28322, 28413, 28611, 28652, 28730, 28798, 28830, 28899,
996 28971, 29155, 29282, 29302, 29325, 29348, 29406, 29450, 29478,
997 29575, 29601, 29645, 29716, 29766, 29841, 30015, 30044, 30135,
998 30225, 30258, 30303, 30340, 30345, 30525, 30628, 30668, 30723,
999 30758, 30855, 30875, 30932, 30969, 31059, 31213, 31262, 31365,
1000 31372, 31434, 31450, 31581, 31625, 31635, 31654, 31790, 31899,
1001 31977, 32085, 32103, 32110, 32116, 32186, 32375, 32487, 32585,
1002 32708, 32725, 32775, 32946, 32955, 33033, 33201, 33212, 33275,
1003 33292, 33327, 33350, 33418, 33524, 33579, 33620, 33759, 33813,
1004 33825, 34276, 34317, 34485, 34606, 34684, 34713, 34850, 34914,
1005 34983, 35035, 35055, 35090, 35150, 35322, 35378, 35525, 35588,
1006 35650, 35739, 35836, 35875, 35972, 36075, 36125, 36244, 36309,
1007 36556, 36575, 36822, 36946, 36963, 36975, 37004, 37030, 37076,
1008 37107, 37191, 37323, 37375, 37444, 37468, 37510, 37518, 37570,
1009 37791, 37845, 37905, 37975, 38073, 38295, 38318, 38332, 38675,
1010 38709, 38870, 38950, 38962, 39039, 39325, 39445, 39494, 39525,
1011 39556, 39627, 39675, 39710, 39875, 39882, 39886, 39897, 39975,
1012 40052, 40204, 40222, 40293, 40362, 40375, 40455, 40508, 40817,
1013 40898, 40959, 41070, 41154, 41262, 41325, 41405, 41492, 41503,
1014 41574, 41745, 41876, 42021, 42050, 42189, 42237, 42284, 42435,
1015 42476, 42483, 42550, 42625, 42772, 42826, 43095, 43197, 43225,
1016 43245, 43263, 43732, 43911, 43923, 43953, 44109, 44175, 44198,
1017 44217, 44252, 44275, 44289, 44506, 44649, 44764, 44770, 44919,
1018 44950, 44954, 45125, 45254, 45325, 45356, 45387, 45619, 45747,
1019 45815, 46137, 46475, 46585, 46748, 46893, 46930, 47068, 47125,
1020 47138, 47150, 47151, 47175, 47212, 47396, 47481, 47619, 47685,
1021 47804, 48050, 48165, 48279, 48285, 48314, 48334, 48484, 48668,
1022 48807, 48875, 49010, 49036, 49049, 49077, 49126, 49130, 49419,
1023 49610, 49735, 49818, 49972, 50025, 50127, 50225, 50286, 50375,
1024 50430, 50468, 50575, 50578, 50692, 50875, 51129, 51205, 51425,
1025 51615, 51646, 51842, 51909, 52173, 52234, 52275, 52316, 52325,
1026 52371, 52390, 52514, 52598, 52635, 52725, 52767, 52972, 52983,
1027 53067, 53165, 53428, 53475, 53482, 53505, 53613, 53650, 53754,
1028 53958, 53998, 54145, 54188, 54418, 54549, 54625, 54910, 54925,
1029 55055, 55223, 55233, 55419, 55506, 55545, 55594, 55796, 55825,
1030 55924, 56265, 56277, 56355, 56375, 56525, 56637, 57122, 57188,
1031 57195, 57350, 57475, 57477, 57498, 57681, 57722, 57868, 57967,
1032 58190, 58305, 58311, 58425, 58443, 58870, 59204, 59241, 59409,
1033 59450, 59565, 59644, 59675, 59774, 59823, 59829, 60125, 60236,
1034 60306, 60333, 60515, 60543, 60775, 61132, 61226, 61347, 61364,
1035 61370, 61605, 61625, 61642, 61659, 61731, 61828, 61893, 61985,
1036 62271, 62361, 62530, 62678, 62814, 63075, 63175, 63206, 63426,
1037 63455, 63550, 63825, 63916, 64124, 64141, 64158, 64239, 64467,
1038 64676, 65065, 65219, 65348, 65366, 65596, 65598, 65702, 65875,
1039 65975, 66033, 66092, 66125, 66297, 66470, 66625, 66748, 66759,
1040 66861, 67146, 67155, 67270, 67425, 67431, 67599, 67881, 67925,
1041 68265, 68306, 68324, 68425, 68450, 68590, 68614, 68770, 68782,
1042 68875, 68894, 68913, 69003, 69290, 69454, 69575, 69597, 69629,
1043 69874, 69938, 70315, 70395, 70525, 70587, 70602, 70642, 70707,
1044 70725, 70805, 71094, 71188, 71225, 71668, 71687, 71825, 71995,
1045 72075, 72261, 72358, 72471, 72501, 72964, 73002, 73036, 73205,
1046 73255, 73346, 73515, 73593, 73625, 73689, 73695, 73964, 74415,
1047 74431, 74698, 74727, 74907, 74958, 75429, 75645, 75803, 75850,
1048 75867, 76342, 76475, 76874, 76895, 77077, 77121, 77198, 77372,
1049 77469, 77763, 77996, 78039, 78155, 78166, 78292, 78351, 78585,
1050 78625, 78771, 78884, 78897, 78925, 79135, 79475, 80073, 80142,
1051 80223, 80275, 80465, 80475, 80631, 80852, 80937, 80997, 81466,
1052 81548, 81549, 81627, 82225, 82251, 82365, 82418, 82522, 82654,
1053 82708, 83030, 83259, 83375, 83391, 83398, 83421, 83486, 83545,
1054 83810, 84050, 84175, 84249, 84303, 84721, 85514, 85683, 85782,
1055 85918, 86025, 86247, 86275, 86428, 86515, 86583, 86756, 86779,
1056 87125, 87172, 87285, 87362, 87412, 87542, 87725, 87875, 88102,
1057 88305, 88412, 88445, 88806, 88825, 88837, 89001, 89125, 89175,
1058 89590, 89661, 89930, 90117, 90354, 90364, 90459, 91091, 91143,
1059 91234, 91839, 92046, 92055, 92225, 92365, 92414, 92463, 92510,
1060 92575, 93058, 93092, 93275, 93357, 93775, 93795, 93925, 94017,
1061 94178, 94221, 94622, 94809, 95139, 95325, 95571, 95795, 95830,
1062 95874, 96026, 96237, 96278, 96425, 96596, 97006, 97175, 97375,
1063 97405, 97526, 97556, 97682, 98022, 98049, 98394, 98397, 98441,
1064 98494, 98553, 98716, 98735, 99127, 99275, 99567, 99705, 99715,
1065 100510, 100555, 100719, 100793, 100905, 101062, 102051, 102245,
1066 102459, 102487, 102557, 102675, 102885, 102921, 103075, 103155,
1067 103156, 103173, 103246, 103341, 103675, 103935, 104044, 104181,
1068 104284, 104690, 104811, 104907, 104975, 105125, 105154, 105183,
1069 105524, 105710, 105754, 105903, 105963, 106227, 106375, 106641,
1070 106782, 106930, 107065, 107525, 107559, 107653, 107822, 108086,
1071 108537, 109089, 109142, 109174, 109330, 109388, 109417, 109503,
1072 109554, 110019, 110075, 110331, 110495, 110789, 110825, 110946,
1073 111265, 111476, 111910, 111925, 112047, 112375, 112385, 112406,
1074 112437, 112651, 113135, 113553, 113775, 114057, 114308, 114513,
1075 115258, 115292, 115311, 115797, 116058, 116242, 116402, 116522,
1076 116725, 116932, 116963, 117249, 117325, 117334, 117438, 117670,
1077 117711, 117845, 117875, 118490, 119119, 119164, 119187, 119306,
1078 120125, 120175, 120213, 120785, 120802, 120835, 121121, 121670,
1079 121923, 121975, 122018, 122199, 122525, 122815, 122825, 123025,
1080 123627, 123783, 123823, 123981, 124025, 124468, 124545, 124558,
1081 124775, 124930, 125097, 125229, 125426, 125541, 125715, 125829,
1082 125902, 125948, 126075, 126445, 127075, 127426, 127534, 127738,
1083 127756, 128018, 128271, 128673, 128877, 128986, 129115, 129311,
1084 129514, 129605, 130134, 130203, 130585, 130975, 131043, 131118,
1085 131285, 131313, 131495, 132153, 132158, 132275, 132618, 133052,
1086 133133, 133209, 133342, 133570, 133705, 134113, 134125, 134162,
1087 134199, 134385, 134895, 134995, 135014, 135531, 135575, 136045,
1088 136214, 136325, 136367, 136851, 137275, 137547, 137566, 137924,
1089 138069, 138229, 138621, 138765, 138985, 139113, 139564, 139587,
1090 139601, 139638, 140714, 140777, 141267, 141933, 142025, 142228,
1091 142538, 142766, 142805, 142970, 143143, 143375, 143745, 143811,
1092 144039, 144279, 144305, 144417, 144925, 145475, 145509, 145521,
1093 146234, 146289, 146334, 146523, 146566, 146575, 147033, 147175,
1094 147436, 147591, 147706, 147741, 147994, 148010, 148625, 148666,
1095 148707, 148925, 149435, 149702, 149891, 150183, 150590, 150765,
1096 150898, 151294, 151525, 151593, 152218, 152438, 153062, 153065,
1097 153410, 153425, 153729, 154105, 154652, 154693, 154869, 155771,
1098 156066, 156325, 156426, 156674, 156695, 157035, 157325, 157339,
1099 157604, 157731, 158015, 158389, 158565, 158631, 158804, 158875,
1100 159562, 159790, 160173, 160225, 160395, 161161, 161253, 161414,
1101 161733, 161975, 162129, 162578, 163370, 163415, 163713, 163761,
1102 163990, 163995, 164169, 164255, 164331, 164738, 164983, 165025,
1103 165886, 166175, 166419, 166634, 167042, 167214, 167865, 168175,
1104 168609, 168674, 169099, 169169, 169756, 170126, 170338, 170765,
1105 171125, 171275, 171462, 171475, 171535, 171925, 171941, 171955,
1106 172235, 172546, 172822, 172887, 172975, 173225, 173635, 174087,
1107 174097, 174363, 174603, 174685, 174783, 174845, 174902, 175491,
1108 175972, 176001, 176157, 176505, 176605, 177023, 177489, 177735,
1109 177970, 178126, 178334, 178746, 178802, 178959, 179075, 180154,
1110 180761, 180895, 181203, 181447, 181917, 182505, 182590, 182666,
1111 182819, 183027, 183365, 183425, 183483, 183799, 184093, 184382,
1112 184910, 185725, 186093, 186238, 186694, 186702, 186745, 186837,
1113 186998, 187187, 187395, 187775, 188108, 188139, 188518, 188853,
1114 188922, 188993, 189625, 190333, 190463, 190855, 191139, 191301,
1115 191425, 191607, 191634, 191675, 192027, 192185, 192995, 193325,
1116 193430, 193479, 194271, 194463, 194579, 194996, 195201, 195415,
1117 195730, 196075, 196137, 196677, 197098, 197846, 198237, 198927,
1118 199082, 199927, 200013, 200158, 200355, 200725, 201243, 202027,
1119 202521, 202612, 203203, 203319, 203522, 203665, 204321, 204425,
1120 205751, 205942, 206045, 206305, 206349, 206635, 206886, 207214,
1121 207575, 208075, 208444, 208495, 208658, 208715, 209209, 209457,
1122 209525, 210125, 210749, 210826, 211071, 212602, 213342, 213785,
1123 213807, 214149, 214225, 214291, 214455, 214774, 214795, 215747,
1124 215878, 216775, 216890, 217217, 217341, 217558, 217906, 218405,
1125 218530, 218855, 219351, 219373, 219501, 219849, 220255, 221030,
1126 221122, 221221, 221559, 221991, 222015, 222111, 222425, 222999,
1127 223706, 223975, 224516, 224553, 224825, 224939, 225446, 225885,
1128 225998, 226347, 226525, 226941, 228085, 228206, 228327, 228475,
1129 228657, 228718, 228781, 229586, 229593, 229957, 230115, 230318,
1130 231035, 231275, 231725, 231978, 232101, 232562, 232645, 232730,
1131 232934, 233206, 233818, 234025, 234099, 234175, 234639, 235011,
1132 235246, 235445, 235543, 235586, 236406, 236555, 237429, 237614,
1133 238206, 239071, 239343, 239575, 239685, 240065, 240149, 240526,
1134 240695, 240737, 240994, 241129, 242121, 242515, 243089, 243815,
1135 243867, 243890, 244205, 244559, 244783, 245055, 245985, 246123,
1136 246202, 246235, 247107, 247225, 247247, 248788, 248829, 248897,
1137 249067, 249158, 249951, 250325, 250563, 250821, 251275, 252586,
1138 252655, 253011, 253175, 253253, 254634, 255189, 255507, 255626,
1139 256711, 257193, 258115, 258819, 258874, 259233, 259259, 259325,
1140 259407, 259666, 260110, 260642, 260678, 260710, 261326, 261443,
1141 261725, 262353, 262885, 263097, 263302, 264275, 264385, 265475,
1142 265727, 265837, 266955, 267189, 267197, 267325, 267501, 267674,
1143 268119, 268203, 269059, 269555, 270193, 270215, 270231, 270802,
1144 272194, 272855, 272935, 273325, 273581, 273885, 273999, 274022,
1145 274846, 275684, 276573, 276575, 277365, 277574, 278018, 278179,
1146 278369, 278690, 279357, 279775, 280041, 280053, 280497, 281015,
1147 282302, 282777, 283383, 283475, 284053, 284258, 284954, 285131,
1148 285770, 287287, 287451, 287638, 287738, 288145, 288463, 288827,
1149 289289, 290145, 290605, 290966, 291005, 291305, 291893, 292175,
1150 292201, 292494, 293335, 293595, 293854, 294151, 294175, 295075,
1151 295647, 296225, 296769, 296989, 297910, 298265, 298623, 298775,
1152 299299, 299367, 300237, 300713, 302005, 303025, 303646, 303862,
1153 303918, 304175, 304606, 305045, 305283, 305762, 305767, 305942,
1154 306397, 306475, 307582, 308074, 308357, 308913, 309442, 310329,
1155 310821, 311170, 311395, 312325, 312666, 312987, 313565, 314019,
1156 314041, 314171, 314534, 314755, 314870, 315425, 315514, 316239,
1157 316342, 316825, 317471, 318478, 318565, 318734, 318835, 318903,
1158 319319, 319345, 319390, 320013, 320045, 322161, 322465, 323449,
1159 323785, 323817, 324818, 325335, 325622, 325703, 325822, 326337,
1160 326859, 326975, 327795, 328757, 329623, 330395, 331075, 331177,
1161 331298, 331545, 331683, 331731, 333355, 333925, 335405, 335559,
1162 335699, 336091, 336743, 336774, 336973, 337502, 337535, 338169,
1163 338675, 338997, 339031, 339521, 340442, 340535, 341341, 341446,
1164 341734, 341887, 342309, 343077, 343915, 344379, 344729, 344810,
1165 345477, 347282, 347633, 347967, 348725, 348843, 349095, 349401,
1166 349525, 349809, 350727, 350987, 351538, 351785, 352869, 353379,
1167 353717, 354609, 355570, 355946, 356345, 356421, 356915, 357309,
1168 357425, 359414, 359513, 360778, 360789, 361361, 361491, 361675,
1169 362674, 363562, 364021, 364154, 364994, 365585, 365835, 366415,
1170 367114, 368039, 369265, 369303, 369985, 370025, 370139, 371665,
1171 371722, 372775, 373182, 373737, 374255, 375193, 375683, 376475,
1172 377245, 377377, 378235, 378301, 378879, 378917, 380494, 380545,
1173 381095, 381938, 381951, 381997, 382075, 382109, 382655, 383439,
1174 383525, 384307, 384659, 384826, 385526, 386425, 386630, 387686,
1175 388311, 388531, 389499, 390165, 390166, 390963, 391017, 391065,
1176 391534, 391685, 391989, 393421, 394010, 394953, 395937, 397010,
1177 397822, 397969, 398866, 398905, 399475, 400078, 400673, 400775,
1178 401511, 401698, 401882, 402866, 403403, 403535, 404225, 406203,
1179 406334, 406445, 406802, 406847, 407407, 407827, 408291, 408425,
1180 409975, 410669, 410839, 411033, 411845, 412114, 412269, 413075,
1181 413526, 413678, 414715, 415454, 416361, 416585, 417027, 417074,
1182 417175, 417571, 417605, 418035, 419881, 421685, 422807, 423243,
1183 423453, 424390, 424589, 424762, 424879, 425258, 425315, 425546,
1184 425845, 426374, 426387, 427025, 427063, 427431, 428655, 429598,
1185 429913, 430606, 431365, 431457, 431607, 432055, 435638, 435953,
1186 436449, 437255, 438741, 438991, 440657, 440781, 440818, 443989,
1187 444925, 445315, 445835, 445991, 446369, 446865, 447005, 447083,
1188 447146, 447811, 447925, 448063, 450262, 450385, 451451, 453299,
1189 453871, 454138, 454181, 454597, 455469, 455793, 455877, 456025,
1190 456475, 456665, 456909, 458643, 458689, 458913, 458983, 459173,
1191 460955, 461373, 462111, 462275, 462346, 462553, 462722, 464163,
1192 465595, 466697, 466735, 466755, 467495, 468999, 469567, 470327,
1193 471295, 471801, 472305, 472549, 473271, 474513, 474734, 476749,
1194 477158, 477717, 478101, 479085, 480491, 480766, 481481, 481574,
1195 482734, 483575, 484561, 485537, 486098, 486266, 487227, 487475,
1196 487490, 488433, 488733, 489325, 490637, 491878, 492499, 492745,
1197 493025, 494615, 496223, 496947, 497705, 497798, 498883, 499681,
1198 500395, 501787, 502918, 503234, 505161, 505325, 506253, 506530,
1199 507566, 508079, 508277, 508805, 508898, 509675, 510663, 511819,
1200 512006, 512169, 512601, 512746, 512981, 514786, 514855, 516925,
1201 516971, 517215, 517979, 518035, 519622, 520331, 520421, 520923,
1202 521110, 521594, 521645, 523957, 527065, 527307, 528143, 529529,
1203 531505, 532763, 533355, 533533, 533919, 535717, 536393, 536558,
1204 536935, 537251, 539121, 539695, 540175, 541167, 541282, 541717,
1205 542087, 542225, 542659, 543286, 543895, 544011, 544765, 544825,
1206 545054, 545343, 546231, 546325, 547491, 548359, 550671, 551614,
1207 552575, 552805, 555458, 555611, 555814, 555841, 557566, 557583,
1208 558467, 559265, 559682, 559773, 561290, 562438, 563615, 563914,
1209 564775, 564949, 564995, 567853, 568178, 569023, 570515, 570741,
1210 571795, 572242, 572663, 572907, 573562, 573965, 574678, 575795,
1211 576583, 577239, 578289, 578347, 579945, 580601, 581405, 581529,
1212 581647, 581825, 582335, 582958, 583015, 583219, 584545, 584647,
1213 585249, 585599, 587301, 588115, 588965, 590359, 591015, 593021,
1214 593929, 594035, 594146, 594473, 595441, 595515, 596183, 596733,
1215 598299, 600117, 600281, 600457, 600691, 601315, 602485, 602547,
1216 602823, 603725, 603911, 604299, 604877, 605098, 607202, 609501,
1217 609725, 610203, 612157, 613118, 614422, 615043, 615505, 616975,
1218 618171, 618233, 620194, 620289, 620517, 620806, 620977, 621970,
1219 622895, 623162, 623181, 623441, 624169, 625611, 625807, 628694,
1220 630539, 631465, 633919, 634114, 634933, 636585, 637143, 637887,
1221 638319, 639065, 639331, 639561, 640211, 640871, 644397, 644725,
1222 645337, 645909, 647185, 648907, 649078, 649165, 650275, 651605,
1223 651695, 651775, 651833, 653315, 653429, 653457, 654493, 655402,
1224 656183, 656903, 657662, 658255, 659525, 659813, 661227, 662966,
1225 663803, 664411, 665482, 669185, 670719, 671099, 675393, 676286,
1226 677005, 677846, 680485, 680846, 681207, 682486, 683501, 683675,
1227 684574, 685055, 685069, 687115, 687242, 687401, 689210, 689843,
1228 692461, 692714, 693519, 693842, 693935, 694083, 695045, 696725,
1229 696787, 700553, 700843, 701437, 702559, 702658, 704099, 705686,
1230 705755, 708883, 709142, 709423, 709631, 710645, 712101, 712327,
1231 712385, 714425, 715737, 719095, 719345, 720575, 720797, 721149,
1232 722361, 724101, 724594, 725249, 726869, 727415, 729147, 729399,
1233 729554, 730303, 730639, 730825, 731235, 733381, 734635, 734638,
1234 735034, 737426, 737817, 737891, 742577, 743002, 743774, 744107,
1235 744775, 746697, 748867, 749177, 751502, 751709, 754354, 754377,
1236 754851, 755573, 756613, 757393, 758582, 759115, 759655, 759795,
1237 761349, 761453, 761515, 762671, 763347, 764405, 764855, 768009,
1238 768955, 769119, 770185, 772179, 773605, 773927, 774566, 774706,
1239 775489, 777925, 779433, 781665, 782254, 782391, 782971, 783959,
1240 785213, 785519, 785806, 786335, 787175, 788785, 789061, 790855,
1241 790993, 791282, 792281, 793117, 796195, 796835, 798475, 798721,
1242 800513, 803551, 804287, 804837, 806113, 809042, 809627, 811923,
1243 812045, 812383, 813967, 814055, 814555, 814929, 815269, 816221,
1244 817581, 817663, 818363, 818662, 823361, 824182, 824551, 827421,
1245 828134, 828245, 828269, 828971, 829226, 829939, 830297, 830414,
1246 831575, 831649, 832117, 833187, 833721, 836349, 836969, 837199,
1247 838409, 839523, 839914, 841841, 841935, 843479, 843657, 843755,
1248 845871, 850586, 851105, 852267, 853615, 854335, 858363, 858458,
1249 859027, 860343, 861707, 862017, 862025, 866723, 866822, 868205,
1250 870758, 872053, 872275, 873422, 874437, 876826, 877591, 877933,
1251 878845, 884051, 884374, 885391, 886414, 887777, 888925, 889778,
1252 889865, 891219, 893809, 894179, 894691, 896506, 898535, 898909,
1253 900358, 901945, 906059, 906685, 907647, 908831, 908905, 910385,
1254 910803, 912247, 912373, 912485, 914641, 916487, 917662, 917785,
1255 918731, 919677, 921475, 921557, 921633, 924482, 926497, 926782,
1256 927707, 927979, 929305, 930291, 931209, 932955, 933658, 934743,
1257 935693, 936859, 943041, 947546, 947807, 949003, 950521, 951142,
1258 951171, 951235, 952679, 954845, 955451, 959077, 960089, 961961,
1259 962065, 963815, 964894, 966329, 966575, 969215, 971509, 971618,
1260 973063, 973617, 975415, 978835, 979693, 980837, 983103, 983411,
1261 985025, 986493, 988057, 988418, 989417, 990437, 990698, 990847,
1262 992525, 994449, 994555, 994903, 997165, 997339, 997694, 998223,
1263 998963, 1000195, 1004245, 1004663, 1004705, 1005238, 1006733,
1264 1007083, 1007165, 1012894, 1013173, 1014101, 1014429, 1015835,
1265 1016738, 1016769, 1017005, 1018381, 1021269, 1023729, 1024309,
1266 1024426, 1026817, 1026861, 1028489, 1030285, 1030863, 1032226,
1267 1033815, 1034195, 1036849, 1037153, 1038635, 1039071, 1040763,
1268 1042685, 1049191, 1053987, 1056757, 1057978, 1058529, 1058743,
1269 1059022, 1060975, 1061905, 1062761, 1063145, 1063517, 1063713,
1270 1063865, 1065935, 1066121, 1067857, 1070167, 1070558, 1070797,
1271 1072478, 1073995, 1076515, 1076537, 1078259, 1083047, 1083121,
1272 1084039, 1085773, 1085926, 1086891, 1088153, 1089095, 1094331,
1273 1094951, 1095274, 1096381, 1099825, 1100869, 1101957, 1102045,
1274 1102551, 1103414, 1104299, 1105819, 1106139, 1106959, 1107197,
1275 1114366, 1114503, 1114673, 1115569, 1115661, 1117865, 1119371,
1276 1121549, 1121894, 1123343, 1125655, 1127253, 1131531, 1132058,
1277 1132681, 1133407, 1135234, 1135345, 1136863, 1137873, 1139677,
1278 1140377, 1146442, 1147619, 1155865, 1156805, 1157819, 1159171,
1279 1159543, 1161849, 1162059, 1162213, 1169311, 1171001, 1172354,
1280 1173381, 1175675, 1178709, 1181257, 1182446, 1183301, 1186835,
1281 1186923, 1187329, 1191547, 1192895, 1195061, 1196069, 1196506,
1282 1196569, 1198483, 1199266, 1201915, 1203935, 1206835, 1208938,
1283 1209271, 1210547, 1211573, 1213511, 1213526, 1213563, 1213682,
1284 1215245, 1215487, 1215665, 1216171, 1218725, 1225367, 1227993,
1285 1229695, 1230383, 1234838, 1236273, 1239953, 1242201, 1242989,
1286 1243839, 1244495, 1245621, 1245811, 1255133, 1255501, 1257295,
1287 1257949, 1257962, 1258085, 1259871, 1262723, 1263661, 1266325,
1288 1266749, 1267474, 1268915, 1269359, 1272245, 1272467, 1274539,
1289 1275879, 1277479, 1279091, 1280015, 1281137, 1281865, 1281974,
1290 1282633, 1284899, 1285999, 1286965, 1287687, 1292669, 1293853,
1291 1294033, 1295723, 1299055, 1300233, 1301027, 1302775, 1303985,
1292 1306137, 1306877, 1310133, 1310278, 1314542, 1315239, 1316978,
1293 1322893, 1325467, 1326561, 1329621, 1331729, 1334667, 1336783,
1294 1338623, 1339634, 1340003, 1341395, 1344718, 1344759, 1346891,
1295 1349341, 1349834, 1350537, 1351166, 1353205, 1354111, 1354886,
1296 1356277, 1356901, 1358215, 1362635, 1365581, 1368334, 1370369,
1297 1370386, 1372019, 1376493, 1379035, 1381913, 1386723, 1388645,
1298 1389223, 1389535, 1390173, 1392377, 1393915, 1396031, 1399205,
1299 1400273, 1400487, 1403207, 1403225, 1405943, 1406095, 1406587,
1300 1409785, 1410031, 1412327, 1414127, 1414562, 1416389, 1420445,
1301 1421319, 1422169, 1423807, 1426713, 1428163, 1430605, 1431382,
1302 1432417, 1433531, 1433729, 1433905, 1436695, 1437293, 1442399,
1303 1442926, 1446071, 1447341, 1447873, 1448161, 1448402, 1454089,
1304 1457395, 1457427, 1459354, 1459759, 1465399, 1466641, 1468987,
1305 1469194, 1472207, 1482627, 1483339, 1485365, 1486047, 1486667,
1306 1488403, 1489411, 1492309, 1496541, 1497067, 1497238, 1503593,
1307 1507121, 1507857, 1508638, 1511653, 1512118, 1512745, 1514071,
1308 1515839, 1516262, 1518005, 1519341, 1519817, 1524733, 1525107,
1309 1526657, 1529099, 1531309, 1532795, 1533433, 1536055, 1536639,
1310 1542863, 1544491, 1548339, 1550485, 1552015, 1552661, 1554925,
1311 1557905, 1563419, 1565011, 1566461, 1567247, 1571735, 1575917,
1312 1582009, 1582559, 1583023, 1585285, 1586126, 1586899, 1586967,
1313 1588533, 1589483, 1600313, 1602403, 1604986, 1605837, 1608717,
1314 1612682, 1616197, 1616402, 1617122, 1618211, 1619527, 1622695,
1315 1628889, 1629887, 1635622, 1638505, 1639187, 1641809, 1642911,
1316 1644155, 1655121, 1657415, 1657466, 1661569, 1663705, 1670053,
1317 1671241, 1671549, 1675333, 1681691, 1682681, 1682841, 1685509,
1318 1687829, 1689569, 1690715, 1691701, 1692197, 1694173, 1694407,
1319 1694615, 1698087, 1698619, 1701343, 1701931, 1702115, 1702851,
1320 1706215, 1709659, 1711435, 1711463, 1718105, 1719663, 1721573,
1321 1722202, 1723025, 1727878, 1729937, 1731785, 1734605, 1735327,
1322 1739881, 1742293, 1750507, 1751629, 1753037, 1756645, 1758531,
1323 1760213, 1761319, 1764215, 1769261, 1771774, 1772855, 1773593,
1324 1773669, 1776481, 1778498, 1781143, 1786499, 1790921, 1791946,
1325 1792021, 1794611, 1794759, 1798899, 1801751, 1804231, 1804786,
1326 1806091, 1807117, 1811485, 1812446, 1813407, 1818677, 1820289,
1327 1820523, 1822139, 1823885, 1825579, 1826246, 1834963, 1836595,
1328 1837585, 1843565, 1847042, 1847677, 1849243, 1852201, 1852257,
1329 1852462, 1856261, 1857505, 1859435, 1869647, 1870297, 1872431,
1330 1877953, 1878755, 1879537, 1885885, 1886943, 1891279, 1894487,
1331 1896455, 1901211, 1901501, 1907689, 1908386, 1910051, 1916291,
1332 1920983, 1922961, 1924814, 1929254, 1930649, 1933459, 1936415,
1333 1936765, 1939751, 1944103, 1945349, 1951481, 1952194, 1955635,
1334 1956449, 1957703, 1958887, 1964515, 1965417, 1968533, 1971813,
1335 1973699, 1975103, 1975467, 1976777, 1978205, 1979939, 1980218,
1336 1982251, 1984279, 1987453, 1988623, 1994707, 1999283, 1999591,
1337 1999898, 2002481, 2002847, 2007467, 2009451, 2011373, 2017077,
1338 2019127, 2019719, 2022605, 2024751, 2026749, 2032329, 2040353,
1339 2044471, 2046655, 2048449, 2050841, 2052501, 2055579, 2056223,
1340 2060455, 2062306, 2066801, 2070107, 2070335, 2071771, 2073065,
1341 2076035, 2079511, 2092717, 2099785, 2100659, 2111317, 2114698,
1342 2116543, 2117843, 2120393, 2121843, 2125207, 2126465, 2132273,
1343 2132902, 2137822, 2141737, 2145913, 2146145, 2146981, 2147073,
1344 2150477, 2153437, 2155657, 2164389, 2167055, 2167957, 2170679,
1345 2172603, 2172821, 2176895, 2181067, 2183555, 2188021, 2189031,
1346 2192065, 2193763, 2200429, 2203791, 2204534, 2207161, 2209339,
1347 2210351, 2210935, 2212873, 2215457, 2215763, 2216035, 2219399,
1348 2221271, 2224445, 2234837, 2237411, 2238067, 2241265, 2242454,
1349 2245857, 2250895, 2257333, 2262957, 2266627, 2268177, 2271773,
1350 2274393, 2275229, 2284997, 2285258, 2289443, 2293907, 2294155,
1351 2301817, 2302658, 2304323, 2311205, 2313649, 2316955, 2320381,
1352 2329187, 2330038, 2334145, 2336191, 2338919, 2340503, 2343314,
1353 2345057, 2357381, 2359379, 2362789, 2363153, 2363486, 2367001,
1354 2368333, 2368865, 2372461, 2377855, 2379189, 2382961, 2386241,
1355 2388701, 2396009, 2397106, 2399567, 2405347, 2407479, 2412235,
1356 2416193, 2419023, 2422109, 2424499, 2424603, 2425683, 2428447,
1357 2429045, 2442862, 2444923, 2445773, 2453433, 2459303, 2461462,
1358 2466827, 2469901, 2471045, 2473211, 2476441, 2476745, 2481997,
1359 2482597, 2486199, 2494235, 2497759, 2501369, 2501917, 2505919,
1360 2513095, 2519959, 2532235, 2536079, 2541845, 2542903, 2544971,
1361 2551594, 2553439, 2561065, 2571233, 2572619, 2580565, 2580991,
1362 2581934, 2582827, 2583303, 2585843, 2589151, 2591817, 2592629,
1363 2598977, 2600507, 2603209, 2611037, 2612233, 2614447, 2618629,
1364 2618998, 2624369, 2630257, 2631218, 2636953, 2640239, 2641171,
1365 2644213, 2644945, 2647555, 2648657, 2655037, 2657661, 2667747,
1366 2673539, 2674463, 2676395, 2678741, 2681195, 2681869, 2687919,
1367 2688907, 2700451, 2705329, 2707063, 2707179, 2709239, 2710981,
1368 2711471, 2714815, 2718669, 2732561, 2733511, 2737889, 2738185,
1369 2739369, 2750321, 2758535, 2760953, 2764177, 2766049, 2767787,
1370 2769487, 2770563, 2771431, 2778693, 2785915, 2791613, 2792387,
1371 2798939, 2804735, 2816033, 2820103, 2827442, 2830145, 2831323,
1372 2831647, 2838085, 2857921, 2861062, 2862579, 2865317, 2866105,
1373 2868767, 2884637, 2886689, 2887221, 2893757, 2893881, 2898469,
1374 2902291, 2904739, 2906449, 2915674, 2922029, 2926703, 2928291,
1375 2930885, 2937874, 2939699, 2951069, 2951897, 2956115, 2970327,
1376 2977051, 2986159, 2988073, 2991265, 2997383, 2997797, 2998165,
1377 2999847, 3004603, 3005249, 3007693, 3022345, 3022438, 3025541,
1378 3027973, 3033815, 3033877, 3034205, 3047653, 3055019, 3056977,
1379 3066613, 3068891, 3078251, 3082729, 3085771, 3087095, 3090277,
1380 3093409, 3093459, 3095309, 3101527, 3102449, 3114223, 3120469,
1381 3124979, 3130231, 3137771, 3140486, 3144905, 3147331, 3151253,
1382 3154591, 3159637, 3160729, 3168685, 3170366, 3172047, 3192101,
1383 3197207, 3199353, 3204935, 3206269, 3206733, 3211817, 3230882,
1384 3234199, 3235687, 3243737, 3246473, 3255482, 3267803, 3268967,
1385 3271021, 3275695, 3276971, 3286355, 3292445, 3295331, 3299179,
1386 3306801, 3307837, 3308987, 3316411, 3328039, 3328997, 3332849,
1387 3339611, 3346109, 3349085, 3361795, 3363681, 3372149, 3374585,
1388 3377129, 3377543, 3377915, 3379321, 3381487, 3387215, 3390361,
1389 3400663, 3411067, 3414433, 3415997, 3420835, 3424361, 3425965,
1390 3427391, 3427887, 3445403, 3453839, 3453987, 3457817, 3459463,
1391 3467443, 3479998, 3487583, 3487627, 3491929, 3494413, 3495057,
1392 3502969, 3514971, 3516263, 3518333, 3531359, 3536405, 3537193,
1393 3542851, 3545129, 3545229, 3558583, 3569929, 3578455, 3585491,
1394 3595659, 3604711, 3607315, 3607426, 3610477, 3612791, 3614693,
1395 3617141, 3621005, 3624179, 3628411, 3637933, 3646313, 3648385,
1396 3651583, 3655847, 3660151, 3662497, 3664293, 3665441, 3672985,
1397 3683017, 3692193, 3693157, 3702923, 3706577, 3719573, 3728153,
1398 3735407, 3743095, 3744653, 3746953, 3748322, 3753673, 3765157,
1399 3771595, 3779309, 3779831, 3780295, 3789227, 3790655, 3800741,
1400 3809927, 3816131, 3817879, 3827227, 3827391, 3833459, 3856214,
1401 3860173, 3861949, 3864619, 3872901, 3881273, 3900281, 3915083,
1402 3926629, 3928497, 3929941, 3933137, 3946813, 3946827, 3962203,
1403 3965315, 3973319, 3985267, 3993743, 3997418, 4012465, 4012547,
1404 4024823, 4031261, 4031705, 4035239, 4039951, 4040509, 4041005,
1405 4042687, 4042805, 4050553, 4055843, 4081181, 4086511, 4089055,
1406 4090757, 4093379, 4103239, 4121741, 4131833, 4133261, 4138561,
1407 4143665, 4148947, 4153546, 4170751, 4172201, 4180963, 4187771,
1408 4197431, 4219007, 4221811, 4231283, 4241163, 4247341, 4247887,
1409 4260113, 4260883, 4273102, 4274803, 4277489, 4291593, 4302397,
1410 4305505, 4309279, 4314311, 4319695, 4321933, 4325633, 4352051,
1411 4358341, 4373511, 4375681, 4392287, 4395859, 4402867, 4405999,
1412 4406811, 4416787, 4425499, 4429435, 4433549, 4436159, 4446245,
1413 4449731, 4458389, 4459939, 4467073, 4479865, 4486909, 4502641,
1414 4509973, 4511965, 4531115, 4533001, 4533657, 4554737, 4560743,
1415 4565615, 4567277, 4574953, 4585973, 4586959, 4600897, 4602578,
1416 4609423, 4617605, 4617931, 4619527, 4621643, 4631155, 4632959,
1417 4672841, 4678223, 4688719, 4706513, 4709861, 4710729, 4721393,
1418 4721519, 4724419, 4729081, 4739311, 4742101, 4755549, 4757297,
1419 4767521, 4770965, 4775147, 4777721, 4780723, 4789169, 4793269,
1420 4796351, 4803821, 4812035, 4821877, 4822543, 4823135, 4829513,
1421 4834531, 4846323, 4864057, 4871087, 4875277, 4880485, 4883223,
1422 4884763, 4890467, 4893779, 4903301, 4930783, 4936409, 4940377,
1423 4950545, 4950967, 4951969, 4955143, 4999745, 5009837, 5034679,
1424 5035589, 5047141, 5050241, 5069407, 5084651, 5097301, 5100154,
1425 5107739, 5135119, 5142179, 5143333, 5155765, 5161217, 5178013,
1426 5211503, 5219997, 5222587, 5231281, 5240333, 5258773, 5271649,
1427 5276851, 5280233, 5286745, 5292413, 5296877, 5306917, 5316979,
1428 5321303, 5323153, 5332255, 5343161, 5343899, 5344555, 5357183,
1429 5382871, 5389969, 5397691, 5411139, 5436299, 5448839, 5459441,
1430 5487317, 5511335, 5517163, 5528809, 5538101, 5551441, 5570917,
1431 5579977, 5590127, 5592059, 5606135, 5617451, 5621447, 5622483,
1432 5634343, 5635211, 5644387, 5651522, 5656597, 5657407, 5659927,
1433 5677243, 5690267, 5699369, 5713145, 5724677, 5748431, 5756645,
1434 5761691, 5768419, 5783557, 5784321, 5787191, 5801131, 5818879,
1435 5824621, 5825095, 5827289, 5837009, 5841557, 5852327, 5858285,
1436 5888069, 5891843, 5896579, 5897657, 5898629, 5908715, 5920039,
1437 5964803, 5972593, 5975653, 5992765, 5996127, 5998331, 6009133,
1438 6024007, 6024083, 6027707, 6047573, 6068777, 6107155, 6129013,
1439 6153655, 6159049, 6166241, 6170417, 6182423, 6201209, 6224743,
1440 6226319, 6229171, 6230319, 6243787, 6244423, 6247789, 6268121,
1441 6271811, 6298177, 6305431, 6315517, 6316751, 6322079, 6343561,
1442 6378985, 6387767, 6391861, 6409653, 6412009, 6424717, 6439537,
1443 6447947, 6454835, 6464647, 6468037, 6483617, 6485011, 6503453,
1444 6528799, 6534047, 6547495, 6578045, 6580783, 6583811, 6585001,
1445 6591499, 6595963, 6608797, 6649159, 6658769, 6674393, 6675251,
1446 6679351, 6704017, 6709469, 6725897, 6736849, 6752389, 6791609,
1447 6832679, 6876857, 6883643, 6903867, 6918791, 6930763, 6958627,
1448 6971107, 6979061, 6982823, 6999643, 7005547, 7039139, 7048421,
1449 7050857, 7058519, 7065853, 7068605, 7119281, 7132231, 7139269,
1450 7152655, 7166363, 7172191, 7206529, 7218071, 7229981, 7243379,
1451 7289185, 7292311, 7296893, 7344685, 7358377, 7359707, 7367987,
1452 7379021, 7395949, 7401443, 7424087, 7431413, 7434817, 7451873,
1453 7453021, 7464397, 7465157, 7482377, 7517179, 7525837, 7534519,
1454 7537123, 7556095, 7563113, 7620301, 7624109, 7650231, 7653043,
1455 7685899, 7715869, 7777289, 7780091, 7795229, 7800127, 7829729,
1456 7848589, 7851215, 7858097, 7867273, 7872601, 7877647, 7887919,
1457 7888933, 7903283, 7925915, 7936093, 7947563, 7966211, 7979183,
1458 7998403, 8026447, 8054141, 8059303, 8077205, 8080567, 8084707,
1459 8115389, 8138705, 8155133, 8155351, 8176753, 8201599, 8234809,
1460 8238581, 8258753, 8272201, 8297509, 8316649, 8329847, 8332831,
1461 8339441, 8389871, 8401553, 8420933, 8448337, 8452891, 8477283,
1462 8480399, 8516807, 8544523, 8550017, 8553401, 8560357, 8609599,
1463 8615117, 8642273, 8675071, 8699995, 8707621, 8717789, 8723693,
1464 8740667, 8773921, 8782579, 8804429, 8806759, 8827423, 8869751,
1465 8890211, 8894171, 8907509, 8909119, 8930579, 8992813, 8995921,
1466 9001687, 9018565, 9035849, 9036769, 9099743, 9116063, 9166493,
1467 9194653, 9209263, 9230371, 9303983, 9309829, 9370805, 9379019,
1468 9389971, 9411631, 9414613, 9472111, 9478093, 9485801, 9503329,
1469 9523541, 9536099, 9549761, 9613007, 9622493, 9640535, 9649489,
1470 9659011, 9732047, 9744757, 9781739, 9806147, 9828767, 9855703,
1471 9872267, 9896047, 9926323, 9965009, 9968453, 9993545, 10013717,
1472 10044353, 10050791, 10060709, 10083499, 10158731, 10170301,
1473 10188541, 10193761, 10204859, 10232447, 10275973, 10282559,
1474 10309819, 10314971, 10316297, 10354117, 10383865, 10405103,
1475 10432409, 10482433, 10496123, 10506613, 10511293, 10553113,
1476 10578533, 10586477, 10610897, 10631543, 10652251, 10657993,
1477 10682755, 10692677, 10737067, 10754551, 10773529, 10784723,
1478 10891199, 10896779, 10938133, 10991701, 10999439, 11096281,
1479 11137363, 11173607, 11194313, 11231207, 11233237, 11308087,
1480 11342683, 11366807, 11386889, 11393027, 11394187, 11430103,
1481 11473481, 11473589, 11484911, 11506445, 11516531, 11528497,
1482 11529979, 11560237, 11630839, 11647649, 11648281, 11692487,
1483 11730961, 11731109, 11758021, 11780899, 11870599, 11950639,
1484 12005773, 12007943, 12023777, 12041003, 12124937, 12166747,
1485 12178753, 12179993, 12264871, 12311417, 12333497, 12404509,
1486 12447641, 12488149, 12511291, 12540151, 12568919, 12595651,
1487 12625991, 12664619, 12689261, 12713977, 12726523, 12750385,
1488 12774821, 12815209, 12823423, 12836077, 12853003, 12871417,
1489 12888227, 12901781, 12999173, 12999337, 13018667, 13055191,
1490 13119127, 13184083, 13306099, 13404989, 13435741, 13438339,
1491 13482071, 13496749, 13538041, 13590803, 13598129, 13642381,
1492 13707797, 13739417, 13745537, 13759819, 13791559, 13863863,
1493 13895843, 13902787, 13955549, 13957343, 13990963, 14033767,
1494 14088461, 14128805, 14200637, 14223761, 14329471, 14332061,
1495 14365121, 14404489, 14466563, 14471699, 14537411, 14575951,
1496 14638717, 14686963, 14742701, 14854177, 14955857, 14967277,
1497 15060079, 15068197, 15117233, 15145247, 15231541, 15247367,
1498 15320479, 15340681, 15355819, 15362659, 15405791, 15464257,
1499 15523091, 15538409, 15550931, 15581189, 15699857, 15735841,
1500 15745927, 15759439, 15878603, 15881473, 15999503, 16036207,
1501 16109023, 16158307, 16221281, 16267463, 16360919, 16398659,
1502 16414841, 16460893, 16585361, 16593649, 16623409, 16656623,
1503 16782571, 16831853, 16895731, 16976747, 16999133, 17023487,
1504 17102917, 17145467, 17218237, 17272673, 17349337, 17389357,
1505 17437013, 17529601, 17546899, 17596127, 17598389, 17769851,
1506 17850539, 17905151, 17974933, 18129667, 18171487, 18240449,
1507 18285733, 18327913, 18378373, 18457339, 18545843, 18588623,
1508 18596903, 18738539, 18809653, 18812071, 18951881, 18999031,
1509 19060859, 19096181, 19139989, 19424693, 19498411, 19572593,
1510 19591907, 19645847, 19780327, 19805323, 19840843, 19870597,
1511 19918169, 20089631, 20262569, 20309309, 20375401, 20413159,
1512 20452727, 20607379, 20615771, 20755039, 20764327, 20843129,
1513 20922427, 20943073, 21000733, 21001829, 21160633, 21209177,
1514 21240983, 21303313, 21688549, 21709951, 21875251, 21925711,
1515 21946439, 21985799, 22135361, 22186421, 22261483, 22365353,
1516 22450231, 22453117, 22619987, 22772507, 22844503, 22998827,
1517 23207189, 23272297, 23383889, 23437829, 23448269, 23502061,
1518 23716519, 24033257, 24240143, 24319027, 24364093, 24528373,
1519 24584953, 24783229, 24877283, 24880481, 24971929, 24996571,
1520 25054231, 25065391, 25314179, 25352141, 25690723, 25788221,
1521 25983217, 26169397, 26280467, 26480567, 26694131, 26782109,
1522 26795437, 26860699, 26948111, 26998049, 27180089, 27462497,
1523 27566719, 27671597, 27698903, 27775163, 27909803, 27974183,
1524 28050847, 28092913, 28306813, 28713161, 28998521, 29343331,
1525 29579983, 29692241, 29834617, 29903437, 29916757, 30118477,
1526 30259007, 30663121, 30693379, 30927079, 30998419, 31083371,
1527 31860737, 31965743, 32515583, 32777819, 32902213, 33059981,
1528 33136241, 33151001, 33388541, 33530251, 33785551, 33978053,
1529 34170277, 34270547, 34758037, 35305141, 35421499, 35609059,
1530 35691199, 36115589, 36321367, 36459209, 36634033, 36734893,
1531 36998113, 37155143, 37438043, 37864361, 37975471, 38152661,
1532 39121913, 39458687, 39549707, 40019977, 40594469, 40783879,
1533 40997909, 41485399, 42277273, 42599173, 43105703, 43351309,
1534 43724491, 43825351, 44346461, 45192947, 45537047, 45970307,
1535 46847789, 47204489, 47765779, 48037937, 48451463, 48677533,
1536 49140673, 50078671, 50459971, 52307677, 52929647, 53689459,
1537 53939969, 54350669, 55915103, 57962561, 58098991, 58651771,
1538 59771317, 60226417, 61959979, 64379963, 64992503, 66233081,
1539 66737381, 71339959, 73952233, 76840601, 79052387, 81947069,
1540 85147693, 87598591, 94352849, 104553157
1544 short values[] = {
1545 166, 322, 165, 310, 164, 2467, 154, 2466, 163, 3325, 321, 162,
1546 3324, 2464, 2401, 161, 2465, 3314, 160, 2461, 159, 2400, 320,
1547 3323, 153, 2457, 6185, 2463, 3303, 2452, 158, 3322, 157, 298,
1548 2460, 2446, 152, 3292, 156, 2398, 3321, 2462, 5965, 155, 6184,
1549 309, 2456, 3320, 2439, 3313, 2395, 2459, 2431, 2335, 2451, 6181,
1550 3319, 3281, 2422, 151, 2391, 2445, 6183, 2399, 2455, 319, 3291,
1551 2412, 5964, 6175, 2386, 3318, 5745, 150, 2450, 6180, 3312, 3317,
1552 297, 6165, 2458, 2438, 5961, 2430, 2380, 142, 2444, 3311, 308,
1553 3316, 318, 286, 149, 6150, 5963, 6174, 3259, 5525, 3315, 2421,
1554 2397, 2454, 5955, 148, 6182, 2373, 3302, 6164, 2437, 5960, 2411,
1555 5744, 2449, 2365, 3310, 5945, 6178, 2429, 6129, 2334, 2394, 2453,
1556 6179, 6101, 147, 141, 3309, 6149, 5741, 2448, 2356, 2443, 3215,
1557 2269, 5930, 2420, 2396, 5954, 3290, 3248, 3280, 2346, 6065, 6172,
1558 2390, 2410, 3308, 317, 146, 6173, 2442, 5944, 3258, 6128, 3270,
1559 2393, 6020, 3301, 6162, 145, 3289, 5735, 2436, 2385, 5958, 2447,
1560 6100, 5909, 2333, 6169, 6163, 2428, 2332, 5881, 5725, 6177, 316,
1561 5929, 3307, 3300, 6159, 144, 2435, 6147, 3204, 285, 3306, 2379,
1562 6064, 2441, 2389, 6148, 2427, 5524, 2329, 2419, 307, 143, 5845,
1563 3288, 5952, 3214, 3257, 2268, 6019, 5710, 5962, 3160, 2440, 6144,
1564 2384, 2409, 5305, 5908, 3269, 5800, 3305, 3287, 6171, 5942, 5521,
1565 3299, 6126, 2418, 5743, 2392, 6155, 5880, 2372, 2434, 5949, 6176,
1566 6127, 6098, 5959, 3304, 2331, 6161, 2364, 2426, 315, 2325, 2408,
1567 3298, 3094, 6099, 2378, 5689, 140, 2433, 6168, 5939, 3286, 6123,
1568 5740, 5927, 306, 5661, 5844, 6140, 2425, 3213, 2320, 130, 6095,
1569 3279, 2328, 6062, 6158, 2355, 5515, 2417, 2388, 6146, 5085, 5304,
1570 2267, 5799, 3297, 6063, 3149, 6170, 6135, 274, 2432, 5953, 5924,
1571 5523, 6017, 3247, 2371, 2345, 5625, 2407, 5505, 2416, 2383, 3285,
1572 2424, 3278, 6018, 5906, 2314, 6059, 5742, 3159, 5935, 6160, 2363,
1573 6119, 5734, 2387, 6143, 5943, 3237, 3284, 296, 5878, 5580, 6167,
1574 2406, 3256, 6091, 3017, 5520, 2324, 6125, 6014, 5957, 6154, 3083,
1575 3296, 6114, 5724, 2382, 314, 5490, 5903, 2415, 6097, 5739, 2377,
1576 139, 6157, 3295, 2354, 5920, 6086, 6145, 5084, 2319, 5738, 2423,
1577 129, 3093, 5928, 2307, 3283, 5875, 5842, 3212, 3277, 6122, 2405,
1578 2266, 6055, 3203, 3246, 313, 2344, 2299, 305, 6139, 5915, 2203,
1579 6108, 3282, 5709, 6094, 2376, 5522, 3158, 5797, 138, 6061, 3255,
1580 3294, 5514, 6010, 6142, 3276, 5951, 6050, 3193, 5303, 5469, 6080,
1581 284, 2414, 2370, 2313, 5839, 4865, 2381, 6134, 262, 5899, 2263,
1582 5733, 6124, 5956, 6016, 6153, 3236, 5441, 5907, 2413, 3254, 2362,
1583 3293, 2290, 5504, 6005, 5732, 5941, 5301, 5871, 2404, 3006, 6096,
1584 5519, 5794, 6058, 2330, 6166, 304, 5879, 6118, 5894, 5948, 5723,
1585 2929, 3092, 3275, 5688, 2403, 2369, 6044, 2280, 5722, 6090, 6121,
1586 2375, 3016, 5866, 137, 3202, 6013, 5737, 6073, 4645, 5660, 6156,
1587 2306, 5405, 2361, 6138, 312, 2353, 6113, 5729, 5938, 3253, 5081,
1588 5489, 6093, 5999, 2265, 5835, 2327, 5926, 6060, 3211, 2830, 2298,
1589 5843, 2259, 6085, 5950, 2374, 5083, 3226, 136, 273, 128, 5888,
1590 5360, 5708, 2402, 4864, 2343, 6133, 5295, 5719, 5513, 5790, 6054,
1591 6015, 5707, 5830, 3192, 5302, 3157, 3274, 5860, 3210, 6037, 5798,
1592 5624, 2352, 3148, 2254, 6141, 5940, 2137, 2202, 2368, 6107, 2262,
1593 311, 5923, 6057, 3268, 3273, 6029, 5285, 6117, 2289, 5947, 6009,
1594 5503, 5518, 5785, 5731, 3252, 6049, 3245, 5468, 6152, 2360, 6079,
1595 5992, 303, 5579, 5905, 135, 2342, 3138, 5934, 6089, 3015, 2323,
1596 2367, 6012, 5704, 3251, 3156, 295, 2918, 4644, 5440, 5687, 5984,
1597 5824, 5877, 2279, 6112, 3209, 5937, 6004, 5721, 5300, 2248, 4425,
1598 3091, 2359, 3267, 5925, 5686, 5715, 5853, 3082, 5659, 3272, 2720,
1599 6084, 3182, 5728, 6120, 2318, 5270, 3201, 6151, 2928, 5488, 5902,
1600 5779, 2351, 6043, 5658, 6137, 5075, 2819, 2258, 5919, 6053, 6092,
1601 5082, 3225, 2326, 3250, 6072, 2366, 3072, 3271, 134, 5404, 5874,
1602 5975, 3147, 5841, 5512, 3244, 5718, 5080, 2200, 6106, 3090, 2341,
1603 5922, 5683, 5998, 2264, 5706, 2350, 4861, 2829, 6132, 2358, 5065,
1604 5817, 133, 5623, 6008, 5700, 2253, 3208, 250, 5914, 6048, 261,
1605 3249, 2241, 6078, 2201, 5359, 5904, 2312, 5655, 2599, 4863, 5796,
1606 6136, 5933, 5622, 5502, 5294, 5809, 3243, 3266, 3207, 5517, 2340,
1607 5249, 294, 6056, 3235, 2233, 5467, 5772, 6036, 5876, 5578, 5838,
1608 5509, 3137, 6116, 6003, 5695, 5946, 3155, 2136, 5298, 5898, 4424,
1609 2261, 5703, 5221, 4855, 5577, 302, 6131, 3081, 5439, 5764, 6028,
1610 2349, 5284, 132, 6088, 3265, 3014, 5050, 2322, 6011, 2927, 5299,
1611 2247, 5870, 5901, 5991, 3005, 4641, 6042, 5685, 5793, 5619, 5499,
1612 5714, 6111, 2357, 5936, 3089, 5918, 2709, 5679, 5487, 5893, 3181,
1613 3206, 5736, 3242, 6071, 4205, 4643, 2305, 2224, 5873, 5983, 2339,
1614 5657, 131, 6115, 5840, 3200, 6083, 301, 5078, 2317, 5651, 5997,
1615 127, 2995, 5865, 3154, 5574, 5185, 2828, 3071, 2297, 5403, 5755,
1616 2719, 6087, 238, 5511, 3013, 5913, 5674, 2321, 6052, 3205, 5269,
1617 5079, 2199, 2214, 4635, 3264, 5682, 5834, 3127, 5795, 3146, 6110,
1618 5074, 5292, 3985, 3199, 2348, 2257, 118, 5484, 5699, 6105, 5029,
1619 5646, 2071, 3191, 5921, 3224, 6130, 5140, 2240, 5887, 6035, 5358,
1620 5654, 2588, 5837, 5974, 4862, 5621, 6082, 6007, 5501, 2134, 5293,
1621 2316, 6047, 2347, 5897, 126, 5466, 5789, 6077, 5001, 5615, 3241,
1622 2311, 5829, 5495, 4860, 2232, 5932, 5859, 2338, 5064, 6027, 5282,
1623 2288, 5508, 2252, 6051, 5730, 5694, 4845, 2135, 5297, 5869, 3088,
1624 272, 5990, 3004, 5668, 5438, 3153, 5792, 2598, 3240, 3145, 5576,
1625 6002, 2337, 5283, 2197, 6104, 5892, 5570, 4421, 3198, 5516, 5784,
1626 5248, 5610, 4204, 3061, 3263, 5982, 5640, 3080, 3152, 2278, 3012,
1627 5618, 293, 6006, 5498, 6046, 5720, 4625, 5463, 300, 5678, 2926,
1628 4423, 6076, 5864, 5486, 5900, 2310, 6041, 6109, 5220, 4965, 4854,
1629 5931, 2917, 4642, 3262, 2223, 5823, 5480, 2718, 5727, 5917, 5049,
1630 5565, 5267, 5077, 3234, 2246, 5435, 5650, 6070, 5833, 2994, 4640,
1631 2304, 4830, 5402, 5872, 5573, 6081, 3011, 5072, 3239, 3984, 2315,
1632 5852, 6001, 125, 3171, 2336, 3765, 2005, 4415, 5673, 3180, 5996,
1633 283, 4920, 5268, 3087, 5886, 2907, 2213, 3079, 2827, 5778, 5973,
1634 3126, 5604, 2296, 3151, 5475, 5073, 5291, 5717, 2818, 5912, 2925,
1635 5788, 117, 5483, 3197, 5645, 5357, 249, 6040, 5705, 5828, 4858,
1636 3238, 3086, 5184, 5858, 5633, 5062, 292, 2193, 3261, 6103, 299,
1637 124, 5916, 5510, 2133, 3190, 2198, 6069, 5465, 4634, 2597, 2303,
1638 5399, 5559, 3196, 5614, 6034, 3150, 5494, 5836, 4859, 6045, 2808,
1639 5063, 5281, 5816, 5459, 2131, 6075, 226, 5896, 2309, 5028, 5995,
1640 2260, 5783, 5246, 2070, 3144, 5139, 2239, 4610, 2826, 5667, 5437,
1641 3260, 4809, 2295, 3545, 6026, 3136, 2188, 6102, 2287, 5911, 5500,
1642 3233, 5808, 5431, 2984, 2196, 5868, 5354, 5569, 5989, 5702, 3003,
1643 5000, 5218, 4852, 5247, 5609, 5791, 6000, 2916, 3060, 2231, 3085,
1644 5639, 5289, 5771, 5822, 5597, 4781, 4405, 5454, 5507, 6074, 5047,
1645 5891, 2308, 4844, 260, 5296, 123, 3078, 5462, 4201, 4422, 4638,
1646 6033, 5684, 5981, 5219, 3195, 4853, 2277, 5713, 5851, 106, 2924,
1647 5763, 5589, 3232, 5479, 3764, 5895, 5426, 6039, 282, 4420, 5048,
1648 5863, 5564, 5266, 4203, 3084, 5434, 5777, 5552, 4639, 6025, 5656,
1649 5279, 3143, 5401, 2286, 2717, 4390, 5071, 5497, 2817, 5726, 6068,
1650 2182, 3170, 3010, 4624, 2708, 2302, 5395, 5867, 237, 5988, 3002,
1651 5485, 5832, 3194, 4964, 5182, 4589, 2906, 3070, 5069, 3981, 2222,
1652 5544, 5603, 2923, 5994, 2256, 4745, 5474, 5890, 6038, 5076, 271,
1653 2825, 5448, 3009, 4195, 4632, 2294, 5681, 5885, 5980, 291, 5356,
1654 4829, 2276, 5972, 4857, 5910, 4561, 5183, 3983, 5632, 5061, 5815,
1655 2192, 5716, 5754, 5350, 6067, 5698, 2698, 2004, 5026, 4414, 2068,
1656 2301, 5390, 5862, 5787, 4919, 5137, 3231, 5827, 122, 5420, 3116,
1657 2212, 4633, 5653, 5857, 3544, 5059, 5398, 5558, 3125, 4700, 2716,
1658 5620, 5993, 2251, 3189, 5290, 2807, 5807, 5264, 5458, 2130, 6032,
1659 1939, 2824, 116, 5482, 4998, 5027, 5831, 2293, 5245, 2069, 2596,
1660 5138, 121, 2127, 3077, 5770, 3975, 3142, 2587, 2255, 5535, 2187,
1661 5345, 5693, 4842, 2132, 3223, 5782, 2175, 2922, 5430, 2983, 6024,
1662 5884, 5464, 5275, 3008, 5353, 4999, 2285, 5217, 5971, 4851, 5575,
1663 5493, 3135, 5762, 4525, 5288, 3188, 5280, 5596, 3141, 5987, 3001,
1664 5453, 4418, 6031, 5786, 5046, 5701, 5826, 4843, 2896, 2167, 4849,
1665 6066, 4609, 2915, 2300, 4637, 5384, 5856, 2122, 5436, 4808, 2577,
1666 5617, 5821, 5889, 2250, 5044, 105, 4185, 4622, 5588, 2707, 5677,
1667 5979, 2195, 5425, 3007, 2245, 2275, 6023, 4419, 3050, 2595, 4962,
1668 3230, 2284, 5413, 4202, 2823, 3059, 4480, 5712, 120, 5850, 2292,
1669 5551, 4780, 5278, 4404, 5861, 3761, 5986, 3000, 3179, 5781, 5243,
1670 2181, 4369, 4623, 5649, 5461, 5339, 5394, 4200, 2993, 4827, 2715,
1671 5572, 5776, 3229, 4963, 3134, 5181, 2797, 3076, 5260, 5068, 2816,
1672 5543, 5753, 5478, 3763, 4170, 2002, 3140, 4412, 5672, 5978, 4917,
1673 3187, 2274, 5265, 5215, 214, 3105, 3965, 5447, 4341, 2914, 119,
1674 2158, 4631, 6030, 5433, 281, 3069, 5820, 4828, 5400, 4389, 5070,
1675 3075, 3222, 3982, 2116, 5883, 3169, 5349, 115, 2244, 2697, 2003,
1676 5025, 5644, 4413, 5970, 2067, 4629, 5389, 5680, 4918, 2714, 5136,
1677 2921, 4588, 5419, 3115, 5711, 290, 5377, 5849, 6022, 3980, 5255,
1678 2586, 5058, 5814, 2283, 3139, 3755, 4744, 5473, 5697, 5825, 259,
1679 5023, 2065, 5263, 5855, 2148, 5055, 4194, 5985, 2238, 225, 3950,
1680 4997, 5613, 5775, 5355, 2249, 5652, 3541, 4856, 2822, 4560, 3228,
1681 2126, 2291, 5060, 5369, 2815, 3221, 2191, 5806, 5534, 5882, 2594,
1682 5344, 4995, 5969, 4841, 2174, 4149, 4607, 5179, 5332, 5666, 5977,
1683 2230, 5274, 3068, 4806, 4305, 3543, 5769, 5397, 2273, 4699, 5506,
1684 202, 5780, 5239, 289, 5692, 3074, 5457, 4839, 2129, 2194, 1938,
1685 5854, 5568, 3039, 4417, 3186, 5244, 248, 5608, 2895, 2166, 280,
1686 4848, 3227, 2920, 4608, 5324, 5638, 3974, 5383, 2121, 4778, 5813,
1687 4807, 5761, 4402, 2713, 2576, 2186, 5696, 2109, 5211, 2061, 2593,
1688 2973, 5043, 2913, 4621, 5134, 5429, 2237, 4198, 2982, 4260, 5819,
1689 5352, 3185, 3049, 3535, 5216, 4961, 4850, 5412, 5040, 5616, 3929,
1690 6021, 5496, 3073, 5234, 4524, 5287, 2243, 2282, 2687, 5805, 4779,
1691 4403, 5452, 4619, 2706, 5676, 5045, 2101, 5563, 3220, 5242, 3133,
1692 5848, 4959, 2919, 2999, 2229, 5338, 4199, 4636, 5768, 5968, 4826,
1693 2221, 3745, 4387, 3178, 2796, 5259, 5691, 2821, 5206, 4835, 104,
1694 4184, 3168, 2281, 3762, 2912, 2001, 5774, 5424, 4411, 5648, 2992,
1695 4916, 5818, 4824, 5214, 1873, 3104, 4586, 5571, 2814, 2905, 5976,
1696 2998, 5035, 2157, 3978, 4479, 2272, 5315, 5760, 5602, 5277, 4742,
1697 2242, 5752, 3760, 4388, 1999, 4409, 5671, 2115, 5175, 4914, 4192,
1698 2180, 4368, 3067, 5847, 5393, 2592, 2211, 4628, 3124, 3730, 3184,
1699 4121, 4558, 5180, 4587, 5631, 3177, 2820, 5376, 5067, 2190, 3979,
1700 5254, 2712, 2271, 4615, 4169, 2705, 5675, 4743, 5481, 5773, 5228,
1701 5022, 5643, 2064, 2092, 3964, 5446, 2147, 5054, 4340, 4193, 5812,
1702 4630, 2813, 2566, 2220, 5557, 4697, 3132, 2585, 5019, 94, 3901,
1703 4559, 2806, 5368, 5130, 2236, 2128, 2711, 5170, 1936, 5348, 288,
1704 5647, 3525, 236, 5024, 2991, 3219, 2066, 5388, 5200, 4820, 4994,
1705 5612, 3183, 5135, 2911, 5492, 4606, 5178, 5418, 5331, 3114, 3972,
1706 5804, 5967, 4805, 2997, 3542, 5057, 2185, 5751, 4698, 3754, 4991,
1707 1995, 1807, 2962, 5238, 5670, 2082, 2228, 5262, 4838, 279, 5767,
1708 1937, 3949, 4604, 2210, 3038, 4996, 5665, 5811, 3218, 3123, 4803,
1709 3540, 5690, 5846, 5014, 2056, 4085, 2125, 5323, 4522, 5286, 3973,
1710 5595, 5966, 4777, 5125, 4401, 3709, 2235, 2270, 114, 3176, 5343,
1711 2108, 5210, 5642, 2060, 3510, 5567, 2972, 4840, 2173, 5607, 4148,
1712 5133, 4197, 5759, 3058, 2591, 2996, 5273, 4304, 5637, 5803, 2584,
1713 4775, 4399, 5039, 2812, 4986, 103, 5233, 4182, 4523, 5587, 2686,
1714 2227, 4618, 190, 5460, 5766, 2885, 4416, 2100, 5611, 5491, 5164,
1715 2894, 2165, 4958, 4847, 4040, 4477, 3066, 5550, 2590, 5382, 3028,
1716 2120, 5276, 2704, 3131, 287, 5477, 3758, 4386, 4955, 3865, 5042,
1717 5205, 4834, 5562, 2179, 4183, 4366, 4620, 2219, 4600, 5664, 4259,
1718 5432, 5758, 5193, 4799, 3048, 3534, 4960, 4823, 3217, 213, 4585,
1719 5411, 3928, 4384, 5066, 5034, 3977, 4478, 5810, 5542, 5314, 4167,
1720 3130, 2710, 4741, 2990, 270, 5008, 3759, 2050, 1998, 5566, 4408,
1721 5241, 5119, 5174, 5606, 4913, 3962, 2234, 4338, 4191, 3057, 4367,
1722 4583, 5337, 2904, 5636, 3489, 5750, 2786, 4825, 3744, 4771, 1990,
1723 4395, 5601, 2703, 5669, 2910, 4557, 4739, 2795, 5472, 4910, 3820,
1724 5258, 5802, 4950, 3681, 2209, 4614, 2696, 4168, 2000, 3175, 4189,
1725 4410, 247, 4980, 2218, 5227, 4915, 3216, 5213, 2091, 1872, 3103,
1726 2226, 3113, 3963, 4339, 5765, 4555, 2156, 2565, 5630, 5056, 2589,
1727 4696, 113, 5476, 3752, 5018, 5641, 93, 2811, 2989, 4815, 2114,
1728 5129, 5561, 5261, 3645, 5169, 1935, 3947, 3174, 2583, 4627, 5199,
1729 3538, 4819, 5396, 5556, 5749, 5157, 3729, 82, 4694, 4120, 4380,
1730 2124, 3065, 3971, 5375, 5757, 4905, 2805, 5253, 5533, 5456, 258,
1731 3753, 4990, 2208, 3129, 1994, 1933, 201, 2961, 3122, 5021, 2172,
1732 2063, 2081, 4146, 4579, 2146, 5053, 2903, 5272, 3948, 4603, 4302,
1733 3969, 178, 4802, 5600, 3539, 5149, 4735, 112, 5471, 3900, 5013,
1734 3064, 2055, 2909, 4521, 5367, 4595, 5124, 2702, 5663, 5428, 2874,
1735 2043, 2981, 3524, 5351, 2582, 4944, 5112, 4993, 278, 2164, 4846,
1736 4147, 4605, 4551, 5177, 5330, 2217, 5629, 2119, 3461, 4804, 4303,
1737 4519, 2189, 2575, 5594, 4774, 3128, 4398, 5451, 1806, 5237, 4985,
1738 5605, 5041, 5801, 4181, 3056, 4837, 5635, 4257, 4973, 1741, 224,
1739 2035, 3037, 2884, 2951, 3047, 3532, 3173, 5555, 5104, 4690, 2225,
1740 5163, 3926, 2908, 4476, 4084, 5322, 2804, 3425, 3027, 4776, 5748,
1741 5455, 102, 4179, 4400, 3708, 5586, 1984, 3757, 1929, 5662, 5423,
1742 4794, 2107, 4899, 5209, 4954, 5240, 2059, 3509, 2810, 2971, 4365,
1743 5132, 2207, 4196, 4599, 2775, 4258, 4474, 3121, 3742, 5192, 4798,
1744 5549, 3533, 2184, 277, 5038, 5560, 5257, 2676, 3927, 4383, 5756,
1745 5232, 3063, 2685, 4166, 5427, 235, 111, 3600, 2980, 4363, 4617,
1746 5007, 5634, 2049, 5392, 3172, 4766, 2099, 5212, 1870, 4375, 3102,
1747 5118, 3961, 4957, 4337, 2155, 4039, 4582, 4515, 3167, 2581, 5593,
1748 2785, 3743, 4770, 5541, 1989, 4394, 5450, 4164, 4385, 4738, 4909,
1749 2113, 2809, 3864, 4574, 5204, 4949, 4833, 2701, 2902, 3959, 5445,
1750 4335, 4188, 4626, 4979, 5599, 4937, 2026, 5470, 3727, 4118, 4822,
1751 1871, 4584, 5095, 2216, 5033, 4554, 3976, 3062, 5252, 5313, 4175,
1752 5585, 3380, 3751, 4740, 5422, 5347, 2695, 1997, 5020, 4407, 2062,
1753 4814, 5387, 4546, 5173, 4912, 2940, 2700, 2145, 5628, 5052, 4190,
1754 3946, 2988, 5417, 269, 4470, 4788, 5548, 3488, 4929, 3537, 3166,
1755 5156, 3728, 3898, 81, 4693, 4119, 3749, 4556, 4379, 2215, 3819,
1756 4904, 5747, 3680, 1977, 2178, 4359, 4613, 2901, 3522, 5391, 5554,
1757 1932, 3944, 4892, 2016, 4992, 5226, 5598, 4145, 4730, 2090, 2555,
1758 3055, 5176, 2206, 4578, 2803, 2987, 3120, 2123, 4301, 2564, 4760,
1759 3968, 5540, 1675, 1924, 4695, 4160, 5148, 5017, 4734, 1804, 5532,
1760 5236, 92, 3899, 5342, 5128, 4836, 5746, 4594, 3644, 110, 3955,
1761 5444, 1969, 5168, 4143, 1934, 4331, 2873, 5627, 3036, 2042, 3523,
1762 4884, 2183, 4299, 5198, 4943, 5111, 4818, 4082, 2205, 4550, 3970,
1763 2580, 3119, 2979, 4518, 3706, 5346, 2694, 4989, 1993, 2106, 5208,
1764 1805, 2960, 2058, 3507, 5386, 5553, 2970, 4685, 2080, 5131, 2893,
1765 109, 4510, 5416, 3112, 4256, 4972, 189, 5592, 2802, 4602, 2034,
1766 2950, 5381, 3531, 5449, 2118, 4801, 5103, 4689, 2574, 1918, 5037,
1767 2665, 3925, 5012, 5231, 2054, 4083, 4520, 2579, 276, 3165, 5123,
1768 4178, 3707, 4616, 1983, 1928, 3940, 2098, 4254, 4793, 4898, 3508,
1769 268, 3529, 4956, 4568, 4037, 2900, 5410, 101, 2863, 3923, 2774,
1770 5584, 3460, 4473, 3741, 2986, 5421, 4724, 2978, 4773, 5531, 4397,
1771 5341, 2675, 4984, 3862, 5203, 4832, 4180, 2171, 4139, 4465, 2699,
1772 5547, 4362, 1740, 1960, 5271, 5336, 2883, 4295, 5591, 4765, 4821,
1773 3739, 1869, 4374, 4875, 3054, 4540, 5162, 5626, 5032, 4038, 2794,
1774 4475, 4753, 2204, 2177, 4514, 3424, 4354, 3026, 3118, 3756, 4163,
1775 1996, 4406, 4953, 5172, 3863, 4911, 4573, 2892, 2163, 1867, 4364,
1776 3101, 3958, 4598, 5539, 4334, 3486, 108, 5380, 2985, 100, 4155,
1777 5191, 4936, 4797, 5583, 4679, 2025, 3726, 2573, 4117, 3053, 5094,
1778 3817, 2801, 4382, 2764, 5443, 3678, 2112, 4326, 4174, 4612, 4165,
1779 70, 2578, 3599, 1950, 5006, 4250, 5546, 5225, 2048, 3046, 2544,
1780 2089, 5117, 4545, 3960, 3724, 5409, 2939, 4115, 4336, 3919, 4581,
1781 275, 4469, 4787, 5374, 3487, 3117, 2784, 4928, 2176, 2693, 4769,
1782 4348, 1988, 5016, 4393, 91, 3897, 5385, 3748, 4737, 4908, 5127,
1783 3818, 3164, 5415, 4948, 3642, 246, 5167, 3679, 223, 1976, 4358,
1784 3521, 107, 5051, 5335, 4187, 4978, 3943, 4891, 5538, 5197, 2015,
1785 4817, 3735, 2852, 4729, 212, 2554, 2793, 3895, 4504, 5256, 4553,
1786 5590, 4759, 5366, 4717, 177, 1923, 3935, 5442, 3379, 3750, 4320,
1787 4159, 4988, 1992, 1803, 2959, 3519, 2079, 4813, 3163, 1863, 257,
1788 3643, 3954, 1968, 4142, 3945, 4601, 4330, 2154, 5329, 4883, 5530,
1789 4800, 4298, 3536, 5340, 4533, 5155, 2692, 80, 4692, 2899, 5011,
1790 4378, 2053, 4081, 3052, 1801, 2170, 99, 4134, 4903, 5582, 5122,
1791 3705, 4709, 5414, 3111, 4290, 1931, 3506, 3035, 4684, 3720, 4144,
1792 4111, 4577, 4459, 4509, 3458, 5373, 5545, 4079, 4300, 5321, 3967,
1793 4672, 5251, 1674, 4772, 4396, 3703, 1917, 2753, 5147, 2664, 4733,
1794 2800, 4983, 2891, 2105, 2162, 2057, 3504, 267, 1911, 4593, 5379,
1795 1738, 2144, 2117, 2872, 3939, 2882, 2041, 2572, 4253, 4942, 5110,
1796 5529, 5161, 3528, 4567, 4036, 3891, 3051, 5036, 4549, 2862, 3922,
1797 3422, 3025, 5365, 5537, 3459, 2169, 4517, 4664, 4128, 4245, 4723,
1798 2684, 3045, 3515, 4284, 4952, 200, 3861, 5408, 2097, 3914, 2977,
1799 1903, 4138, 4464, 4597, 3162, 5328, 4034, 4255, 4971, 1739, 1959,
1800 5190, 2033, 4796, 4294, 2949, 3530, 3738, 5102, 4874, 4688, 4539,
1801 3924, 4381, 1797, 4497, 5235, 2898, 4752, 3423, 3859, 4353, 2890,
1802 2161, 4831, 5334, 3597, 4177, 2691, 1982, 5005, 1927, 2047, 2654,
1803 5378, 256, 4792, 4897, 2571, 5116, 2792, 2976, 3110, 1866, 4580,
1804 4075, 5320, 3485, 2773, 5031, 2783, 4472, 3740, 4154, 4768, 1987,
1805 4678, 5312, 4392, 3699, 4736, 4239, 4907, 3816, 4489, 2674, 98,
1806 5207, 1858, 234, 245, 3500, 5581, 4947, 2969, 2763, 3677, 4325,
1807 5407, 2153, 3161, 69, 3908, 4186, 3598, 4977, 1949, 4361, 4249,
1808 3483, 4764, 2543, 1868, 4373, 3723, 4452, 2111, 4114, 4552, 3918,
1809 2897, 5230, 3814, 4513, 3377, 2683, 5528, 3675, 4347, 4655, 4611,
1810 5333, 4162, 4812, 3715, 97, 4106, 2168, 2799, 2841, 4572, 3641,
1811 5372, 2088, 2791, 4030, 3957, 5250, 1894, 4333, 2563, 4935, 3734,
1812 5154, 2024, 3725, 2851, 79, 4691, 4116, 4377, 5015, 4444, 5093,
1813 90, 3894, 5536, 4902, 4503, 3855, 5202, 1852, 2143, 3100, 4173,
1814 4716, 3934, 3378, 3639, 4319, 2152, 1930, 3518, 3886, 2889, 2160,
1815 4816, 4313, 1862, 4544, 4576, 2938, 5364, 2975, 2110, 3966, 4468,
1816 4786, 1672, 5311, 2570, 4927, 5146, 2533, 4732, 4532, 3896, 3747,
1817 4987, 1991, 1800, 2958, 2798, 4133, 4592, 2643, 5171, 5327, 4100,
1818 2078, 2690, 4708, 1975, 2871, 4357, 2040, 1884, 4289, 5371, 3520,
1819 3942, 3044, 4890, 3479, 4941, 5109, 2014, 1792, 5406, 3109, 3719,
1820 4728, 2742, 4110, 2553, 4548, 4458, 3457, 5010, 3810, 2052, 4078,
1821 4516, 4758, 4671, 3671, 1673, 1922, 2142, 3034, 4158, 3702, 2752,
1822 1802, 5224, 3503, 96, 4070, 1910, 5319, 3880, 2689, 3953, 2974,
1823 1967, 4970, 1737, 4141, 4329, 2032, 5363, 2948, 3694, 2562, 3455,
1824 4882, 4297, 5101, 4687, 2790, 2104, 3108, 89, 3495, 3890, 2968,
1825 4080, 3421, 4982, 4435, 5126, 5527, 4176, 4663, 3704, 4127, 3635,
1826 1981, 5166, 4244, 5326, 1926, 1735, 3514, 4791, 4896, 4283, 3505,
1827 266, 5196, 1845, 3099, 4683, 3913, 1902, 1786, 2151, 5229, 4277,
1828 4508, 2772, 4033, 4471, 2682, 3419, 3024, 1916, 2663, 2096, 233,
1829 2673, 1796, 4496, 255, 4951, 95, 4025, 3858, 5526, 3596, 4360,
1830 4064, 5318, 3938, 2653, 4596, 4763, 4252, 211, 4372, 3688, 2159,
1831 4795, 4093, 3527, 4566, 4035, 3850, 5370, 2103, 5201, 2051, 4269,
1832 4074, 2522, 2861, 4512, 3921, 2967, 2569, 5121, 3698, 4722, 4161,
1833 3594, 4238, 5004, 4488, 2046, 1857, 3860, 3499, 4571, 2141, 5030,
1834 4137, 3956, 4232, 4463, 3907, 4332, 5310, 188, 3043, 3451, 1958,
1835 4934, 4293, 2023, 2681, 3482, 2888, 265, 3737, 4767, 4873, 3873,
1836 1986, 5092, 4391, 4538, 4451, 5362, 3107, 2095, 4906, 4751, 3813,
1837 4172, 2568, 4352, 3376, 4946, 3674, 4019, 3474, 4654, 1731, 2881,
1838 4976, 3714, 4105, 4543, 2840, 2937, 5160, 3805, 5325, 1865, 4224,
1839 4029, 4467, 4785, 3666, 1893, 3844, 3484, 3042, 3415, 3023, 4926,
1840 4153, 4677, 2789, 3374, 3746, 1779, 5223, 4443, 3815, 2087, 3854,
1841 2762, 4811, 3676, 1851, 1974, 4324, 4356, 68, 2561, 3638, 3033,
1842 2688, 3941, 1948, 4889, 4248, 2013, 5309, 5189, 58, 3098, 2542,
1843 3885, 4727, 2552, 4312, 2150, 3722, 4057, 5317, 78, 3106, 4113,
1844 3917, 4376, 4757, 3630, 5165, 1671, 1921, 4901, 2632, 4157, 4346,
1845 2532, 3590, 199, 2102, 5195, 2045, 3468, 222, 2642, 5115, 3640,
1846 4099, 3952, 1966, 4140, 4328, 1883, 4575, 3799, 4881, 4296, 3478,
1847 3660, 2782, 1837, 3733, 3097, 1985, 1669, 2850, 1791, 2957, 2887,
1848 2741, 2149, 4731, 2077, 3893, 5222, 4502, 3809, 2680, 2086, 3670,
1849 4715, 3933, 4591, 2567, 4318, 2870, 2560, 2094, 2039, 3517, 4682,
1850 4940, 2140, 5009, 1861, 4012, 88, 4069, 3879, 4507, 4547, 5120,
1851 4215, 3693, 3454, 3624, 3041, 2731, 3370, 1915, 2662, 4531, 3494,
1852 5361, 3837, 1799, 5194, 4810, 4434, 4132, 3634, 4707, 3446, 3937,
1853 4288, 4251, 4969, 1734, 2031, 2947, 3526, 1844, 4565, 5153, 2886,
1854 3718, 2139, 4981, 77, 4686, 4109, 1785, 2956, 2860, 3920, 4457,
1855 4276, 3456, 5308, 4077, 2076, 4670, 3418, 4721, 1726, 176, 1771,
1856 2880, 3701, 2751, 1980, 1925, 2788, 5159, 4790, 4895, 3502, 4024,
1857 4136, 4462, 1909, 3032, 3410, 1736, 244, 4063, 1957, 2511, 4292,
1858 2771, 3040, 1665, 3736, 4872, 3687, 4092, 4537, 5145, 1828, 5316,
1859 3096, 3889, 3792, 3849, 4750, 4268, 2521, 264, 3420, 4351, 3653,
1860 4590, 4662, 4126, 4243, 46, 254, 5188, 2038, 3593, 3440, 2966,
1861 3513, 4282, 2085, 5108, 4762, 1864, 3912, 4371, 1901, 4231, 3031,
1862 2559, 4032, 3450, 4152, 4676, 3585, 4511, 5003, 87, 3872, 1720,
1863 4049, 2787, 2879, 1795, 4495, 5114, 2761, 2679, 4323, 3617, 3857,
1864 5158, 4570, 67, 3595, 4018, 1947, 3473, 4247, 2093, 1730, 2781,
1865 2652, 2030, 3404, 232, 2965, 2946, 2541, 4933, 5100, 2022, 1818,
1866 3095, 3721, 4112, 3804, 3916, 4223, 2138, 4945, 4073, 3665, 3843,
1867 3414, 4345, 4171, 3697, 4975, 1979, 3373, 1778, 221, 4237, 3829,
1868 5187, 4789, 4487, 2075, 1856, 3498, 2678, 4542, 3906, 2936, 253,
1869 3365, 4466, 3732, 4784, 57, 2849, 3481, 4925, 3579, 4004, 5002,
1870 3892, 4450, 2044, 4056, 4501, 2672, 5307, 3629, 3812, 5113, 4714,
1871 2631, 3932, 3375, 4317, 3673, 1973, 3589, 4653, 4355, 3516, 3467,
1872 1762, 5152, 2780, 4888, 3713, 4761, 76, 2012, 4104, 1860, 4370,
1873 2839, 4726, 263, 4900, 4028, 3433, 3798, 1892, 3030, 3659, 4756,
1874 1836, 4530, 1668, 1920, 4156, 3784, 4974, 1798, 4442, 4131, 2621,
1875 5306, 3853, 4569, 1850, 4706, 4287, 1713, 3637, 3951, 1965, 2878,
1876 1660, 4327, 2084, 5144, 4880, 2021, 3359, 3717, 2964, 3884, 4108,
1877 4311, 4011, 4456, 5091, 2558, 4076, 3397, 3022, 4669, 4214, 1670,
1878 2869, 3623, 86, 3700, 2730, 3369, 2750, 2531, 1752, 4939, 5107,
1879 3836, 3501, 3609, 5151, 1908, 2641, 4541, 4681, 4098, 187, 2935,
1880 3445, 1882, 4506, 3029, 5186, 4783, 3477, 2083, 1790, 3888, 2740,
1881 1914, 2661, 3995, 2557, 3808, 4661, 4125, 3669, 4242, 3572, 4968,
1882 1725, 1972, 85, 1770, 2955, 243, 3512, 4281, 3936, 2074, 5099,
1883 2011, 1654, 2963, 3911, 2610, 5143, 1900, 4725, 2551, 4068, 3878,
1884 4564, 4031, 3409, 2510, 2859, 2779, 3692, 4755, 3453, 1978, 1664,
1885 1919, 2868, 4720, 2037, 1827, 4894, 1794, 4494, 3493, 3791, 4938,
1886 5106, 3856, 4433, 3652, 2677, 3633, 2770, 1964, 4135, 4461, 2651,
1887 45, 2954, 3439, 1733, 1956, 2073, 4291, 1843, 2671, 4871, 2500,
1888 1784, 4536, 4072, 4275, 4749, 3352, 3584, 3696, 3417, 4350, 4236,
1889 4967, 1719, 2029, 4048, 4486, 1855, 2945, 3497, 3775, 5098, 4680,
1890 3616, 4023, 1705, 3905, 210, 4505, 4062, 3403, 3480, 5150, 4151,
1891 3686, 75, 4675, 4091, 1817, 4449, 1913, 252, 3848, 3389, 3021,
1892 4893, 4267, 3811, 2520, 2556, 2760, 3672, 4322, 4652, 66, 4932,
1893 2769, 3592, 84, 1946, 3828, 3712, 4246, 4103, 2838, 5090, 2540,
1894 4563, 4027, 1696, 4230, 2670, 1891, 2877, 2858, 3915, 3449, 1647,
1895 3364, 5142, 4719, 3578, 3871, 4344, 4003, 4441, 2489, 3020, 3852,
1896 1849, 2934, 3564, 3636, 2867, 4460, 4017, 2036, 3472, 1729, 4924,
1897 1955, 1761, 2953, 5105, 3883, 3731, 4310, 2072, 2848, 4535, 3803,
1898 4222, 3432, 2778, 3664, 175, 4748, 3842, 4500, 1971, 3413, 4349,
1899 2530, 4713, 3931, 4887, 3372, 83, 1777, 4316, 3783, 4931, 2020,
1900 2620, 2550, 2640, 4097, 3555, 5089, 1859, 1881, 4966, 1712, 2028,
1901 1659, 220, 3476, 4150, 56, 5097, 4674, 1789, 3358, 2739, 4529,
1902 4055, 3807, 3396, 198, 3628, 3344, 2759, 3668, 1963, 4130, 2630,
1903 4321, 231, 65, 4705, 3588, 4879, 1945, 4286, 4782, 1751, 2952,
1904 3466, 4923, 3608, 251, 4067, 3877, 3716, 4107, 2768, 3797, 4455,
1905 3691, 34, 3452, 2876, 3658, 74, 4668, 1835, 4343, 1667, 3492,
1906 2669, 2749, 4886, 2010, 3994, 4432, 3335, 3019, 3632, 2549, 3571,
1907 1907, 1732, 4754, 1842, 1653, 1912, 2660, 2847, 2609, 1783, 4010,
1908 4274, 3887, 4499, 1639, 4213, 3416, 5141, 4712, 3622, 3930, 73,
1909 4660, 2729, 4124, 3368, 4315, 4241, 4878, 3511, 3835, 4280, 4562,
1910 4022, 209, 242, 3910, 4061, 3444, 1899, 1686, 4930, 2875, 2019,
1911 3685, 4090, 4528, 5088, 3847, 2499, 4266, 2519, 1793, 4493, 1630,
1912 4129, 3018, 3351, 2777, 1724, 4704, 1954, 1769, 3591, 4285, 2650,
1913 4870, 3774, 4534, 219, 2659, 4229, 2866, 1704, 2027, 4454, 3408,
1914 2944, 3448, 2509, 4071, 4922, 5096, 4667, 1663, 3870, 3695, 2748,
1915 1826, 3790, 4235, 3388, 4485, 1854, 3651, 3496, 1970, 4016, 1906,
1916 3471, 2478, 1728, 44, 2857, 3904, 4885, 3438, 2009, 4718, 2548,
1917 3802, 4221, 2767, 1695, 241, 4448, 3663, 3841, 2943, 3412, 1646,
1918 64, 2776, 3583, 4659, 4123, 1944, 3371, 4240, 1776, 2668, 1718,
1919 72, 4651, 4047, 2539, 4279, 2488, 3711, 4869, 4102, 3615, 3563,
1920 3909, 1962, 2837, 1898, 4026, 4747, 4877, 3402, 55, 1890, 4342,
1921 1816, 4054, 197, 4492, 4440, 3627, 2629, 3851, 1848, 1620, 3587,
1922 2667, 3465, 2649, 3827, 2846, 4673, 3882, 3554, 4498, 4309, 3796,
1923 2865, 2018, 2758, 3657, 3363, 1834, 4314, 1666, 63, 2658, 5087,
1924 3577, 71, 2529, 4002, 4234, 4484, 1853, 2538, 3343, 2639, 4096,
1925 3903, 1880, 1760, 4527, 3475, 2933, 4009, 1788, 4447, 2856, 2738,
1926 3431, 4212, 4921, 33, 3806, 2017, 3621, 22, 2942, 2728, 3367,
1927 3667, 5086, 4650, 3782, 3834, 3710, 2619, 4101, 230, 2836, 3334,
1928 4453, 3443, 4066, 3876, 1711, 2864, 1953, 2008, 1889, 1658, 3690,
1929 4711, 4868, 2747, 2547, 3357, 2932, 4439, 3491, 4746, 3395, 1638,
1930 1905, 2766, 4431, 1847, 1723, 1768, 3631, 1750, 186, 3607, 3881,
1931 1961, 1841, 4308, 3407, 2508, 1782, 4876, 1685, 4273, 2007, 4122,
1932 2941, 1662, 4703, 2546, 2528, 1825, 4278, 3789, 3993, 2757, 3650,
1933 1629, 1897, 2638, 4095, 4021, 3570, 43, 1943, 3437, 1879, 4060,
1934 4666, 2537, 1652, 2608, 3684, 1787, 4491, 229, 4089, 2737, 3846,
1935 2765, 4265, 2518, 3582, 1904, 2657, 240, 1717, 4046, 2666, 3614,
1936 4065, 3875, 2477, 4228, 3401, 3689, 3447, 4658, 2845, 1815, 4233,
1937 4483, 208, 3869, 3490, 2931, 2498, 4430, 4710, 3902, 3350, 1896,
1938 2656, 4015, 3826, 3470, 1727, 3773, 1840, 4446, 1703, 1781, 1952,
1939 3801, 4272, 4220, 3362, 3662, 3840, 4867, 3411, 2006, 4526, 3576,
1940 4001, 2648, 2545, 2855, 1775, 3387, 2835, 4020, 4702, 1619, 1888,
1941 4059, 1759, 3683, 54, 4088, 4438, 2930, 3430, 1694, 3845, 1951,
1942 4053, 1846, 4264, 2517, 4665, 1645, 3626, 4866, 2628, 2746, 3781,
1943 3586, 2756, 2618, 2487, 3464, 4307, 62, 3562, 1710, 1942, 4227,
1944 1657, 3795, 2536, 239, 3356, 3656, 1833, 4649, 3868, 174, 3394,
1945 2637, 4094, 4657, 2834, 21, 1878, 4014, 3469, 1749, 1887, 185,
1946 196, 3606, 2736, 61, 3553, 3800, 1941, 4008, 4219, 3661, 3839,
1947 207, 2535, 4211, 3620, 2727, 3366, 1774, 4490, 3992, 2854, 3833,
1948 3874, 3342, 4306, 3569, 2647, 3442, 1651, 53, 2607, 2527, 4052,
1949 4429, 32, 3625, 228, 2844, 2627, 1722, 1877, 2655, 1767, 4482,
1950 1839, 3463, 4701, 1780, 3333, 4271, 2735, 3794, 3406, 2507, 3655,
1951 1832, 1661, 4445, 2497, 1824, 2853, 3788, 1637, 3349, 3649, 4058,
1952 2745, 4648, 42, 3682, 3436, 4087, 3772, 218, 2755, 1702, 4007,
1953 4263, 2516, 60, 1684, 1940, 4210, 3619, 3581, 2726, 2534, 4437,
1954 3386, 1716, 4045, 3832, 4656, 1838, 1628, 4226, 3613, 195, 3441,
1955 4270, 3400, 3867, 1895, 1693, 1814, 1644, 4013, 2526, 1721, 1766,
1956 2843, 2486, 3825, 2636, 2754, 4086, 3561, 4218, 59, 2646, 3838,
1957 2476, 3405, 4262, 227, 2506, 3361, 173, 1773, 217, 3575, 1823,
1958 4000, 3787, 3648, 4225, 41, 4481, 52, 3435, 1758, 4051, 3866,
1959 3552, 2645, 2626, 3429, 3580, 2842, 3462, 1715, 4044, 3780, 4428,
1960 3341, 2617, 3612, 4647, 3793, 1618, 4217, 1709, 3654, 2744, 1831,
1961 3399, 1656, 206, 3355, 1813, 1772, 1886, 31, 3393, 4436, 3824,
1962 1748, 51, 4006, 3332, 3605, 4646, 4050, 4209, 3618, 2725, 3360,
1963 2625, 2833, 3574, 3999, 3831, 1885, 2515, 1636, 3991, 2525, 20,
1964 3568, 2743, 1757, 2635, 1830, 1650, 1876, 2606, 1683, 3428, 184,
1965 1765, 2734, 3779, 1627, 2616, 2524, 4005, 2505, 1708, 1655, 4208,
1966 2634, 1822, 2724, 3354, 3786, 1875, 3647, 3830, 2496, 3392, 40,
1967 3348, 3434, 194, 1747, 4427, 3604, 3771, 2475, 1701, 2644, 50,
1968 1714, 4043, 1764, 2832, 3990, 3611, 3385, 216, 3567, 3398, 2504,
1969 4426, 1812, 1649, 2605, 1821, 3785, 1692, 3646, 1829, 1643, 3823,
1970 39, 4261, 2514, 2485, 1617, 3560, 2523, 3573, 3998, 2831, 183,
1971 4042, 2495, 1874, 3610, 2723, 3347, 1756, 2733, 2513, 3770, 1811,
1972 3427, 1700, 3551, 3778, 4216, 2615, 3822, 3384, 19, 1707, 3340,
1973 1763, 172, 3353, 2633, 3997, 3391, 1691, 215, 1642, 30, 1820,
1974 1746, 2732, 3603, 1755, 2484, 2624, 3559, 3331, 38, 3426, 3989,
1975 3777, 2614, 49, 3566, 1635, 1706, 4041, 1648, 2604, 2623, 2512,
1976 3550, 3390, 1682, 1810, 1745, 4207, 3602, 205, 3339, 1626, 3821,
1977 2494, 3988, 3346, 29, 3565, 3996, 3769, 4206, 171, 1699, 2603,
1978 193, 3330, 2474, 1754, 3383, 2503, 1634, 48, 3776, 2613, 1690,
1979 37, 182, 2493, 1641, 1681, 3345, 2483, 2502, 3558, 3768, 1625,
1980 1698, 1819, 1616, 1744, 3601, 3382, 47, 3987, 3549, 2622, 1689,
1981 2722, 2473, 1640, 2602, 3338, 2482, 3557, 1809, 18, 28, 1753,
1982 2492, 3329, 2501, 3548, 2721, 1615, 204, 3767, 1697, 1633, 36,
1983 3337, 3381, 1680, 1743, 27, 2612, 1688, 1624, 170, 3328, 17,
1984 1808, 2481, 3556, 35, 1632, 2601, 2472, 1679, 3986, 3547, 1623,
1985 192, 203, 3336, 3766, 181, 26, 1614, 2471, 2491, 3327, 1742,
1986 1687, 1631, 2480, 2611, 1678, 16, 1613, 180, 1622, 191, 3546,
1987 2490, 2470, 15, 2600, 25, 3326, 169, 24, 1612, 2479, 1677, 1621,
1988 1676, 14, 168, 2469, 2468, 1611, 23, 1610, 13, 179, 12, 167, 11
1993 ** each of the thirteen card ranks has its own prime number
1995 ** deuce = 2
1996 ** trey = 3
1997 ** four = 5
1998 ** five = 7
1999 ** ...
2000 ** king = 37
2001 ** ace = 41
2003 int primes[] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41 };
2005 int perm7[21][5] = {
2006 { 0, 1, 2, 3, 4 },
2007 { 0, 1, 2, 3, 5 },
2008 { 0, 1, 2, 3, 6 },
2009 { 0, 1, 2, 4, 5 },
2010 { 0, 1, 2, 4, 6 },
2011 { 0, 1, 2, 5, 6 },
2012 { 0, 1, 3, 4, 5 },
2013 { 0, 1, 3, 4, 6 },
2014 { 0, 1, 3, 5, 6 },
2015 { 0, 1, 4, 5, 6 },
2016 { 0, 2, 3, 4, 5 },
2017 { 0, 2, 3, 4, 6 },
2018 { 0, 2, 3, 5, 6 },
2019 { 0, 2, 4, 5, 6 },
2020 { 0, 3, 4, 5, 6 },
2021 { 1, 2, 3, 4, 5 },
2022 { 1, 2, 3, 4, 6 },
2023 { 1, 2, 3, 5, 6 },
2024 { 1, 2, 4, 5, 6 },
2025 { 1, 3, 4, 5, 6 },
2026 { 2, 3, 4, 5, 6 }
2031 static const int STRAIGHT_FLUSH = 1;
2032 static const int FOUR_OF_A_KIND = 2;
2033 static const int FULL_HOUSE = 3;
2034 static const int FLUSH = 4;
2035 static const int STRAIGHT = 5;
2036 static const int THREE_OF_A_KIND = 6;
2037 static const int TWO_PAIR = 7;
2038 static const int ONE_PAIR = 8;
2039 static const int HIGH_CARD = 9;
2041 template<typename T>
2042 T __min(T a, T b)
2044 return a < b ? a : b;
2047 #define RANK(x) ((x >> 8) & 0xF)
2049 std::string value_str[] = {
2051 "Straight Flush",
2052 "Four of a Kind",
2053 "Full House",
2054 "Flush",
2055 "Straight",
2056 "Three of a Kind",
2057 "Two Pair",
2058 "One Pair",
2059 "High Card"
2062 static const int CLUB = 0x8000;
2063 static const int DIAMOND = 0x4000;
2064 static const int HEART = 0x2000;
2065 static const int SPADE = 0x1000;
2067 static const int Deuce = 0;
2068 static const int Trey = 1;
2069 static const int Four = 2;
2070 static const int Five = 3;
2071 static const int Six = 4;
2072 static const int Seven = 5;
2073 static const int Eight = 6;
2074 static const int Nine = 7;
2075 static const int Ten = 8;
2076 static const int Jack = 9;
2077 static const int Queen = 10;
2078 static const int King = 11;
2079 static const int Ace = 12;
2081 // jmd declarations added
2082 void init_deck( int *deck );
2083 int find_card( int rank, int suit, int *deck );
2084 short eval_5hand(const int *hand );
2085 int eval_5hand_fast(int c1, int c2, int c3, int c4, int c5);
2086 int hand_rank( short val );
2087 void print_hand( int *hand, int n );
2088 void shuffle_deck( int *deck );
2089 short eval_5cards( int c1, int c2, int c3, int c4, int c5 );
2090 short eval_7hand(const int *hand );
2093 const char HandRanks[][16] = {"BAD!!","High Card","Pair","Two Pair","Three of a Kind","Straight","Flush","Full House","Four of a Kind","Straight Flush"};
2095 int64_t IDs[612978];
2096 int HR[32487834];
2098 int numIDs = 1;
2099 int numcards = 0;
2100 int maxHR = 0;
2101 int64_t maxID = 0;
2103 int64_t MakeID(int64_t IDin, int newcard) // adding a new card to this ID
2105 int64_t ID = 0;
2106 int suitcount[4 + 1];
2107 int rankcount[13 + 1];
2108 int workcards[8]; // intentially keeping one as a 0 end
2109 int cardnum;
2110 int getout = 0;
2112 memset(workcards, 0, sizeof(workcards));
2113 memset(rankcount, 0, sizeof(rankcount));
2114 memset(suitcount, 0, sizeof(suitcount));
2116 // can't have more than 6 cards!
2117 for (cardnum = 0; cardnum < 6; cardnum++)
2119 workcards[cardnum + 1] = (int) ((IDin >> (8 * cardnum)) & 0xff); // leave the 0 hole for new card
2122 // my cards are 2c = 1, 2d = 2 ... As = 52
2123 newcard--; // make 0 based!
2125 workcards[0] = (((newcard >> 2) + 1) << 4) + (newcard & 3) + 1; // add next card formats card to rrrr00ss
2127 for (numcards = 0; workcards[numcards]; numcards++)
2129 suitcount[workcards[numcards] & 0xf]++; // need to see if suit is significant
2130 rankcount[(workcards[numcards] >> 4) & 0xf]++; // and rank to be sure we don't have 4!
2131 if (numcards)
2133 if (workcards[0] == workcards[numcards]) { // can't have the same card twice
2134 getout = 1; // if so need to get out after counting numcards
2139 if (getout) {
2140 return 0; // duplicated another card (ignore this one)
2144 int needsuited = numcards - 2; // for suit to be significant - need to have n-2 of same suit
2146 if (numcards > 4) {
2147 for (int rank = 1; rank < 14; rank++) {
2148 if (rankcount[rank] > 4) { // if I have more than 4 of a rank then I shouldn't do this one!!
2149 return 0; // can't have more than 4 of a rank so return an ID that can't be!
2154 // However in the ID process I prefered that
2155 // 2s = 0x21, 3s = 0x31,.... Kc = 0xD4, Ac = 0xE4
2156 // This allows me to sort in Rank then Suit order
2158 // if we don't have at least 2 cards of the same suit for 4, we make this card suit 0.
2160 if (needsuited > 1) {
2161 for (cardnum = 0; cardnum < numcards; cardnum++) { // for each card
2162 if (suitcount[workcards[cardnum] & 0xf] < needsuited) { // check suitcount to the number I need to have suits significant
2163 workcards[cardnum] &= 0xf0; // if not enough - 0 out the suit - now this suit would be a 0 vs 1-4
2168 // Sort Using XOR. Network for N=7, using Bose-Nelson Algorithm: Thanks to the thread!
2169 #define SWAP(I,J) {if (workcards[I] < workcards[J]) {workcards[I]^=workcards[J]; workcards[J]^=workcards[I]; workcards[I]^=workcards[J];}}
2171 SWAP(0, 4);
2172 SWAP(1, 5);
2173 SWAP(2, 6);
2174 SWAP(0, 2);
2175 SWAP(1, 3);
2176 SWAP(4, 6);
2177 SWAP(2, 4);
2178 SWAP(3, 5);
2179 SWAP(0, 1);
2180 SWAP(2, 3);
2181 SWAP(4, 5);
2182 SWAP(1, 4);
2183 SWAP(3, 6);
2184 SWAP(1, 2);
2185 SWAP(3, 4);
2186 SWAP(5, 6);
2188 // long winded way to put the pieces into a int64_t
2189 // cards in bytes --66554433221100
2190 // the resulting ID is a 64 bit value with each card represented by 8 bits.
2191 ID = (int64_t) workcards[0] +
2192 ((int64_t) workcards[1] << 8) +
2193 ((int64_t) workcards[2] << 16) +
2194 ((int64_t) workcards[3] << 24) +
2195 ((int64_t) workcards[4] << 32) +
2196 ((int64_t) workcards[5] << 40) +
2197 ((int64_t) workcards[6] << 48);
2199 return ID;
2202 int SaveID(int64_t ID)
2204 if (ID == 0) return 0; // don't use up a record for a 0!
2206 if (ID >= maxID) { // take care of the most likely first goes on the end...
2207 if (ID > maxID) { // greater than create new else it was the last one!
2208 IDs[numIDs++] = ID; // add the new ID
2209 maxID = ID;
2211 return numIDs - 1;
2214 // find the slot I will find it (by a pseudo bsearch algorithm)
2215 int low = 0;
2216 int high = numIDs - 1;
2217 int64_t testval;
2218 int holdtest;
2220 while (high - low > 1) {
2221 holdtest = (high + low + 1) / 2;
2222 testval = IDs[holdtest] - ID;
2223 if (testval > 0) high = holdtest;
2224 else if (testval < 0) low = holdtest;
2225 else return holdtest; // got it!!
2227 // I guess it couldn't be found so must be added to the current location (high)
2228 // make space... // don't expect this much!
2229 memmove(&IDs[high + 1], &IDs[high], (numIDs - high) * sizeof(IDs[0]));
2231 IDs[high] = ID; // do the insert into the hole created
2232 numIDs++;
2233 return high;
2236 int DoEval(int64_t IDin)
2238 // I guess I have some explaining to do here... I used the Cactus Kevs Eval ref http://www.suffecool.net/poker/evaluator.html
2239 // I Love the pokersource for speed, but I needed to do some tweaking to get it my way
2240 // and Cactus Kevs stuff was easy to tweak ;-)
2241 int handrank = 0;
2242 int cardnum;
2243 int workcard;
2244 int rank;
2245 int suit;
2246 int mainsuit = 20; // just something that will never hit... need to eliminate the main suit from the iterator
2247 //int suititerator = 0;
2248 int suititerator = 1; // changed as per Ray Wotton's comment at http://archives1.twoplustwo.com/showflat.php?Cat=0&Number=8513906&page=0&fpart=18&vc=1
2249 int holdrank = 0;
2250 int workcards[8]; // intentially keeping one as a 0 end
2251 int holdcards[8];
2252 int numevalcards = 0;
2254 // See Cactus Kevs page for explainations for this type of stuff...
2255 const int primes[] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41 };
2257 memset(workcards, 0, sizeof(workcards));
2258 memset(holdcards, 0, sizeof(holdcards));
2260 if (IDin)
2261 { // if I have a good ID then do it...
2262 for (cardnum = 0; cardnum < 7; cardnum++)
2263 { // convert all 7 cards (0s are ok)
2264 holdcards[cardnum] = (int) ((IDin >> (8 * cardnum)) & 0xff);
2265 if (holdcards[cardnum] == 0) break; // once I hit a 0 I know I am done
2266 numevalcards++; // if not 0 then count the card
2267 if ((suit = holdcards[cardnum] & 0xf)) { // find out what suit (if any) was significant
2268 mainsuit = suit; // and remember it
2273 for (cardnum = 0; cardnum < numevalcards; cardnum++)
2275 // just have numcards...
2276 workcard = holdcards[cardnum];
2278 // convert to cactus kevs way!! ref http://www.suffecool.net/poker/evaluator.html
2279 // +--------+--------+--------+--------+
2280 // |xxxbbbbb|bbbbbbbb|cdhsrrrr|xxpppppp|
2281 // +--------+--------+--------+--------+
2282 // p = prime number of rank (deuce=2,trey=3,four=5,five=7,...,ace=41)
2283 // r = rank of card (deuce=0,trey=1,four=2,five=3,...,ace=12)
2284 // cdhs = suit of card
2285 // b = bit turned on depending on rank of card
2287 rank = (workcard >> 4) - 1; // my rank is top 4 bits 1-13 so convert
2288 suit = workcard & 0xf; // my suit is bottom 4 bits 1-4, order is different, but who cares?
2289 if (suit == 0) { // if suit wasn't significant though...
2290 suit = suititerator++; // Cactus Kev needs a suit!
2291 if (suititerator == 5) // loop through available suits
2292 suititerator = 1;
2293 if (suit == mainsuit) { // if it was the sigificant suit... Don't want extras!!
2294 suit = suititerator++; // skip it
2295 if (suititerator == 5) // roll 1-4
2296 suititerator = 1;
2299 // now make Cactus Kev's Card
2300 workcards[cardnum] = primes[rank] | (rank << 8) | (1 << (suit + 11)) | (1 << (16 + rank));
2303 // James Devlin: replaced all calls to Cactus Kev's eval_5cards with calls to
2304 // Senzee's improved eval_5hand_fast
2306 switch (numevalcards) { // run Cactus Keys routines
2308 case 5 : holdrank = eval_5hand_fast(workcards[0],workcards[1],workcards[2],workcards[3],workcards[4]);
2309 break;
2310 // if 6 cards I would like to find HandRank for them
2311 // Cactus Key is 1 = highest - 7362 lowest I need to get the min for the permutations
2312 case 6 : holdrank = eval_5hand_fast(workcards[0],workcards[1],workcards[2],workcards[3],workcards[4]);
2313 holdrank = __min(holdrank, eval_5hand_fast(workcards[0],workcards[1],workcards[2],workcards[3],workcards[5]));
2314 holdrank = __min(holdrank, eval_5hand_fast(workcards[0],workcards[1],workcards[2],workcards[4],workcards[5]));
2315 holdrank = __min(holdrank, eval_5hand_fast(workcards[0],workcards[1],workcards[3],workcards[4],workcards[5]));
2316 holdrank = __min(holdrank, eval_5hand_fast(workcards[0],workcards[2],workcards[3],workcards[4],workcards[5]));
2317 holdrank = __min(holdrank, eval_5hand_fast(workcards[1],workcards[2],workcards[3],workcards[4],workcards[5]));
2318 break;
2319 case 7 : holdrank = eval_7hand(workcards);
2320 break;
2321 default : // problem!! shouldn't hit this...
2322 printf(" Problem with numcards = %d!!\n", numcards);
2323 break;
2326 // I would like to change the format of Catus Kev's ret value to:
2327 // hhhhrrrrrrrrrrrr hhhh = 1 high card -> 9 straight flush
2328 // r..r = rank within the above 1 to max of 2861
2329 handrank = 7463 - holdrank; // now the worst hand = 1
2331 if (handrank < 1278) handrank = handrank - 0 + 4096 * 1; // 1277 high card
2332 else if (handrank < 4138) handrank = handrank - 1277 + 4096 * 2; // 2860 one pair
2333 else if (handrank < 4996) handrank = handrank - 4137 + 4096 * 3; // 858 two pair
2334 else if (handrank < 5854) handrank = handrank - 4995 + 4096 * 4; // 858 three-kind
2335 else if (handrank < 5864) handrank = handrank - 5853 + 4096 * 5; // 10 straights
2336 else if (handrank < 7141) handrank = handrank - 5863 + 4096 * 6; // 1277 flushes
2337 else if (handrank < 7297) handrank = handrank - 7140 + 4096 * 7; // 156 full house
2338 else if (handrank < 7453) handrank = handrank - 7296 + 4096 * 8; // 156 four-kind
2339 else handrank = handrank - 7452 + 4096 * 9; // 10 straight-flushes
2342 return handrank; // now a handrank that I like
2345 void generateTable()
2347 printf("\nData table file for fast poker hand evaluation not yet created.\nGenerating now. This may take a while.\nThis will write a 124MB file to disk.\n");
2349 int IDslot, card = 0, count = 0;
2350 int64_t ID;
2352 // Store the count of each type of hand (One Pair, Flush, etc)
2353 int handTypeSum[10];
2355 // Clear our arrays
2356 memset(handTypeSum, 0, sizeof(handTypeSum));
2357 memset(IDs, 0, sizeof(IDs));
2358 memset(HR, 0, sizeof(HR));
2361 // step through the ID array - always shifting the current ID and adding 52 cards to the end of the array.
2362 // when I am at 7 cards put the Hand Rank in!!
2363 // stepping through the ID array is perfect!!
2365 int IDnum;
2367 printf("\nGetting Card IDs!\n");
2369 // Jmd: Okay, this loop is going to fill up the IDs[] array which has 612,967 slots.
2370 // as this loops through and find new combinations it adds them to the end
2371 // I need this list to be stable when I set the handranks (next set) (I do the insertion sort on new IDs these)
2372 // so I had to get the IDs first and then set the handranks
2373 for (IDnum = 0; IDs[IDnum] || IDnum == 0; IDnum++)
2375 // start at 1 so I have a zero catching entry (just in case)
2376 for (card = 1; card < 53; card++)
2378 // the ids above contain cards upto the current card. Now add a new card
2379 ID = MakeID(IDs[IDnum], card); // get the new ID for it
2380 if (numcards < 7) SaveID(ID); // and save it in the list if I am not on the 7th card
2382 printf("\rID - %d", IDnum); // just to show the progress -- this will count up to 612976
2385 printf("\nSetting HandRanks!\n");
2387 // this is as above, but will not be adding anything to the ID list, so it is stable
2388 for (IDnum = 0; IDs[IDnum] || IDnum == 0; IDnum++)
2390 // start at 1 so I have a zero catching entry (just in case)
2391 for (card = 1; card < 53; card++)
2393 ID = MakeID(IDs[IDnum], card);
2395 if (numcards < 7)
2397 IDslot = SaveID(ID) * 53 + 53; // when in the index mode (< 7 cards) get the id to save
2399 else
2401 IDslot = DoEval(ID); // if I am at the 7th card, get the equivalence class ("hand rank") to save
2404 maxHR = IDnum * 53 + card + 53; // find where to put it
2405 HR[maxHR] = IDslot; // and save the pointer to the next card or the handrank
2408 if (numcards == 6 || numcards == 7)
2410 // an extra, If you want to know what the handrank when there is 5 or 6 cards
2411 // you can just do HR[u3] or HR[u4] from below code for Handrank of the 5 or 6 card hand
2412 HR[IDnum * 53 + 53] = DoEval(IDs[IDnum]); // this puts the above handrank into the array
2418 // another algorithm right off the thread
2420 int c0, c1, c2, c3, c4, c5, c6;
2421 int u0, u1, u2, u3, u4, u5;
2423 for (c0 = 1; c0 < 53; c0++) {
2424 u0 = HR[53+c0];
2425 for (c1 = c0+1; c1 < 53; c1++) {
2426 u1 = HR[u0+c1];
2427 for (c2 = c1+1; c2 < 53; c2++) {
2428 u2 = HR[u1+c2];
2429 for (c3 = c2+1; c3 < 53; c3++) {
2430 u3 = HR[u2+c3];
2431 for (c4 = c3+1; c4 < 53; c4++) {
2432 u4 = HR[u3+c4];
2433 for (c5 = c4+1; c5 < 53; c5++) {
2434 u5 = HR[u4+c5];
2435 for (c6 = c5+1; c6 < 53; c6++) {
2436 handTypeSum[HR[u5+c6] >> 12]++;
2437 count++;
2447 for (int i = 0; i <= 9; i++) // display the results
2448 printf("\n%16s = %d", HandRanks[i], handTypeSum[i]);
2450 printf("\nTotal Hands = %d\n", count);
2453 int writeTableToFile()
2455 // output the array now that I have it!!
2456 FILE * fout = fopen(HANDRANKSFILE.c_str(), "wb");
2457 if (!fout) {
2458 printf("Problem creating the Output File!\n");
2459 return 1;
2461 fwrite(HR, sizeof(HR), 1, fout); // big write, but quick
2463 fclose(fout);
2465 return 0;
2468 ///////////////////////////////// end code!!
2470 // Paul D. Senzee's Optimized Hand Evaluator
2471 // for Cactus Kev's Poker Hand Evaluator
2473 // Replaces binary search with a perfect hash.
2474 // If you replace eval_5hand with eval_5hand_fast, the products[] and values[] arrays in 'arrays.h' are unnecessary.
2475 // With eval_5hand_fast, the 'allfive.c' test program runs about 2.7 times faster.
2477 // (c) Paul D. Senzee.
2478 // Portions (in eval_5hand_fast) (c) Kevin L. Suffecool.
2479 // psenzee@yahoo.com
2481 // Senzee 5
2482 // http://senzee.blogspot.com
2484 extern short flushes[];
2485 extern short unique5[];
2486 extern unsigned short hash_adjust[];
2487 extern unsigned short hash_values[];
2489 unsigned find_fast(unsigned u)
2491 unsigned a, b, r;
2492 u += 0xe91aaa35;
2493 u ^= u >> 16;
2494 u += u << 8;
2495 u ^= u >> 4;
2496 b = (u >> 8) & 0x1ff;
2497 a = (u + (u << 2)) >> 19;
2498 r = a ^ hash_adjust[b];
2499 return r;
2502 int eval_5hand_fast(int c1, int c2, int c3, int c4, int c5)
2504 int q = (c1 | c2 | c3 | c4 | c5) >> 16;
2505 short s;
2506 if (c1 & c2 & c3 & c4 & c5 & 0xf000) return flushes[q]; // check for flushes and straight flushes
2507 if ((s = unique5[q])) return s; // check for straights and high card hands
2508 return hash_values[find_fast((c1 & 0xff) * (c2 & 0xff) * (c3 & 0xff) * (c4 & 0xff) * (c5 & 0xff))];
2511 unsigned short hash_adjust[] =
2513 0, 5628, 7017, 1298, 2918, 2442, 8070, 6383, 6383, 7425, 2442, 5628, 8044, 7425, 3155, 6383,
2514 2918, 7452, 1533, 6849, 5586, 7452, 7452, 1533, 2209, 6029, 2794, 3509, 7992, 7733, 7452, 131,
2515 6029, 4491, 1814, 7452, 6110, 3155, 7077, 6675, 532, 1334, 7555, 5325, 3056, 1403, 1403, 3969,
2516 4491, 1403, 7592, 522, 8070, 1403, 0, 1905, 3584, 2918, 922, 3304, 6675, 0, 7622, 7017,
2517 3210, 2139, 1403, 5225, 0, 3969, 7992, 5743, 5499, 5499, 5345, 7452, 522, 305, 3056, 7017,
2518 7017, 2139, 1338, 3056, 7452, 1403, 6799, 3204, 3290, 4099, 1814, 2191, 4099, 5743, 1570, 1334,
2519 7363, 1905, 0, 6799, 4400, 1480, 6029, 1905, 0, 7525, 2028, 2794, 131, 7646, 3155, 4986,
2520 1858, 2442, 7992, 1607, 3584, 4986, 706, 6029, 5345, 7622, 6322, 5196, 1905, 6847, 218, 1785,
2521 0, 4099, 2981, 6849, 4751, 3950, 7733, 3056, 5499, 4055, 6849, 1533, 131, 5196, 2918, 3879,
2522 5325, 2794, 6029, 0, 0, 322, 7452, 6178, 2918, 2320, 6675, 3056, 6675, 1533, 6029, 1428,
2523 2280, 2171, 6788, 7452, 3325, 107, 4262, 311, 5562, 7857, 6110, 2139, 4942, 4600, 1905, 0,
2524 3083, 5345, 7452, 6675, 0, 6112, 4099, 7017, 1338, 6799, 2918, 1232, 3584, 522, 6029, 5325,
2525 1403, 6759, 6849, 508, 6675, 2987, 7745, 6870, 896, 7452, 1232, 4400, 12, 2981, 3850, 4491,
2526 6849, 0, 6675, 747, 4491, 7525, 6675, 7452, 7992, 6921, 7323, 6849, 3056, 1199, 2139, 6029,
2527 6029, 190, 4351, 7891, 4400, 7134, 1533, 1194, 3950, 6675, 5345, 6383, 7622, 131, 1905, 2883,
2528 6383, 1533, 5345, 2794, 4303, 1403, 0, 1338, 2794, 992, 4871, 6383, 4099, 2794, 3889, 6184,
2529 3304, 1905, 6383, 3950, 3056, 522, 1810, 3975, 7622, 7452, 522, 6799, 5866, 7084, 7622, 6528,
2530 2798, 7452, 1810, 7907, 642, 5345, 1905, 6849, 6675, 7745, 2918, 4751, 3229, 2139, 6029, 5207,
2531 6601, 2139, 7452, 5890, 1428, 5628, 7622, 2139, 3146, 2400, 578, 941, 7672, 1814, 3210, 1533,
2532 4491, 12, 2918, 1900, 7425, 2794, 2987, 3465, 1377, 3822, 3969, 3210, 859, 5499, 6878, 1377,
2533 3056, 4027, 8065, 8065, 5207, 4400, 4303, 3210, 3210, 0, 6675, 357, 5628, 5512, 1905, 3452,
2534 1403, 7646, 859, 6788, 3210, 2139, 378, 5663, 7733, 870, 0, 4491, 4813, 2110, 578, 2139,
2535 3056, 4099, 1905, 1298, 4672, 2191, 3950, 5499, 3969, 4974, 6323, 6029, 7414, 6383, 0, 4974,
2536 3210, 795, 4099, 131, 5345, 5345, 6576, 1810, 1621, 4400, 2918, 1905, 2442, 2679, 6322, 7452,
2537 2110, 1403, 6383, 2653, 5132, 6856, 7841, 2794, 6110, 2028, 6675, 7425, 6999, 7441, 6029, 183,
2538 6675, 4400, 859, 1403, 2794, 5985, 5345, 1533, 322, 4400, 1227, 5890, 4474, 4491, 3574, 8166,
2539 6849, 7086, 5345, 5345, 5459, 3584, 6675, 3969, 7579, 8044, 2295, 2577, 1480, 5743, 3304, 5499,
2540 330, 4303, 6863, 3822, 4600, 4751, 5628, 3822, 2918, 6675, 2400, 6663, 1403, 6849, 6029, 3145,
2541 6110, 3210, 747, 3229, 3056, 2918, 7733, 330, 4055, 7322, 5628, 2987, 3056, 1905, 2903, 669,
2542 5325, 2845, 4099, 5225, 6283, 4099, 5000, 642, 4055, 5345, 8034, 2918, 1041, 5769, 7051, 1538,
2543 2918, 3366, 608, 4303, 3921, 0, 2918, 1905, 218, 6687, 5963, 859, 3083, 2987, 896, 5056,
2544 1905, 2918, 4415, 7966, 7646, 2883, 5628, 7017, 8029, 6528, 4474, 6322, 5562, 6669, 4610, 7006
2547 unsigned short hash_values[] =
2549 148, 2934, 166, 5107, 4628, 166, 166, 166, 166, 3033, 166, 4692, 166, 5571, 2225, 166,
2550 5340, 3423, 166, 3191, 1752, 166, 5212, 166, 166, 3520, 166, 166, 166, 1867, 166, 3313,
2551 166, 3461, 166, 166, 3174, 1737, 5010, 5008, 166, 4344, 2868, 3877, 166, 4089, 166, 5041,
2552 4748, 4073, 4066, 5298, 3502, 1812, 166, 5309, 166, 233, 3493, 166, 166, 3728, 5236, 4252,
2553 4010, 2149, 166, 164, 4580, 3039, 4804, 3874, 166, 6170, 2812, 166, 4334, 166, 166, 166,
2554 166, 166, 166, 1862, 224, 2131, 6081, 166, 2710, 166, 166, 166, 4765, 166, 1964, 5060,
2555 166, 1897, 166, 3987, 166, 166, 5566, 2021, 166, 45, 166, 166, 3283, 3932, 166, 166,
2556 3519, 166, 166, 291, 166, 166, 5132, 2800, 166, 166, 166, 5531, 4054, 166, 3509, 166,
2557 166, 4908, 3028, 1756, 1910, 4671, 2729, 5224, 166, 121, 3327, 3317, 166, 181, 2371, 5541,
2558 166, 1787, 2666, 5134, 5698, 166, 5480, 3870, 166, 3823, 166, 3165, 5343, 5123, 5089, 166,
2559 2422, 3724, 166, 2735, 1953, 5724, 4444, 4871, 166, 166, 5001, 5512, 3133, 5171, 166, 2216,
2560 166, 4877, 4542, 166, 166, 166, 5270, 166, 166, 166, 1922, 69, 3547, 166, 166, 166,
2561 166, 166, 231, 4547, 5155, 3357, 3464, 166, 72, 3332, 166, 4392, 5971, 3896, 4451, 3173,
2562 2569, 166, 4466, 2518, 1698, 2850, 5349, 166, 166, 4457, 5062, 166, 2202, 1650, 2191, 166,
2563 1950, 2583, 166, 5293, 2032, 5893, 166, 3994, 5392, 3878, 96, 166, 166, 3195, 166, 4001,
2564 1900, 2513, 6027, 166, 166, 166, 166, 5407, 166, 166, 2332, 5125, 5891, 3096, 3172, 166,
2565 166, 3065, 166, 166, 4535, 166, 166, 166, 4553, 3131, 3693, 166, 2255, 2613, 166, 166,
2566 166, 166, 2866, 166, 166, 166, 2940, 5333, 3199, 166, 2628, 4312, 166, 166, 1794, 4681,
2567 2058, 3606, 166, 166, 3542, 2166, 4696, 2520, 166, 4739, 166, 2563, 166, 166, 3681, 166,
2568 166, 166, 4127, 1967, 2972, 166, 5227, 166, 166, 5551, 4255, 56, 166, 5553, 3219, 4367,
2569 166, 3218, 4749, 2886, 3695, 3711, 2228, 166, 166, 166, 2268, 5054, 3749, 4825, 166, 4933,
2570 4992, 4530, 166, 4892, 3400, 166, 197, 166, 6078, 166, 166, 3971, 166, 166, 5357, 1852,
2571 3377, 166, 5196, 3740, 5320, 166, 166, 3099, 166, 4562, 6061, 3294, 166, 166, 166, 166,
2572 3266, 3627, 2567, 166, 228, 2773, 166, 166, 53, 1833, 2401, 124, 166, 4272, 3922, 5959,
2573 2903, 3923, 166, 6155, 166, 166, 166, 166, 216, 166, 5247, 166, 5591, 166, 166, 82,
2574 87, 4526, 166, 166, 5439, 166, 4935, 166, 3187, 1869, 166, 1764, 5500, 6023, 3356, 166,
2575 3350, 2457, 2455, 166, 1637, 166, 3342, 166, 166, 3355, 5154, 166, 276, 166, 166, 166,
2576 3371, 5969, 166, 1665, 166, 166, 166, 166, 166, 166, 166, 4092, 1712, 3122, 5086, 166,
2577 166, 4906, 166, 2591, 166, 166, 166, 1894, 2997, 166, 4476, 4384, 166, 4747, 4109, 2655,
2578 166, 5978, 1636, 4898, 166, 166, 166, 166, 166, 166, 166, 5207, 166, 166, 3712, 3876,
2579 91, 5876, 3786, 5998, 166, 166, 166, 4391, 166, 166, 2832, 2220, 4435, 166, 166, 5796,
2580 3156, 6112, 166, 1643, 1821, 3129, 166, 4200, 166, 5857, 166, 166, 2351, 5902, 1855, 5043,
2581 166, 3167, 5191, 3996, 5718, 4876, 3071, 2965, 5735, 5930, 6149, 2345, 3297, 3822, 166, 166,
2582 307, 6019, 1859, 2981, 4914, 3320, 6165, 2328, 140, 2372, 308, 166, 2280, 5081, 166, 3275,
2583 166, 159, 2399, 2327, 5489, 4690, 6059, 4492, 4269, 6058, 166, 19, 166, 3323, 5708, 128,
2584 4812, 2949, 166, 166, 2890, 2630, 5237, 166, 256, 3673, 4621, 5380, 166, 3353, 166, 1651,
2585 2573, 1635, 4011, 3429, 3370, 3720, 166, 166, 6108, 3848, 5104, 2851, 1998, 166, 166, 5106,
2586 20, 166, 2633, 166, 166, 166, 166, 5662, 125, 3651, 1731, 4702, 166, 3197, 166, 2947,
2587 3046, 4196, 2185, 6100, 166, 2602, 2908, 2487, 166, 5232, 166, 4028, 5919, 166, 2680, 3608,
2588 3252, 166, 4899, 166, 166, 166, 166, 2529, 166, 166, 166, 166, 166, 2534, 166, 2299,
2589 4076, 166, 3643, 166, 3921, 166, 166, 166, 1939, 2124, 1829, 2436, 3892, 166, 3481, 271,
2590 5307, 1697, 166, 166, 5098, 2906, 5545, 166, 5980, 3203, 166, 1903, 4626, 4674, 6118, 6097,
2591 5926, 4136, 1677, 3232, 4720, 166, 166, 166, 229, 2012, 3620, 166, 3798, 166, 166, 2609,
2592 3489, 3809, 166, 166, 166, 166, 166, 166, 166, 5826, 166, 166, 166, 4903, 166, 166,
2593 166, 166, 6168, 166, 5052, 5044, 5644, 2375, 2677, 4012, 3062, 5831, 4752, 166, 4125, 2610,
2594 2062, 3238, 292, 2533, 5872, 51, 166, 1947, 4225, 166, 2288, 4845, 166, 5788, 166, 5717,
2595 166, 166, 5549, 5619, 166, 4165, 166, 2721, 2311, 5501, 4416, 4383, 166, 166, 3068, 5499,
2596 5936, 166, 4204, 4766, 4688, 1870, 5220, 166, 166, 166, 166, 237, 2523, 6039, 3061, 2793,
2597 3998, 166, 2545, 2309, 3144, 3679, 3969, 166, 166, 166, 4379, 3574, 205, 2808, 5822, 166,
2598 166, 2188, 4823, 4990, 5561, 5711, 166, 5627, 6034, 5253, 3783, 5047, 4405, 166, 59, 1755,
2599 3178, 318, 166, 4710, 2933, 3409, 6062, 2821, 166, 6099, 166, 4178, 166, 166, 4122, 36,
2600 4779, 166, 166, 4323, 3073, 5410, 2101, 166, 166, 44, 5690, 166, 3265, 166, 5222, 5909,
2601 1838, 166, 4755, 2215, 166, 4082, 166, 166, 3210, 5140, 3124, 5238, 166, 5913, 2321, 166,
2602 2416, 5976, 3918, 5078, 4218, 5703, 4897, 6011, 5685, 2214, 166, 166, 6180, 5175, 1715, 166,
2603 166, 3760, 4497, 1808, 4826, 166, 2540, 166, 166, 5513, 4971, 5915, 166, 166, 2525, 166,
2604 4480, 42, 232, 2412, 2797, 3229, 5263, 2852, 5543, 2126, 3562, 166, 2872, 4695, 5985, 5136,
2605 2714, 4262, 5473, 166, 4160, 4347, 166, 166, 166, 166, 5271, 166, 166, 5108, 166, 166,
2606 166, 166, 5437, 4875, 3963, 4362, 5820, 5559, 4890, 4728, 166, 166, 2692, 166, 4870, 3591,
2607 5472, 166, 2690, 166, 5854, 3817, 166, 280, 166, 166, 113, 4128, 3396, 166, 4264, 5058,
2608 2283, 166, 2281, 4916, 5671, 166, 2708, 166, 166, 4589, 166, 166, 4689, 166, 1686, 166,
2609 166, 166, 166, 166, 1774, 166, 166, 166, 5651, 3777, 2234, 166, 3864, 18, 3589, 4592,
2610 4777, 166, 166, 5254, 4245, 166, 166, 166, 4368, 5172, 3522, 166, 4306, 153, 5230, 166,
2611 5598, 5420, 311, 2414, 4159, 2985, 5137, 166, 2179, 1801, 166, 4595, 2083, 2020, 166, 3602,
2612 2170, 4259, 3048, 166, 166, 4193, 2350, 166, 166, 2702, 166, 4521, 166, 166, 2496, 166,
2613 4593, 2006, 166, 166, 2292, 4135, 166, 6069, 4623, 166, 166, 4827, 3995, 4291, 3243, 166,
2614 166, 166, 5622, 166, 3539, 166, 166, 4915, 4373, 2479, 3775, 6008, 5838, 4321, 1612, 5530,
2615 166, 3773, 4267, 4086, 3081, 2261, 166, 166, 4785, 4641, 5292, 166, 4820, 5612, 5556, 166,
2616 166, 166, 4396, 6084, 3414, 166, 3331, 2380, 5921, 4315, 2340, 166, 5511, 166, 4713, 3754,
2617 2912, 2553, 166, 3468, 5388, 166, 1932, 3540, 5834, 166, 166, 3186, 5258, 166, 4107, 166,
2618 166, 166, 166, 166, 166, 166, 166, 2108, 12, 2368, 2789, 166, 166, 4148, 1878, 166,
2619 166, 2324, 4179, 2945, 2531, 166, 166, 166, 4485, 3765, 2308, 166, 2754, 166, 6102, 166,
2620 1921, 260, 2241, 166, 2592, 166, 166, 166, 4964, 166, 3055, 5261, 4943, 2916, 166, 201,
2621 5728, 166, 5759, 4314, 4730, 6024, 166, 4926, 4762, 1834, 2055, 166, 40, 166, 5416, 166,
2622 3722, 2360, 1928, 166, 4889, 4590, 5550, 3498, 166, 6003, 2029, 4106, 4346, 3758, 166, 2753,
2623 103, 1891, 5067, 166, 3398, 2079, 5784, 3074, 3787, 166, 166, 3936, 166, 5766, 166, 4847,
2624 3928, 5119, 166, 5181, 4602, 2605, 5712, 4523, 166, 166, 4717, 166, 2227, 2181, 166, 4678,
2625 166, 166, 4901, 166, 4980, 166, 166, 166, 166, 5806, 2894, 5631, 4995, 2608, 166, 166,
2626 166, 3917, 166, 3417, 166, 2795, 1655, 3189, 3364, 166, 4839, 3510, 4212, 5641, 6091, 138,
2627 166, 166, 3343, 4620, 2722, 4566, 166, 3518, 3424, 166, 166, 1653, 166, 5057, 166, 5375,
2628 4833, 166, 4273, 4348, 166, 166, 166, 4912, 166, 3662, 166, 4281, 166, 5169, 166, 5883,
2629 2737, 2572, 4685, 4068, 166, 4214, 166, 166, 2409, 166, 166, 4571, 166, 5624, 5722, 5949,
2630 166, 3675, 166, 166, 5109, 3428, 166, 166, 5446, 166, 3290, 166, 3309, 166, 166, 4776,
2631 166, 166, 166, 166, 166, 166, 5617, 2860, 166, 166, 166, 166, 3629, 1741, 166, 166,
2632 183, 4973, 3047, 2854, 75, 2035, 3652, 2159, 166, 4150, 6037, 3225, 4519, 1902, 2678, 2413,
2633 1961, 166, 166, 166, 166, 4972, 1847, 166, 5636, 4017, 166, 3345, 166, 4520, 166, 2861,
2634 166, 3092, 6060, 157, 2542, 2298, 4496, 166, 2607, 6110, 5707, 2314, 166, 166, 273, 166,
2635 5952, 166, 4957, 322, 6065, 2272, 6140, 2438, 3458, 3287, 166, 166, 166, 166, 2684, 288,
2636 3354, 166, 166, 3983, 1702, 166, 166, 166, 2393, 2435, 4202, 3308, 5805, 5085, 166, 166,
2637 1938, 166, 166, 2171, 5892, 2337, 166, 4648, 3116, 2486, 4363, 3567, 166, 166, 2822, 2041,
2638 166, 4703, 3956, 5192, 166, 3975, 5720, 3647, 2134, 5932, 166, 166, 5160, 263, 166, 166,
2639 166, 4549, 166, 166, 1701, 3086, 166, 166, 4737, 166, 2252, 166, 170, 166, 166, 166,
2640 2301, 5478, 166, 166, 5979, 3007, 166, 166, 166, 4104, 166, 2469, 2700, 166, 4998, 3376,
2641 166, 1840, 166, 166, 4470, 166, 5235, 3930, 166, 166, 166, 6031, 166, 166, 166, 3827,
2642 4700, 166, 166, 166, 166, 166, 166, 4103, 3976, 166, 166, 166, 166, 5027, 4322, 5130,
2643 166, 4741, 2132, 4118, 3080, 4137, 166, 6179, 166, 166, 166, 166, 166, 6120, 4188, 166,
2644 2251, 166, 3253, 166, 4887, 166, 4293, 5241, 166, 166, 166, 166, 166, 166, 5076, 166,
2645 166, 4177, 166, 221, 166, 2757, 5377, 166, 43, 166, 166, 3180, 5540, 166, 213, 4541,
2646 166, 166, 166, 166, 166, 1641, 166, 4578, 4639, 166, 166, 1683, 2139, 1689, 5249, 5773,
2647 5226, 166, 2820, 166, 5516, 5045, 166, 4896, 5657, 5189, 166, 5770, 2725, 5148, 166, 166,
2648 166, 2929, 166, 3479, 166, 166, 4564, 3752, 4305, 4232, 166, 5906, 1779, 166, 2709, 4941,
2649 4342, 166, 4882, 166, 4277, 2322, 166, 4879, 1610, 3038, 166, 3762, 2054, 5652, 166, 4524,
2650 3820, 4806, 166, 166, 104, 3416, 4869, 4243, 4854, 166, 4114, 166, 2121, 166, 3463, 3556,
2651 166, 4795, 166, 2118, 3920, 166, 166, 4667, 5046, 166, 166, 2088, 4360, 5787, 2198, 4233,
2652 5552, 3970, 3523, 2037, 5791, 166, 166, 4299, 2336, 166, 166, 166, 4173, 4588, 3626, 5187,
2653 166, 3363, 4611, 294, 4962, 5243, 2719, 6022, 4976, 3559, 166, 2662, 5779, 6151, 166, 3527,
2654 166, 5404, 6132, 1839, 166, 3090, 166, 2253, 166, 5441, 5518, 6049, 166, 166, 6136, 3026,
2655 3474, 5960, 166, 3937, 4105, 166, 2348, 2039, 4738, 166, 5233, 3882, 3840, 166, 278, 190,
2656 166, 5751, 4313, 166, 3855, 166, 166, 6171, 166, 166, 5381, 3941, 166, 166, 166, 166,
2657 3334, 166, 2038, 6088, 166, 1918, 5037, 2325, 2378, 4894, 3514, 3715, 5168, 166, 166, 4083,
2658 2873, 166, 166, 166, 2693, 166, 3543, 166, 2577, 3013, 166, 166, 4594, 2622, 166, 166,
2659 166, 3401, 166, 166, 5447, 5328, 5547, 6133, 2335, 3739, 166, 166, 166, 166, 5614, 3492,
2660 3610, 3466, 166, 5336, 4354, 166, 4662, 166, 166, 4283, 166, 166, 303, 5904, 166, 2717,
2661 166, 166, 2276, 5564, 2386, 5661, 2040, 166, 1630, 4652, 166, 4840, 166, 110, 5329, 3979,
2662 5734, 2550, 166, 166, 6007, 5999, 2978, 4771, 5360, 166, 4023, 166, 166, 5920, 4065, 166,
2663 3880, 166, 5422, 1813, 166, 6166, 73, 166, 166, 3669, 5762, 5077, 166, 2953, 85, 166,
2664 3517, 166, 116, 166, 2738, 3710, 166, 1634, 166, 166, 166, 2290, 3001, 166, 166, 3037,
2665 2400, 3410, 166, 1791, 4231, 166, 3546, 5009, 5299, 2807, 166, 166, 1675, 1619, 2374, 3093,
2666 5302, 3278, 2330, 5301, 2343, 2307, 3274, 5017, 2265, 3700, 2465, 166, 139, 4292, 166, 5056,
2667 3952, 166, 4528, 2388, 1886, 166, 166, 3016, 3698, 5881, 166, 2379, 3223, 166, 166, 3847,
2668 2407, 5493, 3183, 3307, 166, 265, 166, 2421, 6161, 2057, 5363, 3863, 2474, 166, 166, 5427,
2669 166, 2140, 2955, 166, 3070, 4237, 5018, 5988, 5570, 275, 4862, 2357, 166, 195, 166, 2593,
2670 6047, 166, 2878, 166, 166, 2781, 3004, 4180, 166, 5593, 166, 5973, 2544, 5064, 166, 4324,
2671 4701, 166, 3084, 166, 166, 5372, 4725, 166, 5650, 166, 166, 2786, 166, 3781, 3583, 3682,
2672 1850, 4420, 3296, 5173, 4461, 166, 166, 166, 2984, 166, 93, 166, 166, 4336, 5943, 2922,
2673 3300, 166, 4843, 166, 166, 166, 166, 2094, 166, 2939, 166, 4656, 166, 5146, 166, 166,
2674 166, 166, 2104, 3977, 4660, 5312, 166, 1865, 166, 5487, 5558, 3380, 166, 1957, 3162, 3281,
2675 166, 3588, 3268, 2099, 166, 166, 2319, 4913, 4187, 5503, 5782, 150, 166, 52, 5450, 166,
2676 166, 166, 2941, 5877, 166, 4031, 5393, 166, 3931, 4166, 3135, 3445, 166, 5053, 5430, 4836,
2677 166, 5315, 3389, 4636, 166, 166, 3441, 166, 166, 3767, 2961, 166, 4761, 4604, 3179, 166,
2678 166, 4751, 2148, 2015, 166, 123, 5013, 166, 2936, 166, 2063, 166, 5823, 166, 5096, 166,
2679 166, 4198, 166, 166, 166, 3845, 166, 166, 238, 166, 2703, 3541, 166, 4813, 166, 4477,
2680 2349, 4197, 5996, 3324, 4789, 3063, 166, 166, 5504, 5273, 2805, 13, 166, 5601, 5402, 4119,
2681 5206, 166, 166, 4251, 3704, 4176, 1963, 2882, 166, 202, 3125, 3318, 112, 166, 3362, 4835,
2682 3420, 3974, 5099, 166, 4433, 166, 166, 166, 1766, 2663, 166, 166, 4683, 166, 166, 5485,
2683 47, 5101, 5341, 5765, 3390, 1648, 4341, 3945, 6045, 1645, 166, 5578, 2594, 166, 166, 3772,
2684 166, 166, 3196, 3603, 166, 5399, 166, 5075, 166, 5911, 4632, 4781, 5313, 270, 166, 2346,
2685 166, 166, 166, 1986, 166, 166, 4958, 166, 166, 166, 4048, 166, 3076, 166, 166, 4891,
2686 166, 166, 57, 166, 220, 166, 166, 166, 4117, 166, 166, 166, 166, 5194, 2658, 166,
2687 166, 2942, 6071, 4182, 166, 2976, 5816, 166, 166, 166, 166, 3985, 4211, 2514, 166, 166,
2688 166, 2504, 3446, 1711, 166, 166, 2107, 5190, 166, 34, 166, 3912, 5382, 3003, 166, 166,
2689 166, 2999, 2404, 4734, 4455, 2087, 166, 2405, 156, 166, 2830, 3303, 296, 3295, 2067, 4268,
2690 166, 166, 5642, 166, 166, 1901, 166, 5133, 166, 166, 166, 166, 3176, 2973, 4677, 166,
2691 166, 6164, 3000, 2396, 2734, 5697, 5989, 166, 2823, 5265, 5852, 166, 166, 2623, 2625, 2287,
2692 4844, 1758, 166, 166, 166, 166, 166, 6073, 166, 5379, 2389, 5279, 2444, 5515, 166, 4038,
2693 166, 4948, 5640, 166, 166, 3572, 4258, 166, 166, 166, 5204, 166, 4603, 5797, 166, 166,
2694 166, 1725, 4600, 166, 166, 5498, 166, 4152, 166, 172, 4758, 166, 2598, 2489, 2076, 4366,
2695 2568, 166, 4352, 3782, 166, 166, 3059, 3946, 5138, 5727, 4484, 5694, 166, 3796, 166, 166,
2696 166, 166, 5334, 1778, 2245, 166, 4517, 4419, 2250, 182, 5856, 166, 2835, 4495, 1858, 2033,
2697 6014, 6086, 3211, 166, 166, 154, 2145, 166, 129, 3661, 2661, 5860, 6143, 2640, 3890, 6160,
2698 166, 166, 2747, 166, 166, 2291, 282, 2476, 166, 166, 3825, 166, 1925, 166, 4489, 166,
2699 166, 166, 4034, 166, 166, 166, 166, 166, 166, 122, 4708, 4919, 2373, 2453, 5419, 5954,
2700 297, 5290, 166, 1978, 166, 4932, 3501, 166, 3085, 3386, 166, 5405, 4512, 166, 3209, 5740,
2701 4020, 5495, 5815, 314, 166, 3190, 4824, 166, 166, 3448, 207, 1623, 6096, 5878, 166, 1836,
2702 166, 166, 2728, 166, 5278, 3419, 3012, 5618, 5266, 3078, 166, 166, 2244, 166, 4569, 6068,
2703 166, 3336, 166, 5677, 6052, 5079, 166, 5453, 5245, 5799, 166, 1982, 166, 5958, 4619, 5821,
2704 166, 5285, 284, 1631, 5710, 6070, 5365, 2189, 3242, 166, 2752, 5483, 5297, 6150, 5522, 166,
2705 1815, 166, 166, 166, 5801, 166, 166, 5398, 166, 166, 166, 2967, 2515, 3169, 166, 166,
2706 2562, 166, 1617, 2069, 166, 166, 6154, 166, 3721, 166, 5327, 166, 166, 166, 5592, 166,
2707 166, 2286, 1716, 3903, 166, 2395, 286, 3587, 6146, 3286, 4186, 5882, 5894, 5737, 6032, 5879,
2708 2761, 4829, 3788, 166, 166, 3233, 5356, 5693, 166, 2429, 2449, 141, 3444, 5186, 166, 166,
2709 3477, 4080, 4584, 166, 166, 3670, 1851, 3824, 4337, 3886, 2792, 166, 5867, 166, 166, 3557,
2710 3147, 166, 166, 2200, 166, 2505, 166, 4310, 4865, 5656, 5992, 5672, 166, 5199, 135, 3023,
2711 2994, 4472, 166, 166, 166, 2019, 4319, 3472, 166, 166, 166, 29, 206, 3944, 3027, 5804,
2712 4731, 5449, 166, 2825, 3310, 166, 6172, 5202, 166, 2516, 3644, 4557, 166, 166, 166, 166,
2713 2671, 4427, 3432, 3276, 5584, 5536, 4645, 3202, 166, 2612, 166, 4249, 2425, 3259, 4622, 166,
2714 2411, 4303, 4206, 166, 166, 166, 3734, 6063, 118, 166, 166, 3641, 166, 166, 166, 4937,
2715 1871, 3421, 2208, 166, 166, 166, 166, 4881, 166, 166, 166, 166, 3298, 166, 61, 166,
2716 166, 166, 3293, 6145, 71, 3619, 166, 166, 3383, 1624, 320, 2187, 4113, 166, 166, 166,
2717 166, 166, 5080, 2344, 5625, 2358, 1621, 4230, 5579, 5359, 295, 4248, 5267, 3883, 6124, 187,
2718 5112, 2122, 166, 166, 166, 5142, 6004, 166, 5322, 6175, 3639, 3182, 4425, 166, 175, 166,
2719 166, 166, 5778, 3939, 3484, 166, 166, 5832, 5248, 5935, 4467, 5858, 166, 5038, 166, 166,
2720 3102, 166, 4880, 166, 166, 166, 166, 3418, 1666, 5338, 3680, 5291, 4441, 3385, 166, 5733,
2721 4503, 2774, 166, 2631, 4153, 166, 2000, 166, 166, 5345, 166, 166, 4298, 1804, 4707, 166,
2722 1613, 1952, 2111, 166, 166, 166, 166, 166, 2897, 166, 166, 4044, 166, 166, 166, 166,
2723 2863, 5475, 166, 166, 166, 1704, 166, 3609, 2782, 2018, 166, 5361, 166, 3694, 3733, 166,
2724 2785, 1969, 166, 166, 2834, 1868, 3779, 1877, 60, 166, 4143, 3902, 166, 4361, 3188, 2498,
2725 6009, 166, 115, 166, 3138, 166, 4575, 6080, 133, 2030, 166, 166, 166, 2306, 2136, 3043,
2726 3447, 2142, 166, 3799, 1646, 5269, 3640, 166, 2674, 5502, 166, 5467, 166, 5069, 166, 166,
2727 4654, 4581, 5274, 5036, 4364, 166, 3115, 166, 2128, 4544, 5433, 2086, 2584, 4413, 166, 166,
2728 5385, 166, 234, 166, 1625, 166, 166, 166, 5139, 2511, 4974, 2766, 166, 166, 166, 2095,
2729 3990, 217, 166, 2988, 4061, 166, 209, 4883, 166, 166, 166, 166, 166, 4326, 166, 5465,
2730 2859, 166, 2887, 166, 2231, 166, 1658, 166, 2246, 166, 1844, 166, 166, 3087, 2871, 3872,
2731 1660, 48, 166, 166, 3622, 166, 1709, 166, 166, 6177, 6173, 166, 3569, 166, 166, 166,
2732 241, 3660, 3631, 166, 166, 5319, 5141, 174, 166, 166, 4412, 166, 5145, 166, 1919, 166,
2733 5276, 166, 2385, 166, 1618, 166, 166, 2501, 166, 166, 1734, 5966, 3145, 166, 1690, 4025,
2734 1664, 4559, 2433, 2392, 3552, 4006, 1896, 166, 166, 2546, 4450, 5396, 4221, 4046, 166, 166,
2735 2642, 166, 4448, 166, 2784, 3480, 4807, 166, 166, 3534, 166, 166, 5272, 166, 166, 2831,
2736 4263, 166, 166, 166, 166, 4414, 5628, 3486, 166, 3748, 166, 4598, 3719, 3598, 3611, 166,
2737 4792, 5059, 4110, 166, 2656, 166, 166, 84, 5429, 166, 166, 166, 281, 1955, 166, 166,
2738 166, 3616, 4997, 166, 166, 166, 166, 3230, 166, 166, 166, 166, 166, 166, 77, 166,
2739 166, 166, 1800, 166, 4236, 166, 166, 166, 166, 166, 5757, 2530, 1662, 166, 4607, 1659,
2740 166, 1685, 3341, 166, 1699, 4058, 3407, 1854, 4417, 3034, 166, 166, 166, 166, 5568, 166,
2741 3206, 166, 5529, 166, 166, 166, 2116, 3487, 144, 166, 166, 166, 5523, 5373, 5321, 166,
2742 6064, 2921, 166, 1696, 2473, 166, 166, 3716, 5689, 166, 4608, 3879, 166, 166, 166, 2156,
2743 166, 4358, 2446, 166, 3958, 166, 5520, 4340, 4848, 166, 3285, 166, 2665, 166, 3459, 1905,
2744 5115, 68, 5730, 166, 3127, 5029, 4370, 166, 3753, 166, 3674, 6025, 4490, 166, 4183, 166,
2745 94, 166, 166, 4051, 3766, 3140, 4907, 3857, 166, 166, 4596, 166, 3888, 3040, 2507, 5643,
2746 166, 166, 4311, 2618, 5582, 166, 166, 3678, 166, 1988, 166, 166, 4464, 166, 166, 166,
2747 166, 4278, 3677, 2173, 5256, 166, 166, 5162, 166, 5178, 1644, 5094, 166, 2557, 5506, 166,
2748 166, 166, 4927, 5348, 1797, 166, 166, 39, 166, 3866, 3655, 236, 5403, 2175, 3361, 166,
2749 1976, 5993, 226, 166, 4643, 166, 5339, 4098, 2653, 4969, 166, 3346, 4984, 4635, 166, 166,
2750 166, 166, 4981, 188, 166, 166, 28, 4088, 166, 166, 166, 25, 3663, 2696, 166, 4679,
2751 5114, 5802, 166, 166, 166, 166, 166, 3810, 5749, 166, 1673, 4276, 166, 3756, 4184, 166,
2752 5630, 166, 166, 166, 4531, 212, 5663, 166, 166, 2746, 166, 5386, 3618, 3594, 1887, 166,
2753 166, 5443, 166, 1726, 4094, 5065, 4756, 166, 166, 5308, 5225, 2081, 166, 166, 3064, 166,
2754 166, 1981, 3637, 4355, 1626, 166, 166, 4686, 166, 5793, 180, 5066, 2938, 3819, 4904, 3601,
2755 166, 166, 2495, 5025, 5768, 2621, 4650, 3041, 166, 5897, 3633, 166, 166, 4375, 166, 5714,
2756 1667, 3273, 3950, 1668, 166, 5855, 166, 2364, 166, 1881, 166, 2646, 5460, 166, 2770, 4951,
2757 5414, 166, 4442, 2113, 5726, 298, 5934, 2053, 166, 166, 4053, 166, 166, 4514, 4697, 166,
2758 166, 5198, 2707, 166, 5605, 166, 166, 5218, 2596, 166, 2110, 166, 1806, 2160, 166, 166,
2759 2212, 166, 3636, 166, 166, 4377, 4021, 3707, 4502, 166, 4195, 166, 166, 166, 4108, 3725,
2760 3676, 166, 2084, 166, 166, 166, 166, 4216, 166, 166, 6156, 166, 2896, 166, 166, 166,
2761 166, 166, 166, 3826, 2870, 3793, 166, 166, 5927, 166, 2759, 166, 4613, 2297, 5638, 166,
2762 2842, 5031, 4793, 5184, 166, 166, 2008, 166, 257, 2881, 117, 6051, 3044, 4079, 2833, 166,
2763 6117, 166, 3236, 5469, 166, 166, 2874, 6076, 166, 1799, 80, 41, 166, 1864, 166, 5709,
2764 1611, 5026, 5176, 168, 3269, 4081, 166, 166, 1970, 4550, 166, 4250, 4101, 4565, 5950, 5845,
2765 97, 4064, 166, 5394, 4374, 4343, 166, 166, 4658, 3248, 166, 208, 1735, 4047, 2843, 166,
2766 166, 166, 166, 2794, 166, 166, 5844, 166, 166, 3094, 2177, 5436, 3646, 166, 3564, 4682,
2767 166, 5948, 5835, 162, 2059, 5151, 2034, 1926, 5941, 5903, 5177, 166, 166, 166, 4801, 3439,
2768 1780, 166, 166, 3280, 3434, 166, 166, 4498, 5565, 4043, 166, 4432, 4722, 3959, 166, 3746,
2769 166, 166, 177, 166, 166, 2748, 166, 4483, 166, 166, 4144, 166, 166, 166, 166, 2066,
2770 2915, 166, 2049, 2130, 4684, 166, 49, 3506, 5391, 166, 2590, 6103, 1714, 2410, 3053, 3837,
2771 4301, 166, 3255, 2644, 166, 166, 4014, 166, 2475, 4788, 2876, 166, 166, 166, 166, 166,
2772 166, 4140, 166, 166, 321, 166, 1966, 166, 166, 2855, 3111, 3800, 166, 4446, 2551, 166,
2773 166, 166, 2824, 166, 166, 166, 2164, 3010, 2226, 166, 4857, 166, 2582, 5118, 4582, 5917,
2774 166, 166, 3338, 3482, 3328, 166, 4817, 166, 5371, 3830, 166, 3009, 1633, 3329, 4052, 166,
2775 3701, 4983, 4500, 4487, 4878, 166, 166, 5482, 3544, 166, 3057, 2026, 4398, 2847, 3532, 3262,
2776 3399, 166, 166, 166, 4478, 4167, 166, 3411, 2599, 5362, 166, 2711, 166, 166, 166, 166,
2777 3452, 2522, 5586, 5548, 3279, 2538, 166, 166, 166, 4161, 166, 2123, 166, 166, 2660, 166,
2778 166, 1706, 166, 15, 3537, 5051, 5869, 166, 3025, 166, 4447, 3744, 120, 166, 166, 166,
2779 204, 2810, 166, 5124, 2376, 5306, 166, 166, 4493, 166, 166, 166, 5289, 6046, 166, 2762,
2780 2541, 1857, 2467, 5163, 166, 166, 166, 166, 5830, 166, 2172, 3359, 166, 2928, 166, 166,
2781 166, 6129, 166, 5445, 166, 166, 5924, 6144, 166, 102, 166, 166, 1678, 166, 4491, 5705,
2782 166, 1753, 166, 3873, 5725, 4145, 1909, 166, 2155, 166, 166, 1848, 3315, 1874, 166, 4945,
2783 2524, 166, 3263, 2362, 1785, 166, 166, 166, 152, 2102, 5723, 5131, 5754, 4032, 4029, 166,
2784 4295, 3391, 166, 166, 166, 5282, 1747, 3159, 2235, 5583, 1786, 3630, 6111, 2974, 4797, 3623,
2785 166, 2071, 4929, 166, 2603, 3964, 3378, 166, 166, 2654, 151, 3940, 4527, 4518, 166, 2430,
2786 1884, 3812, 166, 2867, 166, 166, 166, 2756, 5418, 166, 2354, 4606, 166, 2153, 166, 4855,
2787 166, 166, 1720, 166, 3213, 3926, 166, 5158, 4349, 166, 4828, 166, 166, 2031, 166, 2300,
2788 166, 166, 166, 2211, 4954, 3121, 4754, 2485, 166, 166, 166, 3593, 166, 2718, 5317, 2765,
2789 5120, 166, 2527, 166, 1994, 5947, 166, 166, 166, 6085, 2302, 100, 79, 2982, 3705, 2180,
2790 2043, 166, 1872, 1671, 166, 3729, 166, 4944, 3665, 2217, 2119, 166, 5615, 166, 1620, 166,
2791 166, 166, 166, 35, 3913, 2760, 166, 3688, 3672, 4042, 166, 166, 5117, 4227, 166, 4445,
2792 2458, 3803, 4554, 4988, 166, 166, 3141, 3491, 166, 166, 166, 166, 5095, 4668, 5567, 166,
2793 166, 2885, 1790, 2996, 166, 166, 166, 166, 3737, 166, 2470, 166, 166, 4339, 166, 166,
2794 166, 4920, 166, 166, 3697, 5471, 166, 166, 3538, 4558, 3467, 5262, 5609, 3858, 166, 166,
2795 5007, 2780, 2791, 2236, 5668, 3134, 166, 166, 5776, 3470, 3291, 166, 2532, 166, 166, 166,
2796 3805, 264, 166, 3227, 166, 166, 166, 2334, 166, 5087, 101, 166, 3634, 58, 2813, 166,
2797 166, 166, 3222, 4704, 4488, 4508, 5459, 2117, 5873, 166, 1828, 166, 166, 166, 166, 166,
2798 2105, 166, 5613, 5761, 2920, 3098, 166, 166, 3277, 166, 166, 166, 166, 83, 166, 166,
2799 166, 3967, 166, 5574, 166, 4985, 30, 3426, 166, 179, 3014, 4015, 246, 2556, 4449, 3723,
2800 5611, 3436, 166, 4240, 3642, 166, 4536, 2048, 5810, 166, 1971, 166, 5557, 5323, 5022, 191,
2801 5492, 166, 4837, 4426, 2537, 2271, 3177, 5674, 166, 2796, 1995, 166, 3906, 166, 4403, 3862,
2802 4716, 2406, 3948, 4670, 4309, 166, 2575, 5358, 2951, 166, 3666, 3612, 5577, 4579, 4743, 166,
2803 6072, 6036, 4563, 2586, 166, 5836, 166, 166, 5752, 166, 3563, 166, 2909, 3251, 92, 166,
2804 4711, 4149, 166, 166, 3052, 5122, 2904, 2635, 1990, 166, 166, 166, 166, 166, 166, 166,
2805 166, 4213, 166, 3103, 3142, 2683, 6105, 2209, 3175, 4215, 166, 166, 166, 166, 166, 166,
2806 166, 5303, 4075, 5374, 166, 4174, 4154, 1895, 4538, 2764, 166, 5817, 6113, 4033, 166, 6090,
2807 166, 2990, 166, 3164, 166, 166, 166, 247, 166, 6083, 3412, 166, 5738, 166, 3599, 166,
2808 1904, 2162, 2547, 3960, 166, 166, 3154, 55, 166, 5991, 4921, 2879, 166, 166, 5347, 166,
2809 166, 166, 2712, 4787, 166, 1908, 166, 166, 166, 3184, 166, 166, 166, 4572, 3846, 3657,
2810 166, 166, 5481, 166, 166, 3397, 1856, 4978, 166, 3900, 3570, 3802, 166, 166, 2075, 4408,
2811 166, 6079, 2313, 166, 166, 5756, 166, 166, 2070, 166, 166, 3137, 166, 166, 3686, 166,
2812 166, 166, 166, 67, 5019, 166, 1742, 166, 5354, 166, 5149, 166, 2931, 4946, 6006, 166,
2813 166, 2865, 4902, 3029, 1722, 3449, 166, 1987, 166, 62, 5626, 166, 166, 166, 2670, 1657,
2814 5599, 3056, 166, 3791, 5020, 166, 1979, 4437, 1899, 166, 166, 196, 2636, 166, 143, 3475,
2815 4317, 2512, 2415, 5033, 5024, 2112, 2864, 3551, 166, 1688, 33, 4585, 3648, 4399, 166, 166,
2816 166, 166, 166, 1824, 166, 166, 166, 166, 166, 166, 4513, 166, 2478, 4407, 166, 166,
2817 2492, 4130, 4318, 2980, 5746, 166, 2606, 4063, 4123, 166, 255, 166, 166, 4680, 166, 3586,
2818 5975, 3935, 166, 5528, 166, 3158, 166, 166, 2614, 5035, 166, 3488, 3214, 166, 166, 166,
2819 5413, 3713, 166, 5875, 4329, 5250, 166, 166, 3741, 166, 54, 1885, 3839, 166, 4924, 166,
2820 166, 166, 4158, 166, 166, 2152, 1661, 166, 166, 4327, 166, 3933, 166, 5666, 166, 166,
2821 2580, 166, 3404, 4111, 2862, 4438, 166, 166, 4072, 166, 166, 3938, 2958, 4302, 166, 3851,
2822 166, 268, 166, 166, 1975, 222, 3204, 3438, 4616, 166, 4275, 3101, 2648, 3989, 5215, 166,
2823 4229, 166, 5440, 166, 5093, 2639, 166, 166, 4439, 166, 2316, 4239, 166, 166, 166, 166,
2824 166, 1817, 4486, 166, 3272, 166, 166, 4085, 2078, 2902, 166, 166, 166, 4381, 1853, 3054,
2825 166, 166, 5005, 2669, 166, 2856, 2706, 166, 166, 166, 4185, 166, 1748, 166, 166, 166,
2826 5771, 166, 166, 3915, 166, 166, 2205, 6122, 166, 166, 1632, 5400, 166, 2477, 4740, 166,
2827 166, 166, 1802, 166, 2472, 3953, 166, 1849, 2604, 3780, 2560, 4786, 2566, 3576, 166, 4768,
2828 166, 1951, 251, 5068, 166, 166, 166, 2619, 166, 166, 166, 5432, 166, 166, 5260, 5758,
2829 3908, 166, 4141, 166, 5777, 166, 166, 166, 166, 166, 3961, 5143, 166, 3889, 3747, 3743,
2830 166, 2818, 166, 166, 166, 3867, 166, 166, 3742, 4763, 2948, 5533, 166, 3966, 3555, 3843,
2831 3503, 6005, 166, 4687, 2790, 4479, 5828, 3769, 5688, 166, 166, 166, 166, 3109, 166, 166,
2832 166, 166, 4574, 81, 166, 166, 4576, 3369, 166, 166, 166, 4207, 166, 5072, 2210, 166,
2833 184, 166, 4673, 166, 166, 166, 166, 166, 166, 1628, 3590, 1916, 4784, 4970, 166, 1832,
2834 166, 166, 3584, 3384, 166, 166, 2880, 1783, 166, 166, 166, 166, 6115, 6121, 2157, 5428,
2835 5859, 4861, 5635, 4331, 5839, 4223, 313, 166, 166, 6152, 2168, 166, 4112, 6089, 6012, 166,
2836 5294, 3207, 166, 166, 4884, 166, 4655, 166, 166, 166, 1743, 166, 4077, 166, 4631, 166,
2837 166, 2957, 1945, 4936, 166, 166, 5389, 166, 166, 5955, 166, 166, 1639, 2207, 4129, 166,
2838 3582, 5560, 6147, 3088, 166, 166, 4529, 5259, 3118, 166, 3106, 2853, 166, 1845, 5660, 166,
2839 3325, 3973, 2461, 2163, 166, 3083, 4190, 166, 166, 5505, 166, 166, 3226, 5507, 109, 6141,
2840 3991, 166, 4939, 166, 166, 5889, 3986, 166, 3664, 4353, 2056, 166, 5071, 166, 166, 4376,
2841 166, 1958, 2028, 166, 166, 1793, 166, 5252, 3536, 166, 166, 3525, 3580, 166, 166, 166,
2842 1782, 5174, 2011, 1826, 3352, 3231, 166, 166, 4986, 2068, 2801, 166, 2500, 166, 5061, 166,
2843 2263, 2632, 1993, 166, 2715, 4424, 166, 166, 6042, 4661, 166, 5074, 5479, 4822, 166, 166,
2844 166, 166, 5600, 5853, 166, 1907, 166, 166, 166, 3808, 166, 5997, 5032, 4605, 166, 1732,
2845 166, 166, 166, 3015, 5454, 166, 166, 166, 3806, 5444, 2238, 1946, 166, 166, 3221, 4922,
2846 166, 6092, 166, 166, 4007, 166, 3425, 4282, 2571, 166, 1749, 166, 166, 38, 4744, 4900,
2847 4257, 214, 5687, 166, 2490, 2979, 2924, 166, 4714, 219, 5344, 3836, 3302, 78, 1984, 2986,
2848 2960, 166, 2869, 3507, 3335, 4967, 2892, 2723, 4849, 5070, 166, 166, 4629, 3815, 166, 4453,
2849 4760, 166, 3224, 130, 166, 166, 166, 166, 166, 3408, 2494, 2691, 166, 4325, 2932, 5165,
2850 5573, 166, 4769, 166, 5411, 5637, 2050, 166, 166, 2305, 166, 166, 4834, 24, 4693, 3554,
2851 2491, 1738, 166, 166, 166, 23, 2758, 3072, 2564, 4800, 5537, 3545, 4133, 166, 166, 166,
2852 5982, 166, 203, 166, 166, 290, 185, 166, 3774, 1929, 3379, 166, 166, 166, 166, 3002,
2853 166, 3738, 166, 166, 3344, 4942, 5353, 2777, 2839, 4712, 1830, 2664, 166, 5884, 3516, 166,
2854 5494, 4169, 2391, 3319, 166, 166, 5918, 2597, 166, 4821, 2787, 5719, 166, 166, 166, 1687,
2855 6148, 3257, 254, 166, 5180, 6153, 5964, 306, 166, 6123, 166, 5208, 166, 3163, 5938, 1736,
2856 166, 2502, 4910, 166, 166, 2549, 166, 2900, 3632, 3270, 166, 2082, 5953, 166, 107, 5750,
2857 166, 166, 166, 5527, 1751, 4168, 2950, 166, 2659, 166, 4189, 1943, 2595, 166, 4191, 166,
2858 166, 166, 166, 2998, 2296, 5221, 3617, 166, 5435, 2451, 2009, 3005, 2242, 3768, 3658, 166,
2859 166, 166, 166, 166, 2481, 2256, 166, 166, 4074, 166, 3120, 166, 4409, 1759, 166, 166,
2860 1679, 3659, 3499, 5219, 4501, 3082, 2047, 166, 166, 166, 4560, 2768, 5251, 166, 166, 166,
2861 2437, 3993, 3215, 2447, 166, 166, 166, 2993, 4963, 166, 3045, 166, 166, 166, 166, 166,
2862 166, 166, 5521, 166, 166, 4868, 166, 3895, 166, 6131, 3949, 3306, 3785, 166, 166, 4895,
2863 4831, 166, 1772, 166, 166, 5928, 166, 2137, 4805, 2462, 310, 2667, 3561, 166, 166, 2312,
2864 4931, 5255, 166, 166, 166, 5670, 166, 2285, 166, 4672, 5310, 166, 2103, 2174, 166, 166,
2865 166, 166, 5417, 166, 4726, 4203, 166, 166, 166, 5581, 166, 5665, 166, 166, 5747, 166,
2866 166, 2509, 1973, 2749, 5463, 166, 166, 4567, 5014, 166, 3322, 3051, 166, 4090, 166, 3709,
2867 3887, 3478, 166, 166, 166, 166, 3565, 3934, 166, 32, 166, 166, 166, 2239, 166, 3947,
2868 3849, 166, 2022, 166, 2169, 166, 4691, 98, 166, 3804, 4155, 1640, 4002, 166, 2138, 1739,
2869 3730, 5970, 2274, 4873, 3119, 166, 4925, 3577, 3699, 4049, 3982, 166, 5161, 1744, 166, 166,
2870 166, 5704, 4979, 2686, 5383, 5744, 2289, 166, 166, 166, 3927, 2539, 166, 166, 166, 2585,
2871 166, 4723, 3755, 4509, 166, 4961, 2194, 2535, 166, 176, 166, 4494, 166, 4171, 166, 266,
2872 166, 3454, 5369, 166, 166, 5899, 5284, 166, 3607, 3566, 5514, 166, 1843, 166, 3997, 4599,
2873 2743, 166, 2857, 2497, 2751, 166, 166, 166, 3511, 5742, 166, 166, 166, 4504, 166, 166,
2874 166, 5082, 4401, 166, 166, 5431, 166, 166, 1949, 4539, 166, 166, 4852, 166, 166, 3457,
2875 166, 3433, 4669, 166, 1692, 2454, 3258, 6159, 166, 166, 166, 166, 166, 2788, 4350, 3249,
2876 3816, 4893, 166, 4846, 166, 4993, 1708, 4138, 166, 2895, 2891, 166, 1860, 166, 2480, 1927,
2877 3853, 166, 166, 166, 5100, 166, 3143, 5159, 166, 4286, 5182, 5246, 4975, 166, 2905, 166,
2878 4917, 5102, 2044, 6016, 5673, 2005, 5090, 166, 4634, 3333, 166, 5702, 3413, 1762, 6094, 4284,
2879 4431, 2641, 166, 4463, 5691, 166, 166, 3442, 3473, 4192, 2046, 166, 3838, 166, 3217, 3349,
2880 166, 2243, 166, 3490, 166, 166, 166, 5922, 166, 166, 166, 4885, 1798, 2884, 2750, 5004,
2881 2741, 166, 166, 5649, 166, 4410, 166, 166, 3382, 166, 166, 1913, 1703, 5532, 3770, 166,
2882 5116, 2645, 2634, 4357, 5901, 166, 166, 5538, 166, 166, 166, 6028, 166, 166, 5840, 4102,
2883 2704, 2091, 5287, 166, 4757, 2282, 166, 2650, 3528, 64, 253, 3732, 166, 166, 166, 166,
2884 166, 3465, 166, 166, 166, 5848, 3110, 111, 166, 166, 3403, 2926, 6030, 3366, 1948, 4430,
2885 5509, 3250, 3972, 2587, 3579, 166, 6048, 250, 5275, 4242, 2615, 3112, 3558, 166, 166, 2342,
2886 166, 5157, 1917, 2733, 5647, 1934, 5675, 166, 3981, 2923, 5213, 5326, 37, 166, 5288, 3069,
2887 166, 1923, 5755, 166, 166, 166, 1888, 166, 6041, 5895, 5376, 3727, 3901, 166, 5589, 166,
2888 166, 4609, 166, 166, 166, 4706, 166, 4482, 1622, 166, 171, 166, 166, 4646, 4151, 2755,
2889 4614, 166, 2072, 5409, 4469, 1647, 4434, 4633, 1915, 166, 3615, 4808, 166, 3388, 166, 5280,
2890 2731, 166, 166, 2417, 166, 14, 166, 4533, 5126, 166, 2778, 3022, 166, 166, 166, 4830,
2891 4764, 166, 166, 166, 4982, 166, 4265, 166, 2466, 5678, 147, 1883, 166, 166, 166, 114,
2892 4000, 2427, 3597, 166, 4853, 5981, 166, 2023, 2519, 166, 1937, 2221, 4676, 166, 4522, 5716,
2893 166, 2432, 5731, 166, 6020, 6163, 4351, 2442, 4380, 166, 4390, 1882, 6139, 4246, 262, 166,
2894 1676, 5781, 2352, 1956, 200, 166, 166, 5800, 6184, 166, 2355, 149, 5962, 5524, 4238, 166,
2895 5150, 166, 5888, 2423, 166, 5739, 3192, 4142, 166, 166, 166, 3201, 161, 4460, 2459, 158,
2896 166, 166, 166, 166, 2689, 166, 166, 166, 166, 1889, 166, 166, 3374, 166, 70, 166,
2897 2772, 166, 2995, 166, 2384, 4989, 166, 3299, 166, 166, 166, 166, 3614, 3645, 3415, 3160,
2898 1727, 3735, 5201, 1693, 3531, 166, 166, 1776, 3871, 166, 166, 166, 166, 86, 3553, 166,
2899 166, 166, 3392, 166, 166, 2232, 166, 4977, 2333, 3394, 2875, 2027, 5736, 166, 1719, 166,
2900 4952, 2061, 2150, 5526, 166, 4637, 166, 4333, 166, 166, 4733, 4809, 3911, 166, 3460, 166,
2901 5355, 3126, 4181, 4436, 300, 166, 3841, 166, 4770, 126, 5654, 166, 166, 166, 1730, 166,
2902 166, 166, 5610, 166, 6002, 2197, 3807, 6109, 166, 166, 166, 166, 166, 5395, 4004, 166,
2903 46, 166, 166, 2570, 4736, 5318, 4247, 166, 166, 166, 2293, 3031, 4591, 166, 245, 166,
2904 5510, 1616, 3117, 4163, 166, 166, 4759, 3462, 4819, 4947, 166, 3128, 5946, 2278, 2969, 166,
2905 166, 5183, 166, 166, 1729, 173, 2448, 166, 230, 2971, 166, 166, 5397, 166, 4093, 3348,
2906 1866, 4280, 166, 6067, 3794, 166, 166, 166, 4729, 166, 3456, 166, 2394, 166, 4953, 166,
2907 166, 2258, 4863, 166, 166, 4060, 166, 5468, 305, 166, 6134, 166, 166, 2326, 166, 3453,
2908 2167, 2845, 166, 166, 166, 5597, 166, 166, 166, 166, 5462, 2809, 5994, 2899, 166, 166,
2909 166, 5153, 166, 166, 1638, 166, 166, 4938, 3795, 166, 3842, 166, 166, 166, 2769, 3194,
2910 166, 4745, 5508, 5604, 3910, 166, 166, 4147, 3239, 166, 166, 3548, 3859, 2092, 166, 2705,
2911 166, 166, 3625, 4131, 166, 3513, 166, 166, 2987, 4555, 3107, 166, 166, 166, 166, 5713,
2912 4698, 3079, 166, 5342, 166, 166, 2673, 2517, 2745, 1795, 166, 166, 166, 166, 166, 166,
2913 2463, 166, 166, 2445, 5425, 6138, 166, 2687, 3254, 5871, 166, 2387, 4300, 166, 166, 3529,
2914 1996, 166, 2369, 3818, 6126, 1615, 2643, 65, 4297, 166, 5324, 3311, 3852, 166, 3868, 4199,
2915 3978, 166, 166, 166, 5466, 166, 166, 244, 166, 5929, 6157, 2390, 5639, 2267, 2073, 4610,
2916 5774, 2521, 4556, 166, 4545, 4307, 2426, 2450, 166, 5783, 4968, 6176, 4156, 166, 166, 4126,
2917 3549, 166, 3581, 5701, 3234, 166, 4013, 1879, 166, 6104, 5874, 166, 166, 3485, 4279, 2528,
2918 5576, 166, 3992, 166, 3980, 4934, 166, 2176, 4228, 5164, 3784, 1933, 4120, 5055, 166, 166,
2919 5015, 166, 166, 166, 2310, 1754, 166, 6087, 166, 166, 4548, 5268, 2930, 166, 3656, 166,
2920 3042, 5229, 166, 4016, 2195, 166, 166, 166, 199, 1745, 3717, 166, 166, 74, 2668, 252,
2921 4124, 4657, 5223, 166, 2186, 3628, 166, 166, 166, 4222, 3114, 2841, 5103, 3171, 5135, 166,
2922 166, 2273, 166, 3899, 5332, 5842, 3575, 2579, 2431, 2464, 2229, 3604, 4561, 2977, 2815, 166,
2923 3916, 166, 5825, 166, 1694, 166, 4030, 166, 5841, 166, 3881, 1831, 166, 5525, 3011, 166,
2924 5535, 5217, 316, 4116, 166, 166, 2204, 166, 3136, 3650, 166, 5813, 1875, 4511, 4475, 166,
2925 1999, 166, 2277, 166, 3024, 5484, 5546, 166, 3988, 5676, 166, 2213, 2264, 5214, 166, 4940,
2926 5974, 166, 4750, 6077, 166, 1652, 3148, 166, 166, 166, 166, 2554, 166, 6167, 5257, 5300,
2927 166, 166, 166, 166, 5408, 166, 166, 3402, 2141, 166, 4663, 5633, 3312, 166, 2814, 4930,
2928 1959, 166, 166, 166, 3861, 166, 166, 302, 2624, 166, 166, 166, 1629, 1724, 166, 3909,
2929 5281, 166, 2001, 4395, 5352, 4428, 2694, 4850, 166, 166, 5242, 5910, 166, 166, 166, 166,
2930 166, 3212, 166, 2045, 166, 166, 166, 166, 166, 166, 3017, 4960, 4456, 166, 5616, 6093,
2931 2151, 166, 166, 166, 315, 3381, 166, 166, 166, 4330, 166, 6158, 4721, 6075, 166, 166,
2932 166, 4543, 2303, 166, 166, 3301, 166, 5000, 3929, 2543, 3437, 166, 166, 166, 3422, 166,
2933 5987, 5729, 2428, 166, 4035, 5588, 3714, 3834, 5264, 5743, 166, 3305, 4886, 6107, 5156, 166,
2934 166, 166, 166, 166, 1672, 5849, 5827, 5049, 6101, 2178, 2420, 3289, 166, 166, 4274, 6017,
2935 2257, 166, 4172, 3451, 2367, 2382, 166, 2964, 4918, 3241, 2347, 6082, 99, 2383, 166, 4454,
2936 163, 2460, 165, 304, 1818, 5580, 166, 312, 5790, 293, 5794, 5519, 5083, 3360, 5748, 166,
2937 3750, 5034, 166, 166, 166, 1863, 3168, 166, 166, 166, 5111, 166, 166, 166, 166, 2183,
2938 4510, 166, 166, 3495, 4382, 4235, 4462, 166, 4056, 5885, 17, 5028, 1614, 6038, 166, 2488,
2939 5632, 3089, 166, 1940, 66, 4039, 3999, 235, 166, 166, 3829, 3954, 166, 2365, 269, 166,
2940 166, 166, 166, 166, 166, 4418, 1796, 4709, 2004, 166, 3596, 5786, 166, 2819, 4624, 3152,
2941 2968, 2838, 166, 5575, 1767, 5603, 166, 4386, 5890, 166, 1768, 4201, 3560, 166, 166, 166,
2942 2184, 2262, 2966, 2716, 1765, 2611, 2983, 166, 4164, 4084, 142, 5314, 166, 166, 4071, 166,
2943 2578, 2849, 3600, 166, 166, 166, 166, 5401, 4814, 3431, 166, 5088, 5084, 198, 166, 3578,
2944 3764, 166, 2097, 166, 166, 5390, 4443, 166, 3166, 166, 4816, 166, 166, 166, 166, 3130,
2945 5963, 1788, 2129, 1837, 4100, 6128, 166, 4586, 5945, 4772, 166, 5741, 3151, 3247, 5645, 4507,
2946 5833, 3904, 6013, 2506, 3050, 4175, 1705, 3019, 166, 5942, 166, 2418, 3430, 2230, 5745, 166,
2947 2093, 166, 166, 166, 166, 4666, 3246, 192, 2010, 4003, 3533, 5851, 166, 3621, 3684, 3066,
2948 166, 166, 166, 5073, 3856, 166, 166, 2224, 166, 2637, 4270, 166, 166, 5679, 166, 5792,
2949 5850, 166, 2589, 3060, 2196, 3476, 3150, 2025, 166, 166, 166, 2657, 166, 3685, 3790, 5587,
2950 2817, 3692, 166, 166, 166, 2359, 2260, 5896, 2158, 119, 2816, 5753, 166, 2739, 5772, 166,
2951 2919, 2147, 1985, 4271, 4838, 4991, 166, 166, 166, 5244, 166, 319, 166, 166, 2779, 4732,
2952 4994, 5424, 166, 166, 3968, 3049, 3393, 4473, 4959, 5967, 5864, 5170, 4209, 166, 4810, 4815,
2953 4205, 2339, 5023, 2279, 5050, 166, 5837, 132, 166, 166, 166, 2247, 21, 4775, 166, 166,
2954 5286, 166, 4170, 4099, 4803, 5767, 166, 166, 166, 5811, 2240, 5699, 2499, 166, 4802, 166,
2955 5785, 166, 166, 166, 3181, 3435, 166, 3339, 166, 5669, 3865, 2249, 5002, 166, 4694, 5461,
2956 4753, 166, 3157, 166, 1960, 166, 166, 166, 2440, 166, 5818, 5534, 2439, 1717, 166, 3789,
2957 2959, 166, 2943, 166, 2576, 166, 2002, 2007, 1819, 3256, 4402, 5311, 3832, 160, 166, 166,
2958 2803, 166, 3264, 166, 5863, 166, 2017, 166, 2798, 166, 166, 166, 166, 5607, 4965, 166,
2959 166, 166, 4537, 4378, 5944, 3494, 5457, 5602, 1942, 5900, 5780, 4411, 5147, 166, 4966, 2115,
2960 155, 2827, 1980, 5063, 166, 285, 5912, 3304, 2963, 5179, 3220, 166, 166, 166, 2190, 3708,
2961 5476, 1944, 2366, 3893, 166, 166, 166, 3759, 166, 5434, 2740, 1707, 4244, 5426, 166, 166,
2962 166, 3155, 166, 4285, 166, 166, 166, 166, 5721, 166, 3833, 6001, 301, 166, 166, 2574,
2963 186, 2724, 166, 1873, 3667, 166, 5216, 166, 2935, 2100, 4987, 166, 2284, 166, 166, 2911,
2964 3828, 4009, 166, 2065, 166, 5496, 6130, 5563, 4387, 166, 3771, 3469, 2989, 2222, 4577, 3965,
2965 4296, 2975, 3813, 3240, 166, 4780, 4481, 3387, 2338, 166, 6183, 166, 166, 166, 166, 166,
2966 2675, 1761, 2600, 5167, 3170, 4773, 2165, 5166, 166, 2223, 4642, 166, 166, 4540, 166, 166,
2967 166, 3897, 166, 2483, 1809, 5477, 3844, 4067, 2508, 2275, 166, 166, 166, 166, 166, 3497,
2968 5458, 166, 249, 2956, 166, 4651, 166, 283, 166, 166, 4955, 4062, 2315, 2304, 3261, 2361,
2969 4791, 4389, 1997, 166, 3455, 166, 166, 166, 166, 166, 166, 4746, 5695, 5296, 105, 1841,
2970 3368, 166, 166, 166, 5228, 166, 3496, 4423, 2024, 3907, 4774, 166, 166, 166, 166, 166,
2971 2294, 2193, 166, 166, 166, 166, 166, 166, 166, 166, 4393, 166, 166, 2127, 166, 4573,
2972 166, 5350, 166, 5016, 3372, 166, 5653, 166, 5972, 4719, 166, 166, 166, 166, 166, 5370,
2973 166, 6142, 166, 166, 3691, 2828, 166, 2601, 166, 2937, 2060, 3654, 3097, 2341, 5325, 4568,
2974 4096, 2776, 166, 2946, 166, 166, 166, 5843, 1777, 5295, 2837, 4261, 4397, 5006, 5808, 4866,
2975 166, 1713, 5732, 2954, 166, 166, 27, 166, 4308, 5629, 2652, 2434, 4474, 166, 4928, 166,
2976 4727, 3811, 166, 166, 5234, 166, 6010, 166, 4911, 166, 4570, 166, 6000, 3450, 5304, 3919,
2977 166, 166, 4008, 3942, 166, 272, 2363, 2064, 3595, 3505, 166, 166, 3957, 1695, 2452, 4659,
2978 166, 1792, 166, 131, 5968, 166, 3731, 3905, 4115, 166, 166, 2468, 166, 2727, 166, 3526,
2979 4724, 166, 4388, 3149, 5539, 5092, 4440, 6162, 166, 166, 193, 4429, 2493, 166, 166, 3683,
2980 166, 6029, 166, 277, 166, 166, 166, 5240, 2408, 166, 309, 2561, 210, 166, 5200, 166,
2981 166, 166, 1930, 5692, 2697, 166, 166, 166, 3330, 5331, 3860, 166, 166, 4335, 166, 50,
2982 3605, 4289, 1763, 166, 166, 166, 166, 3521, 166, 166, 166, 3668, 166, 166, 166, 166,
2983 166, 3271, 1656, 166, 166, 4782, 166, 2962, 166, 5907, 166, 3245, 3375, 2944, 5933, 166,
2984 166, 5406, 5655, 3139, 5423, 166, 4359, 5231, 2548, 166, 3831, 2858, 5488, 166, 5824, 166,
2985 166, 166, 3885, 4372, 166, 166, 4024, 166, 4811, 2970, 166, 4219, 211, 166, 3471, 166,
2986 166, 166, 166, 3854, 166, 3358, 2877, 166, 166, 5205, 2804, 166, 166, 166, 4452, 166,
2987 166, 166, 166, 3776, 166, 166, 3075, 4208, 166, 5623, 1974, 166, 2647, 166, 3235, 166,
2988 166, 166, 5211, 166, 166, 4304, 2206, 166, 4157, 2182, 166, 1816, 2626, 166, 2893, 2248,
2989 166, 166, 166, 166, 1983, 5648, 166, 194, 166, 2106, 4328, 166, 4742, 166, 166, 5572,
2990 2329, 3314, 166, 6181, 166, 166, 26, 166, 6026, 166, 166, 2114, 1669, 4735, 166, 166,
2991 4256, 166, 1861, 166, 5470, 2317, 166, 4404, 2482, 166, 5305, 4415, 5986, 4949, 5412, 166,
2992 1728, 166, 1898, 166, 166, 4909, 1989, 166, 166, 166, 2836, 2051, 274, 166, 2799, 166,
2993 5865, 1663, 4705, 5121, 2555, 166, 4316, 4287, 1880, 1825, 166, 3689, 166, 1733, 5012, 166,
2994 166, 2237, 4471, 1682, 2910, 166, 5366, 166, 166, 166, 166, 4532, 166, 2802, 166, 166,
2995 166, 4057, 2471, 166, 2889, 166, 166, 4026, 5682, 3091, 166, 1977, 166, 2901, 6137, 5658,
2996 88, 2318, 1965, 166, 5914, 166, 166, 4468, 1822, 166, 6050, 5956, 2201, 166, 4644, 2918,
2997 166, 3703, 166, 166, 3524, 4220, 2913, 4210, 166, 166, 2090, 166, 1906, 1911, 166, 166,
2998 3671, 2370, 166, 2552, 166, 3763, 2259, 1924, 166, 5940, 166, 166, 166, 3185, 3821, 4069,
2999 261, 2381, 3244, 166, 166, 5715, 166, 2052, 5905, 166, 2403, 166, 3030, 2199, 166, 3550,
3000 166, 166, 1846, 166, 166, 95, 166, 289, 3208, 2559, 5195, 5091, 1654, 166, 1781, 1892,
3001 166, 4516, 2629, 166, 1700, 3067, 166, 166, 166, 2080, 1680, 166, 166, 166, 5700, 166,
3002 1820, 5491, 166, 4226, 166, 166, 166, 166, 4653, 166, 3508, 227, 5364, 166, 2098, 166,
3003 299, 166, 5795, 166, 166, 166, 166, 3690, 4134, 5517, 4534, 5042, 4874, 5798, 4234, 166,
3004 166, 166, 166, 3702, 166, 166, 3638, 3108, 3850, 166, 166, 166, 16, 166, 1775, 166,
3005 4022, 166, 223, 4095, 166, 5127, 4266, 166, 189, 166, 166, 5203, 166, 1805, 3884, 3778,
3006 166, 166, 2146, 4818, 166, 2848, 3440, 4506, 5886, 3006, 218, 166, 2377, 166, 4091, 5925,
3007 166, 4320, 166, 2701, 3036, 166, 166, 166, 4715, 166, 3801, 166, 3161, 166, 2077, 166,
3008 4254, 3032, 243, 1814, 166, 166, 166, 166, 166, 166, 166, 166, 1835, 166, 4394, 166,
3009 5769, 4923, 166, 2917, 166, 166, 178, 166, 166, 1723, 166, 5887, 166, 4956, 2952, 166,
3010 4665, 3925, 3443, 3123, 166, 166, 166, 166, 166, 166, 5144, 166, 4288, 2074, 2192, 5442,
3011 6043, 1746, 2016, 5995, 2203, 166, 5686, 5659, 3193, 166, 4055, 166, 166, 2233, 3571, 5809,
3012 5984, 2323, 166, 166, 1740, 89, 4356, 6053, 6106, 3282, 4796, 166, 6116, 6056, 2353, 2829,
3013 166, 5807, 2042, 166, 166, 166, 1670, 5937, 4465, 5646, 166, 5562, 3008, 166, 2419, 3736,
3014 166, 4132, 169, 166, 166, 166, 2402, 166, 166, 1968, 2398, 166, 1684, 1827, 4551, 2679,
3015 3875, 166, 5585, 3835, 2295, 166, 1991, 1803, 2992, 166, 166, 5847, 2649, 166, 76, 5415,
3016 166, 2269, 2397, 5387, 5337, 4422, 166, 2672, 4832, 4617, 166, 166, 166, 166, 4552, 166,
3017 4612, 1750, 166, 1931, 166, 1691, 2424, 4194, 6018, 166, 166, 4458, 4856, 166, 2089, 3814,
3018 166, 2844, 166, 3592, 166, 4867, 5128, 166, 2685, 166, 166, 2616, 1972, 2617, 3943, 4664,
3019 166, 4999, 166, 166, 145, 3635, 166, 166, 4851, 166, 3483, 5039, 166, 3649, 3924, 166,
3020 166, 166, 3105, 4260, 166, 6098, 166, 3568, 267, 2456, 3653, 2096, 166, 166, 166, 3512,
3021 166, 3405, 166, 3504, 166, 166, 166, 4005, 2144, 1769, 166, 5474, 1920, 5554, 215, 2443,
3022 3351, 166, 5961, 166, 166, 166, 166, 242, 2331, 166, 166, 5931, 166, 166, 5862, 166,
3023 1710, 166, 166, 166, 3321, 166, 4139, 166, 166, 3515, 2732, 2510, 5544, 166, 166, 2783,
3024 166, 166, 166, 4018, 4649, 5789, 166, 166, 166, 166, 166, 2726, 6074, 166, 166, 166,
3025 5684, 166, 166, 3395, 166, 3100, 166, 5763, 3757, 1992, 166, 3198, 2003, 166, 166, 4675,
3026 166, 1893, 5621, 166, 2270, 166, 166, 166, 5421, 5590, 5664, 4045, 166, 3687, 4406, 2699,
3027 1811, 167, 4036, 5384, 166, 166, 4601, 1823, 4041, 239, 1954, 166, 146, 166, 166, 3077,
3028 5152, 5814, 1649, 5681, 166, 5868, 166, 166, 3792, 4860, 166, 5335, 5110, 1718, 166, 166,
3029 166, 166, 3718, 3365, 2826, 166, 166, 5021, 4783, 166, 5569, 5812, 166, 166, 1876, 166,
3030 3260, 166, 1789, 5667, 4224, 166, 166, 4385, 166, 166, 2620, 166, 4162, 2883, 2143, 5497,
3031 166, 166, 5316, 5680, 166, 166, 248, 4050, 166, 6021, 166, 2898, 4618, 166, 166, 166,
3032 166, 166, 5368, 166, 5378, 1842, 1914, 3696, 3962, 166, 4345, 2581, 1773, 2109, 166, 4371,
3033 166, 166, 3761, 5277, 5870, 3146, 166, 166, 166, 5764, 127, 3058, 4059, 4718, 166, 5097,
3034 5040, 5351, 3205, 166, 166, 4996, 2991, 2014, 166, 5846, 2558, 2688, 5595, 4027, 3347, 2125,
3035 5696, 5608, 166, 166, 3228, 3745, 5775, 166, 1757, 4647, 166, 5977, 3020, 166, 240, 2565,
3036 166, 4459, 166, 3367, 166, 166, 166, 3104, 166, 166, 166, 166, 166, 166, 259, 5486,
3037 2846, 166, 166, 166, 4778, 2713, 166, 3955, 5683, 2682, 2914, 5898, 166, 166, 166, 4400,
3038 317, 166, 5185, 3021, 5983, 4332, 3891, 166, 3095, 5003, 166, 166, 166, 5367, 166, 279,
3039 1784, 4019, 2736, 4905, 2651, 5346, 166, 4841, 166, 5606, 166, 166, 2806, 166, 5239, 166,
3040 166, 3237, 5490, 166, 225, 166, 166, 2254, 166, 2742, 4587, 22, 166, 166, 166, 5555,
3041 166, 108, 2927, 2218, 166, 2120, 166, 5452, 4087, 4369, 166, 166, 166, 166, 166, 4583,
3042 4338, 6035, 2840, 4365, 3624, 11, 1770, 166, 4630, 166, 3216, 166, 166, 166, 4638, 4699,
3043 3535, 2536, 4627, 166, 166, 5760, 1935, 166, 166, 5210, 166, 2219, 2484, 4597, 5193, 4799,
3044 3706, 166, 166, 166, 166, 3337, 3113, 5951, 4294, 166, 4040, 3200, 4217, 5861, 2767, 3530,
3045 4499, 2775, 4121, 134, 5939, 5880, 5908, 3869, 166, 166, 3316, 6095, 2441, 3288, 166, 3751,
3046 4794, 166, 166, 5803, 6169, 2356, 6182, 6135, 6127, 166, 3018, 166, 1674, 166, 166, 4097,
3047 166, 5923, 287, 5965, 5129, 166, 4078, 166, 166, 6114, 6015, 5990, 3573, 166, 4146, 2681,
3048 90, 6055, 4864, 166, 166, 6119, 3284, 6054, 5456, 5113, 6125, 166, 6057, 166, 3292, 166,
3049 166, 166, 166, 166, 6185, 5105, 1760, 166, 166, 166, 2720, 166, 2695, 5448, 166, 1936,
3050 166, 1807, 3406, 166, 166, 2161, 1642, 166, 5030, 166, 2036, 5451, 3427, 166, 166, 166,
3051 166, 3797, 166, 1627, 166, 4515, 166, 166, 166, 4241, 166, 166, 166, 2771, 166, 31,
3052 5197, 2638, 3035, 166, 166, 3914, 166, 166, 4546, 166, 166, 166, 4253, 3500, 166, 166,
3053 2526, 166, 2698, 166, 3726, 2744, 137, 166, 166, 2676, 166, 5594, 166, 166, 166, 4842,
3054 166, 63, 2888, 3585, 4798, 166, 5011, 166, 5634, 5464, 166, 166, 5620, 3894, 4070, 166,
3055 2730, 166, 166, 1810, 2503, 5957, 1721, 6066, 5188, 166, 166, 1890, 4505, 1771, 5455, 166,
3056 3132, 3984, 166, 166, 2811, 1962, 166, 166, 4872, 106, 3898, 3267, 166, 2085, 166, 4950,
3057 6040, 4525, 6044, 5866, 3613, 2907, 4615, 2135, 258, 166, 1681, 1941, 4888, 166, 4859, 6178,
3058 6174, 4858, 5209, 1912, 3340, 166, 4640, 5706, 166, 2763, 3153, 3951, 166, 5542, 5596, 5819,
3059 5330, 5048, 4037, 166, 6033, 4625, 3326, 2013, 5283, 136, 3373, 2154, 166, 166, 166, 4421,
3060 166, 5438, 2627, 2266, 2320, 166, 2588, 4790, 4290, 166, 4767, 5829, 2925, 5916, 2133, 166
3063 short eval_5hand( const int *hand )
3065 int c1, c2, c3, c4, c5;
3067 c1 = *hand++;
3068 c2 = *hand++;
3069 c3 = *hand++;
3070 c4 = *hand++;
3071 c5 = *hand;
3073 return( eval_5hand_fast(c1,c2,c3,c4,c5) );
3076 // This is a non-optimized method of determining the
3077 // best five-card hand possible out of seven cards.
3078 // I am working on a faster algorithm.
3080 short
3081 eval_7hand( const int *hand )
3083 int i, j, q, best = 9999, subhand[5];
3085 for ( i = 0; i < 21; i++ )
3087 for ( j = 0; j < 5; j++ )
3088 subhand[j] = hand[ perm7[i][j] ];
3089 q = eval_5hand( subhand );
3090 if ( q < best )
3091 best = q;
3093 return( best );
3097 // Initialize the 2+2 evaluator by loading the HANDRANKS.DAT file and
3098 // mapping it to our 32-million member HR array. Call this once and
3099 // forget about it.
3100 void InitTheEvaluator()
3102 bool success = true;
3104 memset(HR, 0, sizeof(HR));
3105 FILE * fin = fopen(HANDRANKSFILE.c_str(), "rb");
3107 if(fin)
3109 // Load the HANDRANKS.DAT file data into the HR array
3110 std::cout << "reading " << HANDRANKSFILE << std::endl;
3111 size_t count = fread(HR, sizeof(HR), 1, fin);
3112 fclose(fin);
3114 if(count != 1) success = false;
3116 if(success) std::cout << HANDRANKSFILE << " read" << std::endl;
3117 else std::cout << HANDRANKSFILE << " has to be created" << std::endl;
3119 else success = false;
3121 if(!success)
3123 generateTable();
3124 writeTableToFile();
3128 // Given a group of 7 cards, return the hand category & rank. Let
3129 // pCards be (a pointer to) an array of seven integers, each with
3130 // a value between 1 and 52.
3131 int GetHandValue(const int* pCards)
3133 int p = HR[53 + *pCards++];
3134 p = HR[p + *pCards++];
3135 p = HR[p + *pCards++];
3136 p = HR[p + *pCards++];
3137 p = HR[p + *pCards++];
3138 p = HR[p + *pCards++];
3139 return HR[p + *pCards++];
3143 // This routine initializes the deck. A deck of cards is
3144 // simply an integer array of length 52 (no jokers). This
3145 // array is populated with each card, using the following
3146 // scheme:
3148 // An integer is made up of four bytes. The high-order
3149 // bytes are used to hold the rank bit pattern, whereas
3150 // the low-order bytes hold the suit/rank/prime value
3151 // of the card.
3153 // +--------+--------+--------+--------+
3154 // |xxxbbbbb|bbbbbbbb|cdhsrrrr|xxpppppp|
3155 // +--------+--------+--------+--------+
3157 // p = prime number of rank (deuce=2,trey=3,four=5,five=7,...,ace=41)
3158 // r = rank of card (deuce=0,trey=1,four=2,five=3,...,ace=12)
3159 // cdhs = suit of card
3160 // b = bit turned on depending on rank of card
3162 void init_deck( int *deck )
3164 int i, j, n = 0, suit = 0x8000;
3166 for ( i = 0; i < 4; i++, suit >>= 1 )
3167 for ( j = 0; j < 13; j++, n++ )
3168 deck[n] = primes[j] | (j << 8) | suit | (1 << (16+j));
3172 } //end of namespace PokerEval