commit 2ffd1510f8de1a3b12588aaa3d583edb35525ed8
parent 8703196de992503a292c4f5223da9a1fcb44151e
Author: amin <dev@aminmesbah.com>
Date: Mon, 3 Dec 2018 10:50:37 +0000
Add solution for 03-1
I started this at 21:00 and it's 03:00 now!
FossilOrigin-Name: ddb9d932fc0e72bf6664acf086de62e2c0c52dbcc3ee9407de8000f156082bf0
Diffstat:
A | day_03_1.zig | | | 1656 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1 file changed, 1656 insertions(+), 0 deletions(-)
diff --git a/day_03_1.zig b/day_03_1.zig
@@ -0,0 +1,1656 @@
+const std = @import("std");
+const debug = std.debug;
+const fmt = std.fmt;
+const mem = std.mem;
+
+pub fn main() !void {
+ debug.warn("03-1: {}\n", try num_overlapped_squares(input_03));
+}
+
+fn num_overlapped_squares(input: []const []const u8) !u64 {
+ var allocator = std.heap.DirectAllocator.init().allocator;
+
+ var rects = std.ArrayList(Rect).init(&allocator);
+ defer rects.deinit();
+
+ var max = V2 { .x = 0, .y = 0 };
+ for (input) |claim_string| {
+ var r = Rect.from_claim(try Claim.parse(claim_string));
+ try rects.append(r);
+
+ if (r.se.x > max.x) max.x = r.se.x;
+ if (r.se.y > max.y) max.y = r.se.y;
+ }
+
+ //V2.print(max);
+
+ var squares = try allocator.alloc(u32, ((max.x + 1) * (max.y + 1)));
+ defer allocator.free(squares);
+ for (squares) |*s| {
+ s.* = 0;
+ }
+
+ var rect_it = rects.iterator();
+ while (rect_it.next()) |next| {
+ const rect_squares = try Rect.covered_squares(next, &allocator);
+ for (rect_squares) |s| {
+ squares[(s.x + ((max.x) * s.y))] += 1;
+ }
+ }
+
+ //buf_print_2d(squares, max.x + 1);
+
+ var total_count: u64 = 0;
+ for (squares) |count| {
+ if (count > 1) {
+ total_count += 1;
+ }
+ }
+ return total_count;
+}
+
+test "num_overlapped_squares" {
+ const test_input = []const []const u8 {
+ "#1 @ 1,3: 4x4",
+ "#2 @ 3,1: 4x4",
+ "#3 @ 5,5: 2x2",
+ };
+ debug.assert(4 == try num_overlapped_squares(test_input));
+}
+
+fn buf_print_2d(buf: []u32, stride: u32) void {
+ for (buf) |val, i| {
+ if (i % stride == 0) {
+ debug.warn("\n");
+ }
+ debug.warn("{} ", val);
+ }
+ debug.warn("\n");
+}
+
+const Claim = struct {
+ id: u32,
+ offset_left: u32,
+ offset_top: u32,
+ width: u32,
+ height: u32,
+
+ pub fn print(c: Claim) void {
+ debug.warn("id: {}\n", c.id);
+ debug.warn("offset_left: {}\n", c.offset_left);
+ debug.warn("offset_top: {}\n", c.offset_top);
+ debug.warn("width: {}\n", c.width);
+ debug.warn("height: {}\n", c.height);
+ }
+
+ pub fn parse(s: []const u8) !Claim {
+ var c = Claim {
+ .id = 0,
+ .offset_left = 0,
+ .offset_top = 0,
+ .width = 0,
+ .height = 0,
+ };
+
+ // Harrowing tale: I did these in the wrong order at first and it took
+ // me forever to track down! Yes, my tests were also wrong.
+ var pos: usize = 0;
+ consume(s, &pos, "#");
+ c.id = try get_int(s, &pos);
+ consume(s, &pos, " @ ");
+ c.offset_left = try get_int(s, &pos);
+ consume(s, &pos, ",");
+ c.offset_top = try get_int(s, &pos);
+ consume(s, &pos, ": ");
+ c.width = try get_int(s, &pos);
+ consume(s, &pos, "x");
+ c.height = try get_int(s, &pos);
+
+ return c;
+ }
+
+ fn consume(s: []const u8, pos: *usize, consume_me: []const u8) void {
+ for (consume_me) |c| {
+ debug.assert(s[pos.*] == c);
+ pos.* += 1;
+ }
+ }
+
+ fn get_int(s: []const u8, pos: *usize) !u32 {
+ var initial_pos = pos.*;
+ debug.assert(is_digit(s[initial_pos]));
+
+ var encountered_non_digit = false;
+
+ for (s[initial_pos..]) |c, i| {
+ if (!is_digit(c)) {
+ encountered_non_digit = true;
+ pos.* += i;
+ break;
+ }
+ }
+
+ if (encountered_non_digit) {
+ return try fmt.parseInt(u32, s[initial_pos..pos.*], 10);
+ } else {
+ return try fmt.parseInt(u32, s[initial_pos..], 10);
+ }
+ }
+
+ fn is_digit(char: u8) bool {
+ if (char >= '0' and char <= '9') {
+ return true;
+ }
+ return false;
+ }
+};
+
+test "parse claim" {
+ const claim1 = try Claim.parse("#1 @ 1,3: 4x4");
+ debug.assert(claim1.id == 1);
+ debug.assert(claim1.offset_left == 1);
+ debug.assert(claim1.offset_top == 3);
+ debug.assert(claim1.width == 4);
+ debug.assert(claim1.height == 4);
+
+ const claim2 = try Claim.parse("#2 @ 3,1: 4x4");
+ debug.assert(claim2.id == 2);
+ debug.assert(claim2.offset_left == 3);
+ debug.assert(claim2.offset_top == 1);
+ debug.assert(claim2.width == 4);
+ debug.assert(claim2.height == 4);
+
+ const claim3 = try Claim.parse("#3 @ 5,5: 2x2");
+ debug.assert(claim3.id == 3);
+ debug.assert(claim3.offset_left == 5);
+ debug.assert(claim3.offset_top == 5);
+ debug.assert(claim3.width == 2);
+ debug.assert(claim3.height == 2);
+
+ const claim4 = try Claim.parse("#1391 @ 256,801: 23x10");
+ debug.assert(claim4.id == 1391);
+ debug.assert(claim4.offset_left == 256);
+ debug.assert(claim4.offset_top == 801);
+ debug.assert(claim4.width == 23);
+ debug.assert(claim4.height == 10);
+}
+
+const V2 = struct {
+ x: u32,
+ y: u32,
+
+ pub fn init(_x: u32, _y: u32) V2 {
+ return V2 {
+ .x = _x,
+ .y = _y,
+ };
+ }
+
+ pub fn equal(self: V2, other: V2) bool {
+ return (self.x == other.x and self.y == other.y);
+ }
+
+ pub fn print(v: V2) void {
+ debug.warn("({}, {})\n", v.x, v.y);
+ }
+};
+
+const Rect = struct {
+ nw: V2,
+ se: V2,
+
+ pub fn init(nwx: u32, nwy: u32, sex: u32, sey: u32) Rect {
+ debug.assert(nwx <= sex);
+ debug.assert(nwy <= sey);
+ return Rect {
+ .nw = V2.init(nwx, nwy),
+ .se = V2.init(sex, sey),
+ };
+ }
+
+ pub fn from_claim(c: Claim) Rect {
+ return Rect {
+ .nw = V2 { .x = c.offset_left, .y = c.offset_top },
+ .se = V2 { .x = c.offset_left + c.width - 1, .y = c.offset_top + c.height - 1},
+ };
+ }
+
+ pub fn print(r: Rect) void {
+ debug.warn("({}, {}), ({}, {})\n", r.nw.x, r.nw.y, r.se.x, r.se.y);
+ }
+
+ pub fn covered_squares(r: Rect, a: *mem.Allocator) ![]V2 {
+ //Rect.print(r);
+ var squares = try a.alloc(V2, (((r.se.x - r.nw.x) + 1) * ((r.se.y - r.nw.y) + 1)));
+ var x = r.nw.x;
+ var z: usize = 0;
+ while (x <= r.se.x) {
+ var y = r.nw.y;
+ while (y <= r.se.y) {
+ debug.assert(z < squares.len);
+ squares[z] = V2.init(x, y);
+ //V2.print(squares[z]);
+ y += 1;
+ z += 1;
+ }
+ x += 1;
+ }
+ return squares;
+ }
+};
+
+test "rect from claim" {
+ const c = Claim {
+ .id = 123,
+ .offset_left = 3,
+ .offset_top = 2,
+ .width = 5,
+ .height = 4,
+ };
+
+ const r = Rect.from_claim(c);
+ debug.assert(V2.equal(r.nw, V2 { .x = 3, .y = 2}));
+ debug.assert(V2.equal(r.se, V2 { .x = 7, .y = 5}));
+}
+
+const input_03 = []const []const u8 {
+ "#1 @ 669,271: 17x11",
+ "#2 @ 153,186: 20x26",
+ "#3 @ 186,838: 28x11",
+ "#4 @ 119,248: 18x13",
+ "#5 @ 57,843: 14x11",
+ "#6 @ 868,833: 18x20",
+ "#7 @ 225,38: 26x20",
+ "#8 @ 208,673: 29x22",
+ "#9 @ 25,877: 23x13",
+ "#10 @ 406,555: 11x25",
+ "#11 @ 567,243: 29x14",
+ "#12 @ 369,930: 21x14",
+ "#13 @ 692,175: 21x12",
+ "#14 @ 662,511: 24x10",
+ "#15 @ 860,645: 27x26",
+ "#16 @ 959,534: 28x12",
+ "#17 @ 453,236: 27x25",
+ "#18 @ 299,300: 16x19",
+ "#19 @ 233,190: 12x14",
+ "#20 @ 306,190: 29x16",
+ "#21 @ 896,206: 13x24",
+ "#22 @ 96,944: 23x25",
+ "#23 @ 194,475: 22x21",
+ "#24 @ 712,414: 20x12",
+ "#25 @ 146,332: 22x22",
+ "#26 @ 407,579: 15x12",
+ "#27 @ 790,662: 20x21",
+ "#28 @ 372,130: 10x23",
+ "#29 @ 871,601: 22x25",
+ "#30 @ 546,853: 28x29",
+ "#31 @ 921,667: 24x23",
+ "#32 @ 117,257: 21x26",
+ "#33 @ 72,855: 13x29",
+ "#34 @ 370,67: 18x19",
+ "#35 @ 860,777: 15x21",
+ "#36 @ 450,249: 17x14",
+ "#37 @ 764,208: 7x3",
+ "#38 @ 127,910: 13x15",
+ "#39 @ 447,467: 25x27",
+ "#40 @ 386,294: 19x11",
+ "#41 @ 504,771: 28x10",
+ "#42 @ 237,783: 27x19",
+ "#43 @ 98,544: 25x28",
+ "#44 @ 456,777: 12x20",
+ "#45 @ 252,488: 28x21",
+ "#46 @ 859,864: 22x12",
+ "#47 @ 581,5: 18x10",
+ "#48 @ 716,165: 19x28",
+ "#49 @ 408,803: 23x24",
+ "#50 @ 438,954: 18x16",
+ "#51 @ 746,834: 10x27",
+ "#52 @ 791,699: 18x13",
+ "#53 @ 323,392: 27x18",
+ "#54 @ 131,384: 28x15",
+ "#55 @ 233,697: 11x28",
+ "#56 @ 265,31: 15x23",
+ "#57 @ 954,467: 19x27",
+ "#58 @ 195,471: 23x15",
+ "#59 @ 625,769: 7x6",
+ "#60 @ 440,701: 11x13",
+ "#61 @ 243,406: 13x25",
+ "#62 @ 500,928: 21x18",
+ "#63 @ 444,246: 28x28",
+ "#64 @ 668,568: 10x18",
+ "#65 @ 27,456: 29x13",
+ "#66 @ 182,673: 26x21",
+ "#67 @ 213,661: 24x26",
+ "#68 @ 409,0: 23x12",
+ "#69 @ 688,177: 27x19",
+ "#70 @ 935,912: 22x17",
+ "#71 @ 444,739: 20x29",
+ "#72 @ 781,367: 15x13",
+ "#73 @ 890,432: 29x21",
+ "#74 @ 668,611: 21x13",
+ "#75 @ 39,144: 19x25",
+ "#76 @ 524,774: 21x11",
+ "#77 @ 905,957: 21x17",
+ "#78 @ 936,359: 10x24",
+ "#79 @ 922,315: 26x28",
+ "#80 @ 107,355: 11x28",
+ "#81 @ 519,641: 12x25",
+ "#82 @ 760,337: 18x21",
+ "#83 @ 357,329: 27x18",
+ "#84 @ 847,317: 14x12",
+ "#85 @ 902,505: 15x23",
+ "#86 @ 964,559: 10x21",
+ "#87 @ 126,257: 19x12",
+ "#88 @ 883,780: 12x28",
+ "#89 @ 621,934: 10x4",
+ "#90 @ 861,874: 24x11",
+ "#91 @ 409,111: 21x22",
+ "#92 @ 784,929: 17x26",
+ "#93 @ 133,387: 3x7",
+ "#94 @ 609,545: 14x14",
+ "#95 @ 383,93: 11x26",
+ "#96 @ 878,383: 22x15",
+ "#97 @ 555,423: 23x17",
+ "#98 @ 580,900: 29x25",
+ "#99 @ 440,496: 22x16",
+ "#100 @ 973,526: 16x10",
+ "#101 @ 675,245: 19x14",
+ "#102 @ 588,216: 22x14",
+ "#103 @ 687,775: 12x11",
+ "#104 @ 973,762: 12x7",
+ "#105 @ 653,948: 16x21",
+ "#106 @ 464,973: 15x16",
+ "#107 @ 832,289: 27x16",
+ "#108 @ 194,224: 26x11",
+ "#109 @ 46,327: 18x23",
+ "#110 @ 635,662: 19x17",
+ "#111 @ 41,853: 19x21",
+ "#112 @ 351,298: 14x29",
+ "#113 @ 57,34: 21x14",
+ "#114 @ 549,958: 23x17",
+ "#115 @ 136,515: 15x20",
+ "#116 @ 365,965: 10x29",
+ "#117 @ 52,58: 16x28",
+ "#118 @ 622,25: 19x17",
+ "#119 @ 716,284: 17x29",
+ "#120 @ 131,111: 26x12",
+ "#121 @ 576,919: 19x21",
+ "#122 @ 963,748: 11x29",
+ "#123 @ 742,842: 22x18",
+ "#124 @ 654,124: 3x6",
+ "#125 @ 174,913: 22x13",
+ "#126 @ 433,680: 10x24",
+ "#127 @ 206,547: 11x14",
+ "#128 @ 876,908: 26x15",
+ "#129 @ 285,775: 4x6",
+ "#130 @ 203,478: 22x20",
+ "#131 @ 732,394: 11x26",
+ "#132 @ 315,757: 10x27",
+ "#133 @ 17,520: 25x18",
+ "#134 @ 277,445: 14x13",
+ "#135 @ 638,648: 16x18",
+ "#136 @ 542,34: 27x13",
+ "#137 @ 175,547: 10x25",
+ "#138 @ 78,159: 20x16",
+ "#139 @ 456,312: 25x16",
+ "#140 @ 886,385: 21x16",
+ "#141 @ 39,91: 13x22",
+ "#142 @ 150,517: 12x13",
+ "#143 @ 730,185: 17x18",
+ "#144 @ 770,76: 13x16",
+ "#145 @ 769,367: 13x17",
+ "#146 @ 548,82: 22x18",
+ "#147 @ 669,813: 15x16",
+ "#148 @ 523,718: 27x10",
+ "#149 @ 786,361: 14x25",
+ "#150 @ 168,641: 24x22",
+ "#151 @ 274,324: 24x22",
+ "#152 @ 88,729: 24x21",
+ "#153 @ 4,579: 20x22",
+ "#154 @ 494,942: 23x17",
+ "#155 @ 215,527: 28x14",
+ "#156 @ 117,536: 24x18",
+ "#157 @ 916,64: 28x28",
+ "#158 @ 502,106: 13x23",
+ "#159 @ 244,713: 13x23",
+ "#160 @ 628,438: 20x23",
+ "#161 @ 978,893: 19x16",
+ "#162 @ 646,750: 25x10",
+ "#163 @ 628,596: 22x17",
+ "#164 @ 280,808: 29x13",
+ "#165 @ 487,906: 11x21",
+ "#166 @ 880,283: 11x27",
+ "#167 @ 644,921: 21x23",
+ "#168 @ 488,925: 29x15",
+ "#169 @ 409,804: 10x10",
+ "#170 @ 656,787: 27x29",
+ "#171 @ 132,498: 18x28",
+ "#172 @ 658,213: 17x24",
+ "#173 @ 607,917: 13x20",
+ "#174 @ 646,962: 10x14",
+ "#175 @ 536,277: 22x10",
+ "#176 @ 335,634: 16x16",
+ "#177 @ 176,535: 20x22",
+ "#178 @ 76,843: 14x25",
+ "#179 @ 759,869: 27x20",
+ "#180 @ 589,729: 17x29",
+ "#181 @ 348,514: 18x16",
+ "#182 @ 900,747: 13x26",
+ "#183 @ 149,958: 3x6",
+ "#184 @ 316,77: 20x26",
+ "#185 @ 464,544: 24x22",
+ "#186 @ 44,515: 29x24",
+ "#187 @ 948,659: 15x17",
+ "#188 @ 505,83: 28x26",
+ "#189 @ 340,480: 21x14",
+ "#190 @ 491,950: 19x18",
+ "#191 @ 62,245: 26x23",
+ "#192 @ 384,657: 18x22",
+ "#193 @ 787,954: 18x18",
+ "#194 @ 934,581: 22x14",
+ "#195 @ 48,236: 22x22",
+ "#196 @ 822,675: 11x26",
+ "#197 @ 817,821: 15x16",
+ "#198 @ 823,700: 11x20",
+ "#199 @ 665,390: 20x25",
+ "#200 @ 252,972: 28x21",
+ "#201 @ 224,541: 21x19",
+ "#202 @ 159,326: 10x27",
+ "#203 @ 27,386: 10x28",
+ "#204 @ 587,119: 25x18",
+ "#205 @ 969,628: 23x27",
+ "#206 @ 940,34: 18x21",
+ "#207 @ 153,5: 25x12",
+ "#208 @ 784,55: 17x13",
+ "#209 @ 816,806: 17x18",
+ "#210 @ 228,231: 12x24",
+ "#211 @ 124,379: 14x20",
+ "#212 @ 894,961: 25x24",
+ "#213 @ 125,425: 15x29",
+ "#214 @ 759,155: 20x22",
+ "#215 @ 606,966: 16x20",
+ "#216 @ 417,18: 12x19",
+ "#217 @ 901,455: 20x22",
+ "#218 @ 369,304: 28x13",
+ "#219 @ 939,56: 24x20",
+ "#220 @ 542,288: 27x29",
+ "#221 @ 213,279: 16x22",
+ "#222 @ 927,150: 13x27",
+ "#223 @ 571,964: 22x19",
+ "#224 @ 230,644: 25x21",
+ "#225 @ 338,411: 20x14",
+ "#226 @ 348,3: 19x11",
+ "#227 @ 498,914: 29x26",
+ "#228 @ 641,974: 27x13",
+ "#229 @ 463,258: 26x26",
+ "#230 @ 926,281: 11x26",
+ "#231 @ 573,449: 11x29",
+ "#232 @ 606,861: 19x20",
+ "#233 @ 394,871: 17x18",
+ "#234 @ 407,785: 27x20",
+ "#235 @ 681,447: 21x16",
+ "#236 @ 471,808: 19x27",
+ "#237 @ 794,294: 17x23",
+ "#238 @ 446,935: 16x15",
+ "#239 @ 156,589: 17x24",
+ "#240 @ 353,489: 19x17",
+ "#241 @ 291,171: 28x25",
+ "#242 @ 935,484: 27x17",
+ "#243 @ 230,116: 14x27",
+ "#244 @ 946,740: 26x16",
+ "#245 @ 894,245: 13x29",
+ "#246 @ 13,414: 12x18",
+ "#247 @ 282,667: 28x16",
+ "#248 @ 84,245: 28x29",
+ "#249 @ 6,77: 21x15",
+ "#250 @ 68,23: 19x19",
+ "#251 @ 216,542: 22x13",
+ "#252 @ 19,448: 19x19",
+ "#253 @ 50,870: 12x27",
+ "#254 @ 133,607: 14x19",
+ "#255 @ 658,927: 18x13",
+ "#256 @ 253,447: 23x23",
+ "#257 @ 938,137: 12x21",
+ "#258 @ 74,347: 19x16",
+ "#259 @ 789,87: 11x11",
+ "#260 @ 116,168: 10x20",
+ "#261 @ 351,34: 23x17",
+ "#262 @ 312,171: 22x10",
+ "#263 @ 419,176: 27x13",
+ "#264 @ 340,616: 14x23",
+ "#265 @ 316,195: 11x22",
+ "#266 @ 152,381: 12x11",
+ "#267 @ 950,599: 18x19",
+ "#268 @ 648,954: 27x16",
+ "#269 @ 215,319: 11x10",
+ "#270 @ 630,382: 26x20",
+ "#271 @ 594,513: 20x25",
+ "#272 @ 174,311: 11x28",
+ "#273 @ 391,183: 22x10",
+ "#274 @ 195,824: 21x27",
+ "#275 @ 675,426: 23x23",
+ "#276 @ 739,219: 24x18",
+ "#277 @ 619,932: 15x12",
+ "#278 @ 433,583: 16x26",
+ "#279 @ 35,192: 23x19",
+ "#280 @ 930,177: 28x28",
+ "#281 @ 825,327: 17x23",
+ "#282 @ 807,145: 25x14",
+ "#283 @ 529,796: 10x21",
+ "#284 @ 289,265: 15x29",
+ "#285 @ 647,974: 17x19",
+ "#286 @ 901,313: 22x18",
+ "#287 @ 135,499: 10x29",
+ "#288 @ 826,38: 10x27",
+ "#289 @ 335,205: 13x28",
+ "#290 @ 72,541: 19x22",
+ "#291 @ 762,546: 14x10",
+ "#292 @ 183,32: 28x27",
+ "#293 @ 194,158: 17x23",
+ "#294 @ 855,66: 25x26",
+ "#295 @ 937,460: 11x9",
+ "#296 @ 332,524: 28x26",
+ "#297 @ 629,760: 24x15",
+ "#298 @ 183,836: 24x12",
+ "#299 @ 373,121: 21x12",
+ "#300 @ 859,53: 27x28",
+ "#301 @ 735,903: 27x21",
+ "#302 @ 666,397: 16x28",
+ "#303 @ 586,105: 24x20",
+ "#304 @ 246,298: 19x11",
+ "#305 @ 578,882: 18x22",
+ "#306 @ 180,450: 26x19",
+ "#307 @ 228,292: 23x18",
+ "#308 @ 350,492: 17x10",
+ "#309 @ 894,358: 20x26",
+ "#310 @ 864,147: 27x16",
+ "#311 @ 193,399: 18x29",
+ "#312 @ 685,443: 16x24",
+ "#313 @ 56,690: 29x18",
+ "#314 @ 540,502: 16x14",
+ "#315 @ 292,249: 28x28",
+ "#316 @ 25,612: 20x15",
+ "#317 @ 640,451: 12x17",
+ "#318 @ 466,981: 27x11",
+ "#319 @ 874,876: 17x29",
+ "#320 @ 870,532: 11x16",
+ "#321 @ 866,870: 22x23",
+ "#322 @ 946,2: 23x15",
+ "#323 @ 538,553: 11x29",
+ "#324 @ 937,963: 24x12",
+ "#325 @ 745,818: 21x24",
+ "#326 @ 851,574: 20x16",
+ "#327 @ 333,852: 12x19",
+ "#328 @ 448,585: 13x28",
+ "#329 @ 155,822: 12x29",
+ "#330 @ 948,586: 12x24",
+ "#331 @ 286,665: 29x10",
+ "#332 @ 965,4: 16x13",
+ "#333 @ 283,847: 3x7",
+ "#334 @ 967,350: 17x12",
+ "#335 @ 801,863: 11x19",
+ "#336 @ 928,63: 20x22",
+ "#337 @ 66,274: 14x22",
+ "#338 @ 849,572: 25x27",
+ "#339 @ 279,381: 23x25",
+ "#340 @ 603,741: 24x21",
+ "#341 @ 637,357: 17x29",
+ "#342 @ 422,200: 14x19",
+ "#343 @ 728,306: 15x14",
+ "#344 @ 232,312: 14x18",
+ "#345 @ 539,490: 27x25",
+ "#346 @ 841,664: 26x24",
+ "#347 @ 711,527: 12x24",
+ "#348 @ 269,189: 23x16",
+ "#349 @ 42,276: 11x12",
+ "#350 @ 245,784: 22x25",
+ "#351 @ 732,899: 27x17",
+ "#352 @ 820,295: 22x26",
+ "#353 @ 200,842: 12x16",
+ "#354 @ 22,140: 24x24",
+ "#355 @ 573,849: 25x25",
+ "#356 @ 653,58: 23x25",
+ "#357 @ 590,224: 10x27",
+ "#358 @ 535,577: 10x11",
+ "#359 @ 856,203: 18x22",
+ "#360 @ 344,901: 14x21",
+ "#361 @ 308,921: 25x13",
+ "#362 @ 74,452: 17x15",
+ "#363 @ 878,645: 26x19",
+ "#364 @ 518,321: 13x13",
+ "#365 @ 531,25: 10x21",
+ "#366 @ 751,321: 29x14",
+ "#367 @ 120,430: 10x16",
+ "#368 @ 88,457: 16x11",
+ "#369 @ 679,882: 21x14",
+ "#370 @ 650,227: 28x26",
+ "#371 @ 578,688: 11x14",
+ "#372 @ 342,643: 12x20",
+ "#373 @ 41,151: 10x12",
+ "#374 @ 842,283: 27x24",
+ "#375 @ 718,224: 25x23",
+ "#376 @ 23,472: 17x22",
+ "#377 @ 930,358: 19x27",
+ "#378 @ 274,438: 21x11",
+ "#379 @ 329,25: 26x10",
+ "#380 @ 716,417: 18x12",
+ "#381 @ 158,693: 13x24",
+ "#382 @ 345,398: 13x13",
+ "#383 @ 861,793: 28x25",
+ "#384 @ 176,940: 14x28",
+ "#385 @ 536,664: 27x16",
+ "#386 @ 884,932: 21x29",
+ "#387 @ 942,567: 24x13",
+ "#388 @ 568,869: 12x12",
+ "#389 @ 451,307: 10x15",
+ "#390 @ 883,876: 13x11",
+ "#391 @ 198,509: 12x18",
+ "#392 @ 695,961: 17x18",
+ "#393 @ 245,809: 20x23",
+ "#394 @ 587,495: 16x23",
+ "#395 @ 902,947: 17x15",
+ "#396 @ 822,551: 22x26",
+ "#397 @ 645,540: 22x15",
+ "#398 @ 955,93: 27x16",
+ "#399 @ 940,155: 29x12",
+ "#400 @ 841,570: 25x10",
+ "#401 @ 326,524: 14x13",
+ "#402 @ 395,114: 25x15",
+ "#403 @ 498,490: 13x21",
+ "#404 @ 823,217: 20x25",
+ "#405 @ 720,139: 27x27",
+ "#406 @ 526,788: 13x10",
+ "#407 @ 394,509: 12x21",
+ "#408 @ 923,814: 15x19",
+ "#409 @ 819,525: 12x28",
+ "#410 @ 755,659: 27x27",
+ "#411 @ 84,668: 18x25",
+ "#412 @ 789,497: 23x21",
+ "#413 @ 959,589: 10x15",
+ "#414 @ 146,362: 15x12",
+ "#415 @ 378,679: 27x19",
+ "#416 @ 718,489: 19x10",
+ "#417 @ 264,339: 19x10",
+ "#418 @ 61,758: 27x17",
+ "#419 @ 191,691: 22x28",
+ "#420 @ 159,280: 18x25",
+ "#421 @ 805,288: 11x28",
+ "#422 @ 43,54: 16x17",
+ "#423 @ 146,954: 20x15",
+ "#424 @ 917,607: 19x12",
+ "#425 @ 551,962: 16x22",
+ "#426 @ 125,44: 27x22",
+ "#427 @ 330,225: 29x11",
+ "#428 @ 602,527: 12x26",
+ "#429 @ 733,209: 10x20",
+ "#430 @ 557,860: 20x28",
+ "#431 @ 804,345: 18x12",
+ "#432 @ 731,157: 17x29",
+ "#433 @ 617,641: 19x14",
+ "#434 @ 714,490: 11x25",
+ "#435 @ 821,519: 14x11",
+ "#436 @ 864,135: 16x13",
+ "#437 @ 619,898: 27x29",
+ "#438 @ 16,969: 24x23",
+ "#439 @ 521,727: 12x13",
+ "#440 @ 247,829: 12x25",
+ "#441 @ 569,205: 26x29",
+ "#442 @ 322,139: 15x26",
+ "#443 @ 722,402: 23x11",
+ "#444 @ 955,194: 25x14",
+ "#445 @ 924,875: 16x19",
+ "#446 @ 447,349: 16x24",
+ "#447 @ 877,87: 17x24",
+ "#448 @ 129,40: 26x23",
+ "#449 @ 172,262: 21x25",
+ "#450 @ 563,476: 16x18",
+ "#451 @ 693,377: 24x18",
+ "#452 @ 595,813: 23x13",
+ "#453 @ 111,421: 25x12",
+ "#454 @ 275,254: 23x23",
+ "#455 @ 170,72: 26x21",
+ "#456 @ 16,680: 23x15",
+ "#457 @ 720,172: 17x20",
+ "#458 @ 734,414: 21x16",
+ "#459 @ 888,157: 23x27",
+ "#460 @ 674,225: 21x12",
+ "#461 @ 485,30: 25x16",
+ "#462 @ 177,542: 20x23",
+ "#463 @ 394,524: 18x17",
+ "#464 @ 225,55: 17x23",
+ "#465 @ 848,258: 6x24",
+ "#466 @ 868,840: 20x10",
+ "#467 @ 914,613: 25x10",
+ "#468 @ 961,71: 24x27",
+ "#469 @ 41,144: 12x22",
+ "#470 @ 949,913: 18x14",
+ "#471 @ 808,772: 14x10",
+ "#472 @ 844,665: 24x27",
+ "#473 @ 128,378: 27x13",
+ "#474 @ 761,382: 11x13",
+ "#475 @ 19,431: 14x24",
+ "#476 @ 623,766: 13x16",
+ "#477 @ 244,703: 10x19",
+ "#478 @ 464,613: 21x12",
+ "#479 @ 731,344: 12x14",
+ "#480 @ 216,31: 21x13",
+ "#481 @ 332,84: 10x14",
+ "#482 @ 378,37: 25x14",
+ "#483 @ 615,521: 22x10",
+ "#484 @ 464,427: 10x22",
+ "#485 @ 287,320: 23x13",
+ "#486 @ 736,123: 10x22",
+ "#487 @ 779,652: 16x23",
+ "#488 @ 371,973: 25x14",
+ "#489 @ 213,503: 20x27",
+ "#490 @ 231,912: 17x25",
+ "#491 @ 487,62: 14x19",
+ "#492 @ 128,539: 18x22",
+ "#493 @ 246,972: 21x10",
+ "#494 @ 889,385: 21x10",
+ "#495 @ 827,697: 16x12",
+ "#496 @ 760,65: 15x12",
+ "#497 @ 630,622: 19x21",
+ "#498 @ 503,416: 11x28",
+ "#499 @ 268,241: 23x18",
+ "#500 @ 25,457: 19x27",
+ "#501 @ 81,828: 19x25",
+ "#502 @ 797,25: 10x19",
+ "#503 @ 717,69: 22x27",
+ "#504 @ 701,606: 12x28",
+ "#505 @ 227,544: 29x23",
+ "#506 @ 65,150: 25x16",
+ "#507 @ 728,174: 16x25",
+ "#508 @ 49,287: 21x14",
+ "#509 @ 222,256: 10x23",
+ "#510 @ 870,736: 11x13",
+ "#511 @ 448,256: 23x22",
+ "#512 @ 499,950: 14x25",
+ "#513 @ 591,674: 17x15",
+ "#514 @ 977,915: 14x23",
+ "#515 @ 948,463: 19x18",
+ "#516 @ 847,398: 18x18",
+ "#517 @ 136,539: 20x11",
+ "#518 @ 129,377: 11x25",
+ "#519 @ 416,621: 22x10",
+ "#520 @ 651,744: 10x26",
+ "#521 @ 12,413: 11x18",
+ "#522 @ 966,164: 21x19",
+ "#523 @ 508,313: 29x24",
+ "#524 @ 938,915: 16x11",
+ "#525 @ 768,902: 29x16",
+ "#526 @ 225,297: 21x18",
+ "#527 @ 224,24: 17x15",
+ "#528 @ 598,169: 13x22",
+ "#529 @ 832,544: 18x16",
+ "#530 @ 187,602: 22x14",
+ "#531 @ 734,409: 15x25",
+ "#532 @ 838,29: 29x18",
+ "#533 @ 186,499: 18x12",
+ "#534 @ 780,104: 26x18",
+ "#535 @ 769,39: 12x28",
+ "#536 @ 347,640: 15x19",
+ "#537 @ 30,605: 28x13",
+ "#538 @ 670,492: 16x21",
+ "#539 @ 398,778: 15x9",
+ "#540 @ 226,484: 18x26",
+ "#541 @ 743,616: 21x15",
+ "#542 @ 123,810: 15x21",
+ "#543 @ 863,969: 29x29",
+ "#544 @ 316,56: 22x22",
+ "#545 @ 771,383: 10x16",
+ "#546 @ 786,161: 11x10",
+ "#547 @ 925,11: 20x24",
+ "#548 @ 848,586: 22x25",
+ "#549 @ 251,638: 14x17",
+ "#550 @ 51,688: 17x10",
+ "#551 @ 366,32: 27x29",
+ "#552 @ 571,533: 20x15",
+ "#553 @ 27,613: 17x16",
+ "#554 @ 387,664: 11x23",
+ "#555 @ 358,837: 17x15",
+ "#556 @ 309,305: 20x20",
+ "#557 @ 136,62: 13x29",
+ "#558 @ 373,921: 25x12",
+ "#559 @ 228,262: 24x24",
+ "#560 @ 951,141: 10x23",
+ "#561 @ 281,776: 13x20",
+ "#562 @ 94,715: 19x15",
+ "#563 @ 485,624: 25x25",
+ "#564 @ 724,126: 17x29",
+ "#565 @ 668,870: 16x16",
+ "#566 @ 30,677: 20x29",
+ "#567 @ 63,203: 22x11",
+ "#568 @ 608,794: 22x29",
+ "#569 @ 322,289: 18x12",
+ "#570 @ 69,640: 24x10",
+ "#571 @ 61,228: 28x20",
+ "#572 @ 613,779: 20x19",
+ "#573 @ 711,540: 12x11",
+ "#574 @ 295,590: 14x29",
+ "#575 @ 383,199: 28x13",
+ "#576 @ 171,152: 11x13",
+ "#577 @ 18,35: 21x16",
+ "#578 @ 742,314: 28x25",
+ "#579 @ 942,703: 28x29",
+ "#580 @ 348,407: 23x17",
+ "#581 @ 580,914: 20x18",
+ "#582 @ 570,911: 18x16",
+ "#583 @ 935,589: 23x14",
+ "#584 @ 966,904: 21x13",
+ "#585 @ 70,712: 11x13",
+ "#586 @ 58,686: 13x18",
+ "#587 @ 954,516: 24x24",
+ "#588 @ 339,136: 22x29",
+ "#589 @ 757,367: 11x23",
+ "#590 @ 103,138: 20x13",
+ "#591 @ 498,159: 14x18",
+ "#592 @ 191,414: 11x29",
+ "#593 @ 754,780: 26x18",
+ "#594 @ 962,296: 29x23",
+ "#595 @ 815,100: 24x29",
+ "#596 @ 949,147: 19x18",
+ "#597 @ 949,158: 13x4",
+ "#598 @ 31,550: 26x27",
+ "#599 @ 810,658: 19x23",
+ "#600 @ 222,933: 17x21",
+ "#601 @ 704,115: 10x27",
+ "#602 @ 927,457: 26x18",
+ "#603 @ 751,345: 10x20",
+ "#604 @ 306,601: 24x11",
+ "#605 @ 641,759: 21x24",
+ "#606 @ 233,485: 15x11",
+ "#607 @ 18,90: 24x16",
+ "#608 @ 77,355: 11x12",
+ "#609 @ 792,343: 18x26",
+ "#610 @ 482,622: 13x19",
+ "#611 @ 69,844: 16x15",
+ "#612 @ 639,953: 15x23",
+ "#613 @ 848,567: 12x28",
+ "#614 @ 791,87: 27x29",
+ "#615 @ 261,261: 23x12",
+ "#616 @ 745,813: 13x24",
+ "#617 @ 518,45: 16x28",
+ "#618 @ 483,266: 27x24",
+ "#619 @ 971,353: 26x20",
+ "#620 @ 835,59: 12x29",
+ "#621 @ 679,439: 10x14",
+ "#622 @ 36,378: 21x20",
+ "#623 @ 408,781: 28x28",
+ "#624 @ 305,165: 26x22",
+ "#625 @ 788,648: 14x10",
+ "#626 @ 875,304: 26x16",
+ "#627 @ 122,817: 21x20",
+ "#628 @ 134,834: 23x27",
+ "#629 @ 494,489: 13x18",
+ "#630 @ 695,383: 18x3",
+ "#631 @ 540,460: 22x25",
+ "#632 @ 5,613: 25x29",
+ "#633 @ 405,950: 19x22",
+ "#634 @ 261,494: 20x19",
+ "#635 @ 26,733: 20x10",
+ "#636 @ 664,916: 23x10",
+ "#637 @ 963,622: 19x14",
+ "#638 @ 434,627: 10x18",
+ "#639 @ 246,800: 21x27",
+ "#640 @ 794,776: 13x13",
+ "#641 @ 715,119: 27x12",
+ "#642 @ 680,100: 19x23",
+ "#643 @ 277,766: 19x15",
+ "#644 @ 803,812: 15x14",
+ "#645 @ 636,537: 29x29",
+ "#646 @ 398,128: 13x18",
+ "#647 @ 299,170: 25x28",
+ "#648 @ 461,515: 14x10",
+ "#649 @ 386,233: 24x10",
+ "#650 @ 251,100: 11x18",
+ "#651 @ 37,975: 23x24",
+ "#652 @ 538,310: 25x18",
+ "#653 @ 596,682: 19x28",
+ "#654 @ 746,338: 20x12",
+ "#655 @ 917,703: 25x22",
+ "#656 @ 895,749: 16x16",
+ "#657 @ 38,396: 26x28",
+ "#658 @ 518,278: 19x22",
+ "#659 @ 463,620: 15x25",
+ "#660 @ 691,923: 14x17",
+ "#661 @ 53,798: 21x22",
+ "#662 @ 566,968: 13x24",
+ "#663 @ 905,620: 23x11",
+ "#664 @ 359,526: 19x23",
+ "#665 @ 672,236: 19x13",
+ "#666 @ 189,602: 29x17",
+ "#667 @ 740,830: 28x17",
+ "#668 @ 902,221: 13x13",
+ "#669 @ 68,418: 24x17",
+ "#670 @ 109,137: 23x14",
+ "#671 @ 950,484: 11x22",
+ "#672 @ 957,797: 22x24",
+ "#673 @ 2,403: 12x25",
+ "#674 @ 382,76: 11x14",
+ "#675 @ 171,728: 13x14",
+ "#676 @ 180,533: 18x26",
+ "#677 @ 756,891: 20x27",
+ "#678 @ 805,277: 17x22",
+ "#679 @ 41,737: 12x15",
+ "#680 @ 552,772: 22x22",
+ "#681 @ 863,488: 25x13",
+ "#682 @ 139,906: 28x13",
+ "#683 @ 864,865: 22x16",
+ "#684 @ 863,465: 16x23",
+ "#685 @ 468,11: 13x14",
+ "#686 @ 414,252: 29x21",
+ "#687 @ 433,238: 12x23",
+ "#688 @ 664,520: 16x22",
+ "#689 @ 415,229: 21x23",
+ "#690 @ 11,781: 19x27",
+ "#691 @ 598,823: 10x27",
+ "#692 @ 188,940: 17x15",
+ "#693 @ 984,678: 11x23",
+ "#694 @ 539,972: 15x14",
+ "#695 @ 660,763: 17x29",
+ "#696 @ 969,204: 23x13",
+ "#697 @ 118,686: 22x13",
+ "#698 @ 810,679: 12x16",
+ "#699 @ 275,42: 14x22",
+ "#700 @ 568,309: 16x16",
+ "#701 @ 777,892: 28x20",
+ "#702 @ 411,197: 16x15",
+ "#703 @ 894,479: 10x23",
+ "#704 @ 823,691: 23x26",
+ "#705 @ 494,838: 23x27",
+ "#706 @ 663,909: 26x24",
+ "#707 @ 159,51: 21x29",
+ "#708 @ 913,253: 22x23",
+ "#709 @ 320,606: 11x14",
+ "#710 @ 678,594: 21x19",
+ "#711 @ 816,812: 22x10",
+ "#712 @ 562,32: 26x14",
+ "#713 @ 281,221: 10x28",
+ "#714 @ 562,467: 27x11",
+ "#715 @ 876,745: 18x14",
+ "#716 @ 326,185: 15x28",
+ "#717 @ 567,632: 15x26",
+ "#718 @ 929,280: 20x22",
+ "#719 @ 375,275: 29x15",
+ "#720 @ 877,976: 15x16",
+ "#721 @ 9,552: 24x10",
+ "#722 @ 673,821: 18x25",
+ "#723 @ 877,374: 23x10",
+ "#724 @ 319,941: 27x11",
+ "#725 @ 667,274: 17x28",
+ "#726 @ 102,430: 28x14",
+ "#727 @ 960,174: 26x16",
+ "#728 @ 628,22: 14x21",
+ "#729 @ 346,747: 13x24",
+ "#730 @ 329,154: 15x24",
+ "#731 @ 209,74: 26x18",
+ "#732 @ 602,621: 20x29",
+ "#733 @ 927,251: 20x18",
+ "#734 @ 213,864: 21x22",
+ "#735 @ 876,485: 25x29",
+ "#736 @ 383,455: 25x12",
+ "#737 @ 487,100: 17x13",
+ "#738 @ 878,479: 16x17",
+ "#739 @ 317,49: 29x20",
+ "#740 @ 945,388: 22x12",
+ "#741 @ 149,89: 18x10",
+ "#742 @ 181,658: 15x10",
+ "#743 @ 667,225: 12x14",
+ "#744 @ 249,542: 18x17",
+ "#745 @ 18,571: 12x17",
+ "#746 @ 49,412: 17x17",
+ "#747 @ 405,28: 18x14",
+ "#748 @ 121,263: 18x17",
+ "#749 @ 415,2: 16x12",
+ "#750 @ 189,51: 11x12",
+ "#751 @ 836,371: 26x29",
+ "#752 @ 700,44: 14x11",
+ "#753 @ 443,713: 28x10",
+ "#754 @ 570,544: 15x13",
+ "#755 @ 652,397: 21x23",
+ "#756 @ 767,88: 24x24",
+ "#757 @ 396,774: 21x22",
+ "#758 @ 515,452: 26x13",
+ "#759 @ 920,590: 27x23",
+ "#760 @ 180,490: 18x19",
+ "#761 @ 875,637: 10x28",
+ "#762 @ 966,498: 20x22",
+ "#763 @ 486,428: 12x20",
+ "#764 @ 445,317: 17x19",
+ "#765 @ 400,779: 26x28",
+ "#766 @ 455,932: 22x10",
+ "#767 @ 218,861: 18x28",
+ "#768 @ 419,329: 16x27",
+ "#769 @ 728,220: 23x10",
+ "#770 @ 597,221: 17x14",
+ "#771 @ 317,764: 14x18",
+ "#772 @ 182,627: 12x17",
+ "#773 @ 842,285: 22x19",
+ "#774 @ 805,673: 16x25",
+ "#775 @ 651,122: 10x12",
+ "#776 @ 243,264: 20x26",
+ "#777 @ 572,628: 14x21",
+ "#778 @ 942,558: 15x13",
+ "#779 @ 187,13: 12x23",
+ "#780 @ 316,45: 16x24",
+ "#781 @ 29,144: 18x23",
+ "#782 @ 568,674: 24x19",
+ "#783 @ 480,2: 24x13",
+ "#784 @ 789,895: 25x22",
+ "#785 @ 494,537: 13x23",
+ "#786 @ 159,659: 10x10",
+ "#787 @ 323,63: 22x22",
+ "#788 @ 655,472: 10x22",
+ "#789 @ 781,39: 15x18",
+ "#790 @ 621,602: 22x21",
+ "#791 @ 957,169: 12x25",
+ "#792 @ 203,699: 23x11",
+ "#793 @ 908,815: 27x25",
+ "#794 @ 420,803: 27x29",
+ "#795 @ 966,281: 25x28",
+ "#796 @ 423,266: 11x23",
+ "#797 @ 168,460: 28x16",
+ "#798 @ 522,951: 20x26",
+ "#799 @ 272,490: 16x15",
+ "#800 @ 359,271: 22x13",
+ "#801 @ 193,581: 12x16",
+ "#802 @ 978,532: 21x25",
+ "#803 @ 585,355: 3x7",
+ "#804 @ 449,225: 10x26",
+ "#805 @ 831,411: 12x23",
+ "#806 @ 280,452: 27x25",
+ "#807 @ 963,771: 18x26",
+ "#808 @ 681,121: 24x16",
+ "#809 @ 440,770: 20x20",
+ "#810 @ 984,898: 13x24",
+ "#811 @ 333,928: 27x28",
+ "#812 @ 179,140: 14x29",
+ "#813 @ 933,476: 16x23",
+ "#814 @ 5,967: 11x11",
+ "#815 @ 277,794: 11x26",
+ "#816 @ 925,445: 16x27",
+ "#817 @ 582,212: 22x18",
+ "#818 @ 451,98: 15x4",
+ "#819 @ 451,429: 21x17",
+ "#820 @ 670,217: 11x29",
+ "#821 @ 847,209: 17x21",
+ "#822 @ 3,432: 25x29",
+ "#823 @ 659,462: 24x23",
+ "#824 @ 590,884: 11x10",
+ "#825 @ 182,838: 28x20",
+ "#826 @ 39,615: 26x14",
+ "#827 @ 310,7: 23x23",
+ "#828 @ 394,678: 24x28",
+ "#829 @ 740,859: 19x11",
+ "#830 @ 236,704: 21x16",
+ "#831 @ 495,419: 16x12",
+ "#832 @ 271,489: 13x18",
+ "#833 @ 869,618: 21x15",
+ "#834 @ 437,248: 16x29",
+ "#835 @ 284,424: 10x29",
+ "#836 @ 203,224: 20x15",
+ "#837 @ 469,947: 29x21",
+ "#838 @ 971,751: 28x26",
+ "#839 @ 646,357: 19x27",
+ "#840 @ 767,885: 11x25",
+ "#841 @ 293,168: 13x18",
+ "#842 @ 745,53: 25x25",
+ "#843 @ 65,273: 10x13",
+ "#844 @ 883,380: 19x18",
+ "#845 @ 107,919: 25x24",
+ "#846 @ 923,447: 10x15",
+ "#847 @ 62,549: 24x19",
+ "#848 @ 574,795: 15x10",
+ "#849 @ 439,696: 13x20",
+ "#850 @ 329,497: 29x26",
+ "#851 @ 471,700: 14x28",
+ "#852 @ 908,253: 11x14",
+ "#853 @ 509,89: 16x8",
+ "#854 @ 483,548: 15x21",
+ "#855 @ 887,615: 21x13",
+ "#856 @ 177,909: 10x12",
+ "#857 @ 577,700: 25x27",
+ "#858 @ 144,31: 10x22",
+ "#859 @ 399,864: 18x10",
+ "#860 @ 33,157: 13x20",
+ "#861 @ 447,480: 16x24",
+ "#862 @ 239,528: 29x20",
+ "#863 @ 485,337: 17x10",
+ "#864 @ 180,480: 12x24",
+ "#865 @ 26,460: 21x15",
+ "#866 @ 31,865: 22x16",
+ "#867 @ 313,79: 25x17",
+ "#868 @ 647,386: 13x13",
+ "#869 @ 396,309: 18x16",
+ "#870 @ 696,196: 4x8",
+ "#871 @ 906,615: 10x25",
+ "#872 @ 658,53: 22x27",
+ "#873 @ 112,332: 15x23",
+ "#874 @ 704,404: 29x13",
+ "#875 @ 777,320: 15x11",
+ "#876 @ 36,729: 14x18",
+ "#877 @ 357,816: 26x27",
+ "#878 @ 694,184: 18x24",
+ "#879 @ 91,126: 14x17",
+ "#880 @ 333,121: 16x27",
+ "#881 @ 81,394: 21x16",
+ "#882 @ 174,1: 19x19",
+ "#883 @ 440,733: 17x13",
+ "#884 @ 98,960: 14x11",
+ "#885 @ 327,0: 19x12",
+ "#886 @ 907,354: 16x21",
+ "#887 @ 905,849: 24x10",
+ "#888 @ 544,971: 12x18",
+ "#889 @ 729,597: 21x29",
+ "#890 @ 228,138: 11x24",
+ "#891 @ 784,701: 25x12",
+ "#892 @ 596,219: 10x20",
+ "#893 @ 760,204: 18x11",
+ "#894 @ 902,150: 29x13",
+ "#895 @ 25,321: 17x10",
+ "#896 @ 904,959: 16x23",
+ "#897 @ 940,600: 10x18",
+ "#898 @ 24,81: 12x20",
+ "#899 @ 416,171: 25x16",
+ "#900 @ 681,235: 10x22",
+ "#901 @ 959,345: 16x28",
+ "#902 @ 776,871: 17x11",
+ "#903 @ 888,273: 15x17",
+ "#904 @ 746,797: 22x29",
+ "#905 @ 326,273: 28x29",
+ "#906 @ 111,71: 26x15",
+ "#907 @ 660,156: 10x14",
+ "#908 @ 23,280: 16x19",
+ "#909 @ 126,860: 11x13",
+ "#910 @ 134,521: 17x11",
+ "#911 @ 733,152: 15x26",
+ "#912 @ 955,623: 25x16",
+ "#913 @ 802,815: 25x23",
+ "#914 @ 577,464: 14x15",
+ "#915 @ 503,824: 14x20",
+ "#916 @ 648,756: 19x29",
+ "#917 @ 923,966: 24x17",
+ "#918 @ 524,72: 15x19",
+ "#919 @ 403,89: 14x26",
+ "#920 @ 605,459: 13x10",
+ "#921 @ 96,453: 27x13",
+ "#922 @ 869,776: 25x18",
+ "#923 @ 921,528: 22x22",
+ "#924 @ 682,896: 16x28",
+ "#925 @ 858,224: 15x18",
+ "#926 @ 121,615: 17x16",
+ "#927 @ 848,303: 10x21",
+ "#928 @ 17,513: 19x10",
+ "#929 @ 83,256: 22x15",
+ "#930 @ 793,750: 24x21",
+ "#931 @ 924,196: 17x27",
+ "#932 @ 605,482: 27x23",
+ "#933 @ 532,785: 22x11",
+ "#934 @ 522,972: 11x26",
+ "#935 @ 706,972: 12x26",
+ "#936 @ 160,367: 16x27",
+ "#937 @ 304,664: 12x15",
+ "#938 @ 407,273: 19x10",
+ "#939 @ 9,180: 14x14",
+ "#940 @ 181,685: 23x14",
+ "#941 @ 26,812: 14x10",
+ "#942 @ 412,252: 10x18",
+ "#943 @ 50,339: 23x11",
+ "#944 @ 336,909: 28x18",
+ "#945 @ 829,277: 16x22",
+ "#946 @ 607,22: 12x19",
+ "#947 @ 412,871: 27x21",
+ "#948 @ 865,28: 12x18",
+ "#949 @ 104,449: 22x27",
+ "#950 @ 714,78: 11x22",
+ "#951 @ 550,492: 27x20",
+ "#952 @ 5,972: 24x18",
+ "#953 @ 491,907: 13x21",
+ "#954 @ 75,19: 24x29",
+ "#955 @ 114,550: 26x19",
+ "#956 @ 608,527: 25x21",
+ "#957 @ 714,551: 20x25",
+ "#958 @ 593,545: 22x20",
+ "#959 @ 603,1: 16x29",
+ "#960 @ 621,155: 27x19",
+ "#961 @ 353,330: 18x14",
+ "#962 @ 911,103: 24x14",
+ "#963 @ 695,42: 22x16",
+ "#964 @ 416,247: 28x14",
+ "#965 @ 911,266: 21x12",
+ "#966 @ 632,523: 21x20",
+ "#967 @ 840,256: 25x29",
+ "#968 @ 542,34: 11x10",
+ "#969 @ 721,807: 17x17",
+ "#970 @ 559,226: 27x16",
+ "#971 @ 510,661: 27x12",
+ "#972 @ 645,734: 14x18",
+ "#973 @ 755,665: 16x17",
+ "#974 @ 229,484: 22x17",
+ "#975 @ 654,80: 29x15",
+ "#976 @ 946,395: 23x20",
+ "#977 @ 274,771: 23x23",
+ "#978 @ 954,510: 24x13",
+ "#979 @ 162,259: 28x29",
+ "#980 @ 822,624: 19x13",
+ "#981 @ 182,503: 28x17",
+ "#982 @ 427,774: 11x11",
+ "#983 @ 486,271: 14x27",
+ "#984 @ 126,553: 14x12",
+ "#985 @ 406,262: 27x16",
+ "#986 @ 926,955: 15x10",
+ "#987 @ 670,262: 18x12",
+ "#988 @ 45,49: 23x29",
+ "#989 @ 533,311: 15x14",
+ "#990 @ 504,33: 12x24",
+ "#991 @ 346,299: 13x25",
+ "#992 @ 565,478: 17x18",
+ "#993 @ 840,391: 14x24",
+ "#994 @ 416,950: 13x23",
+ "#995 @ 212,668: 14x16",
+ "#996 @ 515,958: 13x15",
+ "#997 @ 397,583: 29x24",
+ "#998 @ 404,606: 24x21",
+ "#999 @ 438,983: 27x16",
+ "#1000 @ 0,159: 28x15",
+ "#1001 @ 860,823: 21x28",
+ "#1002 @ 411,818: 21x21",
+ "#1003 @ 958,36: 19x14",
+ "#1004 @ 918,443: 22x23",
+ "#1005 @ 972,79: 19x25",
+ "#1006 @ 825,314: 28x14",
+ "#1007 @ 239,478: 14x27",
+ "#1008 @ 411,261: 13x27",
+ "#1009 @ 34,48: 26x16",
+ "#1010 @ 258,373: 19x11",
+ "#1011 @ 862,222: 28x11",
+ "#1012 @ 718,224: 23x26",
+ "#1013 @ 908,962: 27x27",
+ "#1014 @ 554,479: 29x24",
+ "#1015 @ 570,785: 13x27",
+ "#1016 @ 752,172: 18x29",
+ "#1017 @ 276,346: 15x15",
+ "#1018 @ 744,134: 25x23",
+ "#1019 @ 653,424: 25x14",
+ "#1020 @ 177,168: 24x18",
+ "#1021 @ 958,558: 11x11",
+ "#1022 @ 819,49: 23x15",
+ "#1023 @ 356,611: 22x21",
+ "#1024 @ 318,90: 16x11",
+ "#1025 @ 486,421: 13x22",
+ "#1026 @ 152,685: 27x22",
+ "#1027 @ 925,527: 23x10",
+ "#1028 @ 601,696: 17x20",
+ "#1029 @ 106,265: 29x20",
+ "#1030 @ 955,925: 19x26",
+ "#1031 @ 957,165: 22x28",
+ "#1032 @ 549,977: 26x19",
+ "#1033 @ 415,182: 29x11",
+ "#1034 @ 134,587: 29x16",
+ "#1035 @ 456,975: 14x13",
+ "#1036 @ 143,493: 22x25",
+ "#1037 @ 250,800: 19x12",
+ "#1038 @ 179,553: 10x14",
+ "#1039 @ 721,965: 12x23",
+ "#1040 @ 52,639: 27x21",
+ "#1041 @ 668,233: 15x19",
+ "#1042 @ 859,801: 11x26",
+ "#1043 @ 873,599: 29x22",
+ "#1044 @ 62,504: 13x14",
+ "#1045 @ 140,609: 28x22",
+ "#1046 @ 534,301: 19x20",
+ "#1047 @ 426,949: 14x21",
+ "#1048 @ 18,146: 23x18",
+ "#1049 @ 659,550: 19x19",
+ "#1050 @ 755,817: 12x21",
+ "#1051 @ 182,322: 12x18",
+ "#1052 @ 194,591: 18x12",
+ "#1053 @ 807,306: 28x21",
+ "#1054 @ 521,780: 17x27",
+ "#1055 @ 97,938: 18x26",
+ "#1056 @ 946,40: 29x28",
+ "#1057 @ 639,169: 24x23",
+ "#1058 @ 142,573: 11x22",
+ "#1059 @ 89,45: 13x25",
+ "#1060 @ 655,35: 10x28",
+ "#1061 @ 392,274: 28x24",
+ "#1062 @ 382,325: 11x26",
+ "#1063 @ 521,744: 21x28",
+ "#1064 @ 499,780: 29x14",
+ "#1065 @ 162,819: 28x22",
+ "#1066 @ 17,93: 19x21",
+ "#1067 @ 506,931: 13x18",
+ "#1068 @ 283,495: 21x11",
+ "#1069 @ 400,459: 10x15",
+ "#1070 @ 574,640: 28x19",
+ "#1071 @ 236,233: 23x10",
+ "#1072 @ 513,632: 16x29",
+ "#1073 @ 816,147: 14x25",
+ "#1074 @ 870,221: 10x24",
+ "#1075 @ 918,323: 15x22",
+ "#1076 @ 158,894: 11x15",
+ "#1077 @ 854,144: 15x15",
+ "#1078 @ 336,901: 19x25",
+ "#1079 @ 580,497: 26x29",
+ "#1080 @ 523,81: 18x10",
+ "#1081 @ 54,685: 22x20",
+ "#1082 @ 318,232: 11x19",
+ "#1083 @ 363,319: 29x20",
+ "#1084 @ 335,1: 19x26",
+ "#1085 @ 888,455: 21x12",
+ "#1086 @ 700,164: 28x25",
+ "#1087 @ 959,786: 20x16",
+ "#1088 @ 764,545: 21x14",
+ "#1089 @ 927,599: 13x22",
+ "#1090 @ 122,505: 26x20",
+ "#1091 @ 595,227: 11x17",
+ "#1092 @ 802,43: 10x20",
+ "#1093 @ 97,250: 29x23",
+ "#1094 @ 536,506: 17x26",
+ "#1095 @ 951,713: 11x14",
+ "#1096 @ 577,651: 12x12",
+ "#1097 @ 409,266: 13x22",
+ "#1098 @ 945,504: 11x24",
+ "#1099 @ 806,810: 20x14",
+ "#1100 @ 896,560: 19x12",
+ "#1101 @ 76,251: 22x27",
+ "#1102 @ 118,430: 25x16",
+ "#1103 @ 873,114: 21x14",
+ "#1104 @ 920,956: 22x29",
+ "#1105 @ 723,397: 25x26",
+ "#1106 @ 183,572: 26x19",
+ "#1107 @ 705,96: 29x21",
+ "#1108 @ 413,287: 17x23",
+ "#1109 @ 405,625: 23x20",
+ "#1110 @ 622,870: 13x11",
+ "#1111 @ 575,628: 27x28",
+ "#1112 @ 492,54: 17x12",
+ "#1113 @ 64,418: 27x19",
+ "#1114 @ 551,423: 15x24",
+ "#1115 @ 589,198: 15x23",
+ "#1116 @ 828,570: 24x23",
+ "#1117 @ 863,189: 22x15",
+ "#1118 @ 190,588: 11x10",
+ "#1119 @ 309,617: 13x28",
+ "#1120 @ 916,856: 12x25",
+ "#1121 @ 333,760: 23x17",
+ "#1122 @ 68,751: 27x10",
+ "#1123 @ 763,394: 17x23",
+ "#1124 @ 39,613: 26x15",
+ "#1125 @ 404,397: 25x12",
+ "#1126 @ 393,313: 16x22",
+ "#1127 @ 615,467: 16x23",
+ "#1128 @ 78,142: 20x29",
+ "#1129 @ 259,86: 25x18",
+ "#1130 @ 444,938: 28x23",
+ "#1131 @ 934,167: 27x14",
+ "#1132 @ 145,183: 13x28",
+ "#1133 @ 557,871: 20x12",
+ "#1134 @ 106,414: 20x11",
+ "#1135 @ 101,923: 10x18",
+ "#1136 @ 579,10: 25x21",
+ "#1137 @ 146,111: 26x14",
+ "#1138 @ 2,178: 26x26",
+ "#1139 @ 810,628: 13x24",
+ "#1140 @ 860,516: 20x15",
+ "#1141 @ 218,692: 12x21",
+ "#1142 @ 850,671: 26x10",
+ "#1143 @ 766,152: 21x21",
+ "#1144 @ 147,463: 26x26",
+ "#1145 @ 328,159: 17x21",
+ "#1146 @ 853,207: 21x17",
+ "#1147 @ 583,396: 24x26",
+ "#1148 @ 191,621: 14x22",
+ "#1149 @ 527,300: 17x16",
+ "#1150 @ 390,113: 23x18",
+ "#1151 @ 103,83: 13x17",
+ "#1152 @ 747,225: 20x23",
+ "#1153 @ 574,652: 25x13",
+ "#1154 @ 509,91: 15x11",
+ "#1155 @ 200,715: 14x21",
+ "#1156 @ 479,176: 22x12",
+ "#1157 @ 761,298: 22x26",
+ "#1158 @ 50,879: 25x25",
+ "#1159 @ 34,806: 23x10",
+ "#1160 @ 901,634: 25x22",
+ "#1161 @ 488,52: 28x17",
+ "#1162 @ 220,651: 14x23",
+ "#1163 @ 311,243: 26x20",
+ "#1164 @ 866,219: 23x29",
+ "#1165 @ 223,316: 19x26",
+ "#1166 @ 322,915: 13x21",
+ "#1167 @ 881,640: 14x29",
+ "#1168 @ 685,164: 22x22",
+ "#1169 @ 824,36: 18x18",
+ "#1170 @ 468,939: 13x20",
+ "#1171 @ 208,495: 22x24",
+ "#1172 @ 629,152: 18x10",
+ "#1173 @ 804,129: 26x28",
+ "#1174 @ 283,232: 17x24",
+ "#1175 @ 217,765: 19x13",
+ "#1176 @ 638,225: 20x21",
+ "#1177 @ 598,585: 27x26",
+ "#1178 @ 920,698: 10x18",
+ "#1179 @ 798,772: 16x23",
+ "#1180 @ 130,101: 16x24",
+ "#1181 @ 852,42: 14x26",
+ "#1182 @ 400,200: 13x18",
+ "#1183 @ 346,894: 18x11",
+ "#1184 @ 555,86: 21x23",
+ "#1185 @ 789,116: 13x25",
+ "#1186 @ 357,39: 5x8",
+ "#1187 @ 95,378: 22x29",
+ "#1188 @ 271,312: 20x21",
+ "#1189 @ 448,95: 22x12",
+ "#1190 @ 797,879: 14x18",
+ "#1191 @ 261,373: 19x28",
+ "#1192 @ 881,192: 29x13",
+ "#1193 @ 863,23: 17x26",
+ "#1194 @ 421,114: 10x26",
+ "#1195 @ 971,793: 20x27",
+ "#1196 @ 45,788: 12x29",
+ "#1197 @ 947,583: 29x18",
+ "#1198 @ 594,565: 22x29",
+ "#1199 @ 642,272: 28x13",
+ "#1200 @ 759,65: 27x26",
+ "#1201 @ 957,77: 26x27",
+ "#1202 @ 24,801: 22x21",
+ "#1203 @ 432,317: 11x20",
+ "#1204 @ 644,238: 17x20",
+ "#1205 @ 753,351: 4x7",
+ "#1206 @ 849,217: 14x18",
+ "#1207 @ 942,657: 12x26",
+ "#1208 @ 454,723: 18x24",
+ "#1209 @ 81,461: 18x11",
+ "#1210 @ 851,869: 11x10",
+ "#1211 @ 66,591: 14x17",
+ "#1212 @ 740,174: 15x19",
+ "#1213 @ 394,286: 14x28",
+ "#1214 @ 466,464: 20x19",
+ "#1215 @ 858,372: 24x16",
+ "#1216 @ 340,4: 12x18",
+ "#1217 @ 607,154: 12x29",
+ "#1218 @ 589,474: 23x28",
+ "#1219 @ 583,27: 19x23",
+ "#1220 @ 831,223: 20x25",
+ "#1221 @ 259,850: 14x26",
+ "#1222 @ 116,172: 27x26",
+ "#1223 @ 963,342: 26x17",
+ "#1224 @ 367,333: 11x11",
+ "#1225 @ 637,887: 16x17",
+ "#1226 @ 262,258: 27x11",
+ "#1227 @ 493,568: 17x29",
+ "#1228 @ 675,524: 17x16",
+ "#1229 @ 740,834: 25x14",
+ "#1230 @ 866,525: 14x13",
+ "#1231 @ 593,736: 16x25",
+ "#1232 @ 618,153: 15x18",
+ "#1233 @ 286,296: 26x24",
+ "#1234 @ 923,849: 27x14",
+ "#1235 @ 839,66: 20x25",
+ "#1236 @ 584,488: 14x15",
+ "#1237 @ 414,168: 26x18",
+ "#1238 @ 42,27: 20x26",
+ "#1239 @ 943,740: 15x19",
+ "#1240 @ 108,336: 28x29",
+ "#1241 @ 677,222: 19x16",
+ "#1242 @ 912,816: 19x13",
+ "#1243 @ 40,371: 11x13",
+ "#1244 @ 595,895: 26x26",
+ "#1245 @ 232,418: 24x17",
+ "#1246 @ 902,609: 26x18",
+ "#1247 @ 67,25: 21x17",
+ "#1248 @ 737,354: 13x25",
+ "#1249 @ 843,355: 28x19",
+ "#1250 @ 59,665: 22x29",
+ "#1251 @ 369,255: 14x17",
+ "#1252 @ 775,750: 23x23",
+ "#1253 @ 329,838: 14x16",
+ "#1254 @ 591,983: 24x15",
+ "#1255 @ 918,380: 12x19",
+ "#1256 @ 499,94: 13x18",
+ "#1257 @ 269,224: 22x29",
+ "#1258 @ 918,324: 21x15",
+ "#1259 @ 213,201: 21x22",
+ "#1260 @ 411,634: 26x14",
+ "#1261 @ 875,547: 27x16",
+ "#1262 @ 706,973: 23x23",
+ "#1263 @ 568,846: 15x15",
+ "#1264 @ 64,620: 15x21",
+ "#1265 @ 612,143: 10x17",
+ "#1266 @ 446,537: 24x17",
+ "#1267 @ 472,742: 24x12",
+ "#1268 @ 76,715: 25x15",
+ "#1269 @ 666,603: 20x23",
+ "#1270 @ 708,808: 14x16",
+ "#1271 @ 228,828: 23x17",
+ "#1272 @ 159,664: 20x24",
+ "#1273 @ 508,616: 28x13",
+ "#1274 @ 971,175: 15x19",
+ "#1275 @ 914,494: 22x23",
+ "#1276 @ 145,105: 15x11",
+ "#1277 @ 292,661: 13x21",
+ "#1278 @ 805,777: 18x22",
+ "#1279 @ 14,403: 23x23",
+ "#1280 @ 451,252: 26x22",
+ "#1281 @ 931,155: 23x15",
+ "#1282 @ 851,873: 18x16",
+ "#1283 @ 141,259: 24x13",
+ "#1284 @ 489,604: 22x19",
+ "#1285 @ 672,613: 21x28",
+ "#1286 @ 677,761: 15x25",
+ "#1287 @ 25,740: 23x11",
+ "#1288 @ 383,181: 20x22",
+ "#1289 @ 55,213: 10x19",
+ "#1290 @ 468,799: 17x24",
+ "#1291 @ 265,865: 25x12",
+ "#1292 @ 200,507: 11x17",
+ "#1293 @ 718,774: 13x15",
+ "#1294 @ 869,93: 13x27",
+ "#1295 @ 1,296: 21x22",
+ "#1296 @ 903,570: 12x28",
+ "#1297 @ 386,233: 27x22",
+ "#1298 @ 427,233: 23x18",
+ "#1299 @ 902,452: 17x15",
+ "#1300 @ 893,625: 21x19",
+ "#1301 @ 620,734: 17x13",
+ "#1302 @ 372,298: 28x19",
+ "#1303 @ 794,115: 27x15",
+ "#1304 @ 845,467: 28x10",
+ "#1305 @ 474,31: 23x10",
+ "#1306 @ 47,32: 12x18",
+ "#1307 @ 671,564: 14x28",
+ "#1308 @ 146,495: 26x24",
+ "#1309 @ 795,808: 23x28",
+ "#1310 @ 740,118: 13x11",
+ "#1311 @ 209,22: 19x19",
+ "#1312 @ 215,762: 16x11",
+ "#1313 @ 121,449: 29x27",
+ "#1314 @ 233,313: 28x25",
+ "#1315 @ 197,41: 29x16",
+ "#1316 @ 492,590: 24x29",
+ "#1317 @ 246,467: 26x23",
+ "#1318 @ 608,550: 12x25",
+ "#1319 @ 869,860: 19x21",
+ "#1320 @ 274,834: 22x27",
+ "#1321 @ 833,61: 28x22",
+ "#1322 @ 904,91: 27x18",
+ "#1323 @ 921,373: 14x17",
+ "#1324 @ 868,218: 18x19",
+ "#1325 @ 646,51: 14x22",
+ "#1326 @ 930,825: 20x11",
+ "#1327 @ 336,292: 14x13",
+ "#1328 @ 164,438: 16x29",
+ "#1329 @ 351,585: 23x28",
+ "#1330 @ 788,141: 18x27",
+ "#1331 @ 739,386: 28x22",
+ "#1332 @ 460,504: 16x16",
+ "#1333 @ 956,176: 18x24",
+ "#1334 @ 418,876: 11x5",
+ "#1335 @ 92,36: 26x14",
+ "#1336 @ 810,826: 12x5",
+ "#1337 @ 958,729: 15x20",
+ "#1338 @ 643,609: 26x10",
+ "#1339 @ 486,324: 10x18",
+ "#1340 @ 884,869: 11x26",
+ "#1341 @ 1,297: 28x24",
+ "#1342 @ 939,522: 11x27",
+ "#1343 @ 401,385: 10x23",
+ "#1344 @ 582,351: 10x17",
+ "#1345 @ 109,566: 16x14",
+ "#1346 @ 135,840: 29x17",
+ "#1347 @ 30,34: 17x17",
+ "#1348 @ 730,782: 24x23",
+ "#1349 @ 977,696: 11x18",
+ "#1350 @ 967,632: 27x20",
+ "#1351 @ 854,61: 21x25",
+ "#1352 @ 946,175: 14x26",
+ "#1353 @ 6,99: 20x16",
+ "#1354 @ 898,59: 26x11",
+ "#1355 @ 107,424: 18x29",
+ "#1356 @ 166,740: 27x10",
+ "#1357 @ 654,70: 10x28",
+ "#1358 @ 787,281: 10x18",
+ "#1359 @ 102,354: 13x23",
+ "#1360 @ 489,731: 10x12",
+ "#1361 @ 918,682: 24x24",
+ "#1362 @ 632,529: 25x14",
+ "#1363 @ 877,236: 17x23",
+ "#1364 @ 383,119: 20x26",
+ "#1365 @ 866,918: 23x26",
+ "#1366 @ 909,723: 11x22",
+ "#1367 @ 598,502: 14x29",
+ "#1368 @ 70,579: 24x23",
+ "#1369 @ 176,456: 19x14",
+ "#1370 @ 311,280: 28x21",
+ "#1371 @ 588,401: 14x26",
+ "#1372 @ 148,77: 12x13",
+ "#1373 @ 194,527: 22x21",
+ "#1374 @ 552,234: 22x11",
+ "#1375 @ 367,324: 16x13",
+ "#1376 @ 450,358: 25x15",
+ "#1377 @ 71,615: 17x21",
+ "#1378 @ 793,87: 26x17",
+ "#1379 @ 894,450: 17x16",
+ "#1380 @ 708,629: 17x14",
+ "#1381 @ 919,335: 14x29",
+ "#1382 @ 563,243: 22x10",
+ "#1383 @ 504,783: 22x18",
+ "#1384 @ 726,515: 13x18",
+ "#1385 @ 909,722: 17x11",
+ "#1386 @ 276,490: 18x18",
+ "#1387 @ 98,560: 14x28",
+ "#1388 @ 23,274: 10x24",
+ "#1389 @ 32,323: 15x20",
+ "#1390 @ 778,886: 26x18",
+ "#1391 @ 256,801: 23x10",
+ "#1392 @ 916,500: 10x13",
+ "#1393 @ 856,667: 7x18",
+ "#1394 @ 103,682: 24x17",
+ "#1395 @ 727,567: 17x25",
+ "#1396 @ 52,176: 19x21",
+ "#1397 @ 453,308: 19x24",
+ "#1398 @ 238,370: 21x18",
+ "#1399 @ 724,519: 23x10",
+};