@main struct Day19: Puzzle { func run() { var locations = Array(repeating: [Vector(0, 0, 0)], count: input.count) while input.count > 1 { for i in input.indices { for j in input.index(after: i).. (Matrix, Vector)? { let referenceSet = Set(reference) for matrix in directions { let points = input.map { matrix * $0 } let possibleShifts = findPossibleShifts(points, reference) for shift in possibleShifts { let shifted = points.lazy.map { $0 - shift }.filter { referenceSet.contains($0) }.count if shifted >= 12 { return (matrix, shift) } } } return nil } func findPossibleShifts(_ a: [Vector], _ b: [Vector]) -> Set { var result: Set = [] for pointA in a { for pointB in b { result.insert(pointA - pointB) } } return result } struct Vector: Hashable { var x, y, z: Int init(_ x: Int, _ y: Int, _ z: Int) { self.x = x self.y = y self.z = z } static func +(lhs: Vector, rhs: Vector) -> Vector { Vector(lhs.x + rhs.x, lhs.y + rhs.y, lhs.z + rhs.z) } static func - (lhs: Vector, rhs: Vector) -> Vector { .init(lhs.x - rhs.x, lhs.y - rhs.y, lhs.z - rhs.z) } } func manhattenDistance(_ a: Vector, _ b: Vector) -> Int { abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z) } struct Matrix { var a, b, c: Int var d, e, f: Int var g, h, i: Int init(_ a: Int, _ b: Int, _ c: Int, _ d: Int, _ e: Int, _ f: Int, _ g: Int, _ h: Int, _ i: Int) { (self.a, self.b, self.c) = (a, b, c) (self.d, self.e, self.f) = (d, e, f) (self.g, self.h, self.i) = (g, h, i) } init(rows a: Vector, _ b: Vector, _ c: Vector) { self.init( a.x, a.y, a.z, b.x, b.y, b.z, c.x, c.y, c.z ) } } func *(lhs: Matrix, rhs: Vector) -> Vector { Vector( lhs.a * rhs.x + lhs.b * rhs.y + lhs.c * rhs.z, lhs.d * rhs.x + lhs.e * rhs.y + lhs.f * rhs.z, lhs.g * rhs.x + lhs.h * rhs.y + lhs.i * rhs.z ) } func cross(_ a: Vector, _ b: Vector) -> Vector { Vector( a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x ) } func dot(_ a: Vector, _ b: Vector) -> Int { a.x * b.x + a.y * b.y + a.z * b.z } func calcDirections() -> [Matrix] { let axes: [Vector] = [ .init(1, 0, 0), .init(0, 1, 0), .init(0, 0, 1), .init(-1, 0, 0), .init(0, -1, 0), .init(0, 0, -1), ] var result: [Matrix] = [] for fi in axes.indices { let forward = axes[fi] for fj in axes.indices where fi != fj { let up = axes[fj] if dot(forward, up) != 0 { continue } let right = cross(up, forward) result.append(.init(rows: forward, right, up)) } } return result } let directions = calcDirections() var input: [[Vector]] = [ [ Vector(-779,774,841), Vector(-623,687,-622), Vector(-569,692,-472), Vector(-815,791,890), Vector(545,-807,-699), Vector(655,564,594), Vector(-781,645,919), Vector(561,908,-538), Vector(-453,-675,694), Vector(-885,-565,-404), Vector(596,-595,-679), Vector(464,-620,445), Vector(481,-658,-759), Vector(-574,-702,800), Vector(-145,151,93), Vector(-814,-575,-354), Vector(-611,653,-643), Vector(532,950,-506), Vector(-475,-638,816), Vector(403,-510,477), Vector(736,559,518), Vector(-17,7,140), Vector(-861,-741,-321), Vector(513,-554,586), Vector(518,512,519), Vector(549,924,-562), ], [ Vector(689,772,-758), Vector(537,371,685), Vector(-672,-658,689), Vector(123,51,-21), Vector(-401,435,-501), Vector(12,-98,95), Vector(735,588,-720), Vector(844,-573,-785), Vector(-423,-889,-362), Vector(-816,-649,595), Vector(655,605,-727), Vector(785,-703,-813), Vector(536,-624,720), Vector(-360,-902,-383), Vector(-432,400,599), Vector(-689,-669,583), Vector(625,506,710), Vector(455,445,698), Vector(650,-556,751), Vector(747,-531,-750), Vector(-346,-875,-402), Vector(-417,420,420), Vector(-501,413,-386), Vector(490,-584,661), Vector(-499,374,505), Vector(-449,476,-453), ], [ Vector(663,667,-407), Vector(-595,-818,-576), Vector(-309,605,562), Vector(-598,-610,-587), Vector(-517,-586,691), Vector(46,-151,22), Vector(-881,281,-669), Vector(732,-947,-380), Vector(587,624,746), Vector(-55,-3,100), Vector(-458,-497,709), Vector(593,687,-248), Vector(572,498,738), Vector(694,-939,-344), Vector(401,-634,682), Vector(-847,239,-653), Vector(397,-527,600), Vector(-610,-743,-467), Vector(-474,659,598), Vector(-414,-596,646), Vector(657,542,-317), Vector(-397,630,676), Vector(378,-659,657), Vector(-848,236,-666), Vector(514,509,638), Vector(753,-870,-512), ], [ Vector(438,673,-607), Vector(-400,-430,341), Vector(-795,-514,-738), Vector(-705,-416,-761), Vector(760,-806,792), Vector(-469,803,349), Vector(670,-798,675), Vector(363,648,-428), Vector(-349,-447,506), Vector(-425,412,-482), Vector(520,455,660), Vector(452,-616,-878), Vector(553,372,771), Vector(24,68,-59), Vector(654,413,728), Vector(-464,-413,481), Vector(-404,598,-552), Vector(-459,781,522), Vector(538,-597,-851), Vector(-346,488,-476), Vector(420,-481,-842), Vector(-470,896,540), Vector(651,-822,721), Vector(421,522,-506), Vector(-690,-511,-769), ], [ Vector(844,592,402), Vector(-636,679,516), Vector(-720,-400,911), Vector(-509,-714,-788), Vector(-826,755,-326), Vector(39,-121,70), Vector(661,741,-539), Vector(727,636,527), Vector(869,-741,-241), Vector(742,-762,619), Vector(-703,-565,962), Vector(725,-852,686), Vector(-639,710,621), Vector(829,579,592), Vector(654,730,-279), Vector(-737,-540,847), Vector(-734,702,606), Vector(-487,-705,-778), Vector(799,-689,-246), Vector(-754,837,-380), Vector(854,-715,-315), Vector(754,-648,701), Vector(-615,725,-335), Vector(-628,-713,-672), Vector(736,727,-443), ], [ Vector(-405,590,-366), Vector(-409,651,-375), Vector(439,489,371), Vector(-542,-507,536), Vector(-367,404,-381), Vector(299,-367,848), Vector(-670,-452,-700), Vector(-49,132,11), Vector(340,-226,895), Vector(478,-800,-337), Vector(613,500,-723), Vector(279,-348,939), Vector(-558,-502,654), Vector(390,411,415), Vector(366,500,429), Vector(400,-731,-350), Vector(-612,-578,-728), Vector(629,662,-720), Vector(-522,-490,-688), Vector(-453,406,393), Vector(-679,460,405), Vector(-652,411,356), Vector(-532,-505,547), Vector(707,591,-772), Vector(635,-703,-379), ], [ Vector(539,-841,504), Vector(743,731,-445), Vector(-822,-423,673), Vector(-770,-492,627), Vector(-762,805,536), Vector(622,783,749), Vector(-757,320,-629), Vector(710,684,-611), Vector(393,-892,456), Vector(-769,705,691), Vector(365,-675,-379), Vector(-831,401,-736), Vector(561,779,740), Vector(-815,623,585), Vector(385,-726,-591), Vector(305,-611,-528), Vector(-26,-6,-67), Vector(-690,441,-682), Vector(-830,-855,-756), Vector(-707,-427,667), Vector(808,821,734), Vector(660,755,-621), Vector(444,-961,435), Vector(-831,-858,-732), Vector(-873,-889,-537), Vector(-116,-144,21), ], [ Vector(620,-673,-810), Vector(601,-454,-802), Vector(-496,543,-614), Vector(-596,554,-672), Vector(963,-487,692), Vector(-701,-396,401), Vector(808,816,748), Vector(638,-546,-875), Vector(887,-534,765), Vector(-604,428,-687), Vector(916,-611,754), Vector(-456,393,374), Vector(-554,-588,-462), Vector(549,385,-763), Vector(-420,447,209), Vector(-784,-504,377), Vector(811,771,781), Vector(-510,-687,-472), Vector(-725,-524,511), Vector(459,510,-757), Vector(795,813,747), Vector(71,-145,-43), Vector(390,365,-693), Vector(-534,422,297), Vector(-565,-706,-544), Vector(122,13,-148), ], [ Vector(300,838,-511), Vector(723,-429,-827), Vector(-489,-531,-733), Vector(-862,690,478), Vector(272,779,-641), Vector(365,729,650), Vector(-749,-606,618), Vector(-412,-399,-712), Vector(-420,-363,-674), Vector(-763,627,434), Vector(584,-407,497), Vector(-725,663,-381), Vector(702,-366,-840), Vector(358,649,667), Vector(-832,581,-377), Vector(683,-352,-813), Vector(-773,672,537), Vector(699,-507,475), Vector(-616,-486,630), Vector(-700,638,-358), Vector(327,683,834), Vector(632,-455,538), Vector(335,741,-469), Vector(-541,-595,615), Vector(-76,130,123), ], [ Vector(643,-906,-639), Vector(554,-930,-576), Vector(-438,-780,848), Vector(885,648,-659), Vector(-617,748,624), Vector(708,-887,-479), Vector(562,675,352), Vector(513,-416,680), Vector(-551,607,575), Vector(867,701,-509), Vector(567,599,433), Vector(-593,592,-482), Vector(533,-475,546), Vector(-618,-692,-723), Vector(-629,538,-371), Vector(928,733,-581), Vector(116,-32,-131), Vector(405,-499,656), Vector(515,674,570), Vector(-629,-736,-551), Vector(71,-144,33), Vector(-384,-744,683), Vector(-655,512,-481), Vector(-658,-823,-634), Vector(-413,-666,760), Vector(-507,716,685), ], [ Vector(392,400,680), Vector(715,-577,488), Vector(872,575,-780), Vector(-527,-916,-745), Vector(-756,759,-452), Vector(-341,-954,-730), Vector(360,461,570), Vector(553,-799,-423), Vector(-489,-888,625), Vector(731,-478,552), Vector(-844,478,532), Vector(609,-456,515), Vector(777,572,-702), Vector(-439,-817,615), Vector(641,-709,-383), Vector(501,510,636), Vector(-705,828,-431), Vector(-764,593,595), Vector(-610,708,-500), Vector(-406,-864,449), Vector(-77,-136,-15), Vector(515,-651,-411), Vector(-588,-912,-736), Vector(1,17,72), Vector(844,455,-646), Vector(-784,542,383), ], [ Vector(-705,-729,760), Vector(-796,-680,666), Vector(34,174,59), Vector(681,672,720), Vector(-634,-677,682), Vector(685,-381,-430), Vector(736,900,-429), Vector(-892,-338,-314), Vector(-28,77,-93), Vector(-796,472,419), Vector(731,-487,-512), Vector(-885,399,-599), Vector(746,727,-451), Vector(-885,458,443), Vector(678,-536,-330), Vector(652,-373,448), Vector(666,-453,483), Vector(-706,-323,-352), Vector(-807,414,492), Vector(734,-275,479), Vector(602,750,578), Vector(-890,436,-400), Vector(591,761,630), Vector(-645,-332,-356), Vector(-836,448,-626), Vector(735,709,-336), ], [ Vector(560,-631,663), Vector(3,-21,-120), Vector(425,-576,-600), Vector(455,612,-831), Vector(-472,492,-534), Vector(615,888,330), Vector(-382,383,326), Vector(414,511,-837), Vector(76,90,15), Vector(-423,476,-725), Vector(-568,-599,563), Vector(751,919,441), Vector(480,-626,-579), Vector(-464,570,-714), Vector(425,438,-790), Vector(-744,-590,-577), Vector(461,-722,-487), Vector(-459,-674,578), Vector(-688,-533,-461), Vector(-366,425,292), Vector(-369,380,325), Vector(-448,-466,575), Vector(597,-635,584), Vector(647,-481,631), Vector(753,946,365), Vector(-709,-755,-482), ], [ Vector(-793,-712,526), Vector(43,-66,-77), Vector(-592,814,658), Vector(608,-557,-325), Vector(-817,-758,545), Vector(-447,441,-677), Vector(-476,805,776), Vector(377,-808,643), Vector(685,332,-669), Vector(-306,539,-675), Vector(-533,-777,-578), Vector(527,469,775), Vector(576,-489,-523), Vector(666,440,-717), Vector(418,-765,542), Vector(-678,-863,-623), Vector(623,-570,-556), Vector(-625,-783,-492), Vector(460,-697,676), Vector(653,391,833), Vector(-611,841,744), Vector(774,405,-693), Vector(-801,-829,436), Vector(678,570,758), Vector(-11,91,43), Vector(-418,455,-584), ], [ Vector(805,-443,-751), Vector(494,718,482), Vector(2,-16,82), Vector(104,91,-72), Vector(-597,622,-615), Vector(-753,481,430), Vector(-531,502,409), Vector(-672,731,-630), Vector(-588,446,525), Vector(571,-495,655), Vector(-464,742,-627), Vector(385,808,-378), Vector(751,-407,-916), Vector(382,821,-377), Vector(-351,-554,-767), Vector(-338,-407,491), Vector(560,-451,483), Vector(-450,-491,-811), Vector(478,767,673), Vector(531,-364,566), Vector(-440,-536,-708), Vector(-297,-435,349), Vector(776,-521,-828), Vector(572,726,662), Vector(427,824,-344), Vector(-266,-423,363), ], [ Vector(-459,-573,-393), Vector(-541,-681,657), Vector(-691,578,-927), Vector(846,-686,740), Vector(854,-755,-493), Vector(-670,527,-858), Vector(-18,154,-79), Vector(540,944,-704), Vector(-392,942,855), Vector(-622,673,-807), Vector(-435,-635,739), Vector(-453,-688,-389), Vector(673,-696,718), Vector(689,-806,-510), Vector(549,934,-726), Vector(345,935,570), Vector(541,828,-585), Vector(122,-41,-59), Vector(-499,-636,-458), Vector(382,940,769), Vector(-377,756,817), Vector(714,-691,-476), Vector(-590,-628,839), Vector(655,-685,833), Vector(-386,695,813), Vector(394,886,543), ], [ Vector(729,789,-842), Vector(-819,-334,502), Vector(-741,-438,568), Vector(399,-785,-551), Vector(682,756,-676), Vector(753,706,-666), Vector(-9,-118,-9), Vector(318,-711,-658), Vector(-857,-784,-531), Vector(439,-644,-605), Vector(-891,-827,-750), Vector(479,467,552), Vector(659,-682,340), Vector(-106,61,-102), Vector(-681,548,823), Vector(-664,604,849), Vector(-860,-785,-555), Vector(-613,351,-759), Vector(-677,411,-908), Vector(550,-780,387), Vector(-728,431,-696), Vector(-844,-469,484), Vector(437,638,591), Vector(-693,572,807), Vector(491,488,586), Vector(669,-789,409), ], [ Vector(-418,-800,568), Vector(690,-779,507), Vector(441,-370,-505), Vector(-573,-900,575), Vector(-327,-603,-487), Vector(552,-453,-472), Vector(863,-801,517), Vector(-436,328,515), Vector(420,808,-712), Vector(731,415,512), Vector(-524,-718,522), Vector(491,824,-603), Vector(-18,24,64), Vector(109,-51,-38), Vector(-303,-536,-502), Vector(-677,620,-677), Vector(-482,397,567), Vector(537,800,-622), Vector(-442,332,630), Vector(706,449,397), Vector(484,-411,-606), Vector(672,-894,518), Vector(-576,655,-745), Vector(871,432,448), Vector(-517,524,-688), Vector(-258,-444,-547), ], [ Vector(-674,750,495), Vector(-412,-547,817), Vector(610,-432,859), Vector(-410,-437,-273), Vector(648,612,-461), Vector(-691,786,446), Vector(738,446,520), Vector(-464,-684,742), Vector(637,554,-561), Vector(-494,402,-503), Vector(33,115,-7), Vector(775,424,642), Vector(-612,484,-492), Vector(541,-269,-637), Vector(-545,752,417), Vector(720,-493,891), Vector(-430,-571,-332), Vector(487,-434,-601), Vector(-31,4,175), Vector(802,545,536), Vector(654,-542,750), Vector(-302,-461,-356), Vector(516,-357,-523), Vector(522,627,-453), Vector(-459,-765,818), Vector(-593,412,-547), ], [ Vector(-62,159,-61), Vector(396,-693,-479), Vector(-641,729,543), Vector(-709,-486,661), Vector(-552,-810,-705), Vector(-796,708,-772), Vector(-656,620,468), Vector(522,-264,566), Vector(-653,609,676), Vector(-662,-436,507), Vector(360,-565,-518), Vector(-774,808,-657), Vector(7,-11,2), Vector(419,-516,-543), Vector(409,-300,420), Vector(352,889,-418), Vector(383,849,609), Vector(341,867,-488), Vector(406,888,-551), Vector(-733,760,-705), Vector(501,-319,516), Vector(-741,-399,511), Vector(404,870,387), Vector(499,905,552), Vector(-725,-728,-734), Vector(-597,-770,-717), ], [ Vector(-649,836,908), Vector(463,700,656), Vector(552,809,589), Vector(524,739,-436), Vector(758,-723,501), Vector(528,-639,-338), Vector(484,-540,-348), Vector(-914,776,-711), Vector(-716,790,773), Vector(-942,-616,878), Vector(4,117,4), Vector(-627,-773,-678), Vector(-917,764,-831), Vector(376,757,614), Vector(-810,864,802), Vector(699,-703,635), Vector(-646,-554,-686), Vector(539,-521,-420), Vector(579,871,-390), Vector(675,-831,525), Vector(-184,-41,64), Vector(-950,617,-725), Vector(-664,-681,-751), Vector(-989,-740,816), Vector(-913,-693,889), Vector(610,802,-431), ], [ Vector(-328,515,-481), Vector(-417,574,-499), Vector(-621,584,416), Vector(-465,-344,-508), Vector(595,590,900), Vector(793,-530,-444), Vector(-358,-340,-590), Vector(-386,-522,745), Vector(154,-26,152), Vector(-358,-580,619), Vector(705,529,868), Vector(50,99,-7), Vector(799,454,-514), Vector(540,-327,651), Vector(577,-349,529), Vector(-755,704,388), Vector(-427,471,-544), Vector(661,639,759), Vector(774,366,-628), Vector(-490,-321,-533), Vector(513,-448,545), Vector(-677,701,483), Vector(-398,-670,707), Vector(667,-515,-452), Vector(678,-457,-552), Vector(828,531,-592), ], [ Vector(-354,917,781), Vector(-281,841,734), Vector(639,-856,-861), Vector(562,853,614), Vector(600,-872,-861), Vector(650,-340,634), Vector(-669,-830,764), Vector(615,792,515), Vector(-514,-535,-659), Vector(-645,-747,872), Vector(566,-839,-856), Vector(-581,-624,-768), Vector(399,493,-762), Vector(-262,577,-795), Vector(535,464,-683), Vector(391,829,533), Vector(-535,-771,744), Vector(-368,738,-823), Vector(-397,644,-749), Vector(74,32,12), Vector(587,-316,723), Vector(490,-359,569), Vector(-292,870,657), Vector(549,579,-709), Vector(-556,-448,-716), ], [ Vector(-854,-686,494), Vector(471,874,648), Vector(488,-734,-887), Vector(764,427,-727), Vector(-759,681,-745), Vector(-725,-714,449), Vector(-605,728,-695), Vector(795,538,-591), Vector(458,-463,533), Vector(405,770,623), Vector(387,-740,-928), Vector(-843,-741,525), Vector(477,-316,412), Vector(-885,549,507), Vector(-750,-482,-862), Vector(822,462,-589), Vector(-158,-21,43), Vector(461,812,673), Vector(-755,760,-782), Vector(-166,125,-115), Vector(448,-380,515), Vector(-700,-503,-917), Vector(-884,648,444), Vector(-824,602,404), Vector(-846,-390,-881), Vector(314,-693,-917), ], [ Vector(-886,423,811), Vector(785,453,423), Vector(-396,553,-508), Vector(-81,38,127), Vector(-415,618,-348), Vector(-522,-528,979), Vector(706,-897,440), Vector(-479,-748,-503), Vector(652,-801,-610), Vector(-610,-708,-592), Vector(603,-785,-419), Vector(611,-707,-599), Vector(693,-894,441), Vector(861,406,496), Vector(736,672,-473), Vector(-636,-503,891), Vector(-372,464,-445), Vector(814,530,434), Vector(-29,-119,-2), Vector(-558,-474,814), Vector(-803,315,787), Vector(773,654,-249), Vector(-566,-719,-420), Vector(709,-852,407), Vector(797,573,-420), Vector(-827,443,677), ], [ Vector(-729,-745,477), Vector(-809,409,-655), Vector(628,-585,534), Vector(405,464,-835), Vector(309,581,335), Vector(-697,-756,-375), Vector(-459,599,568), Vector(-390,539,409), Vector(-626,-825,-487), Vector(-823,-783,491), Vector(340,-640,-575), Vector(-14,-66,28), Vector(-435,584,501), Vector(334,-554,-667), Vector(420,614,418), Vector(352,480,376), Vector(-157,-24,-97), Vector(560,-387,566), Vector(254,-685,-720), Vector(359,483,-859), Vector(-649,398,-559), Vector(-616,-862,-402), Vector(547,-618,581), Vector(-708,341,-690), Vector(288,374,-843), Vector(-751,-815,603), ], [ Vector(409,289,-495), Vector(-847,-575,496), Vector(413,467,-563), Vector(508,-736,-627), Vector(-930,-464,529), Vector(530,380,608), Vector(-764,280,526), Vector(628,-869,503), Vector(-42,-169,-23), Vector(650,-658,-548), Vector(503,274,552), Vector(624,-954,561), Vector(-499,-886,-493), Vector(-406,-695,-494), Vector(-856,235,571), Vector(560,-747,-638), Vector(-400,550,-551), Vector(-889,-507,630), Vector(-500,395,-544), Vector(-521,-713,-483), Vector(-582,501,-498), Vector(-697,304,511), Vector(440,253,530), Vector(-170,-6,-82), Vector(378,387,-577), Vector(649,-801,614), ], [ Vector(367,-847,-431), Vector(805,450,827), Vector(-651,-490,-341), Vector(574,-485,737), Vector(86,-58,110), Vector(706,386,811), Vector(-461,301,-317), Vector(-745,-441,-432), Vector(419,347,-310), Vector(827,413,705), Vector(-667,-493,-503), Vector(329,-832,-245), Vector(466,513,-343), Vector(-529,329,473), Vector(-599,353,-300), Vector(-438,-863,890), Vector(-541,433,385), Vector(-516,-876,959), Vector(371,-838,-492), Vector(-673,-834,862), Vector(632,-513,611), Vector(-573,307,-497), Vector(484,-525,649), Vector(395,523,-393), Vector(-513,468,378), ], [ Vector(-568,386,784), Vector(20,-72,121), Vector(-121,24,13), Vector(544,777,598), Vector(-450,-510,942), Vector(778,-914,-767), Vector(830,-551,427), Vector(-470,476,807), Vector(-501,832,-460), Vector(-378,-456,860), Vector(358,756,528), Vector(-717,-908,-600), Vector(552,-860,-755), Vector(790,-530,473), Vector(-589,-465,830), Vector(579,-909,-804), Vector(-484,781,-295), Vector(750,-556,440), Vector(434,835,522), Vector(-576,-802,-608), Vector(727,722,-476), Vector(-565,491,815), Vector(-467,717,-435), Vector(749,712,-303), Vector(842,711,-494), Vector(-695,-918,-609), ], [ Vector(417,-415,713), Vector(-449,647,870), Vector(27,91,28), Vector(402,-451,-539), Vector(476,382,916), Vector(-393,704,754), Vector(548,-455,624), Vector(-428,869,849), Vector(857,539,-539), Vector(-777,-601,-329), Vector(-126,-2,126), Vector(-665,-378,797), Vector(827,434,-697), Vector(-541,876,-635), Vector(319,-462,-354), Vector(504,-444,796), Vector(-462,887,-670), Vector(-714,-362,606), Vector(-673,-456,617), Vector(460,454,788), Vector(488,413,930), Vector(-888,-669,-268), Vector(842,448,-606), Vector(-852,-520,-276), Vector(400,-532,-343), Vector(-583,781,-617), ], [ Vector(397,-399,-587), Vector(-692,640,606), Vector(-549,-426,-591), Vector(517,-468,-682), Vector(503,792,687), Vector(-665,724,474), Vector(683,415,-508), Vector(469,573,730), Vector(-665,-505,-567), Vector(-470,730,-541), Vector(632,627,-528), Vector(747,564,-448), Vector(466,-420,-536), Vector(72,63,-118), Vector(935,-637,679), Vector(-375,-466,480), Vector(-385,-494,361), Vector(931,-631,564), Vector(866,-591,627), Vector(500,768,688), Vector(-305,727,-516), Vector(-647,841,608), Vector(-776,-459,-594), Vector(-413,713,-575), Vector(-379,-503,254), ], [ Vector(-626,-772,665), Vector(-298,775,-361), Vector(795,558,497), Vector(-650,-716,745), Vector(470,819,-606), Vector(-465,-720,-367), Vector(783,706,535), Vector(476,861,-359), Vector(426,-668,854), Vector(16,67,24), Vector(-559,670,547), Vector(59,-95,-131), Vector(754,-852,-774), Vector(775,-921,-723), Vector(560,-548,826), Vector(-456,-698,-357), Vector(823,616,623), Vector(-452,696,550), Vector(706,-801,-628), Vector(-457,-579,-473), Vector(-310,549,-415), Vector(-441,686,552), Vector(504,-665,759), Vector(461,823,-545), Vector(-755,-747,659), Vector(-261,576,-366), ], [ Vector(908,721,721), Vector(86,-57,-97), Vector(-713,-299,-592), Vector(-758,-783,430), Vector(-779,-597,500), Vector(818,456,-829), Vector(-623,521,428), Vector(-837,-707,424), Vector(907,-562,-902), Vector(549,-311,329), Vector(528,-351,375), Vector(860,594,720), Vector(-655,405,401), Vector(-714,-392,-401), Vector(829,529,-887), Vector(912,-363,-865), Vector(554,-391,342), Vector(695,675,687), Vector(-724,-414,-574), Vector(-659,757,-629), Vector(-69,-11,3), Vector(-569,667,-540), Vector(-586,448,388), Vector(-580,615,-551), Vector(907,480,-843), Vector(858,-589,-853), ], [ Vector(-779,-614,345), Vector(695,317,397), Vector(-753,576,801), Vector(505,341,-394), Vector(411,432,-345), Vector(-667,-708,-706), Vector(615,-385,529), Vector(643,-378,564), Vector(557,300,449), Vector(-879,-666,355), Vector(483,-862,-738), Vector(-112,-148,91), Vector(489,503,-397), Vector(718,-890,-767), Vector(-711,-622,-690), Vector(-721,-601,-807), Vector(-870,-758,402), Vector(33,-26,-17), Vector(-604,557,-459), Vector(640,-959,-780), Vector(-592,444,-618), Vector(627,-473,425), Vector(-758,670,920), Vector(-605,562,-647), Vector(583,497,403), Vector(-870,560,878), ] ]