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