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