1 /**
2 Module implements FAST<sup>[1]</sup> corner detector algorithm - Features from accelerated segment test (FAST) algorithm
3 discovered and developed by Edward Rosten and Tom Drummond.
4 
5 This package offers D class interface to machine generated C code, adopted
6 to D, which is located originally on $(LINK3 https://github.com/edrosten/fast-C-src, Edward Rosten's github).
7 
8 Copyright: Copyright (c) 2006, 2008 Edward Rosten, Relja Ljubobratovic 2016
9 
10 Authors: Edward Rosten, Relja Ljubobratovic
11 
12 License: $(LINK3 http://www.boost.org/LICENSE_1_0.txt, Boost Software License - Version 1.0).
13 
14 1. Edward Rosten, Tom Drummond (2005). "Fusing points and lines for high performance tracking", IEEE International Conference on Computer Vision 2: 1508–1511.
15 */
16 module dcv.features.corner.fast;
17 
18 import mir.ndslice;
19 
20 
21 import dcv.core.image : BitDepth;
22 import dcv.features.utils : Feature;
23 import dcv.features.corner.fast.base : xy;
24 import dcv.features.corner.fast.fast_9;
25 import dcv.features.corner.fast.fast_10;
26 import dcv.features.corner.fast.fast_11;
27 import dcv.features.corner.fast.fast_12;
28 import dcv.features.corner.fast.nonmax;
29 
30 public import dcv.features.detector;
31 
32 /**
33 FAST corner detector utility.
34 */
35 class FASTDetector : Detector
36 {
37     public
38     {
39         /// Should the non-maximum suppression be performed with the detection.
40         static immutable PERFORM_NON_MAX_SUPRESSION = 0x0100;
41         /// Should the features be sorted by score at the output.
42         static immutable SORT_OUT_FEATURES_BY_SCORE = 0x0200;
43     }
44 
45     /// Pixel neighborhood type, described in the paper.
46     public enum Type
47     {
48         FAST_9,
49         FAST_10,
50         FAST_11,
51         FAST_12,
52     }
53 
54     private
55     {
56         uint _threshold;
57         Type _type;
58         int _flags;
59     }
60 
61     /**
62     Default constructor.
63 
64     Params:
65     threshold = Threshold on pixel intensity difference between central and border pixels.
66     type = Pixel neighborhood type.
67     flags = Flag value where <i>PERFORM_NON_MAX_SUPRESSION</i> and/or <i>SORT_OUT_FEATURES_BY_SCORE</i> flags can be passed.
68     */
69     @safe pure nothrow this(uint threshold = 100, Type type = Type.FAST_9, int flags = 0)
70     {
71         assert(threshold > 0);
72         this._threshold = threshold;
73         this._type = type;
74         this._flags = flags;
75     }
76 
77     /// Threshold for corner detection.
78     auto threshold() const @property @safe pure nothrow @nogc
79     {
80         return _threshold;
81     }
82     /// Threshold value setter.
83     auto threshold(uint value) @property @safe pure nothrow @nogc
84     {
85         assert(value > 0);
86         _threshold = value;
87     }
88 
89     /// Type of the detector.
90     auto type() const @property @safe pure nothrow @nogc
91     {
92         return _type;
93     }
94     /// ditto
95     auto type(Type type) @property @safe pure nothrow @nogc
96     {
97         _type = type;
98     }
99     /// Algorithm flags.
100     auto flags() const @property @safe pure nothrow @nogc
101     {
102         return _flags;
103     }
104 
105     /**
106     Detect features for given image.
107 
108     Params:
109     image = Input image where corners are to be found. Only 8-bit mono image is supported as this time.
110     count = How many corners are to be found. 
111 
112     Returns:
113     Array of found feature points.
114     */
115     override Feature[] detect(in Image image, size_t count = 0) const
116     {
117         import core.stdc.stdlib : free;
118         import std.exception : enforce;
119         import std.array : reserve;
120         import std.algorithm : min;
121 
122         enforce(image.depth == BitDepth.BD_8, "Invalid bit depth - FAST is supported so " ~ "far only for 8-bit images");
123         enforce(image.channels == 1, "Invalid image format - has to be mono");
124 
125         Feature[] features; // output features
126         int featureCount = 0; // feature count - internal use
127         int* featureScore = null; // feature score intenal use
128         xy* xyFeatures = null; // xy (feature coordinate) array - internal use
129 
130         scope (exit)
131         {
132             free(featureScore);
133             free(xyFeatures);
134         }
135 
136         xy* function(const ubyte*, int, int, int, int, int*) detectFunc;
137         int* function(const ubyte* i, int stride, xy* corners, int num_corners, int b) scoreFunc;
138 
139         final switch (_type)
140         {
141         case Type.FAST_9:
142             detectFunc = &fast9_detect;
143             scoreFunc = &fast9_score;
144             break;
145         case Type.FAST_10:
146             detectFunc = &fast10_detect;
147             scoreFunc = &fast10_score;
148             break;
149         case Type.FAST_11:
150             detectFunc = &fast11_detect;
151             scoreFunc = &fast11_score;
152             break;
153         case Type.FAST_12:
154             detectFunc = &fast12_detect;
155             scoreFunc = &fast12_score;
156         }
157 
158         xyFeatures = detectFunc(cast(const ubyte*)image.data.ptr, cast(int)image.width,
159                 cast(int)image.height, cast(int)image.rowStride, cast(int)threshold, &featureCount);
160 
161         if (flags & FASTDetector.PERFORM_NON_MAX_SUPRESSION)
162         {
163             int nonMaxFeatureCount = 0;
164             xy* xySuppressed = null;
165 
166             featureScore = scoreFunc(cast(ubyte*)image.data.ptr, cast(int)image.rowStride,
167                     xyFeatures, featureCount, cast(int)threshold);
168 
169             xySuppressed = nonmax_suppression(xyFeatures, featureScore, featureCount, &nonMaxFeatureCount);
170 
171             // free the score before the suppresion
172             free(featureScore);
173             featureScore = null;
174 
175             // assign new feature count after the suppression
176             featureCount = nonMaxFeatureCount;
177 
178             // free previous features and assign new ones.
179             free(xyFeatures);
180             xyFeatures = xySuppressed;
181         }
182 
183         featureScore = scoreFunc(cast(ubyte*)image.data.ptr, cast(int)image.rowStride, xyFeatures,
184                 featureCount, cast(int)threshold);
185 
186         features.reserve(featureCount);
187         foreach (i; 0 .. featureCount)
188         {
189             Feature f;
190             f.x = xyFeatures[i].x;
191             f.y = xyFeatures[i].y;
192             f.width = 16.;
193             f.height = 16.;
194             f.octave = 0;
195             f.score = featureScore[i];
196             features ~= f;
197         }
198 
199         // TODO: sort raw results. (before creating Feature objects)
200         if (flags & FASTDetector.SORT_OUT_FEATURES_BY_SCORE)
201         {
202             import std.algorithm : sort;
203 
204             features.sort!((a, b) => a.score > b.score);
205         }
206 
207         // TODO: if not sorted, taking first N features does not make any sense.
208         if (count && count < featureCount)
209         {
210             import std.range : take;
211             import std.array : array;
212 
213             features = features.take(count).array;
214         }
215 
216         return features;
217     }
218 }
219 
220 version (unittest)
221 {
222     import std.algorithm : map;
223     import std.array : array;
224     import std.algorithm.sorting : isSorted;
225     import dcv.core.image;
226 
227     // lena image resized to 128x128 in grayscale
228     immutable lena_128x128 = [155, 154, 156, 148, 149, 146, 147, 147, 146, 152, 158, 165, 165, 160,
229         139, 115, 87, 82, 91, 95, 99, 96, 97, 99, 99, 95, 100, 106, 108, 113, 118, 115, 119, 120,
230         127, 122, 116, 122, 122, 124, 124, 123, 124, 122, 123, 123, 125, 121, 126, 126, 124, 126,
231         122, 121, 119, 120, 121, 124, 122, 121, 123, 125, 122, 121, 129, 119, 121, 121, 120, 124,
232         117, 124, 121, 120, 116, 117, 115, 112, 103, 93, 105, 125, 136, 144, 155, 148, 145, 142,
233         146, 146, 147, 144, 145, 145, 144, 145, 147, 147, 152, 147, 158, 204, 212, 216, 205, 130,
234         93, 99, 109, 113, 108, 109, 117, 110, 111, 112, 111, 116, 114, 108, 117, 116, 115, 113,
235         109, 113, 162, 119, 155, 154, 156, 148, 149, 146, 147, 147, 146, 152, 158, 165, 164, 160,
236         139, 115, 87, 81, 91, 95, 99, 96, 97, 99, 99, 95, 100, 106, 108, 113, 118, 115, 119, 120,
237         127, 122, 116, 122, 122, 124, 124, 124, 124, 122, 123, 123, 125, 121, 126, 126, 124, 126,
238         122, 121, 119, 120, 121, 124, 122, 121, 123, 125, 122, 121, 129, 119, 121, 121, 120, 124,
239         117, 123, 121, 120, 116, 117, 114, 112, 103, 93, 105, 125, 136, 144, 155, 148, 145, 142,
240         146, 145, 147, 144, 145, 145, 144, 145, 147, 147, 151, 147, 158, 204, 212, 216, 205, 130,
241         92, 99, 109, 113, 108, 109, 117, 110, 111, 112, 111, 116, 114, 108, 116, 116, 115, 113,
242         109, 113, 162, 117, 147, 151, 155, 151, 147, 149, 149, 143, 146, 153, 163, 164, 165, 156,
243         138, 111, 85, 79, 87, 93, 97, 91, 92, 95, 95, 96, 102, 102, 109, 110, 116, 115, 115, 116,
244         120, 120, 118, 120, 119, 123, 122, 123, 123, 120, 121, 121, 118, 118, 121, 122, 121, 124,
245         114, 123, 118, 117, 125, 123, 118, 122, 122, 120, 120, 124, 124, 120, 115, 119, 119, 119,
246         118, 118, 120, 117, 118, 117, 113, 112, 103, 101, 97, 110, 130, 140, 148, 150, 147, 143,
247         149, 146, 147, 150, 149, 144, 145, 147, 148, 146, 147, 147, 143, 185, 209, 214, 216, 185,
248         98, 98, 104, 111, 111, 111, 110, 114, 111, 114, 109, 112, 114, 112, 115, 118, 116, 116,
249         116, 98, 41, 40, 149, 149, 152, 147, 148, 149, 144, 145, 148, 155, 162, 161, 159, 158,
250         132, 111, 87, 77, 80, 91, 92, 97, 97, 89, 90, 89, 103, 103, 109, 111, 116, 113, 118, 117,
251         118, 122, 124, 117, 121, 121, 117, 125, 121, 122, 121, 122, 121, 121, 124, 118, 117, 119,
252         124, 124, 119, 118, 122, 121, 118, 122, 126, 123, 121, 119, 118, 122, 124, 119, 117, 120,
253         118, 121, 114, 118, 117, 117, 115, 112, 102, 102, 96, 100, 123, 136, 144, 152, 151, 147,
254         150, 151, 152, 150, 147, 148, 148, 146, 145, 144, 147, 147, 140, 150, 200, 213, 216, 212,
255         149, 95, 100, 106, 111, 112, 113, 111, 109, 111, 112, 109, 112, 112, 115, 116, 118, 128,
256         100, 43, 36, 42, 148, 150, 147, 149, 144, 148, 145, 143, 154, 163, 159, 159, 160, 149,
257         133, 115, 85, 78, 82, 92, 98, 95, 92, 93, 93, 89, 100, 104, 108, 115, 116, 115, 118, 119,
258         116, 120, 121, 124, 123, 117, 123, 121, 121, 125, 127, 124, 120, 120, 120, 125, 120, 121,
259         123, 119, 121, 118, 119, 123, 120, 120, 125, 128, 123, 121, 122, 121, 120, 116, 121, 116,
260         112, 118, 121, 118, 117, 117, 114, 112, 108, 113, 100, 92, 110, 134, 143, 146, 158, 151,
261         153, 155, 153, 154, 150, 152, 147, 144, 146, 141, 140, 143, 142, 141, 178, 207, 215, 217,
262         198, 110, 94, 102, 105, 110, 110, 110, 113, 111, 113, 112, 119, 120, 118, 122, 125, 86, 41,
263         38, 40, 45, 148, 147, 150, 150, 150, 145, 145, 151, 155, 158, 160, 155, 153, 148, 135,
264         119, 89, 78, 85, 92, 97, 96, 92, 92, 97, 92, 101, 104, 108, 109, 113, 114, 116, 119, 119,
265         119, 118, 118, 120, 120, 119, 121, 121, 121, 124, 121, 119, 121, 117, 123, 121, 116, 118,
266         118, 120, 125, 121, 120, 117, 121, 121, 124, 126, 121, 118, 117, 119, 115, 118, 119, 115,
267         116, 117, 120, 116, 116, 112, 113, 111, 105, 96, 91, 107, 129, 138, 148, 156, 154, 151,
268         157, 158, 153, 148, 150, 155, 149, 148, 145, 144, 146, 142, 142, 139, 196, 213, 217, 214,
269         169, 97, 100, 100, 109, 111, 114, 114, 115, 112, 121, 116, 121, 124, 126, 88, 41, 57, 38,
270         41, 43, 147, 143, 151, 150, 152, 149, 146, 154, 159, 162, 156, 157, 151, 150, 138, 114,
271         86, 76, 84, 90, 95, 94, 96, 92, 91, 95, 97, 99, 109, 112, 112, 120, 118, 111, 118, 119,
272         116, 121, 116, 118, 117, 119, 117, 123, 119, 120, 120, 122, 120, 117, 118, 118, 115, 119,
273         116, 117, 116, 117, 117, 117, 121, 121, 126, 121, 118, 122, 121, 118, 120, 118, 117, 115,
274         119, 117, 115, 118, 111, 111, 109, 100, 98, 97, 109, 124, 140, 150, 154, 156, 159, 148,
275         152, 151, 153, 147, 150, 146, 147, 143, 143, 143, 142, 141, 137, 166, 205, 215, 218, 205,
276         125, 97, 103, 114, 113, 110, 111, 110, 112, 119, 120, 127, 124, 82, 58, 37, 31, 36, 43,
277         46, 150, 153, 148, 151, 150, 151, 150, 158, 162, 159, 151, 151, 152, 150, 136, 111, 82,
278         74, 87, 91, 90, 96, 97, 96, 93, 94, 98, 106, 109, 110, 112, 115, 117, 117, 119, 117, 116,
279         117, 119, 117, 119, 121, 120, 117, 116, 116, 118, 122, 127, 122, 114, 116, 113, 110, 114,
280         119, 113, 113, 115, 117, 118, 117, 122, 124, 122, 124, 120, 115, 117, 118, 116, 116, 115,
281         117, 116, 116, 112, 114, 112, 106, 100, 97, 109, 124, 136, 146, 151, 155, 151, 150, 149,
282         146, 150, 149, 147, 148, 147, 146, 149, 143, 143, 142, 139, 135, 194, 214, 217, 219, 186,
283         92, 99, 106, 111, 113, 111, 111, 113, 120, 124, 126, 78, 30, 39, 37, 39, 38, 45, 68, 148,
284         151, 150, 150, 152, 150, 160, 162, 162, 160, 151, 150, 153, 153, 142, 117, 86, 78, 86, 90,
285         93, 98, 98, 90, 93, 93, 96, 103, 107, 110, 114, 114, 116, 119, 119, 120, 114, 114, 120,
286         120, 120, 120, 117, 118, 117, 126, 116, 122, 124, 123, 117, 114, 109, 112, 113, 115, 113,
287         116, 116, 114, 114, 119, 119, 115, 123, 120, 115, 117, 119, 115, 118, 116, 114, 115, 115,
288         120, 117, 110, 110, 99, 99, 96, 106, 120, 134, 142, 149, 152, 154, 151, 149, 152, 153,
289         145, 149, 149, 147, 147, 148, 148, 147, 144, 142, 131, 147, 196, 212, 219, 217, 164, 101,
290         103, 109, 108, 113, 114, 113, 121, 123, 96, 37, 33, 37, 35, 43, 41, 42, 49, 151, 149, 151,
291         154, 158, 158, 159, 160, 158, 154, 147, 151, 152, 151, 135, 116, 83, 77, 89, 90, 93, 92,
292         92, 92, 92, 95, 98, 103, 109, 111, 109, 116, 109, 116, 115, 122, 117, 114, 111, 114, 119,
293         120, 118, 118, 116, 121, 119, 116, 118, 116, 114, 115, 113, 111, 116, 121, 115, 111, 111,
294         112, 110, 119, 119, 121, 122, 117, 118, 117, 117, 116, 117, 113, 115, 117, 116, 116, 112,
295         113, 107, 105, 104, 96, 107, 121, 129, 139, 146, 144, 153, 149, 150, 152, 148, 145, 148,
296         152, 148, 145, 147, 146, 144, 141, 141, 136, 134, 185, 212, 219, 221, 201, 106, 92, 105,
297         106, 113, 117, 123, 123, 80, 33, 32, 43, 47, 44, 46, 38, 46, 35, 156, 156, 152, 153, 157,
298         163, 157, 153, 156, 153, 151, 153, 153, 149, 135, 109, 82, 72, 80, 95, 92, 91, 92, 91, 90,
299         93, 96, 104, 109, 108, 111, 112, 117, 111, 114, 116, 115, 114, 113, 117, 117, 119, 115,
300         120, 119, 120, 120, 116, 119, 116, 116, 116, 114, 111, 113, 106, 111, 111, 109, 109, 110,
301         118, 117, 120, 120, 118, 116, 114, 118, 118, 113, 118, 116, 118, 113, 117, 112, 109, 105,
302         108, 105, 98, 102, 118, 129, 138, 140, 145, 151, 152, 145, 147, 145, 146, 146, 144, 148,
303         148, 145, 144, 144, 140, 138, 135, 132, 146, 205, 217, 221, 218, 172, 90, 98, 101, 107,
304         112, 121, 83, 36, 36, 41, 41, 45, 42, 41, 38, 36, 40, 154, 154, 152, 155, 165, 157, 147,
305         147, 146, 150, 154, 150, 155, 152, 138, 111, 84, 75, 83, 90, 92, 93, 90, 93, 91, 91, 98,
306         103, 106, 110, 111, 116, 116, 113, 114, 114, 114, 118, 116, 120, 118, 113, 117, 117, 118,
307         116, 116, 116, 123, 115, 113, 117, 115, 111, 109, 121, 126, 121, 114, 107, 109, 115, 109,
308         119, 114, 115, 118, 117, 118, 119, 116, 116, 116, 117, 115, 116, 113, 113, 110, 104, 102,
309         96, 102, 118, 129, 135, 140, 143, 143, 147, 149, 145, 147, 144, 145, 148, 146, 147, 144,
310         142, 138, 134, 133, 135, 134, 133, 182, 211, 221, 222, 206, 112, 95, 101, 105, 118, 85,
311         37, 37, 39, 42, 51, 50, 48, 44, 33, 39, 38, 155, 154, 150, 162, 165, 150, 140, 137, 138,
312         154, 154, 152, 157, 152, 138, 117, 83, 73, 84, 88, 93, 94, 91, 93, 92, 94, 101, 101, 106,
313         112, 113, 116, 116, 114, 116, 115, 114, 119, 118, 113, 117, 120, 117, 117, 120, 117, 119,
314         115, 117, 129, 129, 133, 136, 141, 159, 157, 167, 168, 172, 175, 182, 164, 121, 107, 108,
315         115, 113, 114, 122, 118, 121, 115, 114, 117, 118, 114, 114, 108, 109, 102, 103, 97, 101,
316         113, 126, 134, 137, 136, 140, 146, 146, 146, 144, 144, 145, 146, 148, 142, 143, 139, 135,
317         135, 134, 134, 134, 131, 139, 200, 216, 220, 220, 183, 98, 106, 115, 86, 31, 33, 35, 41,
318         51, 51, 50, 44, 32, 35, 39, 42, 152, 150, 151, 163, 157, 144, 131, 133, 137, 154, 157,
319         154, 158, 154, 136, 113, 81, 72, 83, 91, 93, 92, 90, 91, 95, 96, 95, 104, 107, 113, 108,
320         112, 117, 114, 112, 115, 118, 117, 114, 119, 120, 122, 117, 116, 117, 114, 115, 126, 138,
321         138, 134, 141, 141, 162, 162, 165, 177, 174, 176, 169, 180, 178, 186, 186, 152, 106, 105,
322         109, 115, 115, 117, 115, 118, 119, 113, 114, 107, 110, 110, 101, 102, 97, 100, 118, 131,
323         143, 134, 137, 141, 144, 146, 145, 141, 142, 143, 143, 144, 142, 138, 136, 131, 134, 131,
324         133, 134, 131, 133, 167, 209, 219, 225, 215, 146, 109, 90, 36, 32, 34, 39, 41, 45, 43, 40,
325         42, 38, 42, 34, 35, 152, 151, 160, 163, 149, 133, 115, 117, 140, 154, 158, 155, 159, 153,
326         137, 115, 78, 69, 77, 86, 89, 91, 91, 92, 93, 95, 97, 106, 108, 109, 113, 116, 117, 115,
327         115, 121, 117, 117, 119, 121, 118, 113, 117, 120, 127, 122, 118, 142, 142, 135, 138, 139,
328         134, 148, 156, 161, 166, 171, 179, 169, 168, 180, 182, 184, 195, 190, 136, 104, 105, 114,
329         119, 113, 113, 116, 111, 110, 111, 104, 104, 100, 97, 97, 99, 116, 130, 135, 138, 136,
330         139, 139, 141, 143, 145, 139, 140, 138, 140, 137, 134, 136, 132, 128, 129, 132, 133, 131,
331         132, 129, 193, 218, 222, 226, 207, 95, 33, 35, 36, 39, 46, 43, 41, 43, 36, 47, 39, 33, 38,
332         36, 153, 163, 164, 154, 142, 114, 96, 117, 142, 155, 157, 156, 154, 152, 138, 115, 77, 70,
333         82, 84, 91, 89, 89, 88, 92, 97, 98, 101, 106, 107, 110, 110, 108, 113, 111, 113, 113, 114,
334         119, 113, 108, 172, 150, 134, 119, 115, 116, 126, 124, 124, 141, 131, 141, 143, 148, 156,
335         169, 154, 174, 178, 177, 180, 187, 185, 194, 189, 196, 178, 102, 103, 106, 112, 113, 114,
336         108, 110, 106, 104, 106, 100, 96, 89, 100, 115, 130, 136, 138, 134, 136, 138, 139, 144,
337         144, 140, 133, 134, 135, 137, 138, 135, 133, 132, 128, 132, 131, 133, 133, 129, 146, 205,
338         219, 227, 223, 57, 31, 34, 39, 39, 46, 43, 46, 36, 40, 47, 37, 45, 36, 45, 158, 168, 161,
339         148, 130, 92, 79, 118, 145, 158, 160, 157, 157, 157, 140, 112, 77, 66, 71, 82, 85, 83, 88,
340         89, 93, 93, 95, 95, 107, 105, 109, 110, 113, 114, 113, 118, 115, 114, 113, 131, 96, 115,
341         116, 108, 114, 114, 115, 123, 122, 127, 132, 129, 141, 135, 148, 144, 157, 173, 165, 184,
342         184, 176, 185, 187, 180, 190, 190, 194, 193, 127, 97, 100, 107, 107, 109, 107, 104, 105,
343         103, 100, 97, 91, 99, 117, 127, 139, 137, 137, 136, 136, 134, 136, 141, 142, 133, 132,
344         132, 134, 137, 133, 135, 132, 128, 131, 133, 134, 136, 132, 130, 180, 220, 226, 174, 28,
345         28, 35, 40, 48, 41, 46, 32, 35, 45, 42, 34, 35, 46, 36, 162, 164, 154, 140, 114, 68, 78,
346         120, 141, 156, 160, 157, 156, 151, 133, 111, 74, 62, 75, 82, 84, 89, 88, 88, 93, 90, 94,
347         100, 102, 102, 107, 109, 111, 108, 113, 110, 114, 115, 116, 148, 96, 108, 115, 109, 120,
348         112, 119, 124, 119, 118, 128, 120, 131, 134, 148, 158, 163, 168, 175, 172, 181, 183, 181,
349         191, 182, 192, 191, 196, 190, 196, 176, 92, 97, 96, 102, 104, 102, 105, 100, 96, 95, 92,
350         98, 116, 133, 142, 143, 139, 136, 136, 136, 131, 132, 141, 136, 134, 132, 135, 137, 133,
351         133, 134, 131, 132, 135, 136, 136, 137, 140, 140, 208, 178, 35, 36, 34, 35, 43, 40, 46,
352         39, 40, 43, 37, 35, 37, 53, 29, 22, 164, 162, 150, 125, 87, 65, 87, 119, 143, 159, 163,
353         158, 154, 152, 134, 109, 69, 62, 75, 82, 90, 87, 89, 85, 88, 87, 94, 99, 102, 108, 106,
354         108, 111, 107, 111, 113, 114, 109, 139, 102, 108, 103, 98, 108, 116, 119, 119, 118, 129,
355         131, 124, 124, 129, 134, 138, 153, 164, 162, 163, 182, 176, 189, 183, 190, 190, 189, 194,
356         191, 192, 196, 197, 189, 84, 87, 90, 96, 98, 98, 95, 98, 95, 91, 95, 115, 134, 143, 144,
357         141, 138, 133, 124, 124, 120, 132, 141, 135, 133, 134, 138, 133, 133, 132, 134, 135, 135,
358         138, 137, 141, 139, 146, 132, 39, 37, 32, 40, 41, 43, 43, 41, 33, 52, 38, 38, 45, 60, 41,
359         23, 103, 162, 152, 139, 107, 72, 66, 87, 120, 142, 157, 158, 158, 154, 151, 138, 111, 70,
360         64, 74, 86, 92, 86, 87, 89, 90, 91, 94, 99, 101, 107, 105, 106, 107, 109, 111, 109, 117,
361         109, 117, 105, 96, 98, 108, 110, 116, 119, 113, 121, 116, 123, 131, 130, 127, 126, 138,
362         142, 154, 173, 167, 179, 181, 182, 188, 184, 189, 190, 193, 187, 192, 177, 196, 213, 219,
363         207, 77, 87, 97, 100, 93, 94, 95, 91, 98, 119, 134, 143, 147, 146, 143, 132, 117, 105,
364         107, 123, 136, 138, 136, 136, 139, 133, 133, 134, 135, 135, 135, 134, 137, 141, 146, 139,
365         43, 36, 36, 32, 44, 44, 47, 38, 37, 45, 44, 39, 40, 53, 48, 27, 77, 160, 152, 142, 123, 82,
366         73, 74, 88, 122, 142, 155, 160, 160, 157, 151, 135, 107, 76, 60, 74, 83, 85, 87, 91, 87,
367         93, 91, 96, 100, 99, 106, 102, 109, 111, 114, 115, 108, 116, 129, 102, 96, 97, 101, 115,
368         105, 114, 113, 117, 123, 118, 125, 126, 136, 126, 139, 133, 141, 144, 171, 173, 181, 180,
369         176, 191, 182, 192, 183, 179, 186, 209, 207, 211, 212, 215, 226, 182, 70, 88, 93, 92, 92,
370         90, 87, 98, 119, 134, 145, 146, 144, 144, 136, 116, 88, 82, 106, 127, 142, 138, 134, 137,
371         134, 132, 133, 138, 137, 134, 136, 139, 141, 143, 66, 42, 38, 39, 39, 49, 46, 42, 35, 48,
372         48, 41, 35, 48, 77, 42, 67, 139, 163, 145, 132, 98, 68, 76, 76, 87, 117, 143, 157, 161,
373         159, 158, 147, 132, 103, 76, 65, 76, 85, 86, 88, 90, 97, 89, 88, 90, 101, 105, 104, 105,
374         105, 109, 108, 114, 115, 119, 101, 99, 98, 103, 108, 108, 112, 112, 113, 110, 116, 119,
375         127, 127, 135, 133, 136, 128, 133, 145, 167, 173, 178, 182, 189, 187, 173, 168, 193, 209,
376         208, 206, 207, 206, 204, 209, 219, 223, 110, 75, 85, 91, 88, 88, 87, 97, 115, 130, 144,
377         144, 143, 144, 136, 119, 81, 55, 83, 119, 135, 137, 133, 139, 136, 135, 131, 135, 133, 134,
378         137, 140, 147, 97, 33, 30, 35, 42, 45, 40, 41, 33, 39, 44, 36, 37, 43, 67, 56, 71, 131,
379         142, 152, 134, 112, 76, 76, 80, 73, 88, 120, 140, 155, 160, 158, 160, 149, 133, 107, 76,
380         63, 74, 82, 84, 87, 91, 94, 91, 91, 98, 99, 103, 104, 106, 109, 108, 111, 113, 118, 103,
381         94, 102, 102, 99, 107, 110, 104, 106, 104, 111, 119, 121, 127, 120, 131, 138, 132, 136,
382         134, 144, 163, 164, 176, 179, 166, 156, 193, 208, 206, 203, 198, 204, 204, 203, 205, 206,
383         210, 221, 218, 86, 71, 79, 86, 84, 84, 92, 111, 131, 145, 146, 144, 138, 137, 120, 91, 40,
384         54, 103, 126, 139, 138, 134, 136, 133, 134, 134, 137, 135, 136, 144, 130, 39, 34, 35, 40,
385         47, 48, 45, 40, 39, 51, 37, 38, 53, 58, 74, 74, 124, 145, 134, 134, 115, 88, 75, 83, 81,
386         80, 81, 116, 141, 156, 159, 156, 157, 151, 132, 107, 78, 65, 78, 86, 88, 86, 86, 90, 88,
387         92, 95, 97, 104, 106, 105, 108, 108, 108, 113, 112, 98, 99, 105, 103, 108, 109, 107, 110,
388         102, 116, 122, 124, 127, 129, 132, 138, 141, 138, 129, 132, 136, 165, 166, 171, 149, 185,
389         202, 199, 196, 205, 206, 199, 199, 199, 199, 208, 209, 212, 219, 224, 208, 64, 71, 77, 77,
390         80, 93, 114, 134, 145, 145, 144, 145, 136, 127, 92, 38, 40, 88, 110, 132, 140, 134, 134,
391         135, 132, 132, 135, 134, 139, 147, 52, 34, 38, 35, 42, 44, 43, 39, 38, 50, 37, 46, 41, 54,
392         63, 75, 118, 138, 144, 129, 155, 92, 71, 76, 82, 81, 73, 82, 118, 138, 153, 157, 160, 156,
393         150, 132, 107, 75, 71, 81, 88, 90, 86, 88, 90, 89, 92, 93, 97, 101, 111, 105, 106, 109,
394         109, 121, 111, 100, 95, 103, 108, 108, 101, 102, 109, 110, 117, 120, 127, 131, 122, 125,
395         134, 138, 135, 128, 131, 143, 165, 149, 141, 190, 200, 199, 200, 203, 196, 193, 192, 201,
396         200, 198, 198, 202, 204, 207, 210, 218, 186, 89, 66, 72, 76, 85, 113, 131, 145, 145, 141,
397         145, 139, 125, 87, 37, 39, 64, 94, 123, 137, 138, 132, 131, 131, 135, 136, 140, 144, 100,
398         37, 29, 34, 47, 51, 42, 36, 32, 48, 43, 38, 46, 49, 54, 71, 117, 140, 142, 133, 151, 159,
399         79, 73, 79, 78, 82, 75, 85, 115, 136, 151, 156, 159, 159, 152, 134, 107, 77, 65, 77, 84,
400         86, 89, 89, 87, 89, 94, 94, 99, 101, 105, 107, 107, 107, 110, 111, 97, 99, 100, 100, 100,
401         106, 100, 112, 110, 123, 117, 116, 127, 134, 123, 131, 132, 130, 127, 127, 132, 143, 136,
402         164, 194, 191, 195, 192, 200, 195, 195, 195, 187, 192, 202, 200, 203, 204, 209, 207, 208,
403         213, 217, 222, 110, 61, 71, 85, 111, 133, 144, 145, 144, 146, 152, 125, 92, 41, 33, 38,
404         71, 108, 126, 137, 136, 131, 135, 132, 138, 142, 129, 34, 30, 34, 37, 47, 49, 44, 37, 39,
405         46, 38, 37, 47, 49, 54, 106, 137, 139, 133, 156, 159, 158, 74, 75, 84, 81, 81, 77, 87,
406         119, 137, 150, 158, 157, 155, 149, 135, 107, 83, 66, 77, 84, 87, 85, 95, 87, 89, 90, 92,
407         99, 101, 105, 109, 107, 103, 150, 94, 91, 90, 105, 107, 104, 105, 99, 109, 108, 123, 128,
408         125, 134, 131, 131, 128, 131, 129, 129, 131, 122, 124, 171, 190, 197, 192, 193, 184, 189,
409         194, 188, 203, 201, 206, 195, 203, 203, 204, 198, 206, 205, 213, 210, 214, 220, 49, 60,
410         82, 111, 128, 142, 145, 144, 144, 143, 125, 93, 44, 33, 30, 41, 83, 115, 132, 136, 131,
411         129, 137, 138, 142, 62, 34, 38, 38, 44, 46, 46, 42, 38, 51, 35, 42, 45, 40, 46, 101, 141,
412         133, 128, 144, 161, 160, 158, 80, 79, 81, 79, 79, 77, 87, 115, 140, 152, 160, 156, 156,
413         154, 135, 107, 82, 65, 74, 82, 88, 88, 89, 92, 88, 90, 94, 97, 105, 106, 103, 102, 110,
414         141, 88, 101, 103, 98, 101, 104, 102, 111, 112, 112, 116, 127, 133, 119, 134, 129, 126,
415         122, 121, 119, 113, 153, 177, 180, 179, 181, 185, 190, 193, 181, 190, 198, 202, 202, 199,
416         206, 205, 204, 206, 204, 202, 201, 204, 212, 217, 223, 148, 52, 73, 106, 131, 144, 144,
417         145, 147, 141, 123, 93, 47, 37, 35, 30, 51, 93, 116, 133, 128, 127, 134, 140, 104, 33, 34,
418         37, 41, 41, 46, 46, 36, 46, 43, 42, 50, 41, 37, 84, 139, 140, 127, 144, 154, 158, 155,
419         157, 84, 78, 83, 81, 79, 72, 83, 119, 140, 152, 157, 157, 156, 155, 135, 108, 76, 64, 76,
420         84, 81, 84, 88, 95, 90, 93, 97, 99, 100, 105, 99, 95, 196, 113, 98, 91, 94, 97, 102, 102,
421         102, 108, 114, 118, 123, 131, 124, 117, 127, 126, 131, 116, 115, 103, 173, 181, 187, 190,
422         182, 179, 178, 170, 192, 195, 196, 188, 198, 203, 200, 200, 202, 204, 190, 200, 204, 208,
423         205, 209, 212, 221, 224, 77, 64, 103, 125, 143, 140, 143, 143, 148, 122, 93, 50, 36, 34,
424         35, 27, 58, 173, 211, 212, 176, 203, 131, 38, 33, 40, 40, 43, 46, 51, 48, 45, 43, 38, 48,
425         40, 37, 58, 130, 143, 130, 138, 154, 155, 153, 152, 154, 76, 78, 81, 78, 80, 72, 79, 112,
426         137, 153, 157, 157, 155, 151, 133, 107, 79, 60, 72, 77, 82, 85, 85, 85, 89, 92, 92, 94, 98,
427         99, 96, 89, 201, 101, 97, 93, 98, 107, 100, 105, 106, 102, 116, 125, 136, 119, 136, 115,
428         127, 119, 110, 103, 125, 168, 166, 188, 175, 168, 190, 172, 184, 185, 189, 192, 195, 198,
429         191, 193, 202, 191, 190, 205, 205, 197, 202, 204, 205, 208, 208, 212, 221, 188, 61, 100,
430         125, 144, 145, 145, 147, 141, 125, 96, 47, 34, 32, 30, 43, 202, 211, 184, 205, 218, 221,
431         202, 30, 35, 39, 45, 45, 56, 39, 44, 45, 43, 44, 55, 36, 38, 118, 145, 134, 134, 153, 158,
432         153, 153, 151, 150, 76, 76, 82, 82, 84, 78, 81, 114, 136, 152, 157, 156, 156, 151, 134,
433         111, 72, 61, 71, 80, 83, 86, 86, 87, 88, 88, 94, 95, 99, 101, 97, 134, 174, 106, 89, 94,
434         102, 106, 99, 107, 108, 103, 114, 124, 113, 110, 122, 122, 115, 116, 97, 144, 167, 179,
435         157, 172, 172, 169, 168, 181, 183, 185, 184, 188, 190, 191, 192, 187, 184, 200, 198, 199,
436         198, 197, 197, 202, 202, 203, 199, 205, 218, 219, 66, 96, 126, 141, 145, 145, 144, 144,
437         123, 91, 39, 30, 29, 88, 209, 193, 193, 217, 221, 219, 224, 230, 38, 35, 38, 42, 45, 42,
438         38, 41, 40, 40, 50, 43, 39, 95, 145, 139, 135, 150, 155, 155, 154, 153, 151, 151, 85, 78,
439         83, 83, 85, 78, 80, 111, 139, 153, 160, 160, 159, 151, 136, 106, 69, 65, 65, 80, 87, 92,
440         88, 88, 89, 87, 93, 97, 99, 107, 94, 203, 168, 92, 91, 92, 95, 98, 87, 108, 117, 124, 112,
441         122, 105, 121, 120, 118, 98, 92, 158, 173, 179, 158, 158, 175, 160, 179, 174, 164, 192,
442         190, 182, 183, 181, 187, 176, 197, 196, 196, 193, 200, 195, 198, 196, 199, 207, 207, 209,
443         205, 208, 219, 201, 79, 126, 146, 147, 149, 145, 142, 121, 86, 34, 29, 147, 213, 160, 197,
444         218, 211, 209, 209, 211, 231, 87, 35, 39, 44, 44, 41, 43, 38, 37, 44, 49, 42, 62, 136,
445         142, 133, 146, 151, 152, 153, 154, 152, 153, 150, 82, 89, 82, 91, 86, 88, 87, 114, 137,
446         154, 160, 163, 159, 155, 136, 108, 77, 67, 71, 79, 86, 88, 91, 90, 88, 95, 94, 98, 101,
447         106, 87, 212, 163, 93, 94, 93, 94, 83, 103, 113, 116, 110, 107, 115, 120, 115, 122, 116,
448         91, 160, 159, 163, 161, 152, 160, 172, 177, 169, 174, 181, 172, 179, 185, 182, 161, 188,
449         185, 196, 195, 194, 195, 189, 199, 194, 205, 194, 192, 200, 202, 202, 204, 207, 214, 146,
450         119, 140, 147, 148, 147, 135, 106, 73, 49, 188, 207, 161, 205, 211, 209, 203, 199, 203,
451         215, 228, 92, 33, 41, 45, 37, 33, 43, 39, 39, 44, 33, 41, 117, 148, 138, 144, 154, 151,
452         149, 149, 148, 149, 149, 150, 87, 88, 88, 88, 86, 89, 87, 116, 136, 155, 157, 158, 162,
453         159, 140, 107, 76, 68, 76, 85, 91, 88, 94, 91, 93, 92, 98, 98, 106, 102, 88, 203, 139,
454         98, 85, 91, 93, 103, 103, 100, 117, 100, 109, 120, 120, 108, 108, 90, 159, 148, 158, 138,
455         173, 142, 167, 168, 169, 184, 163, 176, 171, 176, 177, 162, 182, 186, 176, 187, 195, 191,
456         194, 197, 196, 198, 148, 196, 199, 200, 197, 197, 200, 198, 207, 211, 182, 135, 143, 143,
457         143, 128, 101, 140, 215, 181, 177, 212, 209, 204, 201, 195, 200, 210, 216, 224, 72, 37,
458         42, 45, 39, 38, 42, 46, 45, 42, 23, 80, 142, 141, 136, 154, 153, 150, 149, 148, 147, 149,
459         149, 150, 92, 88, 95, 89, 88, 88, 88, 112, 139, 150, 158, 163, 159, 158, 143, 109, 75, 65,
460         76, 82, 92, 92, 91, 85, 91, 88, 95, 96, 99, 95, 91, 203, 125, 101, 86, 96, 97, 96, 90,
461         107, 109, 111, 117, 117, 113, 106, 104, 144, 146, 143, 129, 162, 138, 168, 166, 174, 163,
462         166, 178, 171, 171, 163, 164, 186, 177, 181, 184, 182, 185, 188, 197, 198, 197, 153, 192,
463         189, 195, 197, 201, 197, 195, 192, 194, 201, 204, 136, 147, 138, 136, 144, 204, 196, 189,
464         193, 210, 206, 199, 200, 198, 200, 205, 212, 216, 221, 34, 42, 45, 41, 41, 34, 35, 42, 41,
465         35, 46, 126, 147, 136, 148, 155, 156, 151, 151, 151, 150, 148, 147, 149, 91, 88, 88, 91,
466         93, 88, 92, 117, 141, 152, 159, 165, 162, 160, 143, 111, 75, 64, 79, 80, 90, 88, 91, 92,
467         92, 87, 92, 96, 94, 88, 133, 194, 129, 109, 95, 98, 96, 96, 85, 92, 111, 109, 103, 111,
468         106, 117, 137, 143, 135, 136, 127, 150, 158, 149, 175, 164, 157, 161, 184, 184, 142, 178,
469         166, 170, 184, 171, 172, 183, 170, 189, 174, 174, 174, 186, 183, 180, 188, 194, 186, 188,
470         192, 194, 179, 186, 196, 168, 138, 142, 189, 210, 180, 176, 208, 206, 199, 199, 197, 200,
471         203, 203, 207, 211, 220, 221, 33, 43, 45, 44, 39, 34, 40, 44, 50, 52, 100, 142, 140, 142,
472         154, 155, 150, 150, 154, 152, 145, 151, 147, 144, 89, 89, 89, 93, 92, 87, 91, 113, 140,
473         155, 161, 166, 164, 163, 145, 110, 77, 68, 77, 79, 87, 91, 88, 88, 86, 91, 92, 95, 93, 82,
474         187, 184, 135, 116, 91, 93, 97, 98, 90, 98, 117, 97, 110, 114, 106, 136, 142, 125, 144,
475         111, 138, 156, 150, 154, 146, 162, 173, 163, 158, 146, 178, 161, 171, 172, 174, 172, 166,
476         177, 185, 171, 173, 183, 181, 170, 186, 190, 194, 187, 181, 181, 184, 186, 183, 189, 181,
477         195, 167, 210, 177, 182, 197, 204, 201, 200, 199, 198, 199, 204, 200, 195, 207, 210, 221,
478         215, 32, 41, 45, 42, 37, 34, 41, 44, 50, 76, 137, 141, 137, 149, 154, 152, 153, 149, 147,
479         147, 150, 147, 144, 146, 95, 91, 89, 87, 91, 91, 94, 113, 138, 156, 167, 169, 166, 163,
480         144, 109, 77, 63, 75, 86, 86, 89, 87, 85, 88, 91, 90, 97, 90, 79, 217, 175, 135, 114, 108,
481         99, 100, 99, 101, 102, 112, 111, 111, 102, 134, 133, 125, 148, 111, 132, 135, 147, 154,
482         144, 158, 169, 167, 161, 156, 178, 164, 171, 163, 171, 171, 163, 170, 172, 178, 177, 178,
483         172, 180, 192, 180, 187, 178, 182, 170, 182, 175, 178, 174, 160, 175, 200, 178, 196, 191,
484         207, 204, 192, 198, 197, 196, 199, 203, 200, 190, 189, 205, 209, 218, 159, 29, 37, 35, 40,
485         35, 44, 46, 47, 62, 119, 144, 134, 145, 151, 154, 152, 152, 149, 150, 146, 148, 148, 146,
486         147, 89, 88, 84, 86, 88, 81, 88, 115, 137, 156, 166, 168, 166, 164, 140, 116, 75, 64, 74,
487         86, 84, 87, 87, 90, 87, 87, 92, 91, 91, 80, 217, 177, 130, 128, 109, 107, 89, 92, 95, 96,
488         105, 96, 109, 135, 139, 121, 143, 100, 135, 139, 145, 128, 135, 158, 161, 158, 140, 168,
489         170, 163, 162, 166, 173, 163, 172, 164, 156, 162, 177, 173, 175, 181, 168, 185, 187, 169,
490         178, 179, 168, 173, 179, 170, 156, 199, 182, 178, 193, 200, 203, 201, 192, 198, 198, 196,
491         196, 199, 199, 204, 159, 169, 203, 202, 212, 49, 30, 37, 42, 54, 32, 39, 50, 35, 77, 147,
492         139, 141, 153, 152, 155, 152, 153, 153, 149, 151, 151, 150, 151, 147, 86, 89, 81, 85, 82,
493         83, 93, 115, 143, 158, 166, 165, 160, 162, 144, 113, 74, 66, 79, 85, 86, 93, 87, 88, 86,
494         86, 89, 91, 90, 77, 215, 170, 145, 125, 122, 115, 105, 72, 97, 109, 109, 103, 134, 129,
495         126, 154, 101, 143, 143, 140, 127, 137, 150, 128, 160, 131, 167, 166, 156, 166, 162, 151,
496         170, 150, 161, 151, 168, 153, 160, 169, 169, 175, 183, 169, 171, 171, 167, 174, 174, 159,
497         161, 174, 194, 175, 186, 201, 200, 197, 184, 188, 194, 197, 197, 200, 197, 201, 198, 165,
498         150, 176, 136, 189, 209, 34, 48, 41, 50, 38, 35, 35, 41, 69, 121, 143, 134, 148, 151, 155,
499         151, 153, 155, 151, 148, 151, 152, 152, 150, 148, 87, 80, 83, 81, 77, 81, 89, 120, 140,
500         156, 163, 164, 163, 161, 143, 112, 79, 69, 72, 83, 87, 89, 87, 84, 89, 85, 92, 92, 87, 76,
501         203, 168, 147, 141, 116, 126, 90, 80, 94, 97, 105, 132, 125, 119, 131, 110, 138, 129, 143,
502         138, 136, 120, 145, 146, 128, 165, 148, 147, 165, 153, 159, 156, 146, 170, 156, 156, 144,
503         165, 168, 161, 171, 167, 177, 171, 161, 168, 166, 173, 156, 158, 198, 172, 182, 193, 203,
504         197, 192, 189, 187, 192, 194, 198, 198, 201, 203, 202, 196, 150, 173, 118, 157, 185, 130,
505         31, 33, 55, 38, 34, 44, 35, 54, 97, 143, 141, 141, 151, 154, 158, 150, 150, 154, 154, 151,
506         149, 148, 153, 147, 152, 83, 88, 84, 80, 81, 81, 90, 122, 143, 159, 163, 165, 164, 164,
507         142, 116, 83, 70, 81, 82, 87, 87, 88, 87, 87, 92, 89, 91, 83, 72, 195, 177, 160, 146, 121,
508         131, 104, 100, 92, 112, 136, 130, 122, 130, 114, 133, 128, 144, 130, 136, 126, 149, 142,
509         128, 154, 143, 147, 141, 150, 151, 155, 158, 163, 141, 140, 165, 154, 167, 154, 168, 169,
510         160, 161, 154, 163, 149, 146, 151, 186, 169, 184, 191, 202, 196, 191, 192, 191, 193, 194,
511         196, 200, 201, 201, 200, 207, 207, 147, 167, 132, 162, 144, 209, 37, 39, 40, 46, 55, 36,
512         40, 40, 63, 134, 145, 139, 147, 151, 152, 150, 152, 150, 151, 153, 150, 151, 151, 148,
513         151, 152, 84, 88, 92, 83, 87, 89, 92, 117, 142, 157, 164, 166, 165, 161, 146, 116, 83, 67,
514         74, 85, 82, 84, 82, 85, 90, 87, 85, 85, 81, 72, 201, 184, 175, 163, 140, 145, 122, 96, 94,
515         132, 111, 116, 129, 118, 131, 125, 137, 126, 110, 126, 146, 127, 131, 157, 146, 148, 141,
516         148, 151, 135, 113, 89, 121, 149, 157, 154, 153, 151, 157, 149, 158, 156, 156, 164, 141,
517         145, 177, 189, 171, 189, 200, 193, 184, 181, 187, 189, 194, 196, 196, 201, 201, 200, 200,
518         203, 208, 184, 163, 136, 141, 100, 171, 211, 29, 38, 48, 48, 42, 60, 39, 40, 97, 145, 138,
519         142, 149, 152, 150, 151, 148, 147, 152, 151, 149, 149, 152, 149, 150, 147, 87, 90, 82,
520         90, 85, 95, 97, 116, 139, 156, 164, 169, 165, 163, 145, 115, 78, 63, 75, 79, 91, 86, 85,
521         87, 88, 86, 87, 85, 80, 67, 201, 197, 184, 172, 161, 152, 146, 105, 121, 115, 121, 137,
522         112, 120, 135, 126, 131, 107, 125, 140, 124, 123, 141, 139, 91, 114, 106, 84, 94, 105, 138,
523         151, 90, 120, 154, 162, 133, 130, 151, 155, 120, 55, 144, 139, 135, 186, 165, 179, 195,
524         197, 194, 186, 189, 192, 189, 196, 196, 195, 198, 202, 199, 201, 205, 209, 207, 160, 143,
525         72, 90, 136, 213, 102, 26, 36, 43, 31, 43, 45, 44, 56, 132, 143, 137, 148, 155, 152, 154,
526         149, 151, 147, 151, 150, 149, 149, 151, 150, 147, 146, 89, 86, 89, 85, 93, 88, 104, 122,
527         141, 158, 165, 170, 166, 164, 149, 117, 76, 63, 69, 83, 88, 86, 90, 89, 84, 87, 89, 85, 77,
528         70, 206, 196, 195, 178, 149, 153, 147, 108, 111, 104, 125, 99, 118, 133, 125, 130, 109,
529         117, 125, 129, 119, 133, 138, 110, 136, 117, 99, 83, 80, 53, 153, 153, 113, 126, 122, 68,
530         80, 98, 87, 56, 59, 82, 33, 147, 186, 154, 177, 189, 194, 187, 195, 192, 192, 188, 194,
531         198, 198, 199, 199, 203, 201, 201, 204, 200, 149, 79, 77, 83, 116, 193, 210, 36, 35, 41,
532         42, 33, 42, 41, 40, 103, 145, 136, 143, 153, 153, 152, 150, 152, 148, 149, 148, 149, 145,
533         144, 147, 147, 146, 145, 88, 88, 91, 89, 92, 96, 98, 123, 145, 160, 164, 165, 167, 162,
534         147, 119, 72, 60, 72, 85, 84, 89, 89, 90, 86, 89, 90, 86, 84, 67, 214, 202, 211, 171, 137,
535         118, 115, 99, 105, 115, 88, 110, 132, 123, 129, 119, 121, 126, 126, 110, 135, 133, 93, 131,
536         124, 92, 104, 106, 97, 88, 98, 126, 87, 65, 48, 111, 52, 77, 38, 33, 43, 38, 122, 151,
537         155, 196, 197, 191, 192, 190, 193, 193, 189, 191, 196, 197, 198, 197, 206, 202, 204, 192,
538         111, 75, 86, 80, 88, 113, 178, 208, 48, 35, 43, 44, 41, 35, 47, 38, 47, 132, 139, 134,
539         149, 157, 156, 153, 153, 154, 153, 150, 145, 143, 148, 150, 146, 147, 148, 146, 90, 93, 92,
540         92, 86, 99, 104, 123, 144, 162, 163, 164, 167, 164, 150, 118, 75, 61, 75, 84, 84, 90, 90,
541         90, 90, 91, 89, 87, 81, 68, 214, 209, 201, 181, 119, 106, 129, 108, 106, 86, 103, 131,
542         128, 130, 114, 114, 129, 127, 106, 132, 128, 115, 122, 117, 91, 110, 106, 70, 54, 50, 66,
543         90, 85, 89, 77, 88, 44, 91, 42, 25, 30, 161, 126, 167, 188, 194, 195, 190, 192, 187, 191,
544         192, 188, 188, 193, 191, 202, 198, 207, 197, 82, 73, 75, 78, 83, 99, 148, 183, 194, 40,
545         30, 39, 41, 35, 36, 42, 45, 34, 93, 142, 135, 146, 156, 156, 153, 156, 153, 151, 152, 151,
546         148, 150, 144, 148, 150, 145, 147, 147, 97, 92, 92, 86, 88, 93, 95, 121, 142, 158, 164,
547         164, 165, 163, 150, 120, 78, 63, 74, 83, 88, 84, 85, 89, 90, 86, 91, 86, 87, 76, 171, 204,
548         201, 183, 123, 130, 147, 136, 84, 103, 124, 130, 120, 104, 120, 126, 124, 112, 135, 126,
549         111, 123, 124, 115, 86, 53, 69, 53, 50, 53, 107, 92, 49, 83, 100, 79, 51, 115, 25, 48,
550         181, 109, 169, 193, 172, 177, 190, 185, 189, 184, 185, 188, 193, 192, 193, 195, 197, 195,
551         96, 122, 86, 76, 84, 106, 143, 157, 178, 199, 35, 40, 42, 44, 42, 34, 38, 53, 57, 42, 123,
552         142, 131, 154, 159, 156, 155, 156, 152, 153, 152, 150, 149, 153, 149, 150, 148, 148, 145,
553         144, 99, 95, 90, 95, 90, 88, 101, 120, 142, 158, 162, 164, 166, 162, 147, 121, 77, 64, 73,
554         82, 84, 85, 87, 89, 87, 89, 90, 92, 89, 80, 79, 209, 196, 197, 159, 116, 118, 112, 97,
555         125, 124, 129, 100, 110, 117, 118, 109, 131, 121, 127, 119, 130, 85, 46, 80, 57, 40, 44,
556         46, 110, 103, 37, 33, 107, 83, 48, 29, 96, 54, 170, 118, 184, 188, 175, 176, 182, 179,
557         181, 181, 182, 186, 185, 186, 190, 192, 194, 126, 72, 96, 137, 136, 140, 156, 160, 161,
558         169, 200, 33, 36, 38, 54, 44, 39, 39, 34, 46, 42, 78, 139, 140, 141, 159, 159, 157, 159,
559         156, 154, 152, 150, 150, 150, 147, 143, 148, 149, 149, 144, 145, 96, 96, 94, 95, 89, 89,
560         97, 120, 140, 159, 164, 161, 165, 163, 148, 122, 80, 63, 77, 81, 84, 82, 90, 91, 88, 89,
561         87, 92, 90, 82, 72, 218, 203, 197, 158, 172, 158, 91, 121, 126, 128, 89, 115, 122, 110,
562         114, 122, 118, 82, 113, 115, 70, 72, 83, 49, 36, 60, 29, 50, 92, 52, 41, 118, 94, 52, 72,
563         21, 86, 157, 117, 179, 196, 177, 172, 180, 177, 176, 173, 176, 180, 188, 189, 191, 193,
564         162, 73, 59, 112, 112, 141, 158, 158, 162, 160, 179, 202, 35, 30, 38, 40, 46, 48, 38, 37,
565         46, 49, 44, 114, 138, 136, 152, 161, 159, 161, 156, 156, 157, 151, 151, 153, 150, 150,
566         148, 150, 146, 145, 147, 144, 96, 95, 97, 90, 94, 90, 93, 118, 141, 161, 166, 166, 165,
567         166, 149, 124, 77, 58, 70, 79, 84, 82, 89, 86, 86, 87, 85, 90, 93, 92, 77, 134, 210, 192,
568         147, 176, 107, 115, 125, 119, 96, 121, 111, 110, 110, 112, 124, 126, 71, 78, 64, 71, 90,
569         55, 34, 95, 32, 31, 82, 35, 34, 71, 63, 79, 53, 71, 80, 137, 118, 189, 193, 187, 181, 176,
570         173, 176, 170, 171, 168, 185, 189, 187, 188, 105, 61, 62, 102, 130, 110, 97, 138, 161, 167,
571         177, 188, 39, 26, 33, 42, 44, 50, 45, 44, 36, 41, 42, 63, 130, 137, 140, 161, 160, 162,
572         157, 157, 157, 158, 155, 152, 152, 152, 151, 151, 150, 149, 145, 141, 145, 98, 94, 95,
573         96, 89, 84, 87, 116, 141, 159, 168, 166, 168, 164, 151, 121, 73, 63, 76, 78, 81, 85, 88,
574         85, 89, 84, 87, 95, 95, 98, 91, 74, 198, 199, 185, 181, 99, 113, 122, 110, 112, 122, 122,
575         111, 101, 123, 112, 111, 88, 80, 52, 83, 44, 29, 58, 115, 32, 37, 69, 33, 44, 47, 46, 47,
576         101, 91, 95, 100, 187, 189, 190, 181, 177, 174, 179, 171, 164, 179, 181, 182, 182, 178,
577         190, 164, 75, 95, 76, 91, 126, 101, 140, 166, 192, 153, 35, 36, 30, 43, 45, 47, 50, 40,
578         36, 37, 48, 55, 95, 126, 119, 152, 162, 159, 156, 158, 155, 157, 157, 156, 154, 151, 152,
579         151, 154, 151, 149, 150, 149, 143, 97, 98, 91, 91, 88, 85, 83, 112, 136, 160, 163, 166,
580         167, 167, 148, 123, 77, 59, 69, 79, 82, 86, 87, 87, 84, 90, 90, 94, 99, 100, 96, 82, 93,
581         200, 189, 190, 151, 105, 110, 99, 116, 120, 109, 103, 123, 114, 98, 74, 64, 76, 83, 72,
582         47, 34, 60, 88, 44, 63, 40, 50, 75, 78, 75, 70, 110, 107, 109, 161, 183, 179, 183, 177,
583         172, 173, 172, 169, 164, 175, 176, 182, 187, 188, 199, 184, 117, 80, 102, 80, 91, 126,
584         135, 169, 74, 34, 36, 42, 37, 47, 47, 49, 47, 34, 38, 44, 38, 62, 117, 118, 125, 161, 163,
585         160, 156, 158, 157, 158, 156, 157, 156, 153, 154, 151, 151, 149, 147, 147, 147, 144, 94,
586         99, 94, 92, 92, 86, 79, 110, 140, 158, 164, 165, 168, 165, 150, 125, 79, 58, 70, 81, 84,
587         89, 88, 87, 85, 85, 90, 93, 96, 104, 99, 89, 80, 210, 198, 186, 119, 113, 90, 107, 115,
588         105, 118, 119, 115, 113, 104, 57, 57, 44, 81, 66, 59, 45, 67, 89, 79, 40, 40, 41, 42, 40,
589         39, 89, 78, 105, 138, 164, 171, 178, 171, 166, 172, 171, 172, 172, 170, 169, 191, 187,
590         189, 192, 191, 191, 145, 85, 59, 90, 68, 125, 140, 130, 66, 29, 32, 38, 50, 46, 52, 48,
591         39, 35, 39, 41, 46, 82, 129, 112, 136, 160, 160, 159, 159, 157, 156, 162, 157, 156, 155,
592         156, 155, 152, 150, 151, 150, 146, 147, 143, 96, 92, 96, 95, 89, 82, 80, 109, 137, 155,
593         164, 167, 168, 166, 149, 125, 78, 59, 75, 83, 89, 88, 92, 89, 87, 87, 88, 93, 100, 102, 98,
594         93, 77, 214, 212, 155, 95, 113, 108, 116, 94, 124, 118, 115, 101, 57, 38, 73, 42, 39, 46,
595         55, 77, 34, 66, 56, 115, 35, 42, 33, 32, 28, 96, 80, 125, 157, 176, 176, 181, 177, 163,
596         157, 160, 177, 157, 159, 178, 190, 192, 195, 190, 193, 192, 188, 160, 89, 52, 36, 75,
597         102, 125, 142, 41, 36, 39, 38, 45, 53, 53, 48, 37, 39, 41, 39, 43, 117, 125, 119, 148,
598         155, 160, 158, 158, 160, 154, 157, 154, 157, 154, 153, 153, 153, 150, 152, 154, 146, 145,
599         141, 94, 98, 92, 92, 90, 85, 82, 112, 136, 156, 165, 166, 166, 167, 150, 126, 83, 60, 71,
600         85, 87, 89, 90, 94, 87, 87, 94, 94, 98, 103, 101, 99, 85, 218, 210, 100, 95, 103, 106, 96,
601         121, 116, 119, 103, 110, 33, 64, 36, 40, 35, 36, 73, 54, 57, 90, 43, 103, 66, 77, 28, 24,
602         107, 105, 143, 156, 124, 175, 183, 187, 166, 157, 153, 176, 168, 155, 166, 180, 192, 191,
603         197, 195, 198, 203, 202, 175, 98, 64, 37, 67, 62, 141, 144, 38, 39, 37, 41, 42, 48, 51,
604         45, 40, 36, 44, 43, 73, 133, 123, 139, 146, 143, 148, 154, 160, 160, 156, 154, 154, 156,
605         161, 154, 153, 153, 151, 151, 154, 150, 146, 142, 88, 95, 97, 93, 88, 87, 81, 109, 139,
606         155, 163, 165, 169, 168, 150, 126, 84, 64, 69, 83, 87, 91, 91, 91, 90, 90, 91, 89, 153,
607         103, 101, 100, 88, 182, 212, 105, 113, 103, 89, 126, 116, 90, 50, 71, 78, 42, 96, 33, 42,
608         43, 34, 43, 61, 44, 84, 79, 65, 37, 29, 24, 86, 115, 144, 165, 158, 129, 158, 185, 176,
609         164, 164, 165, 151, 150, 164, 178, 187, 192, 196, 197, 195, 204, 206, 206, 191, 125, 77,
610         32, 35, 69, 151, 150, 47, 41, 42, 45, 47, 49, 56, 42, 37, 44, 45, 37, 107, 134, 120, 151,
611         149, 143, 143, 142, 146, 149, 153, 155, 154, 154, 153, 155, 153, 154, 153, 150, 150, 147,
612         145, 141, 94, 96, 94, 90, 88, 86, 79, 109, 137, 157, 163, 166, 166, 168, 151, 123, 86, 60,
613         74, 83, 91, 92, 96, 91, 90, 88, 92, 115, 102, 104, 106, 104, 100, 102, 220, 104, 100, 106,
614         115, 119, 123, 94, 74, 45, 44, 37, 95, 33, 64, 56, 39, 42, 54, 46, 71, 101, 52, 97, 21,
615         68, 127, 133, 164, 175, 167, 136, 161, 188, 179, 166, 160, 138, 148, 161, 165, 185, 187,
616         191, 197, 198, 200, 206, 205, 207, 197, 146, 75, 35, 26, 65, 148, 155, 47, 58, 48, 48, 52,
617         54, 52, 39, 38, 43, 39, 51, 126, 131, 139, 161, 153, 149, 146, 145, 143, 139, 142, 143,
618         143, 151, 154, 154, 152, 151, 150, 148, 148, 144, 140, 139, 93, 93, 90, 91, 85, 83, 77,
619         107, 135, 157, 167, 170, 169, 167, 149, 126, 84, 68, 81, 87, 87, 90, 91, 93, 90, 91, 92,
620         102, 101, 105, 109, 108, 106, 103, 190, 111, 96, 124, 118, 124, 106, 61, 39, 85, 31, 32,
621         78, 48, 52, 41, 48, 36, 48, 33, 70, 66, 26, 128, 41, 138, 115, 159, 168, 187, 179, 135,
622         165, 194, 163, 155, 146, 152, 160, 164, 166, 178, 187, 194, 194, 199, 199, 203, 204, 208,
623         205, 161, 93, 46, 32, 38, 79, 164, 59, 41, 47, 48, 48, 50, 49, 41, 40, 47, 37, 86, 138,
624         123, 148, 161, 158, 156, 151, 151, 149, 147, 145, 142, 139, 137, 140, 141, 147, 149, 148,
625         145, 145, 151, 145, 142, 90, 88, 92, 88, 88, 86, 80, 107, 135, 158, 166, 168, 170, 167,
626         151, 126, 80, 67, 75, 84, 89, 92, 93, 95, 93, 90, 97, 101, 107, 101, 100, 97, 90, 127, 92,
627         97, 116, 132, 115, 113, 66, 66, 25, 112, 39, 38, 29, 59, 86, 30, 47, 40, 33, 46, 45, 110,
628         24, 51, 139, 103, 164, 152, 164, 183, 182, 148, 178, 164, 149, 150, 149, 155, 165, 166,
629         172, 176, 186, 192, 194, 193, 198, 200, 203, 207, 205, 181, 104, 69, 33, 33, 70, 167, 63,
630         35, 52, 52, 57, 58, 42, 40, 44, 41, 48, 118, 131, 131, 157, 158, 155, 154, 156, 158, 155,
631         156, 148, 150, 143, 138, 143, 139, 137, 135, 137, 144, 146, 147, 142, 143, 90, 91, 93,
632         88, 84, 84, 79, 108, 139, 156, 165, 169, 170, 168, 150, 126, 84, 63, 73, 83, 90, 89, 92,
633         93, 92, 93, 95, 99, 104, 108, 108, 107, 106, 152, 123, 183, 105, 121, 104, 105, 38, 113,
634         24, 128, 29, 38, 65, 95, 57, 34, 49, 71, 31, 93, 45, 33, 31, 126, 80, 178, 162, 162, 158,
635         186, 183, 172, 170, 134, 147, 155, 156, 160, 168, 169, 171, 172, 178, 189, 189, 190, 194,
636         200, 203, 208, 204, 192, 115, 62, 29, 36, 63, 172, 71, 44, 63, 52, 56, 55, 40, 44, 49, 38,
637         68, 131, 124, 140, 155, 157, 156, 153, 155, 159, 160, 160, 154, 150, 147, 144, 144, 138,
638         136, 134, 135, 139, 135, 138, 142, 144, 90, 91, 90, 89, 90, 87, 79, 106, 136, 156, 167,
639         170, 170, 166, 151, 125, 84, 63, 77, 81, 89, 94, 92, 91, 90, 92, 94, 102, 106, 108, 109,
640         113, 171, 64, 28, 52, 140, 117, 104, 51, 90, 47, 32, 123, 27, 39, 43, 44, 39, 45, 45, 61,
641         35, 87, 82, 30, 89, 95, 170, 165, 184, 151, 155, 190, 191, 159, 67, 88, 96, 101, 125, 155,
642         171, 174, 169, 169, 177, 188, 187, 185, 187, 195, 196, 200, 197, 162, 95, 44, 29, 31, 81,
643         180, 90, 49, 51, 50, 63, 48, 41, 41, 44, 40, 96, 131, 120, 148, 154, 153, 152, 155, 152,
644         152, 154, 156, 157, 150, 148, 150, 146, 143, 139, 142, 139, 137, 134, 134, 131, 130, 92,
645         90, 92, 91, 89, 86, 76, 107, 137, 157, 168, 170, 172, 168, 153, 128, 81, 63, 76, 84, 84,
646         97, 90, 91, 91, 90, 92, 99, 104, 106, 114, 125, 150, 49, 30, 108, 118, 93, 80, 49, 90,
647         34, 83, 138, 26, 39, 60, 34, 43, 34, 31, 62, 51, 63, 53, 44, 134, 141, 157, 180, 189, 145,
648         176, 193, 140, 128, 143, 145, 126, 80, 58, 62, 110, 163, 168, 165, 168, 180, 188, 180,
649         185, 190, 186, 160, 100, 75, 71, 65, 33, 35, 56, 169, 124, 41, 63, 54, 54, 40, 40, 40, 45,
650         42, 122, 127, 127, 156, 157, 152, 151, 152, 152, 149, 149, 151, 154, 148, 148, 149, 145,
651         150, 152, 148, 141, 138, 137, 132, 126, 125, 88, 92, 94, 92, 90, 87, 76, 105, 138, 153,
652         169, 166, 171, 173, 152, 127, 85, 64, 78, 88, 91, 91, 91, 90, 84, 88, 89, 97, 100, 105,
653         147, 135, 157, 69, 83, 116, 123, 74, 43, 71, 58, 55, 61, 67, 35, 49, 32, 36, 92, 28, 34,
654         31, 54, 42, 23, 135, 116, 167, 170, 193, 167, 163, 196, 105, 107, 116, 120, 78, 139, 118,
655         97, 84, 81, 106, 150, 158, 164, 178, 188, 182, 179, 170, 99, 94, 90, 102, 92, 75, 57, 36,
656         60, 156, 119, 41, 55, 56, 55, 46, 42, 42, 42, 60, 129, 122, 140, 153, 153, 151, 149, 151,
657         150, 148, 148, 151, 152, 149, 148, 148, 149, 149, 149, 149, 144, 146, 143, 132, 128, 123,
658         90, 93, 90, 87, 93, 83, 71, 108, 135, 155, 168, 169, 169, 170, 154, 131, 85, 65, 71, 82,
659         88, 89, 90, 89, 86, 88, 87, 95, 130, 135, 144, 145, 145, 114, 140, 46, 32, 64, 73, 114,
660         55, 67, 34, 48, 66, 45, 31, 31, 80, 44, 36, 37, 32, 30, 71, 100, 182, 168, 189, 196, 177,
661         193, 71, 72, 57, 51, 44, 40, 41, 35, 76, 125, 110, 110, 132, 149, 156, 185, 190, 191,
662         180, 118, 79, 45, 40, 41, 50, 58, 38, 29, 65, 152, 109, 62, 57, 55, 47, 40, 39, 44, 31,
663         90, 134, 123, 148, 154, 153, 148, 149, 151, 147, 147, 148, 151, 152, 147, 146, 148, 148,
664         148, 147, 147, 142, 141, 139, 138, 131, 125, 82, 88, 83, 84, 82, 75, 67, 99, 135, 158,
665         167, 169, 170, 169, 150, 129, 82, 61, 72, 76, 84, 89, 86, 85, 87, 80, 75, 181, 200, 131,
666         138, 147, 130, 63, 62, 26, 79, 79, 103, 52, 78, 114, 31, 50, 37, 44, 33, 31, 31, 109, 73,
667         29, 27, 27, 148, 163, 162, 175, 197, 190, 189, 67, 54, 39, 39, 41, 36, 56, 129, 49, 34,
668         57, 125, 116, 128, 138, 154, 183, 200, 199, 79, 41, 41, 68, 68, 36, 46, 48, 39, 30, 64,
669         143, 125, 60, 55, 50, 38, 41, 43, 46, 36, 114, 132, 132, 153, 152, 148, 146, 146, 148,
670         146, 152, 146, 152, 148, 146, 145, 149, 144, 142, 144, 143, 138, 134, 132, 133, 132, 126,
671         87, 89, 88, 81, 80, 70, 61, 100, 132, 157, 168, 170, 170, 171, 150, 126, 82, 65, 75, 85,
672         87, 87, 85, 87, 83, 79, 68, 178, 152, 133, 140, 126, 138, 57, 30, 60, 54, 54, 42, 38,
673         112, 117, 40, 37, 31, 35, 60, 33, 35, 45, 33, 47, 48, 105, 93, 173, 175, 181, 198, 195,
674         81, 67, 42, 41, 82, 78, 30, 51, 199, 187, 62, 95, 111, 105, 122, 131, 155, 192, 213, 124,
675         41, 44, 49, 65, 147, 48, 52, 49, 39, 30, 77, 133, 130, 89, 62, 51, 37, 44, 45, 37, 59,
676         132, 132, 145, 151, 148, 150, 144, 146, 147, 146, 147, 147, 145, 147, 148, 144, 145, 142,
677         142, 143, 139, 135, 132, 127, 127, 123, 124, 92, 90, 88, 93, 81, 70, 58, 95, 134, 156,
678         170, 171, 175, 172, 154, 125, 85, 67, 74, 86, 93, 89, 94, 93, 103, 70, 35, 161, 120, 200,
679         162, 53, 39, 29, 69, 58, 45, 61, 77, 58, 106, 150, 32, 42, 52, 33, 111, 42, 35, 46, 32, 31,
680         37, 92, 157, 152, 177, 196, 193, 108, 110, 101, 82, 41, 104, 59, 59, 111, 205, 198, 128,
681         106, 94, 105, 116, 130, 158, 204, 211, 90, 100, 92, 76, 135, 146, 59, 41, 37, 40, 32, 88,
682         111, 144, 84, 77, 45, 47, 42, 44, 38, 85, 136, 127, 147, 150, 150, 150, 145, 148, 145,
683         144, 148, 149, 145, 144, 145, 144, 138, 142, 142, 139, 133, 132, 121, 119, 125, 144, 162,
684         88, 92, 86, 87, 81, 74, 63, 96, 133, 157, 168, 174, 174, 174, 154, 125, 88, 74, 80, 88,
685         96, 96, 99, 60, 38, 93, 124, 171, 163, 215, 51, 78, 34, 61, 107, 46, 32, 60, 73, 62, 110,
686         156, 54, 34, 37, 30, 43, 56, 39, 46, 29, 33, 135, 117, 151, 176, 197, 191, 101, 113, 115,
687         134, 128, 93, 76, 128, 142, 176, 194, 170, 133, 103, 116, 108, 117, 128, 162, 215, 200,
688         88, 111, 123, 146, 171, 122, 48, 53, 43, 40, 42, 74, 92, 159, 75, 66, 41, 37, 40, 44, 38,
689         111, 129, 135, 152, 148, 147, 146, 146, 146, 147, 150, 147, 146, 147, 144, 143, 140, 138,
690         137, 131, 135, 132, 128, 129, 152, 167, 177, 185, 92, 92, 90, 82, 79, 68, 58, 93, 135,
691         158, 166, 172, 176, 176, 159, 128, 90, 72, 82, 93, 102, 101, 116, 34, 99, 165, 125, 122,
692         137, 55, 43, 75, 88, 44, 81, 31, 48, 46, 77, 78, 106, 147, 76, 37, 32, 37, 35, 35, 45,
693         30, 25, 62, 88, 186, 166, 188, 195, 94, 105, 122, 126, 132, 132, 128, 125, 109, 98, 124,
694         112, 151, 162, 134, 109, 118, 117, 124, 155, 211, 204, 156, 137, 120, 108, 81, 49, 65, 73,
695         42, 30, 48, 68, 80, 177, 73, 68, 36, 43, 44, 44, 64, 125, 125, 142, 153, 150, 147, 145,
696         143, 142, 146, 145, 146, 143, 148, 144, 140, 140, 133, 132, 132, 129, 129, 152, 169, 179,
697         184, 182, 185, 90, 88, 86, 84, 73, 70, 55, 91, 134, 160, 168, 173, 176, 174, 159, 131, 90,
698         65, 80, 89, 97, 96, 95, 135, 149, 145, 75, 57, 87, 38, 43, 41, 102, 133, 110, 44, 32, 66,
699         107, 96, 91, 124, 111, 49, 34, 38, 36, 37, 39, 31, 25, 147, 121, 156, 177, 198, 98, 88,
700         114, 126, 137, 142, 140, 135, 137, 135, 129, 136, 141, 152, 145, 146, 115, 125, 118, 116,
701         154, 203, 208, 168, 146, 128, 122, 114, 93, 88, 80, 53, 31, 42, 61, 76, 180, 81, 60, 45,
702         36, 59, 35, 80, 129, 122, 151, 152, 143, 146, 143, 143, 144, 145, 143, 141, 144, 145, 139,
703         139, 136, 134, 131, 129, 135, 166, 182, 187, 186, 186, 186, 186, 91, 83, 83, 73, 70, 63,
704         50, 82, 132, 155, 170, 175, 176, 176, 158, 131, 87, 66, 81, 89, 99, 96, 97, 114, 108, 102,
705         58, 94, 43, 33, 76, 82, 108, 50, 94, 32, 49, 80, 41, 132, 115, 103, 129, 33, 39, 38, 30,
706         44, 40, 33, 95, 88, 173, 181, 199, 129, 78, 102, 116, 123, 139, 146, 155, 153, 160, 152,
707         153, 164, 168, 161, 162, 132, 128, 125, 115, 116, 153, 200, 213, 179, 152, 144, 129, 120,
708         106, 102, 85, 56, 41, 54, 57, 64, 179, 83, 69, 43, 31, 46, 33, 103, 127, 131, 150, 148,
709         147, 146, 145, 145, 146, 143, 142, 143, 139, 140, 141, 134, 135, 131, 125, 146, 175, 192,
710         193, 188, 188, 184, 185, 188, 77, 80, 73, 73, 72, 56, 49, 80, 127, 156, 169, 172, 175, 174,
711         159, 130, 89, 68, 80, 88, 93, 98, 110, 115, 150, 149, 130, 67, 55, 51, 92, 113, 84, 104,
712         47, 32, 37, 67, 78, 82, 92, 151, 57, 69, 50, 44, 32, 35, 40, 38, 140, 115, 172, 187, 178,
713         52, 91, 105, 118, 126, 139, 147, 156, 160, 166, 166, 165, 165, 165, 168, 149, 137, 131,
714         125, 116, 111, 141, 194, 220, 178, 165, 141, 132, 127, 114, 112, 95, 42, 39, 41, 51, 56,
715         168, 100, 50, 54, 35, 38, 40, 124, 127, 143, 150, 148, 145, 146, 148, 144, 144, 145, 143,
716         139, 139, 139, 137, 135, 129, 125, 142, 178, 194, 195, 192, 189, 185, 184, 187, 189, 78,
717         79, 73, 69, 67, 62, 47, 86, 133, 156, 168, 171, 173, 176, 157, 134, 87, 66, 75, 90, 126,
718         123, 124, 120, 78, 48, 70, 54, 57, 69, 71, 96, 122, 52, 45, 37, 41, 38, 80, 70, 81, 31,
719         89, 119, 48, 38, 36, 35, 34, 101, 106, 178, 189, 206, 27, 63, 97, 110, 115, 126, 137, 144,
720         156, 164, 169, 169, 172, 168, 170, 164, 154, 142, 137, 129, 122, 118, 131, 195, 217, 179,
721         156, 152, 134, 122, 120, 110, 94, 54, 42, 46, 46, 46, 166, 135, 40, 39, 42, 34, 62, 130,
722         126, 148, 152, 150, 147, 145, 146, 144, 145, 142, 143, 139, 141, 136, 136, 128, 125, 130,
723         175, 189, 193, 193, 191, 191, 188, 188, 194, 196, 75, 71, 68, 66, 63, 57, 47, 81, 127,
724         154, 168, 172, 174, 172, 157, 132, 89, 67, 81, 89, 95, 102, 118, 82, 78, 91, 76, 42, 80,
725         68, 83, 99, 57, 55, 37, 37, 40, 43, 43, 56, 72, 24, 97, 125, 61, 35, 33, 30, 29, 139,
726         113, 180, 186, 50, 35, 68, 105, 111, 113, 122, 129, 138, 150, 161, 168, 171, 179, 166,
727         163, 162, 148, 138, 137, 129, 122, 120, 132, 186, 220, 179, 155, 150, 140, 124, 117, 114,
728         85, 50, 53, 49, 40, 41, 166, 156, 37, 34, 44, 36, 88, 133, 133, 155, 150, 144, 147, 146,
729         142, 145, 143, 140, 140, 138, 137, 137, 135, 129, 123, 163, 188, 192, 190, 191, 192, 193,
730         191, 196, 199, 200, 65, 66, 63, 63, 58, 55, 46, 76, 133, 150, 164, 170, 169, 169, 159,
731         132, 88, 71, 82, 85, 93, 100, 98, 124, 129, 65, 94, 94, 60, 49, 44, 120, 76, 55, 42, 48,
732         45, 38, 41, 88, 48, 30, 98, 70, 159, 34, 26, 25, 103, 104, 189, 195, 159, 30, 39, 68, 98,
733         110, 118, 120, 131, 140, 143, 149, 160, 170, 171, 164, 164, 157, 148, 132, 127, 126, 116,
734         116, 132, 169, 219, 188, 157, 148, 137, 127, 122, 109, 68, 36, 37, 48, 37, 30, 171, 147,
735         33, 30, 49, 39, 116, 131, 145, 164, 150, 149, 146, 146, 141, 142, 142, 141, 138, 135, 139,
736         136, 129, 126, 144, 185, 193, 191, 189, 193, 191, 196, 202, 202, 202, 200, 73, 62, 64,
737         64, 59, 49, 40, 84, 131, 151, 165, 166, 169, 173, 153, 132, 92, 65, 97, 82, 93, 152, 138,
738         39, 58, 147, 94, 48, 45, 67, 66, 133, 129, 44, 66, 50, 37, 30, 32, 66, 64, 57, 108, 123,
739         76, 140, 26, 25, 139, 110, 195, 203, 28, 32, 45, 68, 92, 109, 119, 121, 128, 135, 144,
740         151, 153, 168, 162, 165, 159, 156, 144, 124, 121, 122, 112, 111, 120, 164, 217, 204, 156,
741         148, 137, 122, 117, 110, 56, 31, 45, 54, 37, 33, 156, 142, 60, 40, 44, 46, 128, 130, 153,
742         156, 148, 149, 147, 146, 143, 142, 141, 139, 137, 138, 133, 132, 126, 124, 173, 191, 192,
743         188, 190, 192, 197, 203, 206, 205, 198, 200, 69, 65, 65, 65, 60, 50, 37, 76, 130, 153,
744         161, 166, 164, 171, 154, 129, 83, 60, 73, 139, 125, 105, 110, 54, 124, 66, 83, 47, 89, 122,
745         115, 106, 82, 52, 47, 48, 27, 31, 47, 119, 46, 89, 111, 176, 31, 73, 22, 72, 102, 160,
746         203, 46, 28, 30, 56, 63, 92, 110, 112, 116, 126, 137, 141, 147, 152, 152, 158, 160, 158,
747         153, 138, 127, 119, 118, 110, 111, 124, 154, 205, 218, 151, 141, 135, 129, 118, 97, 41,
748         36, 49, 67, 38, 29, 149, 132, 69, 39, 37, 76, 134, 130, 153, 152, 148, 147, 148, 147, 146,
749         141, 140, 141, 139, 134, 132, 133, 124, 149, 188, 192, 189, 190, 191, 200, 204, 206, 206,
750         202, 203, 204, 73, 71, 65, 68, 56, 45, 35, 77, 126, 153, 165, 170, 167, 172, 156, 134,
751         87, 64, 73, 87, 109, 125, 111, 50, 78, 96, 74, 89, 63, 65, 102, 121, 63, 59, 39, 37, 39,
752         40, 75, 60, 87, 89, 42, 64, 30, 37, 39, 125, 113, 199, 146, 24, 29, 30, 75, 67, 90, 106,
753         113, 121, 121, 126, 141, 140, 140, 148, 150, 152, 150, 144, 133, 115, 111, 127, 114, 110,
754         122, 150, 197, 222, 143, 142, 136, 124, 115, 93, 32, 36, 51, 70, 54, 26, 132, 131, 106, 37,
755         31, 102, 137, 135, 153, 150, 147, 144, 144, 147, 145, 140, 141, 142, 139, 137, 133, 127,
756         127, 174, 194, 192, 189, 190, 199, 206, 207, 202, 203, 204, 206, 203, 76, 71, 70, 64, 55,
757         44, 33, 72, 125, 153, 164, 168, 169, 172, 160, 134, 85, 57, 108, 111, 97, 104, 80, 54,
758         68, 112, 83, 67, 128, 32, 127, 107, 90, 117, 39, 50, 31, 24, 55, 139, 48, 102, 44, 31, 29,
759         24, 154, 140, 107, 166, 83, 28, 30, 29, 86, 62, 95, 109, 113, 119, 124, 131, 134, 140,
760         141, 147, 148, 151, 148, 141, 131, 96, 119, 130, 130, 120, 114, 145, 193, 219, 132, 136,
761         127, 118, 113, 55, 32, 37, 54, 63, 38, 28, 117, 151, 123, 39, 30, 122, 137, 144, 152, 150,
762         147, 144, 143, 142, 142, 142, 140, 142, 139, 137, 130, 122, 148, 189, 194, 190, 191, 194,
763         204, 205, 203, 201, 203, 205, 206, 203, 77, 70, 71, 67, 57, 49, 40, 84, 131, 154, 162,
764         165, 169, 172, 158, 131, 96, 71, 75, 84, 91, 111, 76, 60, 87, 99, 56, 68, 93, 52, 112,
765         76, 154, 93, 36, 41, 44, 24, 39, 52, 40, 109, 29, 34, 23, 52, 170, 173, 175, 86, 26, 30,
766         35, 30, 81, 68, 91, 109, 110, 115, 124, 128, 132, 140, 139, 140, 146, 148, 148, 146, 132,
767         107, 121, 88, 63, 104, 110, 121, 180, 189, 140, 137, 127, 116, 104, 31, 40, 50, 56, 46, 38,
768         27, 88, 160, 129, 34, 47, 137, 136, 151, 151, 148, 148, 140, 143, 144, 142, 137, 144, 139,
769         135, 133, 130, 119, 166, 191, 193, 194, 195, 203, 204, 203, 203, 204, 206, 206, 207, 203,
770         69, 70, 67, 67, 55, 59, 56, 100, 138, 157, 162, 164, 169, 170, 162, 131, 90, 64, 76, 88,
771         97, 105, 79, 72, 73, 72, 27, 133, 48, 82, 98, 83, 151, 58, 36, 27, 44, 87, 35, 26, 93,
772         48, 53, 37, 35, 135, 157, 179, 166, 29, 37, 37, 38, 39, 99, 74, 98, 105, 110, 119, 122,
773         128, 134, 136, 140, 143, 144, 148, 148, 148, 138, 122, 111, 115, 115, 108, 86, 109, 166,
774         165, 143, 130, 134, 121, 57, 40, 34, 41, 60, 48, 36, 51, 50, 162, 144, 36, 85, 140, 139,
775         152, 151, 147, 142, 144, 142, 144, 139, 141, 139, 135, 133, 136, 127, 131, 176, 194, 193,
776         193, 200, 204, 205, 205, 203, 211, 207, 208, 205, 206, 63, 73, 64, 73, 57, 63, 74, 113,
777         140, 155, 160, 163, 169, 174, 161, 133, 94, 63, 76, 86, 100, 105, 46, 57, 70, 44, 103, 51,
778         82, 69, 92, 77, 81, 94, 97, 35, 37, 163, 25, 23, 48, 39, 85, 109, 167, 107, 107, 211, 31,
779         30, 48, 39, 37, 31, 105, 75, 103, 105, 113, 118, 120, 125, 130, 134, 136, 138, 142, 146,
780         148, 144, 146, 136, 131, 125, 122, 133, 146, 193, 185, 157, 141, 136, 124, 110, 39, 43,
781         36, 46, 73, 67, 48, 34, 32, 166, 133, 47, 121, 138, 141, 151, 151, 146, 146, 145, 143,
782         141, 146, 141, 139, 139, 137, 133, 128, 140, 186, 192, 194, 198, 204, 203, 204, 204, 205,
783         206, 207, 206, 205, 209, 72, 66, 70, 67, 58, 52, 79, 113, 139, 154, 161, 163, 170, 174,
784         163, 136, 94, 65, 78, 87, 96, 141, 65, 59, 64, 95, 66, 44, 66, 61, 103, 104, 72, 112,
785         125, 56, 66, 102, 57, 52, 40, 132, 140, 173, 73, 89, 192, 49, 47, 47, 48, 47, 37, 36, 99,
786         77, 101, 110, 111, 116, 119, 127, 129, 130, 134, 142, 142, 144, 148, 147, 139, 142, 141,
787         135, 150, 192, 157, 195, 188, 154, 134, 133, 126, 60, 43, 45, 43, 63, 86, 63, 52, 45, 28,
788         158, 135, 76, 132, 137, 142, 149, 149, 146, 143, 145, 142, 142, 137, 141, 141, 137, 133,
789         133, 125, 153, 189, 192, 193, 201, 206, 204, 203, 204, 205, 207, 209, 209, 210, 210, 68,
790         60, 60, 67, 56, 47, 80, 119, 142, 154, 162, 160, 167, 175, 163, 137, 95, 59, 75, 85, 135,
791         103, 55, 64, 121, 38, 62, 45, 63, 59, 73, 88, 63, 117, 150, 57, 117, 51, 24, 46, 103, 143,
792         175, 184, 84, 105, 82, 34, 38, 42, 39, 55, 40, 32, 91, 77, 99, 110, 114, 119, 117, 124,
793         127, 127, 130, 132, 138, 140, 141, 147, 139, 140, 136, 145, 160, 202, 167, 201, 190, 153,
794         134, 128, 120, 40, 46, 45, 46, 61, 70, 58, 60, 42, 26, 144, 125, 99, 135, 137, 148, 148,
795         147, 142, 144, 141, 142, 142, 135, 138, 141, 138, 136, 133, 125, 159, 190, 192, 200, 206,
796         207, 203, 205, 204, 204, 208, 209, 208, 208, 210, 67, 60, 57, 57, 54, 56, 73, 110, 141,
797         155, 162, 165, 171, 174, 163, 137, 98, 58, 74, 112, 92, 122, 48, 93, 114, 41, 50, 58, 61,
798         79, 58, 62, 67, 65, 113, 127, 121, 53, 69, 98, 102, 153, 194, 90, 83, 171, 30, 58, 47, 39,
799         39, 67, 44, 33, 95, 85, 91, 110, 117, 114, 120, 124, 130, 130, 125, 128, 128, 134, 136,
800         137, 135, 133, 140, 146, 167, 203, 169, 207, 188, 146, 133, 128, 71, 37, 50, 40, 59, 50,
801         67, 63, 56, 34, 29, 126, 113, 109, 131, 140, 150, 149, 151, 147, 142, 142, 142, 141, 140,
802         138, 136, 136, 134, 124, 123, 166, 194, 195, 203, 206, 205, 205, 207, 204, 205, 208, 209,
803         208, 209, 209, 60, 50, 56, 58, 57, 55, 73, 116, 142, 155, 164, 161, 171, 173, 166, 140,
804         93, 63, 82, 98, 85, 121, 55, 43, 109, 56, 59, 47, 54, 88, 81, 72, 61, 61, 73, 121, 93, 31,
805         90, 169, 185, 187, 78, 70, 167, 32, 31, 87, 34, 36, 45, 62, 41, 30, 88, 86, 84, 106, 111,
806         120, 118, 122, 125, 130, 125, 130, 122, 118, 125, 130, 132, 135, 134, 127, 123, 134, 152,
807         135, 142, 117, 124, 130, 39, 41, 43, 43, 43, 60, 68, 62, 55, 43, 28, 124, 108, 120, 141,
808         139, 151, 149, 146, 145, 141, 138, 146, 140, 142, 139, 139, 136, 132, 129, 120, 165, 192,
809         201, 208, 205, 204, 207, 208, 205, 208, 210, 212, 210, 210, 211, 48, 48, 51, 62, 50, 58,
810         73, 117, 144, 156, 168, 168, 171, 170, 165, 135, 94, 59, 132, 74, 115, 133, 44, 82, 53, 54,
811         67, 54, 47, 128, 100, 95, 71, 77, 111, 60, 67, 142, 108, 187, 206, 114, 96, 123, 49, 40,
812         41, 47, 38, 34, 47, 58, 59, 31, 90, 94, 73, 103, 111, 121, 116, 117, 126, 129, 133, 134,
813         89, 70, 70, 91, 93, 94, 83, 70, 84, 104, 105, 74, 99, 103, 134, 89, 39, 38, 37, 38, 51,
814         46, 54, 75, 34, 60, 32, 97, 120, 125, 135, 141, 146, 147, 145, 145, 145, 142, 142, 138,
815         142, 139, 135, 138, 134, 124, 124, 175, 197, 207, 209, 208, 207, 204, 207, 208, 208, 209,
816         213, 210, 212, 211, 46, 46, 49, 56, 50, 59, 85, 116, 144, 160, 170, 168, 171, 172, 159,
817         135, 89, 147, 67, 81, 136, 103, 56, 59, 44, 49, 70, 60, 43, 148, 69, 88, 91, 89, 79, 61,
818         92, 143, 122, 198, 190, 96, 108, 174, 40, 43, 37, 48, 50, 40, 54, 42, 68, 31, 85, 79, 71,
819         93, 108, 114, 113, 115, 123, 125, 137, 136, 127, 116, 112, 106, 111, 122, 125, 131, 142,
820         159, 173, 126, 131, 134, 130, 36, 38, 46, 40, 42, 70, 49, 59, 74, 38, 83, 40, 75, 140,
821         133, 137, 143, 148, 146, 148, 143, 144, 140, 140, 138, 140, 139, 140, 137, 132, 125, 127,
822         180, 202, 211, 209, 209, 209, 206, 205, 207, 210, 212, 211, 209, 210, 209, 44, 45, 49,
823         48, 53, 61, 83, 111, 146, 156, 167, 173, 175, 172, 161, 138, 135, 62, 66, 109, 95, 91,
824         65, 130, 33, 33, 92, 49, 44, 157, 51, 77, 108, 86, 70, 86, 123, 145, 108, 187, 77, 123,
825         164, 39, 40, 44, 39, 37, 45, 35, 49, 54, 64, 32, 69, 73, 63, 91, 102, 107, 107, 110, 120,
826         122, 129, 134, 135, 128, 111, 114, 118, 113, 134, 144, 152, 145, 152, 125, 141, 134, 54,
827         31, 36, 37, 35, 36, 36, 50, 58, 76, 49, 81, 39, 74, 148, 144, 137, 142, 152, 148, 150,
828         148, 145, 148, 145, 145, 137, 139, 138, 140, 133, 122, 128, 188, 209, 211, 208, 207, 209,
829         211, 210, 211, 211, 211, 206, 209, 204, 205, 43, 42, 45, 49, 45, 65, 87, 107, 140, 154,
830         170, 172, 175, 178, 161, 139, 89, 60, 78, 133, 93, 79, 42, 106, 34, 43, 79, 80, 72, 113,
831         136, 84, 57, 106, 83, 120, 138, 131, 98, 193, 130, 200, 44, 47, 44, 45, 46, 45, 44, 47,
832         45, 52, 58, 43, 73, 73, 54, 73, 93, 96, 106, 112, 116, 122, 125, 128, 132, 128, 121, 117,
833         114, 111, 114, 120, 130, 122, 116, 141, 136, 114, 31, 37, 41, 44, 38, 39, 45, 62, 51, 76,
834         57, 83, 45, 65, 154, 148, 142, 152, 151, 150, 147, 149, 146, 145, 144, 142, 139, 137, 136,
835         133, 131, 121, 126, 193, 213, 213, 210, 209, 210, 214, 213, 212, 209, 204, 202, 201, 203,
836         203, 41, 41, 39, 42, 40, 74, 82, 103, 137, 149, 169, 171, 174, 178, 161, 136, 91, 52, 105,
837         86, 99, 38, 67, 79, 41, 52, 53, 35, 117, 139, 74, 109, 74, 58, 125, 104, 59, 81, 110,
838         169, 157, 52, 40, 41, 45, 50, 46, 42, 44, 44, 58, 55, 49, 43, 57, 68, 49, 68, 83, 92, 93,
839         106, 114, 119, 121, 127, 132, 127, 124, 117, 117, 120, 114, 111, 116, 132, 145, 129, 129,
840         46, 35, 33, 37, 47, 59, 45, 55, 68, 63, 90, 52, 72, 53, 58, 167, 153, 141, 149, 150, 153,
841         148, 149, 147, 150, 148, 145, 141, 138, 137, 134, 126, 117, 120, 198, 217, 213, 215, 213,
842         214, 215, 211, 207, 203, 204, 207, 206, 208, 208, 44, 38, 38, 38, 35, 91, 91, 107, 129,
843         147, 166, 171, 171, 172, 161, 139, 93, 56, 91, 92, 83, 54, 67, 43, 38, 66, 45, 47, 132,
844         127, 118, 152, 100, 103, 80, 134, 50, 92, 123, 202, 113, 33, 45, 42, 38, 44, 43, 44, 38,
845         41, 44, 52, 51, 52, 45, 50, 51, 60, 70, 80, 93, 101, 114, 113, 124, 127, 126, 128, 129,
846         128, 132, 143, 150, 155, 148, 148, 140, 135, 82, 70, 29, 39, 43, 60, 54, 45, 51, 75, 66,
847         78, 58, 72, 41, 39, 165, 155, 138, 148, 150, 150, 144, 146, 145, 146, 147, 145, 143, 139,
848         135, 134, 125, 118, 116, 201, 217, 215, 214, 214, 212, 211, 209, 208, 211, 210, 209, 208,
849         207, 206, 35, 40, 47, 40, 46, 93, 90, 112, 131, 149, 168, 169, 171, 173, 160, 137, 93, 53,
850         77, 94, 77, 69, 88, 50, 32, 81, 36, 53, 101, 93, 108, 104, 108, 102, 67, 137, 117, 50,
851         101, 195, 45, 42, 43, 42, 34, 48, 39, 47, 38, 50, 41, 46, 45, 50, 41, 51, 54, 54, 44, 60,
852         80, 91, 104, 117, 119, 124, 127, 134, 137, 145, 148, 149, 162, 160, 152, 155, 140, 139,
853         33, 66, 40, 38, 46, 49, 39, 62, 42, 85, 70, 75, 59, 78, 57, 44, 165, 157, 142, 156, 152,
854         151, 150, 146, 148, 147, 146, 146, 142, 136, 134, 133, 128, 115, 126, 207, 217, 216, 212,
855         210, 209, 211, 211, 210, 209, 207, 204, 205, 204, 201, 38, 42, 37, 37, 48, 79, 87, 113,
856         127, 148, 167, 169, 170, 175, 162, 136, 95, 58, 76, 93, 55, 51, 118, 49, 41, 70, 39, 39,
857         110, 96, 48, 73, 131, 104, 118, 134, 118, 97, 106, 69, 61, 47, 50, 42, 39, 52, 35, 48, 43,
858         43, 37, 40, 47, 45, 48, 52, 57, 46, 62, 36, 49, 74, 87, 106, 119, 124, 126, 134, 137, 145,
859         165, 159, 159, 156, 165, 156, 136, 124, 35, 48, 49, 44, 44, 66, 34, 47, 42, 86, 70, 67, 73,
860         73, 73, 38, 170, 156, 141, 152, 152, 148, 143, 146, 146, 143, 144, 145, 141, 135, 132,
861         133, 122, 112, 141, 213, 220, 214, 208, 209, 211, 213, 213, 207, 202, 204, 201, 201, 195,
862         182, 43, 37, 36, 37, 43, 71, 91, 119, 131, 151, 165, 165, 168, 172, 165, 138, 90, 51, 67,
863         73, 38, 55, 81, 40, 60, 63, 39, 40, 107, 127, 43, 71, 108, 112, 146, 130, 133, 135, 82,
864         75, 44, 41, 45, 43, 48, 62, 43, 49, 39, 44, 43, 44, 40, 49, 56, 47, 53, 45, 62, 48, 40, 47,
865         71, 87, 97, 111, 115, 125, 135, 139, 146, 157, 162, 154, 156, 145, 135, 101, 38, 47, 52,
866         53, 50, 68, 49, 43, 46, 92, 78, 66, 71, 76, 82, 42, 163, 152, 134, 137, 141, 140, 145,
867         144, 145, 141, 144, 140, 135, 133, 134, 130, 123, 111, 164, 214, 218, 211, 209, 210, 211,
868         212, 209, 204, 202, 198, 184, 152, 95, 48, 39, 37, 35, 38, 32, 59, 86, 105, 130, 150, 165,
869         166, 167, 173, 158, 134, 85, 65, 182, 100, 37, 50, 60, 55, 47, 42, 39, 40, 73, 138, 80, 75,
870         78, 130, 85, 99, 138, 131, 158, 152, 49, 42, 41, 42, 56, 72, 36, 57, 42, 40, 47, 41, 41,
871         43, 52, 50, 57, 45, 60, 75, 50, 57, 63, 72, 86, 95, 103, 110, 121, 129, 138, 145, 156, 144,
872         146, 127, 123, 85, 43, 47, 50, 53, 46, 58, 48, 45, 57, 85, 75, 75, 67, 81, 66, 50, 165,
873         139, 116, 110, 123, 125, 130, 133, 139, 140, 144, 140, 139, 134, 128, 128, 117, 110, 187,
874         217, 213, 209, 209, 209, 208, 207, 205, 195, 177, 137, 62, 34, 34, 38, 43, 46, 38, 34,
875         35, 59, 70, 95, 129, 151, 164, 167, 164, 168, 159, 127, 99, 203, 87, 116, 49, 34, 74, 56,
876         66, 46, 38, 41, 83, 114, 129, 75, 42, 91, 106, 118, 110, 144, 66, 96, 167, 42, 39, 41, 52,
877         77, 30, 69, 40, 38, 48, 41, 40, 43, 49, 49, 55, 41, 41, 66, 76, 99, 111, 118, 122, 128,
878         126, 130, 130, 142, 148, 143, 147, 149, 150, 165, 184, 191, 152, 71, 49, 52, 42, 50, 43,
879         52, 60, 81, 73, 72, 73, 84, 69, 64, 146, 119, 111, 97, 101, 109, 112, 114, 117, 123, 129,
880         135, 134, 134, 133, 121, 115, 114, 198, 216, 206, 208, 206, 206, 205, 201, 193, 166, 110,
881         38, 36, 32, 56, 61, 59, 61, 49, 42, 35, 52, 59, 82, 122, 147, 163, 165, 163, 167, 156, 141,
882         172, 52, 53, 134, 32, 29, 84, 49, 55, 48, 70, 45, 57, 119, 96, 123, 52, 99, 153, 66, 80,
883         120, 84, 59, 151, 157, 37, 39, 58, 68, 35, 59, 44, 45, 39, 50, 42, 49, 40, 54, 48, 47, 41,
884         74, 88, 110, 116, 111, 117, 122, 123, 127, 130, 137, 137, 134, 134, 136, 151, 167, 186,
885         194, 195, 200, 180, 81, 47, 46, 40, 48, 53, 82, 66, 75, 72, 77, 73, 73, 141, 118, 126,
886         122, 114, 106, 103, 103, 101, 101, 102, 110, 113, 119, 122, 118, 114, 116, 200, 211, 202,
887         205, 208, 207, 205, 190, 177, 136, 46, 37, 47, 61, 70, 68, 118, 96, 73, 58, 43, 50, 43,
888         57, 108, 146, 161, 165, 164, 165, 184, 151, 88, 62, 115, 56, 36, 32, 55, 54, 29, 40, 97,
889         66, 74, 41, 120, 63, 85, 130, 78, 89, 80, 98, 96, 118, 141, 57, 156, 38, 46, 63, 35, 77,
890         39, 39, 38, 48, 40, 41, 44, 55, 51, 47, 39, 68, 91, 112, 112, 115, 115, 117, 128, 124,
891         128, 132, 130, 130, 133, 139, 158, 173, 185, 191, 194, 198, 198, 203, 187, 68, 31, 27, 41,
892         73, 57, 70, 68, 64, 61, 87, 144, 120, 132, 128, 122, 119, 115, 105, 100, 92, 92, 85, 96,
893         92, 93, 103, 87, 106, 195, 206, 199, 205, 206, 206, 203, 178, 110, 37, 41, 58, 61, 75, 73,
894         81, 133, 127, 111, 83, 66, 62, 41, 56, 103, 146, 159, 161, 164, 168, 163, 137, 90, 123,
895         160, 37, 34, 37, 40, 97, 25, 35, 123, 67, 72, 31, 70, 120, 94, 132, 63, 118, 105, 91, 109,
896         131, 125, 44, 103, 59, 46, 46, 30, 82, 42, 44, 40, 52, 57, 43, 44, 44, 57, 51, 42, 60, 91,
897         102, 108, 115, 118, 116, 125, 129, 131, 128, 131, 133, 138, 149, 162, 176, 185, 185, 188,
898         193, 198, 199, 203, 207, 151, 34, 45, 71, 57, 65, 64, 58, 54, 107, 139, 133, 140, 136,
899         135, 128, 127, 124, 117, 110, 103, 92, 89, 81, 100, 111, 82, 83, 197, 204, 203, 209, 203,
900         202, 176, 116, 41, 56, 71, 64, 74, 78, 77, 77, 130, 135, 141, 121, 90, 76, 40, 48, 106,
901         142, 160, 164, 166, 168, 159, 132, 148, 88, 66, 37, 36, 28, 40, 116, 110, 119, 72, 64,
902         73, 59, 75, 58, 114, 67, 68, 68, 110, 118, 142, 126, 50, 138, 38, 151, 44, 50, 40, 83, 45,
903         45, 39, 46, 56, 47, 41, 55, 49, 68, 47, 64, 89, 106, 108, 118, 113, 120, 126, 134, 131,
904         127, 127, 134, 142, 153, 161, 172, 183, 183, 186, 188, 194, 199, 201, 203, 209, 186, 41,
905         41, 55, 62, 61, 59, 40, 133, 136, 145, 140, 139, 136, 135, 132, 128, 126, 121, 114, 111,
906         102, 87, 111, 123, 84, 115, 201, 208, 208, 210, 205, 195, 101, 38, 54, 76, 67, 70, 82, 85,
907         76, 78, 119, 131, 147, 145, 123, 92, 51, 48, 103, 148, 166, 168, 167, 170, 159, 133, 213,
908         97, 45, 44, 42, 38, 53, 37, 56, 57, 49, 55, 85, 75, 28, 114, 40, 56, 56, 95, 82, 107, 130,
909         149, 107, 44, 145, 77, 51, 37, 36, 76, 43, 41, 44, 44, 59, 40, 47, 68, 56, 87, 43, 48, 90,
910         104, 115, 102, 117, 127, 126, 127, 129, 129, 131, 138, 145, 154, 159, 167, 174, 178, 181,
911         185, 191, 194, 199, 202, 207, 212, 192, 42, 55, 55, 70, 65, 36, 149, 139, 142, 145, 139,
912         137, 135, 135, 134, 130, 129, 122, 119, 117, 106, 119, 122, 96, 157, 206, 209, 210, 210,
913         198, 167, 54, 46, 81, 80, 76, 87, 94, 83, 77, 89, 89, 117, 138, 150, 145, 120, 55, 45,
914         105, 145, 168, 169, 170, 173, 160, 135, 191, 85, 30, 37, 42, 37, 64, 59, 41, 36, 76, 55,
915         32, 36, 44, 53, 94, 45, 59, 62, 101, 79, 135, 122, 134, 88, 97, 40, 178, 39, 39, 85, 53,
916         44, 41, 46, 58, 48, 43, 60, 56, 102, 59, 40, 94, 112, 100, 118, 122, 128, 127, 129, 126,
917         130, 132, 139, 148, 153, 157, 161, 166, 171, 174, 177, 188, 193, 199, 201, 206, 211, 215,
918         173, 48, 38, 66, 58, 34, 164, 132, 144, 142, 139, 135, 134, 136, 135, 132, 127, 127, 124,
919         121, 117, 121, 125, 110, 185, 212, 211, 212, 208, 186, 125, 49, 79, 81, 82, 84, 105, 96,
920         87, 83, 92, 37, 83, 126, 160, 161, 133, 74, 45, 105, 148, 170, 169, 171, 172, 161, 141,
921         173, 68, 34, 35, 33, 38, 53, 49, 43, 34, 99, 36, 49, 30, 92, 33, 73, 77, 64, 66, 71, 82,
922         101, 113, 144, 123, 32, 177, 201, 28, 29, 78, 44, 44, 39, 44, 55, 52, 38, 62, 66, 111, 78,
923         35, 81, 100, 118, 121, 121, 125, 127, 128, 128, 131, 133, 138, 142, 150, 152, 158, 167,
924         168, 174, 184, 186, 190, 193, 199, 204, 208, 214, 218, 93, 35, 53, 47, 34, 157, 131, 141,
925         140, 138, 137, 139, 136, 136, 134, 131, 132, 123, 119, 118, 129, 130, 124, 197, 216, 210,
926         209, 204, 167, 78, 66, 86, 85, 86, 99, 104, 83, 82, 96, 93, 26, 42, 107, 164, 167, 144, 82,
927         35, 105, 148, 169, 169, 173, 172, 161, 140, 109, 86, 27, 41, 37, 65, 39, 42, 39, 38, 117,
928         35, 60, 30, 49, 57, 81, 62, 75, 95, 83, 83, 74, 124, 132, 130, 38, 67, 185, 29, 27, 69,
929         50, 41, 36, 42, 69, 46, 43, 50, 84, 105, 80, 30, 89, 104, 119, 119, 122, 123, 128, 128,
930         132, 135, 136, 139, 141, 147, 152, 159, 161, 166, 172, 176, 186, 189, 192, 201, 205, 207,
931         210, 220, 213, 41, 41, 44, 33, 144, 132, 143, 141, 138, 135, 134, 133, 132, 130, 131, 130,
932         124, 120, 116, 122, 150, 169, 202, 213, 212, 208, 202, 133, 67, 80, 79, 94, 99, 101, 85,
933         80, 94, 95, 92, 27, 34, 100, 161, 169, 153, 71, 31, 103, 146, 171, 172, 170, 173, 165,
934         144, 96, 128, 34, 38, 40, 45, 39, 40, 40, 38, 136, 32, 74, 29, 41, 55, 86, 42, 67, 93, 91,
935         74, 68, 145, 136, 131, 43, 46, 180, 25, 25, 64, 71, 39, 36, 44, 62, 37, 50, 47, 94, 92, 91,
936         34, 85, 108, 118, 114, 122, 125, 126, 129, 129, 131, 136, 134, 139, 145, 148, 152, 159,
937         164, 173, 177, 183, 185, 193, 200, 205, 210, 209, 216, 219, 104, 35, 31, 40, 146, 136,
938         144, 142, 140, 139, 137, 134, 132, 128, 129, 126, 121, 118, 115, 157, 187, 195, 209, 214,
939         212, 205, 183, 92, 80, 86, 87, 95, 103, 92, 80, 84, 91, 89, 95, 23, 32, 87, 152, 170, 148,
940         72, 26, 104, 149, 170, 171, 171, 176, 166, 143, 158, 83, 47, 35, 53, 36, 33, 43, 36, 54,
941         124, 31, 61, 29, 49, 61, 31, 43, 59, 89, 101, 72, 77, 135, 115, 101, 34, 40, 175, 40, 30,
942         74, 68, 40, 42, 41, 58, 36, 42, 58, 88, 102, 98, 36, 84, 114, 118, 120, 127, 127, 130,
943         126, 130, 129, 135, 136, 140, 145, 146, 151, 158, 164, 168, 174, 181, 185, 191, 197, 202,
944         207, 209, 213, 218, 209, 34, 27, 58, 141, 137, 142, 144, 140, 139, 135, 133, 129, 126,
945         127, 123, 117, 116, 145, 197, 201, 200, 213, 213, 213, 201, 148, 80, 83, 78, 95, 103, 104,
946         81, 78, 96, 90, 90, 95, 22, 23, 74, 149, 170, 153, 78, 28, 101, 151, 170, 172, 171, 177,
947         163, 143, 138, 33, 47, 51, 38, 35, 36, 37, 27, 134, 109, 32, 35, 39, 43, 34, 38, 39, 59,
948         60, 122, 45, 58, 136, 147, 60, 128, 134, 114, 158, 32, 58, 60, 47, 57, 41, 42, 49, 47, 77,
949         107, 115, 102, 39, 88, 114, 123, 127, 126, 124, 126, 128, 124, 129, 132, 134, 137, 142,
950         143, 153, 156, 157, 171, 172, 181, 183, 191, 199, 202, 206, 209, 211, 215, 219, 34, 22,
951         90, 137, 152, 143, 139, 136, 137, 134, 132, 133, 127, 126, 120, 118, 114, 185, 215, 212,
952         205, 214, 215, 211, 182, 107, 87, 80, 82, 98, 103, 92, 80, 88, 93, 93, 98, 81, 21, 23, 67,
953         149, 172, 155, 93, 29, 97, 147, 169, 172, 172, 174, 167, 145, 117, 47, 55, 38, 38, 38,
954         37, 36, 113, 43, 76, 38, 41, 70, 32, 31, 39, 47, 66, 49, 105, 104, 92, 131, 122, 134,
955         143, 171, 34, 30, 38, 41, 53, 56, 52, 44, 44, 46, 58, 104, 114, 110, 87, 49, 87, 114, 119,
956         123, 127, 128, 128, 126, 128, 126, 132, 133, 134, 139, 145, 150, 153, 156, 166, 172, 176,
957         186, 192, 196, 205, 204, 207, 209, 211, 217, 146, 22, 119, 134, 149, 139, 139, 138, 136,
958         132, 134, 131, 127, 125, 119, 116, 116, 197, 216, 208, 206, 215, 213, 203, 150, 99, 93,
959         85, 87, 106, 96, 86, 82, 96, 94, 86, 84, 76, 24, 24, 62, 145, 169, 157, 109, 30, 93, 146,
960         168, 165, 166, 165, 162, 144, 121, 57, 45, 39, 35, 47, 39, 83, 39, 48, 77, 36, 35, 45, 37,
961         40, 42, 34, 68, 53, 37, 82, 137, 107, 123, 67, 99, 117, 151, 141, 88, 50, 39, 77, 49, 51,
962         39, 47, 67, 106, 112, 114, 78, 58, 96, 113, 122, 121, 129, 133, 126, 127, 123, 126, 130,
963         133, 132, 139, 145, 149, 150, 155, 162, 163, 178, 186, 188, 196, 202, 203, 207, 209, 211,
964         214, 205, 20, 121, 134, 144, 138, 138, 132, 134, 131, 132, 133, 129, 122, 120, 117, 126,
965         201, 213, 201, 207, 216, 211, 185, 121, 110, 93, 88, 94, 101, 97, 84, 82, 95, 99, 93, 79,
966         72, 25, 21, 55, 143, 171, 166, 105, 33, 93, 149, 167, 172, 172, 173, 166, 144, 132, 49,
967         42, 37, 38, 43, 39, 38, 50, 42, 67, 45, 57, 37, 47, 37, 38, 46, 101, 33, 34, 76, 110,
968         139, 122, 116, 31, 51, 41, 24, 62, 58, 78, 81, 43, 48, 44, 61, 80, 114, 115, 118, 66, 72,
969         100, 119, 123, 124, 129, 129, 126, 128, 122, 125, 125, 132, 132, 135, 144, 145, 149, 152,
970         159, 165, 172, 179, 187, 193, 199, 202, 205, 207, 210, 213, 214, 20, 124, 133, 143, 148,
971         139, 137, 134, 134, 132, 133, 131, 127, 121, 121, 128, 198, 213, 199, 208, 217, 204, 157,
972         108, 109, 93, 83, 93, 94, 84, 76, 90, 97, 80, 85, 87, 83, 30, 27, 42, 133, 166, 162, 111,
973         37, 91, 144, 166, 171, 172, 173, 168, 141, 141, 46, 39, 34, 33, 45, 40, 62, 36, 42, 54,
974         55, 34, 39, 77, 32, 49, 31, 64, 70, 82, 77, 89, 96, 81, 134, 64, 109, 41, 40, 45, 46, 53,
975         42, 55, 34, 41, 73, 93, 114, 119, 114, 56, 85, 116, 121, 129, 129, 129, 133, 130, 125,
976         126, 126, 129, 130, 132, 135, 141, 144, 147, 154, 159, 161, 170, 179, 188, 190, 196, 200,
977         202, 206, 209, 209, 211, 73, 117, 139, 144, 140, 137, 135, 134, 135, 134, 132, 129, 123,
978         125, 124, 126, 177, 197, 197, 211, 215, 199, 136, 106, 102, 97, 85, 90, 79, 68, 92, 97,
979         92, 88, 88, 80, 90, 36, 31, 37, 128, 164, 161, 121, 44, 86, 140, 167, 169, 170, 172, 164,
980         142, 153, 50, 41, 30, 31, 59, 68, 36, 34, 56, 56, 44, 56, 49, 50, 38, 38, 65, 52, 77, 32,
981         132, 103, 124, 83, 59, 120, 115, 122, 41, 45, 54, 46, 43, 45, 36, 57, 74, 103, 113, 115,
982         105, 45, 89, 120, 125, 130, 126, 134, 127, 125, 126, 125, 128, 124, 128, 130, 135, 143,
983         141, 147, 151, 154, 161, 165, 170, 180, 187, 193, 199, 204, 208, 208, 208, 211, 184, 127,
984         131, 127, 131, 136, 141, 139, 137, 136, 136, 131, 125, 129, 132, 131, 133, 152, 183, 212,
985         211, 193, 122, 101, 92, 82, 86, 85, 67, 80, 101, 89, 83, 80, 91, 89, 69, 29, 29, 30, 119,
986         158, 160, 126, 47, 84, 140, 163, 169, 169, 172, 166, 145, 145, 54, 49, 37, 42, 43, 42, 35,
987         36, 48, 57, 49, 51, 48, 51, 37, 34, 71, 31, 72, 77, 32, 43, 86, 83, 48, 95, 166, 27, 41,
988         35, 45, 38, 38, 37, 41, 67, 94, 105, 115, 112, 76, 65, 103, 122, 124, 127, 130, 132, 134,
989         129, 132, 128, 123, 130, 130, 128, 135, 140, 141, 142, 148, 151, 158, 167, 173, 180, 188,
990         192, 198, 201, 207, 209, 211, 210, 212, 132, 101, 94, 101, 114, 123, 131, 135, 140, 135,
991         136, 131, 138, 143, 136, 132, 136, 191, 220, 210, 171, 110, 98, 88, 81, 90, 67, 72, 88,
992         91, 86, 83, 87, 84, 82, 51, 27, 25, 32, 107, 163, 170, 131, 53, 81, 140, 165, 168, 170,
993         174, 164, 148, 117, 70, 58, 33, 45, 41, 44, 38, 55, 55, 44, 61, 56, 37, 47, 33, 44, 34,
994         63, 64, 107, 50, 47, 47, 62, 55, 92, 124, 33, 47, 34, 36, 44, 29, 36, 58, 71, 103, 107,
995         114, 111, 42, 79, 124, 124, 124, 129, 132, 132, 133, 131, 131, 127, 127, 124, 126, 128,
996         135, 136, 140, 146, 145, 153, 157, 163, 165, 176, 184, 190, 195, 201, 206, 211, 213, 212,
997         215, 114, 70, 67, 72, 83, 83, 95, 110, 116, 122, 128, 136, 146, 150, 130, 122, 143, 203,
998         220, 201, 146, 102, 80, 72, 85, 80, 62, 85, 92, 89, 86, 84, 96, 85, 69, 49, 25, 26, 32,
999         103, 163, 172, 138, 49, 77, 135, 161, 166, 171, 172, 167, 145, 109, 74, 71, 35, 44, 37,
1000         37, 45, 42, 60, 44, 62, 53, 44, 38, 44, 40, 59, 30, 93, 121, 147, 50, 61, 81, 92, 34, 57,
1001         43, 32, 53, 36, 35, 34, 49, 72, 91, 106, 105, 107, 73, 44, 96, 124, 124, 121, 126, 128,
1002         132, 128, 130, 127, 133, 126, 124, 125, 127, 131, 135, 137, 142, 146, 153, 154, 162, 163,
1003         171, 178, 184, 196, 200, 203, 207, 211, 212, 214, 159, 76, 84, 73, 70, 67, 66, 70, 75, 79,
1004         92, 113, 138, 149, 146, 143, 157, 212, 215, 181, 117, 79, 61, 74, 80, 65, 81, 94, 85, 85,
1005         82, 95, 92, 79, 55, 45, 33, 31, 31, 97, 165, 178, 152, 61, 82, 135, 159, 171, 170, 174,
1006         170, 150, 67, 81, 64, 42, 32, 32, 44, 46, 36, 64, 38, 60, 60, 54, 45, 50, 51, 36, 47, 38,
1007         90, 131, 142, 128, 77, 80, 39, 39, 41, 34, 36, 32, 30, 35, 57, 79, 100, 104, 109, 100, 28,
1008         79, 119, 123, 123, 128, 129, 128, 128, 133, 133, 128, 128, 130, 125, 127, 128, 128, 135,
1009         135, 140, 141, 149, 149, 155, 160, 171, 178, 182, 196, 196, 201, 205, 209, 210, 214, 206,
1010         74, 86, 88, 86, 77, 67, 55, 46, 41, 43, 55, 93, 150, 188, 151, 183, 214, 206, 151, 82,
1011         53, 55, 75, 68, 82, 100, 85, 77, 81, 81, 93, 90, 68, 47, 43, 47, 66, 58, 97, 167, 180, 166,
1012         77, 83, 134, 161, 172, 167, 173, 171, 150, 86, 83, 46, 47, 41, 56, 38, 42, 36, 44, 39, 56,
1013         47, 51, 44, 32, 30, 63, 43, 38, 35, 119, 136, 109, 102, 129, 32, 47, 32, 32, 36, 31, 36,
1014         43, 62, 90, 104, 107, 108, 37, 49, 109, 117, 127, 127, 128, 126, 130, 131, 133, 132, 129,
1015         130, 130, 127, 126, 134, 129, 132, 132, 137, 141, 144, 147, 150, 162, 173, 175, 183, 191,
1016         193, 201, 206, 207, 210, 213, 213, 75, 90, 96, 95, 90, 83, 71, 52, 39, 35, 35, 79, 194,
1017         201, 145, 198, 214, 191, 99, 51, 50, 69, 67, 62, 97, 93, 77, 76, 72, 91, 104, 83, 57, 45,
1018         51, 82, 83, 90, 112, 162, 180, 166, 99, 87, 136, 160, 171, 170, 176, 172, 144, 93, 86, 34,
1019         40, 42, 39, 41, 40, 41, 41, 53, 38, 57, 53, 36, 35, 47, 32, 59, 48, 37, 57, 109, 153, 69,
1020         120, 36, 41, 35, 36, 28, 28, 37, 67, 73, 106, 113, 111, 35, 47, 92, 116, 119, 123, 126,
1021         130, 128, 129, 130, 132, 131, 133, 133, 130, 131, 127, 126, 129, 127, 132, 139, 139, 143,
1022         147, 152, 159, 161, 168, 182, 189, 194, 200, 205, 206, 209, 209, 214, 115, 83, 101, 100,
1023         94, 92, 83, 69, 56, 38, 33, 80, 191, 194, 167, 198, 195, 127, 46, 47, 58, 55, 63, 88,
1024         101, 75, 71, 70, 84, 104, 90, 78, 74, 49, 58, 74, 86, 97, 127, 166, 179, 169, 112, 87,
1025         131, 160, 170, 171, 177, 171, 147, 109, 79, 34, 36, 39, 38, 42, 40, 49, 42, 41, 60, 52,
1026         43, 79, 47, 32, 84, 38, 67, 39, 68, 91, 75, 116, 54, 40, 41, 42, 35, 33, 35, 50, 67, 90,
1027         110, 101, 33, 44, 88, 114, 115, 118, 124, 128, 128, 126, 125, 127, 128, 135, 129, 134,
1028         133, 133, 127, 127, 131, 132, 129, 137, 137, 139, 143, 151, 157, 157, 170, 171, 183, 188,
1029         197, 202, 206, 208, 208, 211, 191, 75, 89, 101, 97, 85, 86, 83, 65, 62, 60, 76, 185, 202,
1030         193, 168, 121, 57, 43, 54, 57, 56, 84, 95, 81, 70, 67, 71, 97, 105, 85, 79, 60, 52, 61, 48,
1031         85, 108, 112, 159, 174, 165, 110, 87, 131, 163, 167, 171, 177, 171, 150, 98, 84, 33, 36,
1032         43, 33, 49, 44, 58, 31, 37, 67, 61, 55, 83, 34, 36, 81, 60, 62, 49, 43, 60, 142, 64, 83,
1033         33, 37, 37, 28, 28, 37, 72, 87, 79, 42, 36, 74, 94, 108, 115, 118, 125, 123, 125, 127,
1034         129, 133, 129, 131, 132, 136, 136, 133, 131, 135, 132, 131, 129, 128, 132, 136, 138, 140,
1035         148, 153, 160, 162, 169, 179, 186, 193, 196, 202, 207, 208, 214, 209, 71, 88, 93, 96, 91,
1036         89, 89, 79, 84, 81, 94, 184, 207, 169, 89, 56, 46, 60, 64, 62, 82, 99, 88, 68, 60, 71,
1037         84, 106, 92, 87, 65, 54, 65, 49, 36, 66, 83, 102, 146, 175, 166, 120, 87, 127, 160, 170,
1038         174, 178, 172, 157, 69, 55, 41, 40, 46, 35, 53, 43, 77, 41, 41, 51, 56, 57, 109, 83, 42,
1039         64, 33, 57, 103, 47, 90, 107, 96, 40, 27, 40, 43, 36, 38, 41, 38, 29, 53, 79, 97, 101,
1040         112, 114, 112, 115, 118, 125, 126, 125, 127, 128, 126, 130, 133, 132, 135, 138, 134, 134,
1041         133, 128, 133, 131, 131, 133, 141, 144, 148, 150, 156, 161, 171, 173, 183, 187, 196, 199,
1042         202, 208, 211, 211, 82, 80, 89, 91, 97, 97, 92, 90, 99, 98, 93, 152, 155, 85, 70, 66, 66,
1043         72, 61, 78, 102, 91, 73, 64, 58, 83, 100, 108, 94, 80, 56, 61, 60, 38, 40, 46, 72, 81, 138,
1044         171, 166, 122, 89, 125, 160, 170, 173, 174, 171, 154, 50, 36, 38, 65, 34, 51, 49, 52, 93,
1045         36, 41, 63, 46, 42, 93, 111, 35, 82, 103, 29, 60, 45, 63, 115, 90, 68, 37, 50, 48, 31,
1046         30, 51, 64, 74, 83, 103, 110, 110, 113, 117, 119, 118, 116, 126, 123, 126, 122, 127, 132,
1047         130, 131, 130, 138, 137, 129, 134, 134, 131, 134, 130, 131, 133, 137, 141, 145, 147, 160,
1048         162, 168, 178, 183, 183, 193, 196, 202, 209, 209, 212, 150, 71, 83, 88, 101, 104, 95, 101,
1049         108, 106, 103, 103, 94, 78, 83, 89, 81, 63, 68, 93, 90, 78, 66, 56, 69, 96, 105, 105, 95,
1050         70, 55, 50, 45, 47, 45, 60, 57, 67, 138, 186, 189, 142, 90, 127, 158, 173, 179, 179, 174,
1051         133, 44, 55, 37, 40, 37, 46, 47, 51, 44, 42, 33, 89, 31, 33, 105, 123, 47, 39, 122, 38,
1052         47, 119, 36, 97, 81, 47, 37, 40, 41, 43, 45, 72, 89, 103, 103, 107, 113, 114, 114, 120,
1053         118, 120, 118, 121, 128, 127, 127, 125, 128, 128, 132, 131, 133, 137, 133, 137, 131, 141,
1054         134, 138, 133, 139, 141, 143, 143, 147, 153, 158, 166, 173, 173, 181, 191, 195, 200, 207,
1055         204, 209, 196, 60, 81, 91, 99, 105, 106, 111, 113, 103, 100, 94, 91, 89, 98, 97, 79, 69,
1056         85, 88, 70, 62, 65, 63, 87, 109, 111, 96, 82, 60, 51, 46, 39, 44, 41, 48, 46, 54, 144, 199,
1057         199, 178, 98, 124, 157, 170, 175, 174, 170, 133, 64, 38, 60, 41, 39, 45, 49, 54, 39, 85,
1058         37, 130, 36, 34, 117, 72, 115, 32, 83, 51, 32, 61, 81, 77, 107, 81, 35, 30, 39, 53, 76, 90,
1059         98, 102, 108, 107, 112, 115, 114, 113, 122, 121, 116, 121, 123, 123, 127, 125, 130, 128,
1060         130, 129, 134, 131, 134, 140, 134, 135, 139, 140, 140, 137, 142, 144, 144, 147, 156, 162,
1061         159, 173, 172, 179, 187, 193, 198, 201, 205, 209, 210, 57, 76, 88, 97, 100, 113, 114, 110,
1062         108, 105, 100, 99, 110, 108, 96, 86, 87, 85, 75, 67, 66, 62, 78, 107, 117, 102, 83, 69,
1063         49, 52, 44, 54, 82, 45, 46, 48, 48, 157, 192, 197, 184, 98, 128, 155, 170, 175, 175, 169,
1064         104, 65, 44, 36, 49, 48, 51, 53, 70, 66, 51, 44, 93, 42, 53, 112, 83, 130, 40, 69, 97, 43,
1065         67, 57, 43, 74, 71, 116, 32, 50, 64, 79, 99, 100, 106, 109, 111, 117, 117, 113, 123, 120,
1066         119, 122, 121, 123, 127, 125, 122, 129, 129, 130, 131, 135, 137, 138, 133, 134, 136, 142,
1067         137, 137, 137, 142, 145, 146, 150, 153, 155, 158, 169, 172, 184, 186, 191, 197, 201, 204,
1068         204, 209, 88, 78, 84, 91, 97, 108, 106, 119, 114, 106, 110, 114, 119, 106, 92, 85, 85,
1069         72, 73, 76, 71, 79, 107, 122, 117, 97, 74, 41, 44, 44, 55, 80, 79, 37, 45, 50, 44, 143,
1070         194, 196, 179, 97, 127, 156, 169, 175, 175, 170, 100, 56, 38, 30, 58, 55, 64, 52, 54, 69,
1071         46, 73, 62, 62, 49, 106, 64, 62, 116, 53, 80, 44, 41, 74, 40, 43, 38, 92, 80, 72, 74, 80,
1072         96, 98, 110, 114, 115, 114, 120, 115, 118, 118, 122, 122, 121, 120, 127, 123, 121, 124,
1073         127, 130, 129, 134, 135, 135, 132, 135, 135, 139, 141, 139, 140, 141, 140, 155, 147, 155,
1074         159, 156, 162, 169, 180, 188, 190, 193, 198, 204, 204, 207, 138, 91, 85, 86, 94, 96, 119,
1075         125, 117, 115, 116, 129, 122, 102, 80, 73, 66, 68, 82, 82, 72, 85, 116, 122, 113, 78, 51,
1076         43, 40, 50, 74, 95, 98];
1077 
1078 }
1079 
1080 @safe pure nothrow unittest
1081 {
1082     FASTDetector detector = new FASTDetector;
1083     assert(detector.threshold == 100);
1084     assert(detector.type == FASTDetector.Type.FAST_9);
1085     assert(detector.flags == 0);
1086 }
1087 
1088 @safe pure nothrow unittest
1089 {
1090     FASTDetector detector = new FASTDetector(3, FASTDetector.Type.FAST_10, FASTDetector.PERFORM_NON_MAX_SUPRESSION);
1091     assert(detector.threshold == 3);
1092     assert(detector.type == FASTDetector.Type.FAST_10);
1093     assert(detector.flags == FASTDetector.PERFORM_NON_MAX_SUPRESSION);
1094 }
1095 
1096 unittest
1097 {
1098     auto lslice = lena_128x128.map!(v => cast(ubyte)v).array.sliced(128, 128).asImage(ImageFormat.IF_MONO);
1099 
1100     uint threshold = 50;
1101     int flags = FASTDetector.PERFORM_NON_MAX_SUPRESSION | FASTDetector.SORT_OUT_FEATURES_BY_SCORE;
1102     size_t cornerCount = 10;
1103 
1104     foreach (type; [FASTDetector.Type.FAST_9, FASTDetector.Type.FAST_10, FASTDetector.Type.FAST_11,
1105             FASTDetector.Type.FAST_12])
1106     {
1107         FASTDetector detector = new FASTDetector(threshold, type, flags);
1108         Feature[] features = detector.detect(lslice, cornerCount);
1109 
1110         assert(features.length == cornerCount);
1111         assert(features.isSorted!"a.score > b.score");
1112     }
1113 }
1114 
1115 unittest
1116 {
1117     auto lslice = lena_128x128.map!(v => cast(ubyte)v).array.sliced(128, 128).asImage(ImageFormat.IF_MONO);
1118 
1119     uint threshold = 50;
1120     int flags = 0;
1121     size_t cornerCount = 10;
1122 
1123     foreach (type; [FASTDetector.Type.FAST_9, FASTDetector.Type.FAST_10, FASTDetector.Type.FAST_11,
1124             FASTDetector.Type.FAST_12])
1125     {
1126         FASTDetector detector = new FASTDetector(threshold, type, flags);
1127         Feature[] features = detector.detect(lslice, 0);
1128 
1129         assert(features.length != cornerCount); // real count should be around 23 with 43 without suppression
1130         assert(!features.isSorted!"a.score > b.score");
1131     }
1132 }