diff --git a/src/days/day08.zig b/src/days/day08.zig index 20383ea..89082c4 100644 --- a/src/days/day08.zig +++ b/src/days/day08.zig @@ -1,7 +1,142 @@ const std = @import("std"); -pub const title = "Day 08"; +pub const title = "Day 08: Playground"; -pub fn run(_: std.mem.Allocator) !void { +pub fn run(allocator: std.mem.Allocator) !void { + //const input = @embedFile("./input/day08.txt"); + const input = + \\162,817,812 + \\57,618,57 + \\906,360,560 + \\592,479,940 + \\352,342,300 + \\466,668,158 + \\542,29,236 + \\431,825,988 + \\739,650,466 + \\52,470,668 + \\216,146,977 + \\819,987,18 + \\117,168,530 + \\805,96,715 + \\346,949,466 + \\970,615,88 + \\941,993,340 + \\862,61,35 + \\984,92,344 + \\425,690,689 + ; + + var lines = std.mem.tokenizeScalar(u8, input, '\n'); + + var junction_boxes: std.ArrayList(JunctionBox) = .empty; + defer junction_boxes.deinit(allocator); + + var junction_box_index: usize = 0; + while (lines.next()) |line| { + defer junction_box_index += 1; + + var coordinates = std.mem.tokenizeScalar(u8, line, ','); + const x = blk: { + const s = coordinates.next() orelse continue; + break :blk try std.fmt.parseUnsigned(u32, s, 10); + }; + const y = blk: { + const s = coordinates.next() orelse continue; + break :blk try std.fmt.parseUnsigned(u32, s, 10); + }; + const z = blk: { + const s = coordinates.next() orelse continue; + break :blk try std.fmt.parseUnsigned(u32, s, 10); + }; + const junction_box = JunctionBox{ + .index = junction_box_index, + .position = .{ .x = x, .y = y, .z = z }, + }; + try junction_boxes.append(allocator, junction_box); + } + + var network_id: usize = 0; + while (true) { + var shortest_distance: ?u32 = null; + var a: ?*JunctionBox = null; + var b: ?*JunctionBox = null; + for (junction_boxes.items, 0..) |*junction_box, i| { + for (junction_boxes.items[i + 1..]) |*other_junction_box| { + if (junction_box.network != null and other_junction_box.network != null) { + if (junction_box.network == other_junction_box.network) continue; + } + + const distance = junction_box.position.distance(other_junction_box.position); + if (shortest_distance == null or distance < shortest_distance.?) { + shortest_distance = distance; + a = junction_box; + b = other_junction_box; + } + } + } + + std.debug.print("shortest distance = {?d} between {?f} and {?f}\n", .{shortest_distance, a, b}); + + if (a != null and b != null) { + if (a.?.network != null and b.?.network == null) { + std.debug.print("assigning network {?d} to {?f}\n", .{a.?.network, b}); + b.?.network = a.?.network; + } else if (b.?.network != null and a.?.network == null) { + std.debug.print("assigning network {?d} to {?f}\n", .{b.?.network, a}); + a.?.network = b.?.network; + } else { + std.debug.print("assigning network {d} to {?f} and {?f}\n", .{network_id, a, b}); + a.?.network = network_id; + b.?.network = network_id; + network_id += 1; + } + } else if (a) |junction_box| { + junction_box.network = network_id; + network_id += 1; + } else if (b) |junction_box| { + junction_box.network = network_id; + network_id += 1; + } + + if (network_id >= 20) { + break; + } + } + + for (junction_boxes.items) |junction_box| { + std.debug.print("{f}\n", .{junction_box}); + } } +const JunctionBox = struct { + index: usize, + network: ?usize = null, + position: Position, + + const Self = @This(); + + pub fn format(self: Self, w: *std.io.Writer) std.io.Writer.Error!void { + try w.print("{d} in network {?d} at {f}", .{self.index, self.network, self.position}); + } +}; + +const Position = struct { + x: u32, + y: u32, + z: u32, + + const Self = @This(); + + pub fn format(self: Self, w: *std.io.Writer) std.io.Writer.Error!void { + try w.print("{d}, {d}, {d}", .{self.x, self.y, self.z}); + } + + pub fn distance(self: Self, other: Self) u32 { + const xds = std.math.pow(u32, @max(self.x, other.x) - @min(self.x, other.x), 2); + const yds = std.math.pow(u32, @max(self.y, other.y) - @min(self.y, other.y), 2); + const zds = std.math.pow(u32, @max(self.z, other.z) - @min(self.z, other.z), 2); + return std.math.sqrt(xds + yds + zds); + } +}; + diff --git a/src/days/input/day08.txt b/src/days/input/day08.txt new file mode 100755 index 0000000..300a2da --- /dev/null +++ b/src/days/input/day08.txt @@ -0,0 +1,1000 @@ +20777,62942,19723 +42972,30609,62475 +56049,10549,19554 +71897,99081,70264 +94818,64824,2168 +61615,9572,66230 +87804,95946,40652 +50039,22696,52204 +62624,81824,35726 +53922,25473,10598 +85151,46272,56496 +93671,32179,19870 +33557,66547,4748 +96608,71887,9647 +81328,88872,43186 +81409,3653,17891 +99590,74944,48513 +69788,9774,56998 +81615,32949,66471 +83841,55524,90770 +88298,80792,44136 +96882,90907,68964 +68114,81587,28190 +24634,19966,88922 +20995,39937,49956 +22682,74304,96721 +1018,50322,92118 +73025,53878,28344 +98732,30236,54656 +38044,64456,11345 +83390,61969,69925 +51395,90842,58661 +65464,21203,85371 +65026,37989,7336 +14774,44620,67643 +64334,28201,18209 +77983,49947,59417 +35920,77629,88037 +78768,43166,86672 +65620,71723,34250 +99110,5678,16423 +96278,72417,12859 +21346,3739,59110 +38511,12327,2149 +12763,79788,11320 +2776,54840,16469 +58582,23762,79756 +1830,96420,44680 +86670,90335,53119 +68762,49152,86134 +56842,1546,91626 +90630,33507,86800 +16393,73883,32320 +85188,81438,79571 +5721,21646,39622 +34111,94995,61900 +19290,81642,32311 +43545,17970,23463 +28076,83571,40251 +45580,28547,2271 +91974,65147,81738 +46759,31788,85986 +64769,9339,22220 +97285,97751,23413 +42799,76343,88561 +79112,62161,15992 +29929,42204,82298 +16830,61276,32776 +91578,91729,38794 +37806,2172,80147 +50042,96637,18217 +68823,5743,26956 +32360,46472,28599 +6778,86907,67503 +94500,14784,51360 +74664,18113,65746 +57843,95426,85808 +82616,30140,21061 +42614,83823,28641 +41380,25069,59362 +83315,9429,82747 +77328,78465,67673 +52031,32595,97921 +76088,86256,89478 +6706,39747,26674 +12557,87121,62743 +33950,45552,23583 +31585,26032,22578 +33870,6206,65850 +53361,25519,23751 +63020,52785,47884 +79016,43804,12542 +54255,67245,70184 +80457,58165,67836 +64056,1687,95408 +20790,98838,30045 +2883,37548,36106 +71073,19539,81820 +7182,18597,58592 +18143,12621,80530 +6780,22126,49765 +8239,71596,68788 +89281,86941,24710 +7959,35086,66329 +15634,18831,93127 +3954,48354,31392 +88059,16066,2161 +59077,43286,27628 +21105,4829,39836 +45571,12183,58321 +98974,46125,55807 +73733,68623,31838 +1836,9878,6191 +28912,66389,84074 +32135,27457,57920 +70808,16753,21585 +2139,380,64759 +52646,44071,42531 +81166,56071,29109 +7936,60700,32872 +83461,55707,10252 +22791,66103,48388 +28139,23234,69744 +64533,59559,41313 +36330,31813,78802 +64772,84324,26022 +15287,9089,40021 +40346,12414,24996 +25145,38364,50767 +4063,88207,88534 +66071,85200,19824 +39132,78541,66239 +63306,33774,24944 +50475,4285,18871 +44608,85769,88303 +36601,32502,74868 +96949,88530,98652 +80653,93039,55014 +96075,13752,88117 +50233,26907,55857 +63491,19657,56626 +38204,94316,60019 +52712,97473,47904 +77364,80440,72126 +98238,38518,93979 +70463,72265,9473 +34797,41760,6263 +80876,16414,56630 +86829,28219,29719 +59473,7654,40839 +36732,90610,25290 +29690,43542,98861 +12174,15514,11030 +26038,8654,34985 +1316,56659,76172 +37147,90069,91445 +67014,82602,41934 +38396,1108,86150 +35430,76040,84142 +44545,92419,49423 +3041,75650,68326 +19194,92179,26233 +65941,20630,6806 +21991,66345,64278 +56699,76018,13880 +49103,14347,7898 +32416,77461,96050 +73979,91701,87941 +33162,65456,35080 +25092,73070,91602 +43363,76598,27823 +54526,59399,49533 +82193,14090,69671 +63362,75234,88959 +13866,82616,30404 +95246,22241,34966 +62582,67694,10184 +88298,76639,71228 +56621,34825,65861 +755,70077,31711 +50969,93934,85669 +21032,86397,81222 +16049,30459,22241 +57410,97401,87987 +2991,43364,71500 +55844,20872,81334 +40297,51418,18081 +64445,29710,16641 +52079,84560,33464 +75555,37764,13111 +50855,76099,54092 +28581,29067,3364 +27557,20797,11607 +24071,65720,35964 +40060,35958,28461 +54263,62787,50429 +68179,91959,47566 +95743,1195,97146 +47143,43443,57168 +18877,19098,99299 +90374,6317,91524 +67293,82919,72263 +1371,60668,64989 +94896,15560,56622 +68340,45560,99588 +43458,96683,7911 +92395,2840,78314 +85571,18839,81053 +83155,98861,56152 +96823,66878,15004 +22655,88225,10421 +85919,75426,35746 +73196,30232,58809 +94558,74730,64942 +2548,97914,72147 +92606,13033,40386 +52601,83217,64208 +38883,10808,59803 +77658,89272,15747 +32604,80713,64467 +78230,10074,64041 +27615,36584,3633 +88245,91926,62670 +96731,45164,41549 +19567,53197,91442 +19215,47753,32807 +87956,84095,23770 +77615,91981,84062 +87077,46515,23634 +71379,12943,50101 +22978,9547,75373 +67042,8760,75738 +80678,77134,68711 +931,3534,97128 +49750,15683,50397 +51736,64507,79680 +44757,4005,99188 +77903,42517,33301 +52581,14943,69471 +13484,83578,44925 +34487,63451,16219 +40160,27865,23352 +89072,43498,13289 +35266,26876,23110 +70569,61663,14212 +73432,34540,69291 +16624,91305,390 +3159,96887,24366 +57549,13875,31802 +1540,61011,22731 +36473,38811,21433 +79678,32850,82280 +72159,8729,61485 +33834,63857,38616 +79967,70714,14997 +80849,38160,50855 +60999,66004,84608 +12382,56344,57469 +75952,63319,85023 +81372,12759,90720 +75847,95491,62262 +35330,33634,48167 +97532,6229,26292 +82128,50560,90895 +85225,25491,55824 +30550,14028,92512 +33624,23026,72683 +26055,6603,19470 +33816,39635,56740 +44683,49062,23683 +56860,80621,30410 +33824,64478,59476 +39188,70994,55349 +56652,87772,37816 +29059,8984,32632 +33283,13908,2660 +66116,50473,78343 +35723,75571,18189 +61541,7898,16747 +77260,27128,86032 +61721,82361,27360 +36079,5260,48857 +16691,65524,5833 +26148,45066,36027 +64679,30588,84415 +51255,7156,45227 +33888,5007,81917 +24863,17881,59394 +74842,94135,38697 +70762,93268,6395 +95898,64937,92422 +30826,5482,95081 +27657,45685,82784 +70866,44299,53644 +27463,91670,89956 +70136,21530,28186 +13620,12547,21815 +94185,20952,84090 +66565,15373,87947 +74914,87307,6455 +5356,19219,7447 +96063,76823,52957 +49131,16229,24815 +14898,61068,87121 +53611,54521,18754 +56273,68915,34555 +51898,85814,82943 +1989,83862,52142 +23965,8438,57263 +24374,84642,75027 +96276,4695,56676 +55867,67827,43039 +15153,72072,44176 +17215,97870,80751 +2210,98505,18346 +52738,79073,91945 +9935,52981,19068 +53739,8955,18756 +17653,88911,90993 +85305,89978,27243 +3970,14555,53955 +61089,28643,90394 +32117,15093,9992 +80304,98311,54321 +66552,55981,50998 +37468,7839,69958 +6047,87776,88373 +7380,10417,2885 +49642,54820,71159 +11369,55142,36097 +29276,27980,98195 +69129,38003,70200 +54680,60880,3118 +98448,93512,18364 +27500,92931,34548 +53255,61937,7602 +27351,63219,83443 +60914,93676,3475 +5268,63037,42876 +12637,19182,8004 +2050,24739,545 +9028,53697,7803 +85319,47129,2676 +93674,91377,72495 +94166,55693,84992 +19052,25585,3269 +38660,3804,71181 +75500,34896,11157 +9689,60810,9326 +50137,86571,54240 +7414,99696,85068 +97847,35074,68818 +38806,68813,92067 +27616,15653,71787 +86544,60712,92831 +21010,82924,41860 +40206,29480,47185 +79715,27738,49176 +32709,79060,78171 +71961,25447,53349 +33308,25736,14069 +6527,86143,6532 +13968,31596,28606 +23230,93758,96658 +60635,97412,90047 +66372,18403,33246 +56487,37255,83249 +29480,52983,12421 +86559,52363,11742 +57567,95520,80878 +10731,31886,49404 +7182,79104,80579 +72396,59840,60886 +79494,56678,76496 +75431,95645,35718 +98600,59109,42999 +32844,82872,20692 +82439,12034,13016 +31887,14414,97290 +68159,38365,7141 +92693,30378,69946 +71605,88440,37860 +51005,54787,98408 +59849,33611,56892 +43805,57859,61895 +57997,85341,30060 +12077,49593,55694 +13616,69688,31502 +55245,46639,4822 +42828,30608,96763 +84503,24421,48327 +28771,35284,51373 +29243,66938,1161 +57766,4214,68382 +64444,97022,53623 +47698,38061,23339 +73769,18115,45095 +40632,78017,54566 +68684,82023,52528 +55010,46364,55934 +91105,20501,56751 +14402,85074,85634 +82434,69184,28311 +79520,55813,44685 +58984,55386,99430 +20855,25236,92728 +49349,80169,66768 +99789,10097,40823 +15815,52674,88431 +82699,64779,28831 +17134,66905,32126 +81728,30568,16109 +99131,66717,32993 +78058,36707,48095 +95581,94142,433 +78933,86408,58239 +32769,59114,32169 +87062,71491,6041 +4121,54630,52885 +55643,32287,31971 +5144,89424,70005 +44842,22551,23631 +39548,31809,72973 +17995,93203,81694 +31391,59367,72568 +21059,19907,46871 +61895,41320,21886 +73455,24484,22376 +84564,39129,19970 +60564,23142,95202 +5863,17684,40715 +59955,80155,13069 +15541,43916,69776 +9725,21293,8860 +79013,39898,11015 +66482,95043,55586 +43189,10113,86789 +20210,73259,1679 +6451,12473,98376 +94130,8184,40237 +82380,20786,79245 +47749,14938,93286 +48936,94692,69228 +11390,9255,30267 +20143,44453,77474 +33763,6163,16641 +29704,38034,57006 +37567,80915,50936 +42989,15808,21138 +346,92185,19497 +33584,91798,21826 +40714,6482,31575 +55428,69363,95430 +2413,45787,69277 +97138,94454,40634 +54058,4108,71516 +79808,31232,22706 +6380,5643,29972 +98633,25322,21487 +21749,52309,43718 +80458,57166,71001 +49537,94026,14211 +71945,38703,93689 +3920,58347,59687 +23839,37703,7115 +38694,68819,87704 +98605,31131,40370 +86800,71778,49770 +55071,20237,36268 +20364,86426,66351 +21290,97204,67964 +91968,91494,65090 +76621,99377,15202 +61711,27948,39642 +60636,72192,43962 +42424,2169,92177 +2079,89495,99103 +89879,70203,59321 +23662,53173,73295 +58217,48592,13159 +4257,1779,95800 +38641,84597,23969 +9809,90228,34775 +33156,69323,71941 +31349,50555,29119 +81458,97974,10406 +86572,16840,3878 +59270,62993,72347 +69808,8393,51354 +44028,14726,94986 +7598,57171,12819 +30688,2594,33413 +80115,25752,32595 +90985,22291,1400 +35984,43689,63607 +48424,37979,54251 +43787,73718,49117 +47598,31399,46824 +60662,86528,14698 +22624,95104,13798 +13385,63446,93608 +23537,16143,11505 +17261,14405,11792 +910,44432,15341 +8367,35498,3172 +51056,50153,65163 +52684,12473,62729 +47909,40289,21716 +9329,98872,5447 +81552,96421,70358 +77190,95478,54439 +30463,39406,52259 +62286,72128,94730 +23272,16830,81978 +94222,3495,45379 +79700,69526,88612 +58559,37208,86799 +68133,70392,43558 +68585,94486,13403 +70468,8985,72994 +29596,46101,48330 +89934,68002,75962 +12239,33467,99683 +81854,43902,63047 +19544,17836,31993 +90712,27669,79142 +25326,65897,22217 +41829,21697,13411 +30988,61045,65973 +91257,13719,50868 +11958,85759,74958 +62647,15738,91054 +95202,48972,83718 +68761,62011,31487 +96427,12071,23308 +545,46079,52752 +91352,38580,40112 +25743,61293,35406 +39148,15778,25222 +18524,72485,45769 +27820,53859,40217 +64552,28429,38914 +2817,59748,76518 +50624,37615,62634 +31572,71662,19626 +49246,37261,81654 +50701,43865,5144 +1820,6956,36432 +50943,43653,16810 +68218,21687,63089 +89959,74831,33537 +22534,36311,1913 +26194,33476,90499 +96758,12371,94103 +65537,93974,31189 +59371,23542,40633 +87795,27950,73930 +77379,2194,1859 +93362,7676,86793 +53797,36604,44509 +1762,15154,54918 +39327,91596,98517 +16393,33840,15802 +73807,90221,64311 +45995,91553,506 +17638,94624,62688 +66661,96045,98861 +2946,31725,48821 +80425,97686,58707 +55983,9595,88038 +96027,80587,41535 +28001,5653,2526 +52994,43276,31220 +98541,6588,18567 +65502,73700,28683 +34874,52620,70122 +88286,1850,79003 +86021,18991,40513 +55698,2984,92090 +35025,26256,88702 +18056,8798,26168 +98132,80375,89467 +6242,91510,83393 +19028,46597,1842 +97383,61226,74757 +79640,45131,43498 +95943,29878,1987 +36174,8019,23171 +16528,6113,33412 +80990,68808,69483 +70752,81831,86579 +13498,78840,23094 +32295,9143,23072 +71309,51992,16462 +71597,93252,65010 +6011,46592,42224 +45847,20345,50225 +70256,58104,58849 +69592,98365,98556 +39041,58463,36852 +76694,14384,23433 +46922,23019,79378 +49756,47650,95798 +79628,68043,30131 +50368,50065,32000 +58259,83494,6539 +82956,35190,55312 +12543,67052,51379 +87144,77545,32194 +17223,778,29876 +15353,16390,95817 +54555,76256,98723 +424,24183,95086 +397,97427,53765 +22517,28127,44549 +23149,7360,50737 +22669,73921,76532 +90042,60042,61787 +64202,11641,69468 +36642,81087,60139 +78219,6908,44519 +21027,31475,93993 +7229,88823,65753 +88624,94643,77349 +12008,20719,92120 +79546,33378,55773 +84801,10961,90918 +36344,2250,99996 +74628,20229,30484 +99626,25996,95851 +37289,27351,2626 +18920,88676,13632 +12806,46701,79922 +82445,46745,1688 +42850,62351,97291 +74648,39964,51896 +42979,48188,97753 +41189,33979,51196 +37301,32127,1921 +27684,15333,45494 +9293,51433,17522 +54693,66492,41795 +36430,26328,4290 +32600,96504,68448 +77912,32250,49469 +11926,54002,50947 +85851,60802,52854 +93111,86931,8191 +71642,47272,59684 +97721,37353,176 +53187,21801,45061 +49968,85202,50070 +43733,58949,13139 +20245,80143,28520 +54286,52532,95692 +77041,113,54581 +61253,80073,21527 +10581,3628,86818 +33592,22729,22340 +47053,75253,30837 +67405,79806,72616 +42434,620,56997 +65597,69059,47230 +11602,24274,55779 +83641,52732,34927 +26504,54576,37376 +8947,91923,30505 +36429,89078,15061 +45994,65623,19063 +23291,25054,12216 +95947,40224,59134 +44097,44629,13016 +588,1619,46842 +14747,63513,17094 +33802,22275,63578 +1313,17514,36510 +90125,76120,39931 +92433,56778,13917 +81903,32509,73000 +92531,10309,10594 +78442,62320,87770 +89311,77105,3237 +5716,66470,49900 +76215,79595,53725 +45317,25305,11402 +60940,89815,95914 +46092,53941,96076 +8260,37391,32189 +10215,72942,77135 +61014,42921,93853 +8795,24067,96724 +59541,38098,83306 +87241,42289,15294 +8327,62419,56433 +1132,23026,35422 +81510,64930,84905 +18116,21021,38580 +51831,13368,19614 +58854,22857,71871 +26386,36277,86116 +71849,4642,72016 +68583,63965,17428 +38524,18590,59975 +11048,56248,44635 +67360,17739,84532 +22673,89975,38725 +1505,60741,93183 +48869,8261,11607 +76503,40845,91444 +58630,77179,39733 +76429,70129,2940 +15527,13367,46225 +34328,81452,49442 +38007,58147,28163 +43632,40657,69646 +28674,92256,83838 +77097,84850,23529 +18858,37227,34880 +32647,32219,61821 +21634,12534,69567 +46688,36206,62812 +97703,55344,9080 +56005,51197,26453 +66007,6990,34957 +90595,97253,32561 +86297,66677,90670 +32478,36065,38690 +42232,52766,65234 +81120,6138,64408 +93185,36580,62051 +65199,89224,46915 +24113,75617,97545 +82743,67340,88582 +56020,3905,7144 +62169,64267,51406 +99887,29384,80288 +21150,82531,82309 +56548,90725,90994 +63125,45149,67153 +76481,32097,32487 +38440,20703,54640 +1328,52521,61930 +54449,53111,9669 +49013,6182,30037 +71173,85874,99529 +66746,25081,27322 +37768,78212,66838 +8091,97423,25896 +4088,8599,84834 +16628,40689,90322 +79962,80368,63919 +95582,65194,41143 +13052,71321,84903 +35072,85089,80882 +1642,35036,80671 +95556,24542,73885 +69292,84610,33009 +7474,57154,8994 +41995,94344,27913 +80088,98370,76895 +11955,90756,93396 +81383,47145,76933 +45153,71117,98465 +59649,82279,81209 +57044,30718,20849 +8039,23626,83495 +80517,36821,18655 +51750,95799,56822 +40066,94989,52809 +98232,79905,91617 +85490,32859,64143 +17138,73071,52857 +74038,84744,41158 +984,81703,77012 +94841,23301,51936 +58123,4347,86987 +18159,56681,90117 +52152,8228,29842 +33350,61435,12315 +80728,44651,7611 +44393,24856,2729 +14711,27952,36070 +67052,68342,20426 +48409,34064,16317 +97099,24054,51554 +6634,39828,72233 +74598,30885,58450 +39769,70020,13609 +26396,88561,10046 +17888,27138,14140 +97915,61889,54341 +2120,32447,62380 +96122,21270,53865 +61810,80127,74550 +22134,43172,81596 +26474,14749,16776 +16863,21273,77743 +74288,91084,34875 +44589,2212,20518 +26144,98260,29090 +24353,88378,38826 +18295,61145,52792 +6166,76378,41466 +71431,19846,11534 +66660,50446,37461 +78489,48099,16272 +2137,86552,40108 +60432,79114,22965 +50634,14416,51819 +71337,67853,78370 +17376,46623,89161 +47911,49744,56694 +55762,16728,71455 +63647,65178,51242 +29980,3852,53179 +42496,26225,27806 +42607,2739,6198 +2864,50418,35603 +44854,42953,15680 +64441,25076,37761 +85719,5336,26927 +20955,83612,59576 +12036,87722,19591 +66912,36314,37511 +23986,85346,81260 +82711,60544,66303 +9452,2583,73246 +51873,36373,87781 +1017,9117,86548 +14703,74164,4825 +67635,95221,11135 +88006,80517,76496 +68526,6496,75855 +28273,14025,46983 +65541,14149,64205 +77376,31136,37825 +75440,48370,28668 +26008,85212,3434 +40940,23815,57043 +67983,53329,54996 +89442,68335,38423 +33452,57371,37190 +97904,1442,83870 +26981,78999,36937 +4870,96702,17318 +93069,27601,96947 +50799,57987,73311 +26258,51149,7097 +89422,7856,62974 +41291,61518,66798 +67845,95723,18443 +15140,74735,71894 +16491,57317,11366 +805,93872,54351 +67548,22576,81909 +67234,43951,56051 +43192,84886,43099 +94433,22405,16985 +16689,65863,56679 +47882,50442,33166 +8082,44429,28186 +18730,80710,42052 +7154,48970,43501 +92786,50863,40101 +14276,14750,42354 +59610,44402,32900 +66321,29440,35343 +11842,58758,19686 +86375,42113,91156 +84456,76481,27307 +12487,48117,12371 +90714,29316,29528 +94373,17541,88516 +70981,99722,17678 +86189,37350,14478 +36118,46582,56343 +3391,93699,24521 +67707,29367,848 +23056,13591,41596 +68506,18667,99069 +72575,12428,3885 +59949,80468,54803 +91305,12584,63929 +17866,43667,9602 +63508,51080,67311 +57380,57120,61966 +16574,51090,99319 +32185,35403,75406 +45846,98384,11076 +92050,29398,91303 +29816,66469,899 +46644,99953,31409 +29708,17355,97825 +53960,22292,24872 +48367,72657,12647 +19381,49718,89613 +91967,71046,90045 +99694,70738,14898 +12173,51808,67964 +71791,60548,96036 +72673,15673,37390 +30738,11838,10976 +30483,73464,33052 +64006,75717,63412 +44953,16485,79782 +57548,44387,20051 +24395,29447,56444 +12519,61854,10000 +50329,58566,1540 +88571,79007,42792 +15483,81138,67772 +98351,94412,6422 +18026,48853,63854 +89770,65097,22339 +58240,80119,53987 +64206,72169,47821 +13700,49143,23865 +18497,60048,59410 +2314,61182,5732 +42196,41541,66447 +23951,86628,1947 +33338,93299,21115 +7638,2164,44062 +43987,22490,75375 +20853,69392,40766 +25784,84917,94057 +84735,27877,12650 +28415,59780,73757 +92732,11514,66004 +22167,3127,15527 +55375,13763,25418 +61312,10183,74808 +67561,33175,52518 +95559,85684,31949 +31811,21208,19531 +49476,91559,68710 +39712,39185,94833 +52948,10125,4551 +41183,8388,89450 +15354,71712,48189 +6237,83879,28533 +33487,87651,46770 +86581,79868,43002 +49212,94807,6042 +7943,71512,26361 +31857,98286,65008 +12452,17207,91675 +19474,26614,46380 +95090,36404,63062 +32042,15906,44729 +9117,80102,58916 +90870,35796,70572 +11240,89359,75236 +86642,22094,25156 +35558,22739,28788 +86897,95920,3348 +57491,40447,23544 +77554,13497,7770 +52283,86126,480 +67729,16495,63983 +26202,2014,86875 +27035,39844,17507 +87797,70368,60825 +85362,81716,64502 +52686,83672,61900 +16584,67436,57067 +51528,30585,71528 +55568,65486,28975 +11164,49777,16477 +1776,9274,97965 +48804,1871,22628 +4006,76888,74703 +21401,3007,52716 +78258,73464,20159 +3096,60495,13624 +13794,87629,88860 +42769,26015,16236 +40103,82017,32924 +33751,93304,79488 +21564,44610,83725 +59242,66082,95378 +62154,17151,38955 +25117,88117,13461 +84727,84511,30942 +57868,93469,74159 +30779,90034,64698 +78228,58657,83070 +87385,97051,13550 +21022,11127,86967 +32205,33295,35860 +25239,65855,51216 +93179,31615,10990 +43023,55949,30938 +12676,22645,13162 +94984,76400,55312 +72395,82327,98795 +66775,87119,17346 +37618,21354,54595 +42239,10905,88143 +7850,95744,85655