From 1ec62806234a0eee276ab6dbfbee9c4939257a86 Mon Sep 17 00:00:00 2001 From: Brian Buller Date: Thu, 7 Nov 2019 15:43:14 -0600 Subject: [PATCH] 2018 Day 23* Had to find someone else's python solution to get an answer. Need to pull it apart and figure out what's wrong with my solution. --- 2018/day23/bots.go | 31 ++ 2018/day23/coord.go | 18 + 2018/day23/day23.go | 135 +++--- 2018/day23/day23.py | 81 ++++ 2018/day23/day23.txt | 1000 ++++++++++++++++++++++++++++++++++++++++++ 2018/day23/testinput | 15 +- 6 files changed, 1198 insertions(+), 82 deletions(-) create mode 100644 2018/day23/bots.go create mode 100644 2018/day23/coord.go create mode 100755 2018/day23/day23.py create mode 100644 2018/day23/day23.txt diff --git a/2018/day23/bots.go b/2018/day23/bots.go new file mode 100644 index 0000000..d5ef057 --- /dev/null +++ b/2018/day23/bots.go @@ -0,0 +1,31 @@ +package main + +import "fmt" + +type Bots map[Coordinate][]int + +func NewBots(input []string) Bots { + m := make(Bots) + for _, data := range input { + var r int + var c Coordinate + _, err := fmt.Sscanf(data, "pos=<%d,%d,%d>, r=%d", &c.X, &c.Y, &c.Z, &r) + if err != nil { + panic(err) + } + m[c] = append(m[c], r) + } + return m +} + +func (m Bots) HaveInRange(pos Coordinate) int { + var sum int + for c, rs := range m { + for _, r := range rs { + if pos.Distance(c) <= r { + sum++ + } + } + } + return sum +} diff --git a/2018/day23/coord.go b/2018/day23/coord.go new file mode 100644 index 0000000..98b73fd --- /dev/null +++ b/2018/day23/coord.go @@ -0,0 +1,18 @@ +package main + +type Coordinate struct { + X, Y, Z int +} + +var Zero = Coordinate{X: 0, Y: 0, Z: 0} + +func (c Coordinate) Distance(a Coordinate) int { + return abs(c.X-a.X) + abs(c.Y-a.Y) + abs(c.Z-a.Z) +} + +func abs(v int) int { + if v < 0 { + return v * -1 + } + return v +} diff --git a/2018/day23/day23.go b/2018/day23/day23.go index 0ce3900..8d88218 100644 --- a/2018/day23/day23.go +++ b/2018/day23/day23.go @@ -3,88 +3,86 @@ package main import ( "bufio" "fmt" - "log" - "math" "os" "strconv" - "strings" ) -var collective *Collective - func main() { - input := stdinToStringSlice() - - collective = &Collective{} - for _, v := range input { - collective.bots = append(collective.bots, NewBot(v)) - } - part1() + inp := StdinToStringSlice() + fmt.Printf("# Part 1\nIn Range of Strongest: %d\n", StrongestReachable(NewBots(inp))) + // Part 2: 94270682 is too low + // 94481123 is too low + fmt.Printf("# Part 2\nClosest Success: %d\n", ClosestSuccess(NewBots(inp))) } -func part1() { - s := collective.strongest() - fmt.Println("= Part 1 =") - fmt.Println(len(collective.inRange(s))) -} - -func part2() { - finder := &Bot{} -} - -type Collective struct { - bots []*Bot -} - -func (c *Collective) inRange(b *Bot) []*Bot { - var ret []*Bot - for _, v := range c.bots { - if c.distance(b, v) <= b.radius { - ret = append(ret, v) +func StrongestReachable(bots Bots) int { + var largestRadius, count int + var largestPos Coordinate + for c, rs := range bots { + for _, r := range rs { + if r > largestRadius { + largestPos = c + largestRadius = r + } } } - return ret -} - -func (c *Collective) strongest() *Bot { - strongest := c.bots[0] - for _, v := range c.bots { - if v.radius > strongest.radius { - strongest = v + for c, rs := range bots { + if largestPos.Distance(c) <= largestRadius { + count += len(rs) } } - return strongest + return count } -func (c *Collective) distance(b1, b2 *Bot) int { - xs := math.Abs(float64(b1.x) - float64(b2.x)) - ys := math.Abs(float64(b1.y) - float64(b2.y)) - zs := math.Abs(float64(b1.z) - float64(b2.z)) - return int(xs + ys + zs) -} +func ClosestSuccess(bots Bots) int { + var cur, topLeft, bottomRight Coordinate + zoom := 1 << (strconv.IntSize - 2) -type Bot struct { - x, y, z int - radius int -} + for { + zoomedBots := make(Bots) + best := struct { + pos Coordinate + count int + }{} -func NewBot(args string) *Bot { - pts := strings.Split(args, ", ") - pos := strings.Split(pts[0][5:len(pts[0])-1], ",") - r := strings.Split(pts[1], "=")[1] - return &Bot{ - x: atoi(pos[0]), - y: atoi(pos[1]), - z: atoi(pos[2]), - radius: atoi(r), + for c, rs := range bots { + for _, r := range rs { + zc := Coordinate{c.X / zoom, c.Y / zoom, c.Z / zoom} + zoomedBots[zc] = append(zoomedBots[zc], r/zoom) + } + } + + for cur.X = topLeft.X; cur.X <= bottomRight.X; cur.X++ { + for cur.Y = topLeft.Y; cur.Y <= bottomRight.Y; cur.Y++ { + for cur.Z = topLeft.Z; cur.Z <= bottomRight.Z; cur.Z++ { + c := zoomedBots.HaveInRange(cur) + + // skip less bots + if c < best.count { + continue + } + // skip same amount of bots but Distance from Zero is the same or more + if c == best.count && Zero.Distance(cur) >= Zero.Distance(best.pos) { + continue + } + // more bots or same and closer to Zero + best.pos, best.count = cur, c + } + } + } + + // zoom in + topLeft.X, topLeft.Y, topLeft.Z = (best.pos.X-1)<<1, (best.pos.Y-1)<<1, (best.pos.Z-1)<<1 + bottomRight.X, bottomRight.Y, bottomRight.Z = (best.pos.X+1)<<1, (best.pos.Y+1)<<1, (best.pos.Z+1)<<1 + zoom >>= 1 + + if zoom == 0 { + return Zero.Distance(best.pos) + } } } -func (b *Bot) string() string { - return fmt.Sprintf("(%d,%d,%d : %d)", b.x, b.y, b.z, b.radius) -} - -func stdinToStringSlice() []string { +func StdinToStringSlice() []string { var input []string scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { @@ -92,12 +90,3 @@ func stdinToStringSlice() []string { } return input } - -func atoi(i string) int { - var ret int - var err error - if ret, err = strconv.Atoi(i); err != nil { - log.Fatal("Invalid Atoi") - } - return ret -} diff --git a/2018/day23/day23.py b/2018/day23/day23.py new file mode 100755 index 0000000..0f87fd8 --- /dev/null +++ b/2018/day23/day23.py @@ -0,0 +1,81 @@ +#!/usr/bin/python +from collections import OrderedDict, defaultdict, namedtuple +from functools import total_ordering +from heapq import heappop, heappush +from itertools import chain +import re + +Bot = namedtuple('Bot', 'x y z r') + +with open('day23.txt') as puzzle_file: + pattern = re.compile(r'pos=<(-?\d+),(-?\d+),(-?\d+)>, r=(\d+)') + bots = [Bot(*map(int, pattern.match(line).groups())) for line in puzzle_file] + +max_r = max(bot.r for bot in bots) +print( + max( + sum(abs(b.x - a.x) + abs(b.y - a.y) + abs(b.z - a.z) <= a.r for b in bots) for a in bots + if a.r == max_r)) + +@total_ordering +class Octa_ordering(object): + def __lt__(self, other): + return self.min < other.min or self.min == other.min and other.max < self.max + +class Octa(Octa_ordering, namedtuple('Octa', ('min', 'max'))): + def __new__(cls, *args, **kwargs): + if 'bot' in kwargs: + x, y, z, r = kwargs['bot'] + t, u, v, w = x + y + z, x + y - z, x - y - z, x - y + z + return super(Octa, cls).__new__(cls, (t - r, u - r, v - r, w - r), + (t + r, u + r, v + r, w + r)) + return super(Octa, cls).__new__(cls, *args, **kwargs) + + def intersect(self, other): + c, d, e, f = self.min + g, h, i, j = other.min + k, l, m, n = self.max + o, p, q, r = other.max + s, t, u, v = max(c, g), max(d, h), max(e, i), max(f, j) + w, x, y, z = min(k, o), min(l, p), min(m, q), min(n, r) + return None if s > w or t > x or u > y or v > z else Octa((s, t, u, v), (w, x, y, z)) + + def distance_to_origin(self): + o, p, q, r = self.min + s, t, u, v = self.max + if o < s and p < t and q < u and r < v: + w = min(abs(o), abs(s)) if o * s >= 0 else 0 + x = min(abs(p), abs(t)) if p * t >= 0 else 0 + y = min(abs(q), abs(u)) if q * u >= 0 else 0 + z = min(abs(r), abs(v)) if r * v >= 0 else 0 + return max(w, x, y, z) + return min( + abs((x + z) // 2) + abs((y - z) // 2) + abs((x - y) // 2) + for x in range(o, s + 1) for y in range(p + ((p ^ x) & 1), t + 1, 2) + for z in range(q + ((q ^ x) & 1), u + 1, 2) if r <= x - y + z <= v) + +best_count = 0 +octs = defaultdict(set) +for i, bot in enumerate(bots): + octs[Octa(bot=bot)].add(i) +queue = [(0, (), OrderedDict((k, octs[k]) for k in sorted(octs)))] +while queue: + n, _, rest = heappop(queue) + if -n < best_count: + break + octa, n = rest.popitem() + sub = defaultdict(set) + for octa2, m in rest.items(): + octa3 = octa.intersect(octa2) + if octa3 is not None: + (n if octa == octa3 else sub[octa3]).update(m) + if len(n) > best_count: + best_count, best_distance = len(n), [octa] + elif len(n) == best_count: + best_distance.append(octa) + m = frozenset(chain.from_iterable(rest.values())) + heappush(queue, (-len(m), m, rest)) + rest = OrderedDict((k, sub[k].union(n)) for k in sorted(sub)) + m = frozenset(chain.from_iterable(rest.values())) + heappush(queue, (-len(m), m, rest)) +print(min(octa.distance_to_origin() for octa in best_distance)) diff --git a/2018/day23/day23.txt b/2018/day23/day23.txt new file mode 100644 index 0000000..c36a211 --- /dev/null +++ b/2018/day23/day23.txt @@ -0,0 +1,1000 @@ +pos=<17821750,69850551,48570194>, r=59707711 +pos=<-9331508,90659413,35938523>, r=95038229 +pos=<23833901,-25701718,28216348>, r=82407742 +pos=<22578717,-4001237,33580852>, r=67327107 +pos=<-15164551,39459126,39763570>, r=67792575 +pos=<15583848,-13445920,16647903>, r=75695712 +pos=<17429546,42820351,39605202>, r=55571372 +pos=<25306171,10112187,37105526>, r=54010804 +pos=<105495754,44233976,23848414>, r=83843940 +pos=<21753573,-22886954,37196845>, r=90654071 +pos=<-935134,23567279,23028500>, r=52719939 +pos=<8437209,-12462221,10691589>, r=87814683 +pos=<65642915,32729013,40168163>, r=71815856 +pos=<10403327,18225593,54599704>, r=78294372 +pos=<45707774,33657923,53440857>, r=64224456 +pos=<-17609912,40313922,7375085>, r=64402050 +pos=<-3507906,63738659,39473001>, r=65828429 +pos=<14529372,43547199,79888312>, r=74135416 +pos=<22421043,12510533,-3274795>, r=62824380 +pos=<-40193859,36727021,28495377>, r=84285777 +pos=<-8999991,41069706,37179239>, r=57433130 +pos=<3685234,19053860,30942022>, r=60526513 +pos=<-20863826,51150640,12882788>, r=60397965 +pos=<3013264,39947599,86619585>, r=95982282 +pos=<79683651,37976406,30135546>, r=70576540 +pos=<4286166,42852768,71863711>, r=77048383 +pos=<92766599,48420226,24022361>, r=70728104 +pos=<1730971,41993850,44258579>, r=52857357 +pos=<83369934,42427753,13524400>, r=68309431 +pos=<8471166,57293608,43969427>, r=51900575 +pos=<4559226,67290799,44791559>, r=66631972 +pos=<19628365,29164287,80711385>, r=84242301 +pos=<19730346,13870102,46983692>, r=65706902 +pos=<14642571,43761493,33735707>, r=86738400 +pos=<10647748,59283859,71426824>, r=79171876 +pos=<21611797,44060781,95183736>, r=81834823 +pos=<-15469801,39103225,1736881>, r=69111082 +pos=<13390703,103210790,40377737>, r=89306523 +pos=<-4210349,5683041,44097397>, r=94948268 +pos=<-555177,44748022,23499094>, r=58059898 +pos=<-35618489,35675593,17465547>, r=76958526 +pos=<8865263,68238701,54848297>, r=73330438 +pos=<6474178,4703175,33416013>, r=74562221 +pos=<76406174,43565457,-7098284>, r=80830339 +pos=<-28690236,43089796,24275282>, r=62199950 +pos=<-1841774,26264304,28585899>, r=56486951 +pos=<23465000,35208723,66543409>, r=60193410 +pos=<-38878242,40014755,38712694>, r=89899755 +pos=<23194493,39751064,3601795>, r=80387409 +pos=<32066369,-29553295,30877308>, r=91230974 +pos=<10140509,31332862,70541008>, r=81391286 +pos=<3233388,72578561,-25337860>, r=95949286 +pos=<3177641,56645184,44563544>, r=57139832 +pos=<8396416,14269307,34538472>, r=64196330 +pos=<-7248481,1211423,25027994>, r=83388796 +pos=<-39161078,26636020,13533271>, r=93472939 +pos=<18277742,20382341,66645152>, r=80308637 +pos=<-26348718,52910328,29389434>, r=67757184 +pos=<24676726,41037383,86942693>, r=73552372 +pos=<-17403007,32404049,28963360>, r=66286081 +pos=<-53248207,39438059,31138740>, r=97272676 +pos=<60090231,20175576,25969085>, r=64617731 +pos=<57360973,2058634,23802681>, r=77838823 +pos=<93248034,50873795,43933857>, r=93574828 +pos=<9594473,92828594,-9559211>, r=94060036 +pos=<15611670,35094314,66820928>, r=68438662 +pos=<-34735500,41631010,22568654>, r=67996707 +pos=<-40147554,73068797,25156711>, r=97481760 +pos=<25156069,12185352,78558376>, r=93540553 +pos=<21408463,20818853,40585731>, r=50681975 +pos=<-6374831,39313621,51482925>, r=70867697 +pos=<-21334595,50643542,23806057>, r=54893099 +pos=<-11679685,29108637,22735931>, r=57630691 +pos=<87181981,77284438,29049803>, r=99035160 +pos=<20986244,23329854,27927525>, r=88345973 +pos=<4901329,4539487,27013549>, r=69896432 +pos=<9214300,42228846,17583349>, r=51833657 +pos=<8531453,43697936,34313834>, r=53499186 +pos=<-13995862,72616624,51855051>, r=97576231 +pos=<-36205443,43085389,46793498>, r=92237398 +pos=<-28311620,-74471321,-24640670>, r=73145243 +pos=<22658857,15789330,37151474>, r=51027022 +pos=<-12808111,36795424,28889002>, r=57225277 +pos=<4602207,40782413,47263733>, r=54202787 +pos=<8470202,54194117,-6192013>, r=53182266 +pos=<317333,41996167,22980730>, r=93579110 +pos=<69074271,40415253,33268796>, r=60661569 +pos=<-66637289,48352204,23821973>, r=97920824 +pos=<-2676731,13642773,50349918>, r=91707456 +pos=<-30427136,42875501,23904485>, r=63779681 +pos=<35006211,-4756448,31113031>, r=69609610 +pos=<32285705,-5069745,24119799>, r=60209113 +pos=<21922041,-11543284,55673881>, r=97618697 +pos=<17023963,18456711,70850824>, r=87693742 +pos=<-9229676,38516652,-4757206>, r=69951379 +pos=<-26069547,39606148,30511528>, r=69298720 +pos=<-23260203,42316213,27838368>, r=61105919 +pos=<-6038248,39379904,51931438>, r=70913346 +pos=<-30391265,36874583,28928425>, r=74768682 +pos=<-67124848,45419547,23187337>, r=97216226 +pos=<74584209,15488902,25298404>, r=83127529 +pos=<-32108176,44640358,22887048>, r=62678629 +pos=<-4435322,44833272,42474767>, r=54400395 +pos=<64853282,35736449,37234355>, r=65084970 +pos=<46952162,45076599,-21382414>, r=64149358 +pos=<-32442768,42163971,40183426>, r=82785794 +pos=<-34976772,37309007,36376872>, r=86368236 +pos=<-2064005,44213627,78828590>, r=89002555 +pos=<15259421,113741910,7196220>, r=92552634 +pos=<82184265,60081757,34835117>, r=82620062 +pos=<8464967,-7413228,44864253>, r=96136357 +pos=<-35985846,32375458,33635017>, r=89569084 +pos=<-23818106,5998849,26469638>, r=96612460 +pos=<25209076,-12614139,56600367>, r=96329227 +pos=<-18045642,43497055,55079305>, r=81951719 +pos=<3262596,-6079655,28749847>, r=83891127 +pos=<-18847266,33579053,49604886>, r=87196743 +pos=<-30429153,38282658,15585389>, r=71042256 +pos=<-39413267,42287874,37606885>, r=87056302 +pos=<56306602,18892858,47411992>, r=83559535 +pos=<-1498967,44466614,46500243>, r=55856176 +pos=<52716749,-6548674,7014571>, r=93142259 +pos=<555048,-9405356,34133125>, r=95307098 +pos=<-7336381,76226501,31381091>, r=74052707 +pos=<17172995,28052654,-13225080>, r=62480765 +pos=<24164995,25182611,22537651>, r=52192284 +pos=<-11053606,93548703,22271614>, r=85982620 +pos=<51569665,24370480,49557751>, r=75490728 +pos=<-18314983,44993764,30847316>, r=56492135 +pos=<34316324,36974285,69459172>, r=65535408 +pos=<-47852112,41527310,22532951>, r=81181611 +pos=<389357,12067890,37227961>, r=77094298 +pos=<75331147,26593617,46188549>, r=93660312 +pos=<-18731532,45363891,24647728>, r=50339041 +pos=<13213348,38883899,13398384>, r=93440687 +pos=<9589962,1720949,45468830>, r=86481485 +pos=<59879060,39675284,30896560>, r=49834141 +pos=<-47831607,67374920,22939628>, r=97254841 +pos=<-17190520,23537123,-6962785>, r=95097470 +pos=<67199267,40915547,25567567>, r=50585113 +pos=<-32245475,43402912,18194154>, r=65129737 +pos=<-14112921,23388891,52943357>, r=95990986 +pos=<-21931670,29850654,25055765>, r=69460494 +pos=<49991095,50859874,22815404>, r=90796495 +pos=<7943968,31500163,19466550>, r=95226386 +pos=<18840127,-5913968,40469175>, r=79866582 +pos=<58903991,16302205,24877713>, r=66213489 +pos=<-30507163,48062287,31299887>, r=68978045 +pos=<86552537,41652592,1438777>, r=84352548 +pos=<-18541385,22040717,22857318>, r=71681744 +pos=<-27088690,44961665,-1930280>, r=78538825 +pos=<84916436,42429515,29348395>, r=70569262 +pos=<50673261,33406930,47046906>, r=63047114 +pos=<8389460,-20101332,32912398>, r=96948290 +pos=<-28418214,34676375,35010030>, r=81075429 +pos=<44219876,4900357,34781526>, r=72834947 +pos=<15087712,-16826787,37228887>, r=91291620 +pos=<-2345078,32590004,48575504>, r=70654272 +pos=<-19922125,23897157,13502436>, r=77003944 +pos=<19069614,64357019,62266479>, r=66662682 +pos=<-39439575,53811674,25896170>, r=78256279 +pos=<1259602,6299679,37114510>, r=81878831 +pos=<82613313,44235989,24767911>, r=61879177 +pos=<15711289,39429952,92458182>, r=89640555 +pos=<21935338,43154438,33425924>, r=64195051 +pos=<-21742263,20927333,22277457>, r=75415966 +pos=<-15199772,89753790,26988805>, r=91051519 +pos=<57417106,59680092,30294325>, r=52910774 +pos=<54048551,35844588,33020545>, r=49958275 +pos=<24527429,36183605,29520412>, r=81368166 +pos=<-23365320,43551195,29580790>, r=61718768 +pos=<-8408368,40278520,-1328374>, r=63939571 +pos=<-22474320,41329179,22295547>, r=55764248 +pos=<16595721,14941716,76779981>, r=97566130 +pos=<2280525,14948582,50407049>, r=85501826 +pos=<16341327,60630566,23209623>, r=81987361 +pos=<35544298,7141653,53462714>, r=80599153 +pos=<12352427,23780504,38665328>, r=54856105 +pos=<-28795525,48927841,23033686>, r=59866292 +pos=<-1332507,44683171,-3111696>, r=54242163 +pos=<73352990,43943336,30476067>, r=58619478 +pos=<89677726,21432143,12069449>, r=97067716 +pos=<-20710568,40707411,18669278>, r=55815015 +pos=<-15841618,30557926,22556997>, r=60164363 +pos=<3769282,63958526,31326617>, r=50624631 +pos=<-11147883,53033305,34982237>, r=58272127 +pos=<7555093,35071119,83151794>, r=92849150 +pos=<7566407,65956218,80757773>, r=98256524 +pos=<19866655,43412164,80336085>, r=69380826 +pos=<-24015352,1929021,24044294>, r=98454226 +pos=<44649440,-141655043,36193978>, r=53182359 +pos=<-12225957,65194019,37229504>, r=73758180 +pos=<-175881376,49446353,32213438>, r=70585781 +pos=<20579230,40697260,29888595>, r=96767434 +pos=<-43219102,38288148,15380149>, r=84032261 +pos=<-5527800,85142217,25673604>, r=75452477 +pos=<10067880,-9418818,27558800>, r=79233307 +pos=<-34116003,60856927,27562933>, r=81644744 +pos=<-20223599,40978881,26446821>, r=58015342 +pos=<57601989,62777217,25027881>, r=50926057 +pos=<16693708,11603190,10483833>, r=55700591 +pos=<-5217733,40999449,44007564>, r=60549632 +pos=<59315001,47931730,47911657>, r=60677964 +pos=<-19031382,35467928,22990677>, r=58877691 +pos=<-13688352,22476565,28984213>, r=72519900 +pos=<-17842989,39577406,19380100>, r=53366747 +pos=<25299798,15842613,59362797>, r=70543960 +pos=<-16223403,28002897,11921281>, r=70780367 +pos=<24423896,41078359,29726428>, r=68051426 +pos=<-19032520,71738761,32010392>, r=81890361 +pos=<-4335449,22042991,27469590>, r=62085739 +pos=<-8754975,37304283,-1736000>, r=67667995 +pos=<-20838803,43730180,17312584>, r=54277195 +pos=<50492368,74473336,32210484>, r=62695224 +pos=<7870279,6563477,3513857>, r=76533529 +pos=<21037477,27198385,75302976>, r=79390990 +pos=<-27775219,41778505,54554013>, r=92874311 +pos=<69154846,31610155,56696140>, r=92974669 +pos=<32360477,27293943,72539938>, r=76340220 +pos=<18181200,10945770,29776670>, r=52973261 +pos=<67119408,25294414,40377067>, r=80936079 +pos=<18660529,2051399,-4389324>, r=78158530 +pos=<3648948,44589826,14132927>, r=78882351 +pos=<14257846,-19091877,38522911>, r=95680810 +pos=<-13844665,42374268,31775757>, r=55569793 +pos=<-48495182,40667313,22595262>, r=82747079 +pos=<1440939,40529443,48804401>, r=59157618 +pos=<-49984416,38939947,23793417>, r=87161516 +pos=<-10809389,66015343,16908846>, r=61182250 +pos=<51777770,29793934,45509573>, r=66227169 +pos=<-6483279,17178156,23796644>, r=65425675 +pos=<-29248633,34873951,18214250>, r=70641866 +pos=<44607485,84758277,55303463>, r=90188147 +pos=<-1742676,1638930,42684074>, r=95111534 +pos=<-8503722,58464819,54366513>, r=80443834 +pos=<-4311957,27058550,30950878>, r=60527983 +pos=<-42658286,25818399,17954581>, r=93366472 +pos=<114824604,7220251,103052237>, r=60996059 +pos=<29672314,108651048,12300095>, r=73699739 +pos=<9623385,-31294936,24423941>, r=98419082 +pos=<14153887,50014283,55535718>, r=50504884 +pos=<12139434,9732477,19941638>, r=52668006 +pos=<23585687,6015508,-23953952>, r=88833907 +pos=<-32338153,33921347,34527757>, r=85268566 +pos=<-53168774,43048689,16184318>, r=88416899 +pos=<-12023095,10100961,29583402>, r=83829097 +pos=<-52595716,42166954,26556642>, r=89308973 +pos=<-50239657,44545038,38224055>, r=96242236 +pos=<9782245,23063788,40986324>, r=60463853 +pos=<-26528099,24426208,37566038>, r=91991514 +pos=<-5145386,33875133,6747047>, r=59004353 +pos=<22855872,43774472,28846982>, r=58922888 +pos=<-17120586,43112485,13355751>, r=55133490 +pos=<31509311,-5931639,26455779>, r=62630481 +pos=<-27200936,17908988,27002862>, r=88618440 +pos=<77335363,35979403,41949049>, r=82038871 +pos=<19858811,28639612,23968592>, r=68338077 +pos=<9249767,-11385773,42141399>, r=96601270 +pos=<-25242309,50805992,-14103752>, r=91418305 +pos=<3782000,32400795,-7613039>, r=65911613 +pos=<-722059,37638126,57803619>, r=73211176 +pos=<-45309901,44820287,24767862>, r=77581192 +pos=<-12593133,43858914,52000494>, r=73058299 +pos=<-1175339,28266046,25069815>, r=50302714 +pos=<82466490,44056713,24893791>, r=62037400 +pos=<10012547,-4161256,22595989>, r=69068258 +pos=<37621026,19033196,43908279>, r=61229957 +pos=<-15099390,44820052,42210858>, r=64813931 +pos=<21597184,52246119,45887865>, r=70501016 +pos=<23757721,44058860,-39647021>, r=66311930 +pos=<5327003,16269342,26554683>, r=57281952 +pos=<17498051,27835234,45076494>, r=52066788 +pos=<5713706,7919157,43840691>, r=82531468 +pos=<73279282,36231927,44782053>, r=80563169 +pos=<12657467,79808002,36684196>, r=62943645 +pos=<13787484,87162805,24723931>, r=57208103 +pos=<78998379,54578614,29425623>, r=68521505 +pos=<-3669524,28226269,-18636138>, r=88560523 +pos=<23857074,11106780,47135388>, r=64495098 +pos=<15958627,52218999,55846426>, r=51215797 +pos=<39050847,10957228,-6643893>, r=75629392 +pos=<-1287457,84995265,30082881>, r=75474555 +pos=<10878161,5721831,25272063>, r=60995656 +pos=<-33714882,34620203,39907704>, r=91326009 +pos=<12384119,2880134,33847985>, r=70907292 +pos=<-29603001,30253371,9484556>, r=84346207 +pos=<-32047454,59135219,12838441>, r=79610556 +pos=<-27734122,45133471,23085930>, r=58010157 +pos=<-9646635,26639611,31630818>, r=66961502 +pos=<-38185346,39755717,29507528>, r=80260758 +pos=<5516610,42879217,80069392>, r=83997130 +pos=<-15887949,35602414,24827740>, r=57436899 +pos=<30401123,41131266,74202034>, r=62205647 +pos=<56200087,23426746,-17537877>, r=91203157 +pos=<19014891,41947334,98314045>, r=89675591 +pos=<75191081,34351190,28018155>, r=67591819 +pos=<-174483738,36267871,29465203>, r=81684095 +pos=<57005589,21964316,54624990>, r=88400195 +pos=<-30541661,60068931,23147868>, r=72867151 +pos=<-41672396,33923476,8535145>, r=93694909 +pos=<5450057,40658210,86321528>, r=92536911 +pos=<-26384239,52384147,2879111>, r=77155582 +pos=<35584293,29862491,91346345>, r=95801929 +pos=<21115066,31762973,24796419>, r=96541304 +pos=<44717323,44044436,56708278>, r=56114951 +pos=<78772552,31244148,22566517>, r=68828990 +pos=<-24659899,44467955,31519245>, r=64034772 +pos=<14085988,36246222,34435786>, r=65765249 +pos=<69835199,39963972,25924914>, r=54530056 +pos=<29059415,-2680591,24362577>, r=54836334 +pos=<6554481,36341927,60077391>, r=69504620 +pos=<20904247,44403326,34437306>, r=62139976 +pos=<20795900,34054424,66957161>, r=64430461 +pos=<13976711,-106924755,-14538606>, r=51817430 +pos=<-15958039,41421486,34987696>, r=61848148 +pos=<86343343,44569852,15156040>, r=67508976 +pos=<17273255,22345816,74241942>, r=86946461 +pos=<-15312584,30565040,26455200>, r=63527011 +pos=<9207558,23446026,34147790>, r=53817943 +pos=<-20959667,34860186,31109864>, r=69533220 +pos=<18603087,25988545,64003449>, r=71735392 +pos=<12304109,25507079,42590166>, r=57102540 +pos=<21951181,-27703180,37761776>, r=95837676 +pos=<20848941,38923270,68794139>, r=61345524 +pos=<88718128,41461536,31736618>, r=77727136 +pos=<20026984,34199238,25278993>, r=77761547 +pos=<34804894,15253936,-18893906>, r=79336209 +pos=<11618594,73472697,32793421>, r=53756287 +pos=<5510938,24994382,31520247>, r=53338581 +pos=<-20464632,39272733,24243606>, r=57759071 +pos=<-53661589,34422551,27064786>, r=98627476 +pos=<-9349184,13292776,33678680>, r=82058672 +pos=<-35567140,28673296,6949685>, r=94425291 +pos=<3539642,18293575,33738929>, r=64229339 +pos=<36942131,-10839119,22264392>, r=68779472 +pos=<-4708600,31762717,26126649>, r=51396099 +pos=<24938137,19049025,72800458>, r=81136965 +pos=<854599,4247975,43621500>, r=90842705 +pos=<-59926657,43081369,22467915>, r=91636826 +pos=<5221747,35067747,49925228>, r=61959659 +pos=<36651377,67171878,89034563>, r=98376698 +pos=<4896969,38773218,47482535>, r=56135947 +pos=<-50835193,8764032,106929865>, r=67473908 +pos=<-23892475,35665387,44832682>, r=85383639 +pos=<10229023,19006931,34280363>, r=57368008 +pos=<-13369741,26151057,42526575>, r=82068994 +pos=<19927934,15167955,-3928169>, r=63313514 +pos=<-21866628,43653762,31493397>, r=62029915 +pos=<-22760516,41989640,32952122>, r=66046569 +pos=<29925013,29391523,52350841>, r=51618108 +pos=<74283683,45324788,25503519>, r=53196212 +pos=<-16839922,49540206,47857557>, r=73346651 +pos=<90701741,45206681,13508691>, r=72877687 +pos=<48928823,26128131,54113291>, r=75647804 +pos=<8378820,81877604,24295034>, r=56902572 +pos=<19178181,76758433,33596959>, r=50285907 +pos=<-6434817,14537039,9760422>, r=76618491 +pos=<-12781835,20039784,32280697>, r=77346341 +pos=<434292,16058647,22656600>, r=58487292 +pos=<18959167,93367488,11976502>, r=63698153 +pos=<-44277119,38380575,33605755>, r=91825859 +pos=<-27434733,35492378,18651142>, r=67772375 +pos=<29183770,88725675,54166090>, r=77594511 +pos=<14780601,30172495,17001383>, r=58576203 +pos=<-8130796,11804451,-1471810>, r=92279361 +pos=<-19128184,30959437,26958753>, r=67451069 +pos=<-17242573,73216808,22892616>, r=72460711 +pos=<21104332,54910309,35974910>, r=88696580 +pos=<12893960,23557432,73936484>, r=89808832 +pos=<-13641811,30559854,30392776>, r=65798448 +pos=<-14614392,30297957,36907805>, r=73547859 +pos=<-18382640,50326471,49899431>, r=77717232 +pos=<-29492625,28450830,28236679>, r=81602034 +pos=<18001251,93351065,-14938412>, r=91554580 +pos=<100372289,49493101,28506765>, r=83891082 +pos=<58142106,42824094,63099196>, r=77151044 +pos=<18758835,-5586847,44340933>, r=83492624 +pos=<3841624,40338358,78545876>, r=86689458 +pos=<53677043,39145759,66749197>, r=80014270 +pos=<-43601164,40461938,24654530>, r=80117391 +pos=<20854698,20498391,63947315>, r=74917846 +pos=<52226632,52421594,42317771>, r=52484996 +pos=<-54055590,48699902,23989210>, r=85853422 +pos=<18148227,4961618,64691175>, r=93905054 +pos=<-4818428,41232338,39973075>, r=55883150 +pos=<-11097044,42373878,43044499>, r=64091384 +pos=<25250963,-28012528,36613180>, r=91698457 +pos=<-22344695,14282438,33116320>, r=93502188 +pos=<67240834,36261860,66548400>, r=96261143 +pos=<-4405610,4998168,36787898>, r=88518988 +pos=<15598839,-1087632,33322728>, r=71135159 +pos=<-4739914,-6239539,31414595>, r=94717646 +pos=<34336262,23070412,69059558>, r=79059211 +pos=<15733468,10448812,27456388>, r=53597789 +pos=<13274907,-26199110,29285698>, r=94533524 +pos=<2022327,33697451,43227584>, r=59831384 +pos=<-1559879,33166688,43003775>, r=63720567 +pos=<61055767,55915653,34574383>, r=57064744 +pos=<-45477804,50290240,31037834>, r=85914823 +pos=<32058024,-7498946,14770657>, r=65677811 +pos=<-1693205,41002108,79392855>, r=92407531 +pos=<22543679,6636646,-613233>, r=65914040 +pos=<20542930,71647567,54194498>, r=64408015 +pos=<23738320,38573873,32283814>, r=88005590 +pos=<-22702935,41635152,56386294>, r=89777652 +pos=<11795637,69358759,3306497>, r=55522878 +pos=<-33245567,50524377,28275907>, r=71154602 +pos=<-21171038,44121609,24344461>, r=53717469 +pos=<47352615,42916315,58135589>, r=61305684 +pos=<-3046070,55314711,34804046>, r=52273516 +pos=<9455273,102501481,29161695>, r=81316589 +pos=<7373458,38329974,25185106>, r=73364125 +pos=<-5749277,27496101,30526623>, r=61103459 +pos=<94556015,35738342,32440642>, r=89992190 +pos=<34310870,44196712,42690149>, r=62760841 +pos=<101378864,39092395,29847336>, r=90867659 +pos=<-32406063,42005913,31335791>, r=74059529 +pos=<19149744,41010975,36060345>, r=72183385 +pos=<4035150,72924396,18041520>, r=52114074 +pos=<23701003,36300530,66557437>, r=58879863 +pos=<-31304526,44919210,37657338>, r=76366223 +pos=<-178506040,42141577,15827139>, r=50427942 +pos=<-49825055,48710950,33714255>, r=91358948 +pos=<530277,-6433919,28742374>, r=86969589 +pos=<4438616,15034389,11359840>, r=63648357 +pos=<-20250154,36122318,23945790>, r=60397243 +pos=<-2146474,7953495,32576486>, r=79093045 +pos=<16270311,30209391,65105822>, r=70949684 +pos=<8307411,56206925,57725294>, r=64733851 +pos=<21463055,26015930,49192403>, r=54037355 +pos=<24897346,41417572,-46076396>, r=74242798 +pos=<-11886633,1654632,22118302>, r=84673952 +pos=<24699785,-5724171,12148919>, r=63356614 +pos=<-12259792,39066393,63237726>, r=88754707 +pos=<-4103475,10732459,37294089>, r=82988679 +pos=<837734,19655059,44810067>, r=76640840 +pos=<2951374,14657505,58142753>, r=92857643 +pos=<32398362,24263625,59926233>, r=66794918 +pos=<5535080,29968440,-37304793>, r=96282524 +pos=<38811184,11261952,33611112>, r=59894098 +pos=<-49516622,43239456,22998021>, r=81598797 +pos=<-12494905,3578784,28298778>, r=89538703 +pos=<-1523097,24452189,29166249>, r=58560766 +pos=<43274503,40946494,54319954>, r=55381711 +pos=<11878170,42189489,26777283>, r=70677687 +pos=<21366160,57658818,-33198549>, r=70757762 +pos=<-24082529,43130432,13318020>, r=62115293 +pos=<-46299298,39755152,22828657>, r=81696496 +pos=<-36429905,48836144,30395919>, r=74771178 +pos=<54278000,48516817,45393129>, r=53706975 +pos=<75451221,40837839,32706008>, r=66053139 +pos=<-20989891,20934669,33849377>, r=86228223 +pos=<23579181,111258140,6614124>, r=82331349 +pos=<30705677,90594730,49685972>, r=76505832 +pos=<-10586308,38135312,11831049>, r=55101113 +pos=<-30992789,40227433,-7269885>, r=92516434 +pos=<-7438476,67782400,45186202>, r=79515778 +pos=<60489007,41027961,46455651>, r=64650471 +pos=<-22457331,34032617,51316327>, r=92064689 +pos=<18066622,39814090,71216080>, r=65658933 +pos=<-45723363,43640475,30486272>, r=84892797 +pos=<13356740,4971516,55193136>, r=89188441 +pos=<52639694,17830363,-2206201>, r=77906991 +pos=<22394234,33355798,86660870>, r=83234556 +pos=<22552776,42968519,3563257>, r=52703293 +pos=<-8740699,-4308356,26229382>, r=91602162 +pos=<12772578,77863769,36971345>, r=61171221 +pos=<20927722,33368689,22459261>, r=86676107 +pos=<10679391,30835582,54965756>, r=65774379 +pos=<-12400899,27480143,33731446>, r=70975931 +pos=<22626076,41321543,29649505>, r=64861789 +pos=<-44043198,35064847,31209435>, r=92511381 +pos=<36976677,35633116,22344752>, r=63071117 +pos=<84249760,65511229,31735562>, r=87015460 +pos=<-9893070,36207234,26097344>, r=52107352 +pos=<20396926,44840115,45601874>, r=93702986 +pos=<-10770579,43013875,30085761>, r=50166063 +pos=<-27341249,22652696,25831462>, r=82843868 +pos=<-70648150,27078755,123269970>, r=83569040 +pos=<87934476,23293244,29962758>, r=93337752 +pos=<25320392,-21594255,-7151986>, r=97907037 +pos=<5129866,32249839,80006836>, r=94950738 +pos=<4556460,36868314,70988420>, r=81887280 +pos=<10567747,54860272,58492230>, r=61893464 +pos=<-9216487,43050759,46302076>, r=64791420 +pos=<48000411,7461215,-16987004>, r=98417533 +pos=<-10724334,50868108,-12730932>, r=75589745 +pos=<11602905,33987385,24508910>, r=71737850 +pos=<-54216342,44818305,24619377>, r=86341193 +pos=<-21702588,31919090,35921161>, r=78028331 +pos=<-14728409,71365806,28722789>, r=73926409 +pos=<5416781,20691514,25854036>, r=52069403 +pos=<-4424516,37893154,538401>, r=60474152 +pos=<45834108,48454479,22178905>, r=84988450 +pos=<-1035345,24576724,49978068>, r=78760252 +pos=<-14770616,38067180,46923302>, r=75950434 +pos=<23854904,-9145126,11131103>, r=68640256 +pos=<73915978,28545978,-3607444>, r=89868824 +pos=<-36329500,34368090,27612840>, r=81897818 +pos=<-17354972,48272943,60710397>, r=85447413 +pos=<-24737885,20716510,23484175>, r=79829152 +pos=<-218988,6387890,-7626498>, r=95938742 +pos=<56241040,20958400,41995432>, r=76012004 +pos=<-40027318,39184970,26942072>, r=80107986 +pos=<3646647,15994250,45812795>, r=78495607 +pos=<-52212342,45019997,22292502>, r=81808741 +pos=<4359103,-78806258,-32121755>, r=82853545 +pos=<105803649,41053952,14886023>, r=90755199 +pos=<8961750,44728934,13650872>, r=58677573 +pos=<-23199806,7587896,23788391>, r=91724284 +pos=<-9032117,28101806,-16441887>, r=91853343 +pos=<32415252,65875785,-39239723>, r=85207822 +pos=<57120997,22132941,24622312>, r=58344238 +pos=<10356019,42936807,75050073>, r=74080964 +pos=<140652539,-43737435,38038448>, r=96116334 +pos=<6721757,30706501,67228085>, r=82123388 +pos=<-21039709,41155751,13046767>, r=61318362 +pos=<-37141319,19006093,26771621>, r=97230587 +pos=<11801864,18183046,38881169>, r=61219941 +pos=<-18355697,35308157,26043290>, r=61414523 +pos=<-13011575,53192611,68100260>, r=93413230 +pos=<-19166999,39812871,23309694>, r=54987439 +pos=<-20578072,31887283,47838874>, r=88853277 +pos=<-23986786,9402252,24817163>, r=91725405 +pos=<-47548654,45365485,25410185>, r=79916968 +pos=<-38945722,47603543,8777698>, r=79037823 +pos=<-39622978,42178316,46332264>, r=96100577 +pos=<43288573,39712384,-45354780>, r=89822468 +pos=<4327629,91684942,-8536922>, r=97160507 +pos=<-26737863,19809095,8397190>, r=93012873 +pos=<9940394,8930565,37150232>, r=70602980 +pos=<-41589709,39664102,37055246>, r=91304414 +pos=<-36928793,22025868,25084909>, r=92311454 +pos=<90827716,47671528,18947735>, r=67228108 +pos=<17251834,7982644,23848592>, r=50937689 +pos=<-7397280,23351924,42038418>, r=78407460 +pos=<25779564,35332117,59686204>, r=50898096 +pos=<2982669,35648172,71361652>, r=85054780 +pos=<-7841664,70929079,56670628>, r=94550085 +pos=<23365963,16233016,1199610>, r=53682631 +pos=<4272989,19128467,22111481>, r=51033585 +pos=<-15415829,25487584,12567433>, r=71841963 +pos=<-21236099,39013092,28748396>, r=63294980 +pos=<25156894,34543708,68301909>, r=60925272 +pos=<17185160,1019781,28376836>, r=62495471 +pos=<50330510,-11050298,39103678>, r=99218254 +pos=<-32107811,25841347,30931450>, r=89521481 +pos=<21564111,7638483,-28810762>, r=94089355 +pos=<21376510,-22879412,32883280>, r=86710021 +pos=<-13330760,99108862,24866379>, r=96414872 +pos=<-30098529,16401729,26940009>, r=92960447 +pos=<-21136492,11570291,28979106>, r=90868891 +pos=<16203311,43536816,63806646>, r=56390130 +pos=<-26536787,11836892,30480229>, r=97503690 +pos=<-15743685,71267215,37742097>, r=83861720 +pos=<18661210,19403188,-35872746>, r=92289586 +pos=<-7605068,18234254,11131836>, r=72720111 +pos=<-14733840,27773966,14868899>, r=66572557 +pos=<-5568961,23409948,41560845>, r=76044030 +pos=<-12158176,21630180,41903179>, r=84754751 +pos=<-4258672,27085138,59661441>, r=89158546 +pos=<22786970,35296139,22692396>, r=79940586 +pos=<14950783,37360216,54617364>, r=54629926 +pos=<167766815,-18855133,22721686>, r=80308370 +pos=<12644766,42732906,26874695>, r=51438121 +pos=<29913132,1399259,9432098>, r=59973110 +pos=<-54863876,35033048,26499128>, r=98653556 +pos=<-20767168,52409652,23490477>, r=55775994 +pos=<11989862,42418809,26236732>, r=92932377 +pos=<-37795083,42661847,25384934>, r=72841760 +pos=<-15083646,35480334,24884520>, r=56811398 +pos=<-23937308,40472893,25543073>, r=61331048 +pos=<-2763366,41273711,-8069352>, r=64040573 +pos=<-9180550,16692482,46436104>, r=91248083 +pos=<11482546,62862983,84217035>, r=94706419 +pos=<22534015,4309138,44043712>, r=69524227 +pos=<-32070661,34091750,26497531>, r=76800137 +pos=<12981088,17531351,35670173>, r=57481329 +pos=<55432686,-5962211,32420056>, r=92548802 +pos=<44362449,29411228,58481212>, r=72166322 +pos=<-5576071,21131208,43922486>, r=80690924 +pos=<-16858077,20555758,44709681>, r=93335816 +pos=<13799580,41085804,22200685>, r=59373537 +pos=<9721225,79635030,55622955>, r=84645456 +pos=<5042098,9747375,41645778>, r=79179869 +pos=<-60236669,8644236,98640778>, r=85865305 +pos=<-18765598,38132065,23235129>, r=56192510 +pos=<-307827,-15359154,15650806>, r=94497725 +pos=<24095927,22937639,-9596953>, r=57044579 +pos=<44225564,3816012,47433088>, r=86576388 +pos=<-33949157,30792312,33150137>, r=88630758 +pos=<1928395,-15019055,13888266>, r=93683978 +pos=<72495249,58875901,-4315740>, r=83363389 +pos=<4174616,5523313,36933444>, r=79559177 +pos=<12891142,41387527,-48589368>, r=88791829 +pos=<56772251,14247895,30173554>, r=71431758 +pos=<-21978717,43205503,18382492>, r=54872019 +pos=<21940277,-3764592,64144715>, r=98292702 +pos=<8695396,17114695,68378831>, r=94892441 +pos=<65325134,23169004,50907131>, r=91797079 +pos=<82254733,-67471483,59554954>, r=50748376 +pos=<18439543,117498552,27352684>, r=85520468 +pos=<24374807,21878102,-8753327>, r=56981605 +pos=<-3982794,32933543,27255680>, r=50628696 +pos=<2218552,30064171,56435619>, r=76476912 +pos=<-25030988,42497072,27540532>, r=62398127 +pos=<3917299,35907515,42412231>, r=54911503 +pos=<11142675,54042528,22411844>, r=58117519 +pos=<78121522,44724128,-12682252>, r=86970966 +pos=<11331224,40212856,16897514>, r=91295832 +pos=<20717680,-28609786,27417831>, r=87633605 +pos=<-51339164,29260191,24015325>, r=98418109 +pos=<3684354,-18378118,32378119>, r=99395444 +pos=<-47783355,33657882,15562276>, r=93044467 +pos=<4571289,-9201866,5076059>, r=94035854 +pos=<21937483,42176960,-40056595>, r=70423292 +pos=<-2617808,37681665,55004485>, r=72264213 +pos=<-4965560,19404971,29688369>, r=67572641 +pos=<22818783,101652745,42498420>, r=80441069 +pos=<9886040,32971990,59926640>, r=69392176 +pos=<-43332042,44333034,46582118>, r=97904701 +pos=<22000266,38655032,24842411>, r=56948298 +pos=<87504880,18655830,14227928>, r=95512641 +pos=<-29803746,34545590,-963237>, r=90702964 +pos=<32927877,28988719,80088863>, r=82761987 +pos=<69350240,44862736,-26182417>, r=91561747 +pos=<38686166,30315573,49747456>, r=56851806 +pos=<-55889553,40423566,24476868>, r=92266417 +pos=<-53996406,40667629,25325356>, r=90977699 +pos=<9837060,35070692,-13058915>, r=62632388 +pos=<63975,27995442,42068350>, r=66332551 +pos=<69610372,51849647,34411049>, r=61390010 +pos=<15441800,23059742,-36205828>, r=92185680 +pos=<-8758762,99409187,24091942>, r=91368778 +pos=<13437457,8718500,34298572>, r=64466202 +pos=<-14734624,36540521,40692058>, r=71209737 +pos=<-10805485,61014428,55675676>, r=86604285 +pos=<95031687,37623042,30825969>, r=86968381 +pos=<-54508254,43708116,14285602>, r=90996457 +pos=<12068130,85540820,40471326>, r=73052802 +pos=<-55394165,61354563,22703112>, r=98560746 +pos=<-2493829,12354037,33857572>, r=76320954 +pos=<24137346,-2060672,-22853532>, r=95258279 +pos=<9711728,27184151,70245145>, r=85672828 +pos=<17948762,92196112,50930943>, r=84287222 +pos=<-1055219,18791425,19194328>, r=57550610 +pos=<1332921,72415493,58334519>, r=88525779 +pos=<-13110848,70892295,44674617>, r=87786450 +pos=<-36692891,33681547,10477556>, r=87014939 +pos=<-9381946,-198477,29393662>, r=91297695 +pos=<72341354,43306669,14897116>, r=55029281 +pos=<-46498812,42266542,29257038>, r=85813132 +pos=<10052226,32036517,-16001086>, r=68393515 +pos=<48548832,-25272644,23703277>, r=96258663 +pos=<-1371921,62457017,-32029715>, r=97124933 +pos=<78146,5903944,29435326>, r=75776821 +pos=<-60945587,52446038,24745097>, r=97245425 +pos=<-16614063,42030398,58612889>, r=85520114 +pos=<-28067086,75422371,16420368>, r=88335350 +pos=<-32925460,37633684,25248290>, r=72863639 +pos=<-29215851,51593881,41708921>, r=81627361 +pos=<-12447430,32873333,22742245>, r=54640118 +pos=<-60203520,42507297,24478973>, r=94498825 +pos=<49960240,53942131,24970075>, r=53633226 +pos=<71049989,41842169,30748361>, r=58690118 +pos=<21111044,41148745,79707252>, r=69771105 +pos=<13666364,23925902,47476009>, r=62207550 +pos=<20546044,43004353,5350428>, r=51955886 +pos=<-33549725,43470604,40856801>, r=83259822 +pos=<6437266,3135634,12919128>, r=71989311 +pos=<-41063773,48183997,37346790>, r=85703554 +pos=<30313305,38345087,36894569>, r=66379388 +pos=<-18809666,36862202,32712578>, r=66983681 +pos=<-20900492,41304867,8620885>, r=65455896 +pos=<17485215,87636744,-9137954>, r=80555776 +pos=<92525835,65252687,23272970>, r=86570417 +pos=<-45045030,51080511,28754256>, r=83988510 +pos=<-57560306,65502207,-85096849>, r=70228776 +pos=<87626687,47722697,24059070>, r=64927476 +pos=<4140971,53518187,62756244>, r=71242145 +pos=<11867063,-2694600,45066715>, r=88218172 +pos=<2329463,26617767,34275769>, r=57652103 +pos=<51883678,10956970,46379419>, r=86039876 +pos=<14285788,7733496,37713968>, r=68018244 +pos=<-19129747,35328177,-1893671>, r=80176908 +pos=<22333653,201652446,71827749>, r=58964344 +pos=<-907835,6761313,28063879>, r=74533969 +pos=<19096693,14169562,77177174>, r=96234480 +pos=<-13555280,39947467,31257005>, r=57188549 +pos=<-23321156,37838082,33599337>, r=71406021 +pos=<-29926065,35565471,50043782>, r=96728009 +pos=<8929247,45327683,29205945>, r=76556627 +pos=<18767658,-4398806,24894798>, r=62849529 +pos=<519725,12912186,30019815>, r=68911474 +pos=<-13439252,43735675,14253617>, r=49931174 +pos=<-2349333,15739487,32526574>, r=71459980 +pos=<15015956,71410677,-2603209>, r=60264185 +pos=<10155688,35793212,48716601>, r=55091280 +pos=<-4500180,45267532,48233091>, r=59789314 +pos=<47568275,104621264,14271663>, r=85594361 +pos=<-106637928,3979160,61175161>, r=55972712 +pos=<-27258254,38395776,22325090>, r=63511465 +pos=<-23331738,40081133,23956179>, r=59530403 +pos=<-4800780,-4278809,15085892>, r=88474883 +pos=<42369227,328832,23036106>, r=63810311 +pos=<-11792941,42764737,68570922>, r=89922735 +pos=<55358595,44610450,41681555>, r=51163511 +pos=<63045756,44306170,52040544>, r=69513917 +pos=<19141574,43790283,65102625>, r=54494389 +pos=<15737112,11892610,27962794>, r=52656668 +pos=<40965170,65910555,48834340>, r=61229062 +pos=<17475032,17678335,35992314>, r=53162539 +pos=<-62804534,44613356,25703101>, r=96217858 +pos=<-2286993,42039563,-4296516>, r=59025156 +pos=<25568928,-7902859,53276886>, r=87934409 +pos=<-5297307,30702837,26926217>, r=53844352 +pos=<20695500,35382645,30876678>, r=59849730 +pos=<-16580642,-119835,22293823>, r=91317860 +pos=<-31688173,42068143,22669433>, r=64613144 +pos=<15110398,50364198,63283882>, r=57646373 +pos=<11754020,35466465,47503642>, r=52607280 +pos=<13366727,55030605,74717266>, r=75489826 +pos=<3439353,32024996,-1069018>, r=60085954 +pos=<-9751730,40878007,29778924>, r=50976213 +pos=<-32032580,33123583,19456950>, r=73933242 +pos=<-23800071,44112355,27420525>, r=59432096 +pos=<25423336,82090768,63262447>, r=79038585 +pos=<56710479,65795335,9990452>, r=60192115 +pos=<-54885458,44927744,23066110>, r=85347648 +pos=<-45272881,51417011,27102713>, r=82901375 +pos=<45354135,33875625,43900843>, r=54113108 +pos=<-17473637,40516358,28252489>, r=57533362 +pos=<-9572996,44216872,43079585>, r=60759490 +pos=<105236178,31534804,22426179>, r=94861792 +pos=<-18344425,22504722,23071714>, r=71235373 +pos=<22110925,70234609,70850869>, r=78083276 +pos=<3252921,-10976658,34207839>, r=94255354 +pos=<-28840403,39454554,4945566>, r=78921418 +pos=<34884824,86971698,58367641>, r=85743056 +pos=<-33377406,43784701,46316519>, r=88232881 +pos=<19569751,16700119,33853181>, r=49906871 +pos=<23606604,35479835,22129845>, r=75879892 +pos=<18892082,14398695,55249696>, r=74282491 +pos=<7822986,24233348,59037436>, r=79304761 +pos=<1616935,40247591,23734626>, r=94538533 +pos=<25017363,43272978,73661896>, r=57695170 +pos=<5002639,11445977,-7970756>, r=86003453 +pos=<19887829,35993879,-34811563>, r=73411051 +pos=<36105243,21461820,76132526>, r=89510338 +pos=<81476620,48845681,15795591>, r=62203795 +pos=<-9169441,5660472,3283809>, r=94706573 +pos=<13669114,44936862,94875821>, r=88593474 +pos=<-23232584,39535871,49360036>, r=85380439 +pos=<-1963258,81638855,41723470>, r=84434305 +pos=<16544668,27989391,61008449>, r=68797961 +pos=<8982134,24633630,40941440>, r=59649467 +pos=<25435713,19100497,47776086>, r=55563758 +pos=<57105943,66491523,19021195>, r=52253002 +pos=<-34872878,35266624,31736261>, r=83666086 +pos=<-35938359,45102040,30253507>, r=73413404 +pos=<-2912935,33441571,-10093434>, r=74045966 +pos=<8869409,2584663,47571021>, r=88440528 +pos=<125536,9356892,28312755>, r=71154164 +pos=<73130297,68674020,49119656>, r=96443194 +pos=<-64489100,48195595,24285553>, r=96078996 +pos=<1262420,27518286,-13296406>, r=78996905 +pos=<8227546,70369609,67066948>, r=88317714 +pos=<-15491692,35506578,44596827>, r=76905502 +pos=<-22681017,19813404,25256386>, r=80447573 +pos=<-28296412,39471242,48227002>, r=89375740 +pos=<66267014,19106385,13906300>, r=74145821 +pos=<-4927598,58466882,29229381>, r=51732649 +pos=<-10207406,72793234,53038470>, r=95147814 +pos=<-13047816,30664005,49354730>, r=84062117 +pos=<64285276,35821937,56793738>, r=83990838 +pos=<60585451,43622502,35690105>, r=51387136 +pos=<-45925390,45387096,19630867>, r=75388580 +pos=<4311556,5662498,30945553>, r=73295061 +pos=<-13622787,51662956,3347395>, r=63204770 +pos=<47767309,30085725,7387828>, r=51185277 +pos=<-4685338,41588554,35539530>, r=50959917 +pos=<24995485,63208392,68005637>, r=65327272 +pos=<25730462,15374704,57396141>, r=68614825 +pos=<10228246,26684341,56342927>, r=71753969 +pos=<-19184742,69238414,51896760>, r=99428620 +pos=<-24481593,29543259,29827952>, r=77090233 +pos=<-5452341,38485432,46167256>, r=65457728 +pos=<-13317708,8957078,40516907>, r=97201336 +pos=<3567708,22800956,24694949>, r=50649863 +pos=<-21222324,22420926,23377907>, r=74503478 +pos=<29851165,-20431679,36897972>, r=85914821 +pos=<2040640,63659981,56387719>, r=77115821 +pos=<-31473051,33837928,24484260>, r=74443174 +pos=<20563010,39156158,89169525>, r=81773942 +pos=<-8474793,44875119,5993328>, r=52087763 +pos=<-12076871,36445363,12667064>, r=57445586 +pos=<-13535456,16303956,29575515>, r=79130914 +pos=<17762704,36205081,24501384>, r=83355762 +pos=<-50481374,44761914,40775848>, r=98818904 +pos=<-119779275,34681902,86225994>, r=73844836 +pos=<-328617,56045560,34660000>, r=50142962 +pos=<8521034,43943432,-32740636>, r=74757344 +pos=<14578694,8074724,-6953969>, r=78781765 +pos=<1798240,-16831070,11982148>, r=97531816 +pos=<22273014,22000402,23545757>, r=95514863 +pos=<218550620,44805514,-1462247>, r=73418807 +pos=<64341038,44587355,-804942>, r=61450049 +pos=<10117580,35634034,22734598>, r=67222576 +pos=<184870279,71633139,48204976>, r=73423447 +pos=<78637297,36073201,-9110379>, r=92565793 +pos=<23376112,23866870,63251251>, r=68331931 +pos=<95236756,26878748,17907077>, r=91342367 +pos=<30404541,33707445,91117596>, r=86548942 +pos=<12903918,43470562,22151033>, r=58280087 +pos=<-458777,38841153,46051451>, r=59992654 +pos=<17487555,41505113,23563460>, r=81744793 +pos=<-7903823,25361445,26256852>, r=61122807 +pos=<20896971,14557066,41171237>, r=58041501 +pos=<-11169916,18871337,48929340>, r=93551647 +pos=<10141065,47966488,56516059>, r=53450172 +pos=<4033121,42604123,79739151>, r=85425676 +pos=<4022764,41316431,75080262>, r=82064709 +pos=<9338304,27952812,35090776>, r=50123371 +pos=<23594133,11010141,58653974>, r=76373405 +pos=<-11296323,40707975,42264947>, r=65176855 +pos=<23550453,15528414,-8735312>, r=64137691 +pos=<-31544269,48424365,43728045>, r=82805621 +pos=<-15688417,33284847,45963274>, r=80690659 +pos=<18970939,65867111,27539702>, r=91067634 +pos=<-20268157,18663151,44551226>, r=98479907 +pos=<-44887068,44051250,35489653>, r=88649052 +pos=<-22073075,41300058,15847584>, r=59406570 +pos=<91023704,16569929,22103684>, r=95291261 +pos=<10776966,-23842259,32058933>, r=97447865 +pos=<3255669,30975143,35185654>, r=53278415 +pos=<19472316,91476555,14280926>, r=58989706 +pos=<-8792264,39241080,38292769>, r=60167602 +pos=<63774515,39496383,34180912>, r=57192803 +pos=<-44193515,59820424,29625290>, r=92747914 +pos=<1919527,30265361,57034369>, r=77173086 +pos=<11104153,35643856,-3817913>, r=51551209 +pos=<-112091829,26130919,75315313>, r=84141080 +pos=<-39446134,37624126,36235648>, r=90381404 +pos=<12171588,-17759662,29920129>, r=87832002 +pos=<15150672,17029428,37887852>, r=58031467 +pos=<-20919804,54700540,16618188>, r=60268684 +pos=<57859363,-5714310,31165593>, r=93473035 +pos=<32186921,45568706,32088219>, r=95426576 +pos=<55750943,22529702,38470096>, r=70425119 +pos=<-3384568,36311671,-13726373>, r=75280581 +pos=<-17834438,30482464,38984666>, r=78660740 +pos=<-3607785,7479923,19671111>, r=70937887 +pos=<-8423274,40482701,41464499>, r=61728640 +pos=<-2513801,6355542,36778803>, r=85260679 +pos=<-3073911,59769964,64285576>, r=86238221 +pos=<63926017,48456366,33519076>, r=51420733 +pos=<34831029,4663971,14188588>, r=56869939 +pos=<16032702,37460112,93559912>, r=92390658 +pos=<4653537,49475089,61103263>, r=65033722 +pos=<22493114,40472532,99792456>, r=89150371 +pos=<5420934,20304952,-3930372>, r=72685746 +pos=<-50971075,42666744,31561744>, r=92189673 +pos=<44069589,9267284,23605176>, r=57141667 +pos=<7956296,110931,39456190>, r=83712545 +pos=<-7579795,36291259,45415353>, r=69027451 +pos=<-29087438,35072556,13547870>, r=74948163 +pos=<-19623663,39823962,33954723>, r=66078234 +pos=<31157312,34617673,99187777>, r=94461226 +pos=<-10807297,23372419,37854945>, r=77613416 +pos=<30178588,43003846,33024070>, r=85560096 +pos=<55141701,1635431,31884969>, r=84125023 +pos=<25224994,20637939,69901805>, r=76362550 +pos=<53242879,43600825,18027700>, r=89515779 +pos=<8018703,32787373,62995707>, r=74513261 +pos=<-6080284,38863712,4300918>, r=57397056 +pos=<39875621,35768878,-43530839>, r=88528902 +pos=<13810974,34336987,23985506>, r=54009449 +pos=<-7379529,44373197,37080353>, r=52410268 +pos=<-1453647,42894661,52028729>, r=62911692 +pos=<14044298,2703327,37368517>, r=72944566 +pos=<-109151,54402749,51662475>, r=65283057 +pos=<35474369,39005910,22305787>, r=54412508 +pos=<11533575,34544313,13044363>, r=89402548 +pos=<15339801,53822987,32319469>, r=77290991 +pos=<60275069,72800876,33181831>, r=71776757 +pos=<33175529,-16335996,41920002>, r=90165277 +pos=<5485568,-5812345,11648941>, r=83158968 +pos=<40122357,42064668,90997151>, r=87788592 +pos=<-11338684,27428639,61707054>, r=97940663 +pos=<-4312871,43082275,-28232826>, r=83944942 +pos=<87455411,37204662,40012927>, r=88997584 +pos=<-15241582,38029649,27499863>, r=57035500 +pos=<36668181,44060344,27654736>, r=56203303 +pos=<4988038,15527969,12393341>, r=61571988 +pos=<-23795050,61641721,29866748>, r=74412237 +pos=<8798121,36986153,91009630>, r=97548978 +pos=<15876086,2185255,6116791>, r=70303296 +pos=<17804128,55888393,-18036401>, r=57387313 +pos=<-8488488,45317759,-2271548>, r=59923414 +pos=<-2206612,13314301,34827601>, r=76043547 +pos=<-2926438,33951074,34394282>, r=55693322 +pos=<-50987500,51365146,34535841>, r=95997265 +pos=<-23971550,50297118,61910902>, r=95288624 +pos=<-129887247,68556955,63495015>, r=94366054 +pos=<-9039860,36804820,13589883>, r=53126300 +pos=<44192180,47610045,55639125>, r=52960240 +pos=<-34293806,40792170,27854378>, r=73679638 +pos=<-30295743,35323764,34725278>, r=82020851 +pos=<9418139,-5026295,31723587>, r=79655304 +pos=<12561531,8723984,64708727>, r=95746961 +pos=<-39599878,43004639,36841544>, r=85760650 +pos=<8870115,50197945,54420868>, r=54857456 +pos=<-38857244,37394946,6453545>, r=89490156 +pos=<4850291,19722370,40602369>, r=68353278 +pos=<-7403676,24303009,35084557>, r=70508822 +pos=<18228185,-9366667,49203681>, r=92665723 +pos=<-18886501,72976294,22833293>, r=73804779 +pos=<13931397,-9157229,47116239>, r=94665634 +pos=<-25184611,36270079,28500408>, r=69738507 +pos=<87252,21609752,44278492>, r=74905109 +pos=<17150904,22446447,41289276>, r=54015524 +pos=<60775009,32650202,-25768006>, r=94784211 +pos=<14713909,47821806,12676665>, r=92645899 +pos=<24098313,21366220,54104509>, r=60963536 +pos=<-2326957,35899495,38900329>, r=57651524 +pos=<11972580,21212328,7092879>, r=54203400 +pos=<1591256,34933212,57280970>, r=73080065 +pos=<-5466329,28904381,36970606>, r=65856124 +pos=<3292749,76810180,62846964>, r=95473077 +pos=<-16737972,41689089,34413135>, r=61785607 +pos=<-12603247,51736166,38018645>, r=61466776 +pos=<31817268,40072592,-59734830>, r=92370835 +pos=<33600844,31358766,54114946>, r=55090811 +pos=<-41683717,41453281,27381341>, r=79935528 +pos=<18265041,33617330,61523488>, r=61964869 +pos=<43304772,85774477,17337631>, r=59418058 +pos=<21648382,27141301,33371514>, r=63200014 +pos=<-12446851,44834967,56779553>, r=76715004 +pos=<48149448,37995611,49475829>, r=58363446 +pos=<-3399992,27125364,35279228>, r=63877449 +pos=<-6362253,54528029,-6249433>, r=68406125 +pos=<706598,43440005,44425827>, r=52602816 +pos=<11331215,45258379,103690114>, r=99424084 +pos=<22891803,4928259,60212391>, r=84715926 +pos=<8709481,17581746,52608317>, r=78640764 +pos=<20721921,3878697,62400960>, r=90124207 +pos=<-10499264,34343341,5926166>, r=64710901 +pos=<-23940996,37439682,18852474>, r=62130109 +pos=<2993126,-5057586,25674058>, r=80062113 +pos=<-10752495,36090335,28165499>, r=55151230 +pos=<8645884,61256357,74742570>, r=86462294 +pos=<6730561,61290920,68466081>, r=82135131 +pos=<-48625286,35476003,23635448>, r=89108291 +pos=<23433419,36563428,26620726>, r=76706444 +pos=<1898982,30815543,51506757>, r=71115998 +pos=<-16491650,37418734,1510556>, r=72043504 +pos=<-31304236,60326054,36891666>, r=87630860 +pos=<-25662273,43305296,23664652>, r=58345347 +pos=<-15937505,38617326,31725978>, r=61369865 +pos=<-42286688,42285537,28314952>, r=80639759 +pos=<-10400257,33956344,49500437>, r=78268196 +pos=<-44637025,45538548,16635504>, r=76944165 +pos=<-21426446,35446208,23311299>, r=61615153 +pos=<-24736257,31993293,34263937>, r=79330594 +pos=<10921839,9489501,15010283>, r=59059514 +pos=<-9272355,40603471,34329724>, r=55322222 +pos=<13084584,38638832,-48428096>, r=91185811 +pos=<-43280262,43127886,28654127>, r=81130216 +pos=<12467313,72478993,48741276>, r=67861715 +pos=<42043117,47623531,33900438>, r=84042898 +pos=<323836,54070168,45533613>, r=58388668 +pos=<-8359175,838558,33617263>, r=93461448 +pos=<13054369,60941634,-48742311>, r=97895866 +pos=<-14413499,27741596,29911794>, r=68907700 +pos=<-36226655,38819340,24318633>, r=74049864 +pos=<51746129,47666299,12465443>, r=74117141 +pos=<76707875,44481677,23054739>, r=54014996 +pos=<-47782237,30141868,22773412>, r=92737344 +pos=<-13021464,57784152,31170823>, r=61085291 +pos=<-1982243,34339590,29962958>, r=49929174 +pos=<18707492,-18714230,-578102>, r=95066130 +pos=<-7550751,-15001528,-96576988>, r=50266620 +pos=<-1888345,33393438,78399196>, r=99217754 +pos=<-5874915,37994231,45774592>, r=65978839 +pos=<-23360140,20364655,42923024>, r=98242076 +pos=<19052653,26701511,-16882709>, r=65609699 +pos=<-8241188,26987434,-20768083>, r=96503011 +pos=<-23940163,41093817,56652938>, r=91822844 +pos=<30237802,102441696,25569464>, r=63768475 +pos=<-15225106,27263654,29021534>, r=69306549 +pos=<74933465,45567456,60436598>, r=88536358 +pos=<96006530,45389302,14980412>, r=76528275 +pos=<13311702,38199761,27411011>, r=75077339 +pos=<14595270,33878984,25807378>, r=81441857 +pos=<-20954995,44747486,23923172>, r=52454251 +pos=<16111601,27254236,42343279>, r=51301297 +pos=<47372138,56694644,64140898>, r=73726557 +pos=<-37628346,45604673,30927256>, r=75274807 +pos=<9855134,42554936,63900237>, r=63813785 +pos=<75613424,50145291,41345801>, r=72623408 diff --git a/2018/day23/testinput b/2018/day23/testinput index 645e692..738f04e 100644 --- a/2018/day23/testinput +++ b/2018/day23/testinput @@ -1,9 +1,6 @@ -pos=<0,0,0>, r=4 -pos=<1,0,0>, r=1 -pos=<4,0,0>, r=3 -pos=<0,2,0>, r=1 -pos=<0,5,0>, r=3 -pos=<0,0,3>, r=1 -pos=<1,1,1>, r=1 -pos=<1,1,2>, r=1 -pos=<1,3,1>, r=1 +pos=<10,12,12>, r=2 +pos=<12,14,12>, r=2 +pos=<16,12,12>, r=4 +pos=<14,14,14>, r=6 +pos=<50,50,50>, r=200 +pos=<10,10,10>, r=5