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 }