From 9a30b28f9e82c4c159c11c1b66a44aaa27138c1d Mon Sep 17 00:00:00 2001 From: red Date: Mon, 1 Apr 2024 06:48:33 +0200 Subject: [PATCH] Year 2017: Day 20 --- CHANGELOG.md | 5 +- Cargo.toml | 2 +- README.md | 2 +- benches/year_2017.rs | 19 +- inputs/year_2017/day_20_input | 1000 +++++++++++++++++++++++++++++++++ src/year_2017.rs | 9 + src/year_2017/day_20.rs | 133 +++++ 7 files changed, 1166 insertions(+), 4 deletions(-) create mode 100644 inputs/year_2017/day_20_input create mode 100644 src/year_2017/day_20.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index 53151a0..8a7e420 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,11 +10,14 @@ Of note: - The changelog 2015.5.2 has been rewritten from each commit content. - This file may be amended entirely in the future to adhere to the [GNU Changelog style](https://www.gnu.org/prep/standards/html_node/Style-of-Change-Logs.html#Style-of-Change-Logs) +## [2017.20.1] +### Added +- Solved [exercice for 2017, day 20](src/year_2017/20.rs). + ## [2017.19.1] ### Added - Solved [exercice for 2017, day 19](src/year_2017/19.rs). - ## [2017.18.1] ### Added - Solved [exercice for 2017, day 18](src/year_2017/18.rs). diff --git a/Cargo.toml b/Cargo.toml index 8e1e06d..eb86def 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "advent-rs" -version = "2017.19.1" +version = "2017.20.1" edition = "2021" authors = ["Arnaud 'red' Rouyer"] readme = "README.md" diff --git a/README.md b/README.md index 72b9fce..136e007 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ As I said, [Consistency is hard](https://github.com/joshleaves/advent-rb), and I I'm also adding notes that may be useful if you're (like me) discovering Rust: - [2015, complete!](NOTES_2015.md) - [2016, complete!](NOTES_2016.md) -- [2017, up to day 19](NOTES_2017.md) +- [2017, up to day 20](NOTES_2017.md) # Regarding style rules I'm gonna use a mix of what `cargo fmt` does, with some stuff that feels more natural to me. diff --git a/benches/year_2017.rs b/benches/year_2017.rs index 42fe17d..4aa6a31 100644 --- a/benches/year_2017.rs +++ b/benches/year_2017.rs @@ -17,6 +17,7 @@ use advent_rs::year_2017::day_16; use advent_rs::year_2017::day_17; use advent_rs::year_2017::day_18; use advent_rs::year_2017::day_19; +use advent_rs::year_2017::day_20; use criterion::{black_box, criterion_group, criterion_main, Criterion}; fn year_2017_day_01(c: &mut Criterion) { @@ -304,6 +305,21 @@ fn year_2017_day_19(c: &mut Criterion) { g2017_day_19.finish(); } +fn year_2017_day_20(c: &mut Criterion) { + let input = include_str!("../inputs/year_2017/day_20_input"); + assert_eq!(day_20::day_20_v1(input), 157); + assert_eq!(day_20::day_20_v2(input), 499); + + let mut g2017_day_20 = c.benchmark_group("year_2017::day_20"); + g2017_day_20.bench_function("year_2017::day_20_v1", |b| { + b.iter(|| day_20::day_20_v1(black_box(input))) + }); + g2017_day_20.bench_function("year_2017::day_20_v2", |b| { + b.iter(|| day_20::day_20_v2(black_box(input))) + }); + g2017_day_20.finish(); +} + criterion_group!( benches, year_2017_day_01, @@ -324,6 +340,7 @@ criterion_group!( year_2017_day_16, year_2017_day_17, year_2017_day_18, - year_2017_day_19 + year_2017_day_19, + year_2017_day_20 ); criterion_main!(benches); diff --git a/inputs/year_2017/day_20_input b/inputs/year_2017/day_20_input new file mode 100644 index 0000000..52ac7dc --- /dev/null +++ b/inputs/year_2017/day_20_input @@ -0,0 +1,1000 @@ +p=<-13053,-6894,1942>, v=<14,39,-11>, a=<16,7,-2> +p=<1182,-5451,1201>, v=<-51,22,-32>, a=<1,6,0> +p=<-10167,3324,148>, v=<0,-43,-65>, a=<13,-2,3> +p=<-2406,3168,-5234>, v=<61,121,-47>, a=<0,-10,9> +p=<-8880,-4281,3970>, v=<187,172,-63>, a=<2,-3,-2> +p=<5979,3441,-11240>, v=<26,-66,7>, a=<-9,-1,14> +p=<-4473,3246,5569>, v=<-46,-121,16>, a=<8,2,-8> +p=<-14691,-3501,-8120>, v=<196,-168,7>, a=<9,13,10> +p=<-5448,2076,-2075>, v=<-41,89,-108>, a=<9,-7,8> +p=<2313,-1902,15046>, v=<60,11,-67>, a=<-6,2,-16> +p=<-1276,2243,7632>, v=<38,21,5>, a=<0,-5,-13> +p=<-460,662,-3843>, v=<-21,-20,-165>, a=<2,0,16> +p=<3025,135,7207>, v=<-1,48,-70>, a=<-5,-3,-8> +p=<208,938,-683>, v=<28,-33,41>, a=<-4,-2,0> +p=<-125,1172,37>, v=<56,-103,58>, a=<-5,4,-6> +p=<1045,-3202,838>, v=<-28,102,4>, a=<-3,8,-5> +p=<-6320,-658,-6186>, v=<31,16,162>, a=<7,0,0> +p=<-4572,2876,5252>, v=<-93,1,56>, a=<11,-4,-10> +p=<2591,-1760,-1075>, v=<-184,45,47>, a=<6,0,-1> +p=<7132,3218,5803>, v=<28,-47,-56>, a=<-11,-2,-5> +p=<9203,-6206,4644>, v=<-124,84,-162>, a=<-6,4,2> +p=<-3204,-1494,-5369>, v=<27,155,4>, a=<3,-6,7> +p=<8443,5023,-334>, v=<-65,-36,-70>, a=<-8,-5,4> +p=<3275,-4268,4606>, v=<-85,-84,-122>, a=<0,10,0> +p=<1565,83,3371>, v=<-1,16,8>, a=<-2,-1,-5> +p=<-5674,-5237,-1455>, v=<-25,-39,-99>, a=<9,9,7> +p=<309,741,606>, v=<9,-69,-67>, a=<-7,0,1> +p=<954,-769,-554>, v=<-61,60,60>, a=<-6,4,-1> +p=<1229,961,216>, v=<-50,-25,16>, a=<-13,-12,-7> +p=<-651,11,-94>, v=<94,15,-8>, a=<-5,-2,3> +p=<-626,376,401>, v=<42,-49,-85>, a=<4,3,8> +p=<2712,-13281,1854>, v=<53,110,-51>, a=<-7,14,0> +p=<-4524,4899,1314>, v=<69,-62,-36>, a=<3,-4,0> +p=<-3318,-789,126>, v=<165,22,-40>, a=<-4,0,2> +p=<4116,2325,-3996>, v=<-23,65,56>, a=<-5,-7,3> +p=<7092,6324,-4129>, v=<-123,-175,-34>, a=<-4,0,8> +p=<4824,4632,-6847>, v=<-23,-165,97>, a=<-6,2,5> +p=<126,5172,-1771>, v=<-22,-32,30>, a=<1,-6,1> +p=<4302,-5952,2351>, v=<10,18,-66>, a=<-7,8,0> +p=<-8010,6,-2491>, v=<204,-92,50>, a=<1,5,1> +p=<3852,-372,-3733>, v=<4,-100,66>, a=<-6,6,2> +p=<-2420,2051,-967>, v=<45,-166,34>, a=<17,3,5> +p=<1304,448,-575>, v=<-86,61,81>, a=<-1,-12,-5> +p=<-502,1064,-575>, v=<-32,-73,126>, a=<9,0,-11> +p=<-1041,1736,1014>, v=<-16,-46,-55>, a=<12,-10,-2> +p=<1304,-1036,-2038>, v=<-26,-28,28>, a=<-9,14,16> +p=<240,-294,-92>, v=<-55,84,9>, a=<5,-8,0> +p=<-2358,-2921,2646>, v=<17,86,-114>, a=<3,0,2> +p=<5156,-8242,-2590>, v=<-64,-55,40>, a=<-5,17,2> +p=<-9991,-4536,3717>, v=<49,116,82>, a=<14,1,-11> +p=<1037,-7034,-434>, v=<-29,74,30>, a=<0,7,-1> +p=<7057,-2379,2541>, v=<-39,85,-1>, a=<-9,-1,-4> +p=<-1518,-1014,-5124>, v=<8,46,110>, a=<2,-1,2> +p=<5237,-2904,-4984>, v=<-113,-44,-74>, a=<-2,7,12> +p=<-6278,3816,-4634>, v=<-72,70,6>, a=<14,-10,7> +p=<7582,3186,-4669>, v=<-36,-38,25>, a=<-10,-3,6> +p=<688,214,-1510>, v=<15,-20,108>, a=<-8,1,0> +p=<-726,-962,-1328>, v=<-4,124,80>, a=<8,-7,2> +p=<-950,-619,1038>, v=<72,122,-59>, a=<0,-10,-2> +p=<870,340,-1874>, v=<32,-89,104>, a=<-12,9,4> +p=<2249,-1592,702>, v=<-74,49,-5>, a=<-11,9,-6> +p=<541,984,2>, v=<-27,-60,0>, a=<-1,-1,0> +p=<1332,-80,758>, v=<-46,1,-24>, a=<-6,1,-4> +p=<-6639,-3230,-3921>, v=<162,122,86>, a=<4,-1,3> +p=<2901,2950,2139>, v=<-125,40,-54>, a=<2,-9,-1> +p=<3606,-800,-7026>, v=<22,-21,-12>, a=<-9,3,16> +p=<1011,2950,4119>, v=<93,-22,-27>, a=<-8,-5,-7> +p=<2931,4195,2664>, v=<-2,14,-25>, a=<-6,-10,-4> +p=<-2484,115,3699>, v=<-54,57,-168>, a=<9,-4,3> +p=<-3039,-2405,2394>, v=<-51,17,-109>, a=<10,4,2> +p=<-4929,-3380,5694>, v=<105,96,-188>, a=<4,1,0> +p=<-204,3925,2484>, v=<-37,-8,-81>, a=<3,-8,0> +p=<-1601,1853,3267>, v=<-13,68,-138>, a=<4,-8,2> +p=<3793,5139,-2344>, v=<37,10,-5>, a=<-10,-11,5> +p=<1818,2254,1317>, v=<56,-22,-47>, a=<-12,-7,-1> +p=<234,846,-3061>, v=<13,-73,152>, a=<-2,3,-1> +p=<-3440,197,-773>, v=<65,-78,94>, a=<8,6,-5> +p=<-1669,-2091,-4084>, v=<-50,95,72>, a=<11,0,10> +p=<2049,-1937,2747>, v=<-58,19,-89>, a=<-3,6,-3> +p=<80,-2190,2483>, v=<-49,111,-123>, a=<4,-1,1> +p=<-4177,-1013,448>, v=<64,0,73>, a=<11,4,-8> +p=<-3020,3597,1674>, v=<17,51,-2>, a=<8,-15,-5> +p=<1380,3772,2224>, v=<-107,-125,-37>, a=<4,-2,-4> +p=<-2377,2739,-771>, v=<11,105,-17>, a=<5,-14,3> +p=<3405,3537,-995>, v=<-123,-25,-67>, a=<0,-7,7> +p=<-1565,8577,517>, v=<-76,-60,-150>, a=<9,-17,9> +p=<2481,-1377,3695>, v=<-148,107,-46>, a=<4,-4,-6> +p=<2803,-3281,3331>, v=<-29,-28,83>, a=<-5,10,-14> +p=<437,-495,2939>, v=<-17,32,-77>, a=<0,-1,-2> +p=<-1985,-4275,-3221>, v=<-3,51,-31>, a=<5,7,10> +p=<1347,-957,2421>, v=<-6,-53,-15>, a=<-3,6,-5> +p=<2873,2991,-3837>, v=<-104,9,107>, a=<0,-8,2> +p=<157,3859,-2045>, v=<-7,-22,72>, a=<0,-8,0> +p=<-4368,3575,-219>, v=<166,-61,0>, a=<4,-10,1> +p=<-1281,-2473,-3495>, v=<30,29,68>, a=<3,8,9> +p=<-945,1874,1146>, v=<47,53,12>, a=<0,-13,-6> +p=<-672,-2998,369>, v=<133,21,-39>, a=<-9,11,2> +p=<-5859,-1465,12>, v=<160,80,-33>, a=<11,-1,3> +p=<1071,-1717,1356>, v=<-38,70,101>, a=<-1,1,-15> +p=<651,299,-135>, v=<-18,40,62>, a=<-1,-5,-5> +p=<-2604,3155,2742>, v=<5,-52,-75>, a=<11,-9,-5> +p=<-1491,2987,-4797>, v=<106,-143,75>, a=<-3,0,14> +p=<1533,1832,894>, v=<28,-44,-42>, a=<-9,-4,0> +p=<-1235,-1760,-365>, v=<112,93,66>, a=<-4,2,-5> +p=<317,-1256,-2509>, v=<-87,-15,64>, a=<8,11,11> +p=<-515,-1640,-1917>, v=<33,-25,44>, a=<0,15,9> +p=<2244,1800,3970>, v=<-4,42,-26>, a=<-4,-6,-6> +p=<-7420,2712,1794>, v=<-32,30,9>, a=<16,-7,-4> +p=<-5948,-6120,-830>, v=<21,9,25>, a=<10,11,0> +p=<-8204,1992,1362>, v=<108,69,138>, a=<9,-8,-11> +p=<-10972,8,5490>, v=<178,-34,-24>, a=<10,2,-9> +p=<4196,-4840,-7374>, v=<-98,2,-18>, a=<-2,9,15> +p=<-7036,200,2162>, v=<88,92,-52>, a=<8,-6,-1> +p=<4724,-3480,1474>, v=<-32,141,-146>, a=<-7,-2,6> +p=<5988,-760,2146>, v=<-22,56,-68>, a=<-10,-2,0> +p=<-7030,-1749,6085>, v=<100,40,-37>, a=<8,1,-10> +p=<4595,328,-2347>, v=<-83,-11,91>, a=<-4,0,-1> +p=<3200,111,1311>, v=<-102,60,-59>, a=<0,-4,1> +p=<1464,3924,-4734>, v=<-14,-223,72>, a=<-2,6,5> +p=<658,-4477,6240>, v=<-52,48,-154>, a=<2,6,-3> +p=<-9045,-4384,4504>, v=<69,-3,30>, a=<14,9,-11> +p=<2549,2777,-53>, v=<15,-26,-47>, a=<-6,-4,3> +p=<-396,-10894,-3556>, v=<46,111,34>, a=<-2,15,5> +p=<6269,3273,-332>, v=<39,-42,-22>, a=<-15,-4,2> +p=<-1529,1697,-7603>, v=<-73,12,131>, a=<6,-3,4> +p=<913,-1966,4903>, v=<-25,-212,-55>, a=<0,14,-4> +p=<-11926,1216,-5679>, v=<18,-51,41>, a=<16,1,6> +p=<-678,4361,-2386>, v=<-1,-117,66>, a=<1,0,0> +p=<1690,6100,463>, v=<-65,7,-11>, a=<1,-9,0> +p=<-493,-8293,907>, v=<-44,54,53>, a=<3,9,-4> +p=<543,-3742,500>, v=<-15,64,26>, a=<0,2,-2> +p=<-1973,994,-92>, v=<34,-26,-53>, a=<1,0,3> +p=<3059,-42,1240>, v=<-83,97,-89>, a=<0,-5,3> +p=<636,2293,290>, v=<-12,-70,-16>, a=<-4,-10,0> +p=<-834,958,-1915>, v=<126,-69,75>, a=<-9,1,7> +p=<-954,-2057,-205>, v=<-34,108,-7>, a=<12,4,3> +p=<-1899,2248,-310>, v=<77,-67,0>, a=<6,-10,3> +p=<-351,6428,1557>, v=<10,-72,-39>, a=<0,-5,0> +p=<6109,-1590,1367>, v=<113,-17,-73>, a=<-14,3,2> +p=<-8578,-8753,1804>, v=<51,-82,-65>, a=<9,16,1> +p=<-6070,1146,-2566>, v=<-54,-50,89>, a=<11,1,-1> +p=<4038,7739,7922>, v=<70,30,-109>, a=<-9,-12,-5> +p=<-7571,4870,-1445>, v=<5,8,40>, a=<10,-7,0> +p=<-6336,-13275,-6252>, v=<-86,76,-9>, a=<13,14,9> +p=<-1586,-469,6592>, v=<-16,129,-74>, a=<3,-6,-5> +p=<-85,-5732,-1388>, v=<42,53,-137>, a=<-2,5,9> +p=<-689,7508,3897>, v=<-9,-83,-204>, a=<2,-10,5> +p=<-2270,-893,-2024>, v=<154,28,3>, a=<-5,0,4> +p=<12083,-7093,-1466>, v=<-117,68,49>, a=<-17,10,0> +p=<-4595,-6163,332>, v=<37,198,183>, a=<7,0,-12> +p=<-12996,1060,-1311>, v=<100,-51,-20>, a=<20,1,4> +p=<1326,-738,4021>, v=<6,-25,16>, a=<-3,3,-9> +p=<-3975,-366,-2303>, v=<97,-5,-36>, a=<2,1,7> +p=<4457,6795,4269>, v=<-127,-156,-104>, a=<-1,-4,-2> +p=<1202,-7186,3773>, v=<-38,7,-8>, a=<0,14,-7> +p=<-3280,1674,4476>, v=<-14,-71,20>, a=<13,0,-18> +p=<2493,4319,-814>, v=<-25,-114,-74>, a=<-7,-6,9> +p=<2999,317,1854>, v=<-131,-12,-82>, a=<0,0,0> +p=<-2557,1402,-2100>, v=<40,30,194>, a=<3,-5,-8> +p=<1088,-4148,1560>, v=<-35,91,72>, a=<0,3,-8> +p=<-2125,-2433,103>, v=<93,112,5>, a=<10,10,-2> +p=<-175,1038,-833>, v=<-8,-8,49>, a=<3,-11,2> +p=<1255,-1900,623>, v=<-83,106,0>, a=<-2,5,-7> +p=<-97,-2784,337>, v=<-35,167,22>, a=<6,6,-7> +p=<2178,-938,-391>, v=<-105,60,71>, a=<-9,1,-6> +p=<-1615,4993,3559>, v=<42,-93,-99>, a=<1,-6,-2> +p=<6449,-1727,5477>, v=<-43,-27,-66>, a=<-13,6,-9> +p=<-2987,121,-1607>, v=<-25,23,13>, a=<9,-2,3> +p=<-1531,1899,5337>, v=<39,-55,-119>, a=<1,-1,-5> +p=<4685,2081,1179>, v=<-67,11,44>, a=<-7,-6,-6> +p=<191,-4891,-3553>, v=<108,57,-19>, a=<-8,8,10> +p=<6522,4889,-827>, v=<-42,-68,23>, a=<-8,-4,0> +p=<502,-4106,9638>, v=<94,81,-96>, a=<-6,2,-10> +p=<-11433,3279,1903>, v=<39,-58,-37>, a=<16,-2,-1> +p=<1517,1179,9533>, v=<-97,-34,-3>, a=<3,0,-15> +p=<1447,-2041,-10102>, v=<67,4,36>, a=<-6,3,14> +p=<1832,3594,-9192>, v=<-34,5,28>, a=<-1,-6,13> +p=<1202,8144,-14442>, v=<-16,-125,16>, a=<-1,-6,22> +p=<1307,-886,-477>, v=<-37,7,13>, a=<0,1,0> +p=<467,-1411,-6707>, v=<95,58,191>, a=<-6,-1,0> +p=<3162,-6836,-3977>, v=<-36,87,113>, a=<-3,6,0> +p=<8102,-8069,4812>, v=<-116,80,-54>, a=<-7,9,-5> +p=<1557,4137,-1869>, v=<-46,36,55>, a=<0,-9,0> +p=<3359,-5672,2551>, v=<-99,62,30>, a=<0,6,-6> +p=<2016,-7219,936>, v=<-7,55,130>, a=<-3,9,-9> +p=<7507,873,-4538>, v=<-116,-43,81>, a=<-6,1,3> +p=<996,4953,-203>, v=<-47,-58,-64>, a=<1,-5,4> +p=<-965,-1995,980>, v=<96,78,-31>, a=<-4,7,-4> +p=<-650,1635,-1480>, v=<99,-76,45>, a=<-7,-4,7> +p=<370,570,2015>, v=<-9,-21,-124>, a=<-2,-2,-1> +p=<3220,2715,-310>, v=<-191,-148,39>, a=<-3,-4,-2> +p=<-2015,-2310,1235>, v=<110,83,0>, a=<3,9,-10> +p=<1150,-1305,-580>, v=<-93,48,113>, a=<2,5,-9> +p=<595,-2790,2645>, v=<-40,75,-22>, a=<0,14,-19> +p=<-339,1845,83>, v=<13,32,-35>, a=<1,-14,3> +p=<-1653,333,-1447>, v=<-47,21,-26>, a=<15,-4,11> +p=<6703,-832,4971>, v=<-112,23,-156>, a=<-4,0,1> +p=<3895,7412,-4767>, v=<40,-58,133>, a=<-8,-8,0> +p=<2905,-8752,4737>, v=<-62,-16,-20>, a=<-1,14,-6> +p=<-9569,-544,57>, v=<44,15,73>, a=<12,0,-4> +p=<1318,3955,-4225>, v=<-56,-61,84>, a=<-1,-13,12> +p=<-252,2085,-765>, v=<-9,1,37>, a=<2,-10,0> +p=<-4450,1322,6432>, v=<99,7,-120>, a=<7,-5,-12> +p=<2270,-706,-2568>, v=<44,29,5>, a=<-11,0,8> +p=<3230,-3226,-2436>, v=<-46,84,37>, a=<-7,4,5> +p=<770,-3130,-1224>, v=<-56,80,-1>, a=<2,4,4> +p=<-6190,-718,5964>, v=<159,-58,-63>, a=<8,7,-15> +p=<-82,350,-3024>, v=<17,85,99>, a=<-1,-8,2> +p=<1238,-5314,3360>, v=<-63,121,-17>, a=<1,8,-10> +p=<-2398,-3010,-5664>, v=<126,-50,84>, a=<-2,14,12> +p=<2858,-4942,-3564>, v=<57,118,34>, a=<-14,7,9> +p=<-298,-2083,-402>, v=<5,22,15>, a=<1,10,1> +p=<989,-2596,1578>, v=<0,155,-95>, a=<-6,-1,1> +p=<-82,2039,1443>, v=<31,-93,17>, a=<-3,-2,-10> +p=<-640,410,-1356>, v=<43,26,30>, a=<-1,-5,5> +p=<4,-1391,-1458>, v=<-55,123,34>, a=<4,-5,2> +p=<1654,-266,6742>, v=<-82,26,-177>, a=<1,-1,-7> +p=<804,-666,-6908>, v=<-126,-36,161>, a=<7,5,9> +p=<-2621,-1266,3317>, v=<50,53,-131>, a=<4,0,0> +p=<-1221,2909,-4883>, v=<98,-62,132>, a=<-4,-4,5> +p=<-3646,4934,4667>, v=<91,-52,-107>, a=<4,-11,-6> +p=<2104,-2791,-2083>, v=<-35,127,-6>, a=<-4,-1,7> +p=<-5446,634,-1008>, v=<33,-49,-10>, a=<14,2,4> +p=<-4471,2759,-108>, v=<7,-30,162>, a=<13,-6,-12> +p=<-2320,2884,2099>, v=<79,-155,6>, a=<1,3,-7> +p=<-2170,-3066,-4301>, v=<34,57,171>, a=<4,5,0> +p=<3680,-4166,3074>, v=<-83,179,-59>, a=<-5,-1,-5> +p=<-670,1409,3574>, v=<0,21,25>, a=<2,-6,-13> +p=<1084,1427,-474>, v=<-114,46,-15>, a=<5,-6,2> +p=<3394,-1408,2901>, v=<-67,1,-143>, a=<-3,3,3> +p=<-776,4742,2661>, v=<72,-80,-73>, a=<-3,-5,-1> +p=<-7031,392,-2619>, v=<141,-59,41>, a=<6,3,3> +p=<1894,-4513,-5499>, v=<-110,27,106>, a=<3,8,5> +p=<1204,2882,-6264>, v=<68,13,85>, a=<-7,-7,8> +p=<-14,-781,110>, v=<1,109,19>, a=<0,-7,-3> +p=<-371,-2141,2320>, v=<-68,81,-156>, a=<10,5,2> +p=<2570,-186,-2355>, v=<2,29,74>, a=<-17,-2,7> +p=<955,-3059,807>, v=<-56,171,95>, a=<0,1,-16> +p=<2893,1021,1232>, v=<-80,-24,34>, a=<-10,-4,-12> +p=<-218,3367,-1114>, v=<-23,-108,37>, a=<4,-10,3> +p=<2995,1905,2371>, v=<-41,-31,-69>, a=<-15,-9,-8> +p=<-806,650,2563>, v=<68,-55,-145>, a=<0,0,-10> +p=<214,782,493>, v=<22,-105,-83>, a=<-6,6,7> +p=<-698,674,619>, v=<46,-18,-35>, a=<2,-6,-2> +p=<-1874,-658,607>, v=<144,15,-21>, a=<2,6,-4> +p=<-410,1214,-1757>, v=<35,-50,33>, a=<0,-8,18> +p=<-1124,32,187>, v=<10,-23,-12>, a=<13,3,0> +p=<-560,-1366,55>, v=<54,126,12>, a=<-1,-2,-2> +p=<4372,-1927,4186>, v=<-47,-40,-24>, a=<-4,5,-5> +p=<-9002,-3169,4582>, v=<10,-24,2>, a=<13,6,-7> +p=<5452,-2899,8092>, v=<-40,61,-188>, a=<-6,1,-2> +p=<2158,-2503,2566>, v=<-41,50,-16>, a=<-1,1,-3> +p=<6604,4319,-7946>, v=<-183,27,54>, a=<0,-8,9> +p=<3148,5075,-620>, v=<-13,-105,-20>, a=<-4,-2,2> +p=<-10640,6947,-4058>, v=<148,-9,-17>, a=<8,-10,7> +p=<2932,-6157,3088>, v=<-81,170,-49>, a=<0,0,-2> +p=<-457,-4410,808>, v=<24,122,28>, a=<0,11,-7> +p=<1120,-2567,181>, v=<1,115,-39>, a=<-6,2,3> +p=<-457,-1522,428>, v=<4,60,68>, a=<2,2,-9> +p=<1348,-1959,-921>, v=<-151,93,-71>, a=<8,1,12> +p=<-4542,-192,2271>, v=<129,-110,-69>, a=<11,12,-5> +p=<645,359,1739>, v=<-4,-19,-81>, a=<-3,0,-1> +p=<-723,1385,143>, v=<18,-53,-17>, a=<2,-2,1> +p=<3400,-1959,3829>, v=<1,153,-71>, a=<-18,-5,-13> +p=<-267,-2377,-1757>, v=<4,75,73>, a=<1,5,2> +p=<-2851,-1541,-85>, v=<70,61,5>, a=<8,2,0> +p=<-1352,-38,3463>, v=<-16,4,-174>, a=<8,0,0> +p=<-742,302,1673>, v=<90,8,52>, a=<-5,-2,-13> +p=<-1142,-2048,-557>, v=<26,-95,90>, a=<3,19,-6> +p=<488,2242,233>, v=<-24,-110,-23>, a=<0,0,1> +p=<1298,1882,1393>, v=<-96,-8,-102>, a=<3,-8,3> +p=<-1822,3522,1353>, v=<60,-48,-58>, a=<3,-12,-1> +p=<358,1192,1013>, v=<14,16,-41>, a=<-3,-7,-1> +p=<4678,-3148,-2937>, v=<-118,128,83>, a=<-11,3,6> +p=<3118,-1218,783>, v=<-19,63,-40>, a=<-13,0,0> +p=<708,1212,843>, v=<28,-6,-85>, a=<-6,-5,4> +p=<6066,4745,-10>, v=<-85,-26,73>, a=<-5,-6,-4> +p=<4701,1385,7235>, v=<8,-128,-98>, a=<-8,5,-6> +p=<2006,-3130,-9355>, v=<-41,1,16>, a=<-1,5,14> +p=<1832,-2895,3222>, v=<52,100,-90>, a=<-14,4,-7> +p=<-2608,1265,772>, v=<64,18,-20>, a=<6,-8,-2> +p=<752,-1315,-358>, v=<43,63,110>, a=<-8,0,-9> +p=<786,-471,-1574>, v=<-70,36,85>, a=<0,0,10> +p=<-369,-636,-1167>, v=<-13,93,-12>, a=<8,-7,20> +p=<-116,-339,1044>, v=<-12,18,-93>, a=<4,1,0> +p=<-1359,453,109>, v=<77,-48,-20>, a=<8,0,2> +p=<313,1278,-1552>, v=<27,-57,101>, a=<-9,-11,7> +p=<1193,860,-56>, v=<31,-127,7>, a=<-23,7,0> +p=<608,3450,-869>, v=<23,-173,85>, a=<-5,0,-4> +p=<1938,30,-819>, v=<-96,-2,-54>, a=<0,0,9> +p=<6390,-10312,-10919>, v=<-145,-34,40>, a=<-1,15,12> +p=<-1683,-10702,313>, v=<-18,136,32>, a=<3,7,-2> +p=<-3360,2012,5305>, v=<-95,-50,84>, a=<9,0,-11> +p=<6078,8642,1>, v=<-137,-80,-60>, a=<-1,-7,3> +p=<618,-7309,-38>, v=<-77,29,-139>, a=<3,8,7> +p=<3192,218,-3080>, v=<-23,76,19>, a=<-3,-4,3> +p=<-45,-1849,-5303>, v=<0,89,196>, a=<0,-2,-3> +p=<618,-3019,6475>, v=<-117,19,-6>, a=<5,3,-8> +p=<-13968,9422,586>, v=<97,40,-15>, a=<13,-14,0> +p=<-2034,2558,4720>, v=<51,-124,-81>, a=<0,3,-2> +p=<856,574,1042>, v=<-130,-44,-46>, a=<8,0,-6> +p=<526,-578,-164>, v=<-122,39,87>, a=<11,2,-11> +p=<-1070,382,214>, v=<11,-41,36>, a=<11,2,-8> +p=<-1076,-1046,1180>, v=<83,52,-90>, a=<0,6,-1> +p=<1042,898,-1238>, v=<-87,-71,105>, a=<-1,0,0> +p=<-404,-404,-1616>, v=<118,44,117>, a=<-14,-1,3> +p=<-476,112,16>, v=<59,-90,33>, a=<-4,13,-5> +p=<-1820,-1316,1852>, v=<93,3,-107>, a=<8,17,-7> +p=<-104,-878,10>, v=<2,25,-38>, a=<0,8,6> +p=<805,3145,2595>, v=<21,-40,-1>, a=<-5,-9,-10> +p=<1080,1660,-2795>, v=<-49,-76,129>, a=<0,0,0> +p=<5249,4311,-991>, v=<-112,-139,24>, a=<-11,-5,2> +p=<1300,1891,-2641>, v=<10,63,168>, a=<-6,-13,-4> +p=<-1637,-4632,362>, v=<-52,164,-49>, a=<11,4,3> +p=<189,-232,296>, v=<-43,125,0>, a=<3,-10,-1> +p=<2477,-2817,153>, v=<-9,93,64>, a=<-9,3,-6> +p=<2851,-2817,-1728>, v=<-49,1,23>, a=<-7,11,5> +p=<-911,1913,-2564>, v=<30,39,107>, a=<1,-11,1> +p=<473,4832,-3807>, v=<40,-95,118>, a=<-6,-14,7> +p=<-4537,-328,-1017>, v=<154,79,52>, a=<7,-6,0> +p=<-4827,2732,193>, v=<53,-11,23>, a=<18,-12,-3> +p=<-1017,3842,-1667>, v=<-22,-98,74>, a=<7,-9,1> +p=<-2107,572,-2927>, v=<85,-50,95>, a=<2,2,5> +p=<3363,562,-767>, v=<-178,3,-34>, a=<1,-3,7> +p=<2113,-568,3283>, v=<0,-14,-100>, a=<-10,4,-6> +p=<3136,4058,-576>, v=<0,-127,52>, a=<-6,0,-2> +p=<128,7562,-672>, v=<61,-55,88>, a=<-4,-11,-4> +p=<794,794,-7491>, v=<29,82,202>, a=<-3,-6,1> +p=<2086,-3728,-1388>, v=<-9,5,110>, a=<-3,6,-4> +p=<-1875,-5343,-1575>, v=<-85,35,-112>, a=<8,7,9> +p=<-4357,-7842,-3649>, v=<-12,21,-51>, a=<8,12,9> +p=<-2759,-5462,-5689>, v=<-59,56,9>, a=<8,6,9> +p=<1338,5809,1230>, v=<-57,-13,-72>, a=<1,-9,2> +p=<1083,-6142,227>, v=<3,41,45>, a=<-2,8,-3> +p=<-4153,-8063,-1796>, v=<87,185,17>, a=<2,3,2> +p=<-6314,-5991,-3427>, v=<-67,-36,128>, a=<12,10,-2> +p=<-5098,-4129,-1622>, v=<-21,-7,22>, a=<8,6,1> +p=<8525,-5402,-6277>, v=<-9,-32,86>, a=<-11,9,4> +p=<1495,6302,-1641>, v=<-136,-67,-114>, a=<5,-5,8> +p=<-2647,-4889,-14162>, v=<90,52,79>, a=<-1,4,15> +p=<6359,6492,2292>, v=<9,-33,-42>, a=<-9,-7,-1> +p=<7727,-1089,848>, v=<-66,30,-4>, a=<-7,0,-1> +p=<-4737,-3236,4515>, v=<28,67,-120>, a=<5,1,0> +p=<4782,4592,6092>, v=<-47,-217,-64>, a=<-4,5,-5> +p=<312,1556,-354>, v=<-25,-27,-47>, a=<1,-3,5> +p=<552,1460,2046>, v=<90,102,-72>, a=<-9,-13,-1> +p=<-1812,-1552,342>, v=<76,90,-26>, a=<0,-2,1> +p=<-3564,-3172,114>, v=<-51,70,-54>, a=<16,5,4> +p=<-456,-328,-426>, v=<32,39,-19>, a=<-1,-2,3> +p=<204,6824,-4650>, v=<-8,-34,82>, a=<0,-20,9> +p=<-1920,5996,-5262>, v=<43,-112,45>, a=<3,-11,14> +p=<-2679,5579,547>, v=<95,28,18>, a=<-1,-11,-2> +p=<-5484,-1272,-3771>, v=<55,142,75>, a=<6,-6,2> +p=<-3682,4236,8265>, v=<-33,15,-69>, a=<8,-8,-10> +p=<6994,2893,9761>, v=<-32,-68,-43>, a=<-10,-1,-14> +p=<925,4627,-2224>, v=<-116,-84,47>, a=<5,-3,1> +p=<-4209,-4383,-116>, v=<0,-29,20>, a=<7,9,-1> +p=<61,196,-1608>, v=<-38,-35,72>, a=<5,3,9> +p=<439,952,342>, v=<-11,-46,7>, a=<-4,-5,-6> +p=<-1025,34,-156>, v=<72,-41,29>, a=<2,6,-3> +p=<1765,-446,-978>, v=<-102,103,26>, a=<-7,-10,8> +p=<823,-530,1284>, v=<-69,19,-65>, a=<0,4,-7> +p=<-1313,-1184,492>, v=<109,93,-12>, a=<0,1,-5> +p=<-575,598,870>, v=<54,-62,-89>, a=<-1,2,2> +p=<-281,-164,-2304>, v=<36,21,104>, a=<-2,-1,13> +p=<-1253,-638,870>, v=<117,41,-63>, a=<-2,2,-2> +p=<2203,610,-1506>, v=<-184,-37,122>, a=<0,-2,0> +p=<-985,6224,650>, v=<-69,-121,-44>, a=<10,-14,1> +p=<1083,-1388,-2001>, v=<-48,64,111>, a=<0,0,-2> +p=<-1711,-2411,-681>, v=<125,76,97>, a=<-4,3,-6> +p=<1380,-805,-1990>, v=<42,118,30>, a=<-9,-7,5> +p=<-4277,1090,4613>, v=<66,48,-94>, a=<4,-5,-3> +p=<-3909,-6590,5845>, v=<5,-42,-149>, a=<7,15,-2> +p=<-1397,1522,6677>, v=<-57,-48,-76>, a=<6,0,-8> +p=<4603,4162,-4955>, v=<-30,18,139>, a=<-7,-9,1> +p=<-1819,291,222>, v=<44,-69,-14>, a=<10,6,0> +p=<86,726,-2103>, v=<-43,-50,117>, a=<5,0,3> +p=<626,-579,1677>, v=<-87,-35,-39>, a=<6,9,-9> +p=<1631,261,1272>, v=<-98,-27,-60>, a=<-1,1,-3> +p=<-244,-1704,-933>, v=<-21,32,87>, a=<5,10,-3> +p=<-400,1667,-128>, v=<65,-25,62>, a=<-4,-5,-5> +p=<-3004,-1798,-317>, v=<68,85,38>, a=<7,0,-2> +p=<2939,5825,1678>, v=<-28,-36,-68>, a=<-10,-22,-1> +p=<-1,1562,3358>, v=<-53,2,6>, a=<5,-7,-15> +p=<406,1965,2472>, v=<13,-9,-97>, a=<-2,-5,0> +p=<1342,3161,1965>, v=<4,-28,17>, a=<-4,-7,-7> +p=<1121,-973,-1194>, v=<-28,50,-37>, a=<-1,-1,6> +p=<-465,-2494,301>, v=<6,41,-81>, a=<1,4,5> +p=<-322,-4782,3057>, v=<14,48,-52>, a=<0,10,-5> +p=<471,1127,547>, v=<6,2,48>, a=<-4,-8,-9> +p=<267,2215,2298>, v=<-18,-134,-136>, a=<0,0,0> +p=<-1535,1008,2689>, v=<7,-90,-96>, a=<9,3,-7> +p=<-566,2963,-1272>, v=<49,-106,-7>, a=<-2,-8,9> +p=<-2674,-743,-286>, v=<92,-59,7>, a=<7,11,1> +p=<6438,-2222,598>, v=<-210,82,-81>, a=<-19,5,5> +p=<2188,1399,1108>, v=<-32,-113,33>, a=<-11,3,-11> +p=<1093,-1352,2348>, v=<-120,79,-156>, a=<6,0,2> +p=<-624,620,495>, v=<35,-37,61>, a=<0,0,-10> +p=<-573,-706,-1579>, v=<-31,86,75>, a=<7,-5,2> +p=<2912,-740,-372>, v=<-182,-11,58>, a=<1,6,-4> +p=<-607,144,-2276>, v=<-20,63,-1>, a=<6,-8,15> +p=<107,1623,-253>, v=<-26,-114,-21>, a=<2,2,4> +p=<1824,2643,546>, v=<-37,-30,49>, a=<-8,-14,-9> +p=<-828,-1454,-491>, v=<47,-5,-34>, a=<0,10,7> +p=<2264,1164,2274>, v=<-107,-53,14>, a=<0,0,-11> +p=<-3700,1227,1371>, v=<78,109,-64>, a=<9,-15,0> +p=<1130,-1650,-2514>, v=<-31,81,110>, a=<-2,0,1> +p=<1571,-3078,-2241>, v=<-41,39,75>, a=<-3,10,3> +p=<-340,30,-351>, v=<83,-76,-48>, a=<-6,7,6> +p=<-382,5364,-57>, v=<-80,-44,-7>, a=<9,-19,1> +p=<-2062,1500,2022>, v=<44,-80,-150>, a=<5,1,5> +p=<-2314,-1293,27>, v=<12,53,-11>, a=<9,1,1> +p=<-151,2172,-2073>, v=<41,-2,67>, a=<-3,-9,3> +p=<-214,3537,-3396>, v=<11,-34,-46>, a=<0,-12,19> +p=<1965,-2324,2844>, v=<-157,102,-4>, a=<6,-1,-8> +p=<3837,-3117,2402>, v=<41,65,-149>, a=<-14,4,4> +p=<-3183,42,-4306>, v=<41,-70,-26>, a=<6,5,14> +p=<-388,770,2649>, v=<1,-44,-37>, a=<1,1,-5> +p=<-3521,237,-6802>, v=<135,-10,151>, a=<0,0,8> +p=<-1662,-4430,2233>, v=<50,102,-21>, a=<1,5,-5> +p=<-1220,1056,-3071>, v=<6,-109,48>, a=<3,5,5> +p=<4565,-491,3806>, v=<-68,18,-14>, a=<-8,0,-10> +p=<1612,-1813,4162>, v=<-157,71,-64>, a=<7,0,-7> +p=<702,-1553,2238>, v=<-68,34,37>, a=<3,2,-9> +p=<676,-2242,-2312>, v=<-67,-88,50>, a=<3,13,3> +p=<1144,839,-5094>, v=<23,-112,22>, a=<-5,6,13> +p=<-533,228,-3573>, v=<-61,-48,139>, a=<6,3,0> +p=<-3692,-3815,3837>, v=<47,94,-119>, a=<7,4,-2> +p=<2392,2646,4578>, v=<2,-60,-53>, a=<-7,-3,-9> +p=<1781,2269,2108>, v=<39,-5,96>, a=<-8,-6,-13> +p=<-3757,3634,2264>, v=<63,-125,-18>, a=<6,-1,-5> +p=<2846,1166,-3176>, v=<-65,8,-19>, a=<-5,-5,13> +p=<-880,1649,619>, v=<25,-25,-28>, a=<1,-4,0> +p=<4157,3167,-163>, v=<-86,53,-18>, a=<-8,-16,2> +p=<-5549,-1318,1654>, v=<156,-52,47>, a=<7,9,-10> +p=<2179,2178,343>, v=<-96,0,-16>, a=<0,-8,0> +p=<-2490,-1295,1769>, v=<83,55,-18>, a=<2,0,-5> +p=<-3042,1235,-3843>, v=<131,89,106>, a=<0,-12,5> +p=<-7916,1796,-4481>, v=<2,-25,-27>, a=<10,-1,7> +p=<1405,4175,4>, v=<43,14,178>, a=<-4,-6,-9> +p=<-9047,704,2773>, v=<-49,63,-73>, a=<14,-4,0> +p=<2341,-3430,355>, v=<19,129,-91>, a=<-4,-2,4> +p=<2726,290,7839>, v=<-49,-70,-239>, a=<-3,4,-2> +p=<2987,-8178,-3181>, v=<17,27,21>, a=<-8,17,6> +p=<2668,7105,763>, v=<-17,-185,20>, a=<-5,-4,-3> +p=<1885,2581,-4979>, v=<40,-14,113>, a=<-7,-5,4> +p=<1218,-3190,-8604>, v=<78,5,103>, a=<-8,7,13> +p=<-3306,3074,-3094>, v=<114,-121,108>, a=<0,1,0> +p=<-2378,-2726,2213>, v=<97,19,30>, a=<-1,5,-7> +p=<-203,7047,-4109>, v=<-53,-168,23>, a=<4,-5,8> +p=<-5452,-5800,3460>, v=<23,50,17>, a=<11,10,-9> +p=<4002,-1247,6650>, v=<-48,133,-138>, a=<-6,-6,-6> +p=<1078,338,5265>, v=<13,-49,-67>, a=<-7,3,-21> +p=<-993,1782,-1689>, v=<-68,35,29>, a=<12,-13,6> +p=<1667,-1562,724>, v=<-38,71,-48>, a=<-5,1,1> +p=<3225,-251,-2164>, v=<-110,2,114>, a=<-6,1,0> +p=<736,3796,-3114>, v=<1,-71,34>, a=<-4,-13,13> +p=<1876,-23,667>, v=<-39,0,-5>, a=<-6,0,-3> +p=<3262,2896,-9591>, v=<-142,-99,61>, a=<2,0,18> +p=<-2393,2780,-3037>, v=<83,-50,60>, a=<0,-3,3> +p=<-1465,-4064,2009>, v=<156,6,-84>, a=<-7,9,1> +p=<-1523,-4006,-1616>, v=<-22,-41,56>, a=<5,12,0> +p=<-6047,4056,-4052>, v=<119,-19,-10>, a=<6,-8,10> +p=<-6482,-5949,3285>, v=<-1,86,-83>, a=<15,8,-2> +p=<-205,-2209,-2649>, v=<-57,8,85>, a=<4,4,0> +p=<-2251,-3294,575>, v=<-7,43,-67>, a=<5,4,3> +p=<-1104,5324,-2556>, v=<4,5,82>, a=<2,-11,0> +p=<4166,-3914,2962>, v=<-134,-1,-64>, a=<0,8,-2> +p=<-1290,-1310,-6369>, v=<10,91,-3>, a=<2,-3,13> +p=<-267,5076,-7888>, v=<9,-131,94>, a=<0,-2,10> +p=<-484,7277,1195>, v=<32,70,57>, a=<-1,-19,-6> +p=<-459,1211,-3476>, v=<-35,-59,51>, a=<4,1,6> +p=<2310,-4509,-1019>, v=<-101,53,51>, a=<1,9,-1> +p=<6002,28,-1149>, v=<-108,-27,56>, a=<-9,2,-1> +p=<-1096,-1597,-2566>, v=<-24,22,-11>, a=<5,3,8> +p=<1981,1592,3923>, v=<22,15,57>, a=<-9,-7,-19> +p=<-1423,-3882,1692>, v=<26,13,-38>, a=<3,13,-3> +p=<2142,4904,151>, v=<-21,-105,-79>, a=<-6,-9,6> +p=<-3447,741,-1137>, v=<126,-32,25>, a=<2,0,2> +p=<-2826,-4204,565>, v=<63,99,-181>, a=<5,7,13> +p=<-917,-2065,128>, v=<-20,54,-18>, a=<5,3,1> +p=<3465,-1355,3117>, v=<-22,32,-38>, a=<-13,3,-10> +p=<1932,-515,2319>, v=<-92,-19,-22>, a=<0,4,-8> +p=<-588,-3539,-3561>, v=<-71,180,115>, a=<9,-1,5> +p=<-294,-1250,-1062>, v=<14,60,73>, a=<0,0,-2> +p=<1281,1480,2865>, v=<16,-26,-114>, a=<-7,-4,-2> +p=<-3654,-3896,-33>, v=<-2,87,-31>, a=<16,9,3> +p=<-1667,2961,1173>, v=<16,-167,1>, a=<8,0,-7> +p=<-398,72,-276>, v=<50,-16,72>, a=<-3,1,-6> +p=<2413,39,-201>, v=<-123,-3,-30>, a=<3,0,2> +p=<-142,3714,-5311>, v=<148,0,-28>, a=<-8,-6,10> +p=<4163,6899,254>, v=<-29,-73,29>, a=<-5,-7,-2> +p=<-1087,-311,5784>, v=<-77,43,-21>, a=<6,-2,-8> +p=<-527,-1361,814>, v=<-75,73,-5>, a=<5,-2,-1> +p=<4653,3014,2914>, v=<-7,-88,-83>, a=<-7,0,0> +p=<378,615,-4627>, v=<-20,51,163>, a=<0,-9,10> +p=<-216,1164,3275>, v=<-82,-103,-105>, a=<10,4,-8> +p=<333,-708,-1117>, v=<-27,-18,44>, a=<1,6,2> +p=<434,-565,-477>, v=<17,-38,2>, a=<-6,10,4> +p=<2121,485,510>, v=<-111,-8,14>, a=<-5,-4,-7> +p=<-819,-544,-400>, v=<114,28,19>, a=<-7,1,1> +p=<-2862,-701,1345>, v=<-408,-94,194>, a=<28,10,-13> +p=<575,-1006,2577>, v=<80,-139,372>, a=<-3,7,-21> +p=<2735,967,346>, v=<394,134,47>, a=<-25,-7,-1> +p=<-962,-2140,1502>, v=<-134,-307,214>, a=<8,20,-19> +p=<123,408,-2893>, v=<16,59,-413>, a=<-1,-7,29> +p=<2829,-605,-250>, v=<407,-87,-35>, a=<-27,8,7> +p=<-2105,-364,-1355>, v=<-300,-52,-193>, a=<19,6,16> +p=<-1214,-1213,2165>, v=<-172,-178,309>, a=<13,11,-18> +p=<-1256,2670,808>, v=<-179,378,115>, a=<14,-31,-4> +p=<537,2137,-1601>, v=<75,304,-227>, a=<-7,-18,16> +p=<-1778,1229,-1984>, v=<-253,171,-284>, a=<17,-15,17> +p=<1272,2073,2063>, v=<179,293,293>, a=<-7,-21,-20> +p=<-164,-559,2874>, v=<-20,-80,410>, a=<3,1,-30> +p=<-528,-2158,-1054>, v=<-75,-313,-149>, a=<8,21,7> +p=<425,-330,2711>, v=<60,-51,386>, a=<-8,0,-28> +p=<337,-2958,942>, v=<50,-416,139>, a=<-1,27,-11> +p=<-284,-2152,1472>, v=<-39,-307,206>, a=<1,21,-12> +p=<1790,358,-2503>, v=<252,50,-356>, a=<-20,4,24> +p=<1259,-2885,936>, v=<177,-411,129>, a=<-15,30,-11> +p=<1542,363,2190>, v=<221,49,306>, a=<-15,-2,-21> +p=<-610,2110,2030>, v=<-92,302,290>, a=<8,-22,-20> +p=<-2104,1703,549>, v=<-297,242,80>, a=<21,-19,-10> +p=<-464,-515,2545>, v=<-68,-73,363>, a=<6,7,-21> +p=<2787,-30,-376>, v=<397,-6,-48>, a=<-24,3,3> +p=<844,-2406,-911>, v=<114,-343,-130>, a=<-12,26,9> +p=<1572,-2634,108>, v=<232,-377,19>, a=<-12,18,3> +p=<2533,-1758,-1701>, v=<356,-247,-244>, a=<-25,11,24> +p=<2445,-203,-2358>, v=<350,-28,-342>, a=<-25,4,18> +p=<-2427,-94,1631>, v=<-349,-13,237>, a=<25,-4,-15> +p=<2839,794,350>, v=<405,108,50>, a=<-26,-5,0> +p=<1443,1765,983>, v=<209,249,137>, a=<-15,-18,-9> +p=<2174,1428,843>, v=<316,205,118>, a=<-19,-11,-10> +p=<-2472,813,2035>, v=<-357,112,293>, a=<21,-8,-21> +p=<2155,-1234,-1600>, v=<306,-176,-230>, a=<-19,13,15> +p=<791,1036,2799>, v=<118,153,399>, a=<-3,-5,-21> +p=<-873,1632,-2181>, v=<-125,233,-307>, a=<11,-16,18> +p=<-1048,-531,-2622>, v=<-145,-77,-374>, a=<11,3,25> +p=<1484,1923,529>, v=<211,272,72>, a=<-17,-23,-12> +p=<-131,-1240,-2517>, v=<-18,-178,-361>, a=<3,14,24> +p=<3269,-518,-381>, v=<461,-72,-53>, a=<-30,5,1> +p=<-720,2112,-1981>, v=<-100,299,-284>, a=<3,-21,24> +p=<326,-2960,823>, v=<48,-423,116>, a=<-3,33,-4> +p=<-344,-1126,-3053>, v=<-41,-158,-436>, a=<1,10,25> +p=<2368,2203,763>, v=<335,312,105>, a=<-21,-20,-10> +p=<474,1450,1899>, v=<66,207,271>, a=<-4,-14,-18> +p=<-227,776,2990>, v=<-37,119,426>, a=<3,-9,-30> +p=<470,-2544,455>, v=<65,-365,68>, a=<-4,28,-5> +p=<1702,2620,-9>, v=<235,378,-1>, a=<-17,-26,-7> +p=<2540,948,-783>, v=<356,134,-111>, a=<-24,-10,3> +p=<916,2642,-440>, v=<130,379,-61>, a=<-12,-27,5> +p=<2693,1026,1475>, v=<387,147,205>, a=<-24,-10,-14> +p=<1199,287,-2521>, v=<171,42,-362>, a=<-10,-3,25> +p=<2358,-1913,-134>, v=<335,-270,-17>, a=<-21,19,2> +p=<-2900,-298,2093>, v=<-414,-43,300>, a=<25,-2,-24> +p=<-808,1604,2019>, v=<-115,232,284>, a=<7,-16,-15> +p=<876,2134,1456>, v=<124,303,211>, a=<-8,-19,-13> +p=<2786,1229,-88>, v=<400,177,-16>, a=<-26,-11,0> +p=<2349,1657,-1586>, v=<331,240,-231>, a=<-28,-14,15> +p=<-2171,2276,484>, v=<-314,326,70>, a=<18,-20,-4> +p=<-2601,-910,1371>, v=<-366,-132,192>, a=<26,15,-14> +p=<1533,-2421,-579>, v=<218,-342,-86>, a=<-14,18,6> +p=<-603,3139,-639>, v=<-87,449,-90>, a=<2,-30,9> +p=<956,2616,1153>, v=<138,374,164>, a=<-11,-26,-10> +p=<-64,-1054,-2867>, v=<-11,-147,-405>, a=<0,15,28> +p=<-232,1520,2680>, v=<-40,215,384>, a=<-1,-16,-31> +p=<1826,780,2790>, v=<260,109,399>, a=<-21,-4,-27> +p=<-1149,-1517,1874>, v=<-159,-214,264>, a=<11,13,-24> +p=<1044,2205,1781>, v=<147,319,251>, a=<-12,-21,-21> +p=<-2186,179,2263>, v=<-312,21,323>, a=<22,-1,-23> +p=<-1885,-1193,-1446>, v=<-269,-168,-212>, a=<16,8,15> +p=<1167,-2283,1935>, v=<169,-323,277>, a=<-13,24,-19> +p=<-421,2420,1631>, v=<-56,339,233>, a=<1,-27,-16> +p=<562,-2294,-2131>, v=<76,-327,-305>, a=<-7,22,21> +p=<-1576,2740,-54>, v=<-226,391,-4>, a=<19,-27,1> +p=<2160,1538,-229>, v=<308,220,-32>, a=<-20,-16,1> +p=<508,-1104,2565>, v=<72,-163,372>, a=<-1,8,-24> +p=<191,2676,1537>, v=<25,385,214>, a=<4,-25,-14> +p=<-591,-2168,-1806>, v=<-84,-309,-256>, a=<5,21,19> +p=<-1362,2985,-687>, v=<-198,426,-103>, a=<20,-25,11> +p=<-1185,738,2597>, v=<-171,106,372>, a=<9,-8,-25> +p=<-388,-537,3094>, v=<-52,-77,439>, a=<4,4,-25> +p=<166,-2444,1683>, v=<18,-348,240>, a=<-4,20,-16> +p=<-331,608,-3211>, v=<-44,86,-458>, a=<3,-5,28> +p=<-1303,50,2782>, v=<-184,8,395>, a=<14,1,-26> +p=<2081,-29,-1783>, v=<296,-1,-253>, a=<-21,0,17> +p=<-1894,1960,-741>, v=<-267,282,-108>, a=<23,-13,8> +p=<-3114,767,343>, v=<-444,109,51>, a=<29,-10,-3> +p=<-2439,2322,-769>, v=<-352,331,-104>, a=<24,-26,5> +p=<-2392,-2124,-23>, v=<-336,-303,-1>, a=<25,22,2> +p=<937,-2766,1313>, v=<134,-400,189>, a=<-12,27,-8> +p=<411,1204,-2615>, v=<64,171,-372>, a=<-3,-10,27> +p=<2907,-309,387>, v=<413,-40,55>, a=<-27,3,-1> +p=<-1936,592,-1983>, v=<-276,80,-285>, a=<19,-10,16> +p=<-2006,-1313,1179>, v=<-281,-186,167>, a=<20,15,-10> +p=<-400,-2127,-1326>, v=<-54,-302,-188>, a=<1,22,16> +p=<-501,2491,-1539>, v=<-71,357,-221>, a=<4,-22,13> +p=<1006,-23,-2840>, v=<143,-3,-410>, a=<-7,0,28> +p=<-905,-2981,-287>, v=<-133,-429,-36>, a=<2,33,4> +p=<-2485,170,329>, v=<-359,24,52>, a=<22,-1,-3> +p=<1866,2205,687>, v=<272,314,100>, a=<-15,-20,-8> +p=<-900,2496,-49>, v=<-128,358,-11>, a=<11,-28,4> +p=<-1576,1992,1713>, v=<-228,284,242>, a=<15,-23,-18> +p=<-2642,1123,1538>, v=<-376,160,218>, a=<32,-10,-15> +p=<3094,-192,-719>, v=<445,-27,-100>, a=<-30,-2,3> +p=<1914,-1757,2129>, v=<276,-254,307>, a=<-20,15,-21> +p=<-1137,1102,2427>, v=<-166,156,340>, a=<6,-9,-26> +p=<321,-2712,-1091>, v=<48,-384,-154>, a=<-7,32,10> +p=<1569,-940,-2089>, v=<221,-136,-299>, a=<-8,11,17> +p=<1767,-1886,-2256>, v=<256,-269,-324>, a=<-21,16,20> +p=<1399,-1869,1367>, v=<201,-266,193>, a=<-11,16,-15> +p=<-296,-2873,134>, v=<-42,-410,20>, a=<8,27,-1> +p=<1385,-1511,1590>, v=<203,-216,228>, a=<-12,16,-15> +p=<-648,2491,-2137>, v=<-91,348,-300>, a=<9,-18,21> +p=<-1215,-2414,-1125>, v=<-172,-344,-165>, a=<12,31,6> +p=<2438,488,553>, v=<346,66,79>, a=<-23,-4,-8> +p=<-1749,1499,1484>, v=<-248,214,213>, a=<15,-14,-13> +p=<-247,-2155,690>, v=<-35,-310,98>, a=<1,26,1> +p=<2786,514,-80>, v=<398,74,-9>, a=<-30,-3,-4> +p=<799,-713,2264>, v=<115,-101,323>, a=<-11,4,-22> +p=<-709,-3351,313>, v=<-99,-479,44>, a=<5,39,1> +p=<2561,1085,-436>, v=<362,159,-68>, a=<-27,-13,3> +p=<2083,217,-1979>, v=<297,31,-285>, a=<-20,-1,14> +p=<3236,463,173>, v=<459,67,28>, a=<-31,-4,-3> +p=<-588,2331,-2194>, v=<-80,334,-313>, a=<10,-20,19> +p=<-1153,929,2659>, v=<-166,138,387>, a=<12,-8,-29> +p=<-1468,-1066,-2212>, v=<-215,-152,-314>, a=<13,10,19> +p=<1901,1658,-1133>, v=<268,233,-156>, a=<-21,-15,11> +p=<-2588,-1690,-275>, v=<-370,-236,-43>, a=<27,21,1> +p=<-2154,-859,1783>, v=<-309,-124,255>, a=<25,9,-18> +p=<-1876,-1228,-2452>, v=<-275,-178,-350>, a=<17,12,22> +p=<-1399,1896,1363>, v=<-197,266,193>, a=<13,-17,-14> +p=<1561,-2681,856>, v=<222,-382,121>, a=<-21,29,-6> +p=<2508,1536,-734>, v=<355,219,-102>, a=<-25,-19,5> +p=<1262,-2747,-413>, v=<180,-390,-59>, a=<-10,30,6> +p=<668,585,3679>, v=<94,80,530>, a=<-10,-8,-36> +p=<-977,732,-2493>, v=<-139,106,-360>, a=<12,-7,23> +p=<-2572,659,-1567>, v=<-367,90,-222>, a=<25,0,15> +p=<-2140,-1902,-1283>, v=<-307,-271,-185>, a=<20,18,12> +p=<295,-3217,-148>, v=<40,-456,-22>, a=<0,31,-1> +p=<2059,-2374,348>, v=<291,-338,49>, a=<-18,26,-3> +p=<604,2902,-71>, v=<86,412,-10>, a=<-5,-30,5> +p=<-2017,-1967,-1275>, v=<-289,-281,-182>, a=<22,19,12> +p=<-157,-2027,-2301>, v=<-23,-292,-332>, a=<-2,17,24> +p=<-1680,1131,-2939>, v=<-240,160,-419>, a=<13,-10,32> +p=<286,2838,709>, v=<45,405,101>, a=<0,-28,-10> +p=<-1213,2556,1759>, v=<-173,364,252>, a=<9,-29,-19> +p=<396,1472,-2016>, v=<53,211,-294>, a=<0,-13,24> +p=<-2459,-1679,-582>, v=<-350,-236,-90>, a=<24,14,1> +p=<2958,1188,-1749>, v=<422,173,-249>, a=<-30,-12,18> +p=<2871,-262,323>, v=<407,-35,46>, a=<-28,3,1> +p=<-1869,-2134,448>, v=<-268,-308,60>, a=<19,21,2> +p=<1956,1570,1278>, v=<275,226,184>, a=<-19,-19,-12> +p=<2009,1315,1860>, v=<287,186,267>, a=<-15,-13,-18> +p=<-564,-1258,1855>, v=<-80,-178,261>, a=<7,15,-16> +p=<-2770,-683,708>, v=<-395,-106,102>, a=<24,5,-4> +p=<-1222,81,-2826>, v=<-173,13,-402>, a=<11,4,25> +p=<-518,-2550,1772>, v=<-73,-366,252>, a=<6,27,-15> +p=<-3209,-1222,-792>, v=<-458,-179,-114>, a=<30,17,7> +p=<1309,-2372,-1676>, v=<190,-336,-234>, a=<-11,26,15> +p=<2573,795,-712>, v=<361,112,-101>, a=<-23,-6,8> +p=<-1984,441,2029>, v=<-282,66,291>, a=<19,0,-22> +p=<2877,1496,-46>, v=<411,211,-5>, a=<-28,-15,1> +p=<1052,92,2579>, v=<151,12,369>, a=<-6,3,-25> +p=<1152,165,2570>, v=<162,23,367>, a=<-12,4,-26> +p=<-1745,450,-1948>, v=<-249,64,-273>, a=<17,-3,20> +p=<939,-281,2815>, v=<137,-40,404>, a=<-8,0,-29> +p=<-2834,622,-1464>, v=<-404,84,-214>, a=<28,0,16> +p=<-2440,-639,299>, v=<-346,-87,43>, a=<26,9,-4> +p=<-722,1338,2496>, v=<-105,186,355>, a=<3,-15,-23> +p=<-1424,2722,319>, v=<-205,389,44>, a=<14,-23,-3> +p=<2467,-1140,1063>, v=<347,-156,150>, a=<-28,3,-6> +p=<-2367,1955,-369>, v=<-336,277,-49>, a=<23,-19,3> +p=<1942,-1104,2025>, v=<282,-160,289>, a=<-22,7,-25> +p=<-54,2067,2693>, v=<-10,291,389>, a=<0,-23,-27> +p=<315,3248,-258>, v=<44,468,-37>, a=<-2,-32,5> +p=<-2839,1381,-122>, v=<-404,197,-23>, a=<27,-11,-2> +p=<1600,-733,2316>, v=<233,-104,330>, a=<-16,11,-25> +p=<2017,-1845,1052>, v=<284,-263,150>, a=<-27,20,-10> +p=<3041,567,1573>, v=<434,81,220>, a=<-26,-3,-14> +p=<-1288,769,2749>, v=<-184,112,391>, a=<15,-11,-26> +p=<836,-2576,-725>, v=<118,-364,-103>, a=<-11,21,6> +p=<-2381,-1359,1810>, v=<-340,-188,258>, a=<26,8,-19> +p=<283,2198,2355>, v=<40,313,337>, a=<-5,-21,-25> +p=<-112,831,-2930>, v=<-12,113,-412>, a=<1,-6,28> +p=<-289,-2566,1296>, v=<-44,-369,188>, a=<3,20,-12> +p=<1770,707,-1869>, v=<245,108,-270>, a=<-17,-6,17> +p=<-2334,-536,-1593>, v=<-333,-79,-225>, a=<19,0,17> +p=<435,1077,-2957>, v=<62,153,-422>, a=<-4,-11,29> +p=<2774,1204,122>, v=<403,176,15>, a=<-27,-16,-3> +p=<679,-1228,1864>, v=<97,-174,263>, a=<-9,8,-16> +p=<848,3381,156>, v=<122,485,26>, a=<-6,-35,-2> +p=<-2202,-2686,-850>, v=<-320,-383,-119>, a=<24,26,4> +p=<-452,-352,-3314>, v=<-63,-46,-474>, a=<10,3,33> +p=<-1826,-1204,-2376>, v=<-261,-171,-344>, a=<25,14,23> +p=<2619,-499,-104>, v=<374,-68,-14>, a=<-21,3,1> +p=<276,2721,2295>, v=<36,384,327>, a=<-4,-28,-22> +p=<-171,-2527,254>, v=<-29,-361,37>, a=<-3,25,-4> +p=<801,-734,2278>, v=<117,-102,327>, a=<-1,7,-28> +p=<-1812,-465,2371>, v=<-262,-65,338>, a=<19,-1,-23> +p=<-2729,2131,1459>, v=<-391,304,210>, a=<30,-24,-14> +p=<-1720,-1775,-700>, v=<-244,-254,-99>, a=<17,14,6> +p=<2242,-1163,1268>, v=<320,-160,184>, a=<-23,15,-12> +p=<2595,1394,1005>, v=<367,194,140>, a=<-25,-16,-11> +p=<996,2532,735>, v=<141,361,106>, a=<-11,-27,-11> +p=<880,-2377,-54>, v=<131,-340,-11>, a=<-6,26,-6> +p=<1448,-779,-2468>, v=<211,-109,-352>, a=<-12,7,26> +p=<-338,2273,-2072>, v=<-44,324,-296>, a=<3,-22,17> +p=<1900,1513,-2090>, v=<276,217,-292>, a=<-16,-11,21> +p=<3120,-81,-39>, v=<443,-8,-4>, a=<-33,-3,3> +p=<3105,-241,1450>, v=<443,-37,208>, a=<-35,3,-16> +p=<-2438,-379,2049>, v=<-347,-56,289>, a=<21,-2,-25> +p=<-1219,2180,-803>, v=<-175,306,-107>, a=<9,-22,11> +p=<581,-687,-2813>, v=<83,-105,-401>, a=<-2,7,33> +p=<-823,-1427,2234>, v=<-116,-206,318>, a=<3,14,-19> +p=<1365,2269,1640>, v=<195,318,238>, a=<-8,-22,-13> +p=<2251,659,1086>, v=<316,100,154>, a=<-20,-1,-6> +p=<1408,-1092,-2599>, v=<199,-156,-371>, a=<-15,9,27> +p=<-2212,1205,-1722>, v=<-315,170,-248>, a=<22,-16,19> +p=<829,2553,-1536>, v=<114,360,-219>, a=<-8,-31,14> +p=<-1968,1143,1663>, v=<-281,165,240>, a=<20,-9,-16> +p=<-2376,706,1520>, v=<-336,101,216>, a=<23,-9,-13> +p=<-1485,-1341,-2049>, v=<-216,-195,-294>, a=<16,10,16> +p=<-2688,-1114,591>, v=<-382,-161,85>, a=<22,13,-5> +p=<-410,595,2694>, v=<-59,87,380>, a=<-1,-5,-19> +p=<-723,815,2387>, v=<-101,115,343>, a=<0,-4,-23> +p=<-2401,1151,996>, v=<-344,166,144>, a=<25,-11,-14> +p=<-455,2280,-641>, v=<-66,325,-87>, a=<2,-24,9> +p=<-846,-1492,2722>, v=<-122,-213,391>, a=<6,15,-27> +p=<-649,1702,2175>, v=<-94,244,307>, a=<12,-18,-20> +p=<-797,-1163,-2036>, v=<-118,-169,-292>, a=<5,15,22> +p=<-1446,242,2224>, v=<-201,33,317>, a=<14,-2,-23> +p=<-895,2934,-232>, v=<-130,421,-29>, a=<8,-29,-2> +p=<-643,62,-2923>, v=<-93,10,-418>, a=<5,0,29> +p=<337,-2337,1477>, v=<48,-332,209>, a=<-3,23,-11> +p=<-2172,1517,101>, v=<-316,216,12>, a=<22,-11,-7> +p=<1897,-1459,1524>, v=<273,-204,219>, a=<-14,14,-15> +p=<1467,-1909,-281>, v=<207,-269,-43>, a=<-18,16,6> +p=<-946,-615,-3138>, v=<-134,-87,-450>, a=<8,6,30> +p=<-4,2456,1741>, v=<0,356,250>, a=<-4,-24,-17> +p=<1241,-1245,2277>, v=<179,-171,322>, a=<-8,12,-22> +p=<-764,430,-3236>, v=<-109,57,-458>, a=<5,2,29> +p=<-2201,-1323,-1367>, v=<-315,-193,-194>, a=<24,18,18> +p=<-2762,-1215,6>, v=<-394,-173,0>, a=<25,12,0> +p=<2824,849,-393>, v=<405,120,-53>, a=<-27,-8,6> +p=<65,-2443,1999>, v=<5,-350,286>, a=<-1,24,-21> +p=<-2471,-44,-1205>, v=<-349,-6,-168>, a=<22,3,13> +p=<-1248,-2872,616>, v=<-177,-412,88>, a=<10,28,-4> +p=<1947,-792,-2149>, v=<281,-110,-309>, a=<-21,10,28> +p=<1468,2096,-2012>, v=<209,301,-286>, a=<-13,-22,18> +p=<1295,-71,2957>, v=<183,-11,421>, a=<-9,5,-29> +p=<-1257,-1868,728>, v=<-179,-257,101>, a=<10,21,-2> +p=<-805,-3000,329>, v=<-114,-426,47>, a=<1,30,-5> +p=<-1188,1588,-2818>, v=<-168,226,-402>, a=<14,-13,34> +p=<2680,-1313,520>, v=<383,-182,76>, a=<-23,12,-4> +p=<-1460,152,-2558>, v=<-206,22,-363>, a=<12,-3,26> +p=<-237,-3002,-268>, v=<-33,-430,-36>, a=<3,33,0> +p=<1665,-409,-2286>, v=<234,-55,-326>, a=<-16,1,24> +p=<-107,-783,-2352>, v=<-16,-111,-333>, a=<0,0,25> +p=<-845,-2079,1575>, v=<-121,-297,219>, a=<12,17,-14> +p=<-508,763,3051>, v=<-72,110,438>, a=<2,-7,-32> +p=<197,2596,-753>, v=<34,374,-112>, a=<-3,-23,6> +p=<-411,1576,2594>, v=<-61,228,372>, a=<4,-12,-26> +p=<-1814,1765,1023>, v=<-254,259,146>, a=<13,-17,-8> +p=<-1655,-1741,340>, v=<-236,-248,47>, a=<13,11,-6> +p=<2255,-1186,-231>, v=<327,-172,-37>, a=<-22,15,2> +p=<-241,3179,641>, v=<-40,451,92>, a=<2,-28,-6> +p=<1610,2456,-859>, v=<232,347,-126>, a=<-12,-24,6> +p=<-463,2274,867>, v=<-69,326,122>, a=<9,-21,-8> +p=<-1478,1931,-1508>, v=<-208,275,-214>, a=<16,-18,15> +p=<594,593,-2780>, v=<78,83,-397>, a=<-12,-4,31> +p=<-1597,1937,410>, v=<-226,276,55>, a=<15,-19,-1> +p=<1232,2034,-1751>, v=<183,290,-253>, a=<-12,-18,16> +p=<2498,615,1096>, v=<356,87,154>, a=<-26,-6,-12> +p=<2211,1223,-693>, v=<313,168,-97>, a=<-20,-13,9> +p=<1932,1435,597>, v=<279,205,87>, a=<-20,-15,0> +p=<-19,-941,-2308>, v=<-5,-135,-332>, a=<-4,9,24> +p=<-655,1166,-2769>, v=<-94,169,-398>, a=<6,-8,24> +p=<1925,-798,-2467>, v=<278,-114,-353>, a=<-19,6,24> +p=<656,-1916,-1996>, v=<89,-271,-281>, a=<-3,17,18> +p=<1888,-822,1719>, v=<263,-116,250>, a=<-24,5,-17> +p=<298,-2645,67>, v=<38,-381,9>, a=<-2,28,-1> +p=<1381,1921,-271>, v=<197,274,-32>, a=<-7,-20,-2> +p=<253,-2802,953>, v=<35,-400,136>, a=<-1,28,-9> +p=<-1823,660,-2162>, v=<-260,94,-308>, a=<16,-2,21> +p=<3279,-273,194>, v=<469,-38,28>, a=<-32,2,-1> +p=<922,-2379,1594>, v=<128,-335,220>, a=<-5,24,-19> +p=<-1607,630,-2687>, v=<-226,91,-385>, a=<19,-3,28> +p=<1617,-2124,1725>, v=<234,-303,251>, a=<-17,25,-17> +p=<3198,717,1233>, v=<453,102,178>, a=<-31,-6,-9> +p=<-21,-2066,2180>, v=<-2,-294,315>, a=<-3,22,-22> +p=<3078,-620,456>, v=<437,-88,66>, a=<-28,6,-3> +p=<-2761,76,318>, v=<-394,9,42>, a=<30,2,-6> +p=<611,1020,2592>, v=<84,144,369>, a=<-5,-6,-26> +p=<2676,1201,1382>, v=<384,178,193>, a=<-20,-6,-14> +p=<-3021,453,131>, v=<-430,64,17>, a=<30,-2,1> +p=<-98,-1742,-1646>, v=<-11,-247,-234>, a=<-6,13,16> +p=<2754,260,2409>, v=<392,33,344>, a=<-31,0,-19> +p=<2408,2304,-475>, v=<340,333,-69>, a=<-24,-24,4> +p=<-2025,-1004,-2036>, v=<-288,-144,-284>, a=<19,10,19> +p=<-112,-861,3383>, v=<-16,-122,483>, a=<-2,7,-24> +p=<-689,868,-2371>, v=<-103,125,-338>, a=<3,-6,20> +p=<-1966,-1929,-2346>, v=<-280,-271,-332>, a=<20,22,22> +p=<-865,2802,114>, v=<-124,406,16>, a=<7,-23,-2> +p=<-783,592,-2929>, v=<-114,81,-418>, a=<8,0,26> +p=<-119,1921,-2400>, v=<-16,274,-343>, a=<0,-20,22> +p=<-509,-1923,1378>, v=<-72,-274,198>, a=<-1,17,-15> +p=<-971,-1167,2952>, v=<-137,-166,421>, a=<9,12,-24> +p=<-1946,-1988,-144>, v=<-277,-281,-22>, a=<19,20,1> +p=<437,-1668,-2014>, v=<63,-243,-286>, a=<-3,17,23> +p=<194,-477,-2387>, v=<27,-73,-340>, a=<-1,5,25> +p=<-652,-236,-2596>, v=<-95,-31,-370>, a=<6,5,22> +p=<-2373,-713,1526>, v=<-337,-95,216>, a=<24,8,-13> +p=<2721,-446,1719>, v=<382,-61,249>, a=<-34,5,-17> +p=<1413,-1448,2669>, v=<198,-210,380>, a=<-18,12,-27> +p=<1280,2295,-1231>, v=<187,325,-172>, a=<-12,-22,9> +p=<-1790,797,-1549>, v=<-251,112,-224>, a=<17,-5,12> +p=<2236,-1524,-1673>, v=<321,-217,-236>, a=<-27,19,12> +p=<1311,-2805,754>, v=<189,-400,107>, a=<-18,28,-4> +p=<-526,-365,-2758>, v=<-74,-52,-397>, a=<4,5,24> +p=<-1003,2335,1575>, v=<-146,333,223>, a=<10,-29,-15> +p=<-1857,61,-2352>, v=<-269,13,-338>, a=<20,-2,19> +p=<-2173,2420,-790>, v=<-308,345,-112>, a=<17,-29,7> +p=<-1094,-302,-2901>, v=<-152,-43,-411>, a=<10,3,29> +p=<362,2041,-2034>, v=<50,286,-284>, a=<-9,-24,24> +p=<-2378,1528,-594>, v=<-340,218,-90>, a=<25,-12,5> +p=<2794,1014,530>, v=<397,141,81>, a=<-27,-5,-5> +p=<-2821,-10,1174>, v=<-398,1,163>, a=<28,2,-16> +p=<1777,1975,1717>, v=<253,279,244>, a=<-16,-15,-19> +p=<-805,3300,-30>, v=<-115,471,-4>, a=<12,-33,-1> +p=<2840,-142,-1245>, v=<407,-19,-171>, a=<-28,3,13> +p=<1266,235,2081>, v=<180,37,297>, a=<-16,-2,-14> +p=<812,-370,-2485>, v=<113,-52,-354>, a=<-5,3,22> +p=<-351,430,-2832>, v=<-46,60,-405>, a=<3,-4,31> +p=<3502,743,-721>, v=<500,105,-103>, a=<-37,-7,2> +p=<627,2662,570>, v=<92,380,76>, a=<-6,-26,-5> +p=<327,3074,-278>, v=<47,438,-39>, a=<-5,-27,2> +p=<2107,260,-1761>, v=<304,37,-250>, a=<-19,-2,16> +p=<1129,2287,-563>, v=<161,327,-77>, a=<-8,-23,3> +p=<3183,-394,649>, v=<455,-53,91>, a=<-33,-2,-3> +p=<-1675,-2713,-1927>, v=<-234,-384,-272>, a=<12,27,19> +p=<1851,-967,-1886>, v=<258,-140,-272>, a=<-18,9,22> +p=<-1826,-1800,1281>, v=<-255,-256,184>, a=<16,18,-13> +p=<-2484,-383,-1847>, v=<-354,-57,-258>, a=<21,2,20> +p=<1608,1492,-2825>, v=<228,215,-402>, a=<-16,-12,26> +p=<-2122,-82,-1663>, v=<-303,-12,-237>, a=<24,-1,16> +p=<-1613,871,2215>, v=<-224,121,308>, a=<13,-9,-27> +p=<-1511,-968,-2542>, v=<-215,-136,-366>, a=<15,9,25> +p=<-80,-2616,1677>, v=<-15,-373,239>, a=<3,30,-16> +p=<657,-2888,-177>, v=<93,-418,-22>, a=<-6,34,2> +p=<59,-1645,-2593>, v=<10,-238,-370>, a=<0,15,22> +p=<2022,-1730,-723>, v=<289,-246,-103>, a=<-18,10,1> +p=<-1156,-2804,263>, v=<-161,-396,37>, a=<9,32,-1> +p=<-1895,-1560,621>, v=<-270,-225,82>, a=<13,15,-5> +p=<1490,-2447,-1298>, v=<214,-349,-188>, a=<-15,21,8> +p=<-664,1084,-3224>, v=<-92,151,-457>, a=<3,-9,32> +p=<-2403,2210,-37>, v=<-346,310,-6>, a=<24,-23,1> +p=<-1765,2219,-268>, v=<-244,316,-38>, a=<20,-23,0> +p=<1190,-757,2920>, v=<170,-114,415>, a=<-17,11,-31> +p=<-1278,2562,874>, v=<-180,365,123>, a=<12,-26,-6> +p=<2093,-1856,591>, v=<301,-262,77>, a=<-19,18,-6> +p=<-640,604,2474>, v=<-92,88,347>, a=<0,-5,-24> +p=<61,2002,2602>, v=<7,286,372>, a=<0,-20,-29> +p=<-585,93,-2694>, v=<-83,11,-383>, a=<3,-3,26> +p=<503,-620,2663>, v=<75,-86,383>, a=<-5,7,-28> +p=<185,2461,1870>, v=<21,355,268>, a=<-1,-26,-18> +p=<2521,-85,581>, v=<359,-12,77>, a=<-17,-3,-9> +p=<2283,-1436,-696>, v=<324,-205,-99>, a=<-19,16,12> +p=<2114,735,1581>, v=<306,106,228>, a=<-19,-7,-15> +p=<2805,83,-522>, v=<399,14,-76>, a=<-27,-2,4> +p=<-2590,-666,1961>, v=<-371,-98,280>, a=<27,0,-19> +p=<757,2394,1515>, v=<107,346,217>, a=<-1,-23,-15> +p=<-760,-826,2692>, v=<-104,-123,388>, a=<8,9,-29> +p=<-1011,-858,2882>, v=<-144,-122,412>, a=<8,7,-28> +p=<-1758,645,-1334>, v=<-254,88,-189>, a=<18,-5,17> +p=<-821,-581,2677>, v=<-117,-83,381>, a=<8,6,-20> +p=<-664,596,2119>, v=<-96,85,304>, a=<5,-4,-20> +p=<-1375,1284,-2168>, v=<-194,188,-309>, a=<12,-12,23> +p=<-773,2860,1549>, v=<-105,408,221>, a=<6,-27,-14> +p=<-1702,1721,-2143>, v=<-247,245,-306>, a=<14,-18,18> +p=<222,-703,-2539>, v=<32,-106,-360>, a=<-3,7,30> +p=<-2644,-33,1858>, v=<-383,-5,268>, a=<23,1,-10> +p=<-1116,-1139,2230>, v=<-159,-166,319>, a=<10,11,-24> +p=<-1025,1428,3098>, v=<-152,206,442>, a=<9,-10,-31> +p=<1668,1283,-1873>, v=<237,185,-266>, a=<-16,-8,18> +p=<-1268,1697,-2558>, v=<-187,241,-367>, a=<11,-17,24> +p=<353,-1118,-2036>, v=<47,-160,-291>, a=<-2,14,19> +p=<2261,-1887,-1310>, v=<323,-267,-186>, a=<-21,17,10> +p=<-115,-2199,-2182>, v=<-11,-313,-311>, a=<0,21,23> +p=<2719,1428,-405>, v=<387,203,-57>, a=<-27,-11,4> +p=<1893,-1271,-2550>, v=<268,-179,-356>, a=<-18,12,25> +p=<1679,-2231,-131>, v=<243,-316,-14>, a=<-20,24,5> +p=<-548,1006,2773>, v=<-80,143,396>, a=<2,-11,-30> +p=<2030,-767,-2966>, v=<294,-108,-423>, a=<-20,6,29> +p=<2816,949,671>, v=<402,141,97>, a=<-29,-4,-1> +p=<1954,1402,1898>, v=<280,199,273>, a=<-17,-17,-15> +p=<2381,-582,-1643>, v=<337,-84,-234>, a=<-21,9,15> +p=<-2552,1012,-122>, v=<-364,142,-17>, a=<25,-15,-4> +p=<1922,-731,-1597>, v=<274,-102,-233>, a=<-19,7,14> +p=<-803,2367,1222>, v=<-120,340,175>, a=<6,-23,-14> +p=<-635,-2172,1899>, v=<-91,-302,276>, a=<6,25,-18> +p=<2319,2205,-940>, v=<331,315,-133>, a=<-26,-22,13> +p=<-1349,2315,-1996>, v=<-188,332,-284>, a=<13,-21,19> +p=<2342,-1966,531>, v=<332,-281,77>, a=<-24,24,-8> +p=<-2394,1979,518>, v=<-334,282,71>, a=<24,-19,-8> +p=<-878,-492,-2522>, v=<-125,-64,-366>, a=<10,4,26> +p=<1316,677,1904>, v=<188,96,269>, a=<-15,-9,-15> +p=<1631,-133,2497>, v=<234,-16,354>, a=<-18,5,-26> +p=<-182,2579,96>, v=<-26,368,10>, a=<5,-25,-5> +p=<2412,-1226,1716>, v=<344,-174,245>, a=<-22,11,-15> +p=<-2118,1333,-1716>, v=<-302,194,-247>, a=<21,-18,18> +p=<-581,2702,-502>, v=<-81,384,-74>, a=<5,-30,7> +p=<-708,-2009,-1406>, v=<-102,-290,-204>, a=<7,24,11> +p=<-3042,1389,39>, v=<-433,196,10>, a=<28,-16,4> +p=<1945,-1822,1886>, v=<277,-258,268>, a=<-20,18,-18> +p=<-787,-2192,-1799>, v=<-106,-314,-256>, a=<8,17,17> +p=<1884,1891,296>, v=<270,266,42>, a=<-17,-19,-4> +p=<2485,-148,-1386>, v=<355,-28,-195>, a=<-24,1,9> +p=<-2761,-535,-430>, v=<-400,-78,-63>, a=<27,0,3> +p=<-282,-987,2915>, v=<-39,-145,416>, a=<2,15,-29> +p=<-2209,2213,-1273>, v=<-315,316,-180>, a=<18,-24,14> +p=<343,1017,3118>, v=<54,145,445>, a=<-2,-11,-29> +p=<365,2662,-1379>, v=<46,379,-199>, a=<-8,-25,13> +p=<1571,2775,965>, v=<231,395,139>, a=<-17,-31,-9> +p=<443,-31,-2839>, v=<58,-3,-400>, a=<-4,-1,26> +p=<909,-2790,-206>, v=<131,-397,-26>, a=<-5,29,2> +p=<-620,-1995,1962>, v=<-90,-287,280>, a=<12,17,-19> +p=<-58,2990,572>, v=<-7,428,77>, a=<2,-36,-5> +p=<-170,-202,-2454>, v=<-24,-30,-351>, a=<-2,-3,26> +p=<-2330,1382,240>, v=<-329,201,26>, a=<24,-13,-1> +p=<-2739,777,1337>, v=<-394,111,190>, a=<28,-7,-13> +p=<1246,1018,1955>, v=<178,141,281>, a=<-14,-10,-21> +p=<-3096,170,-713>, v=<-443,24,-101>, a=<36,0,9> +p=<645,2511,-523>, v=<92,357,-71>, a=<-3,-23,5> +p=<2460,-667,180>, v=<348,-93,24>, a=<-24,6,0> +p=<-2230,-2183,-477>, v=<-322,-313,-69>, a=<26,24,-1> +p=<-1686,1387,1866>, v=<-241,198,271>, a=<15,-12,-16> +p=<-1850,1426,-2611>, v=<-263,203,-377>, a=<15,-18,25> +p=<-2571,508,-1999>, v=<-369,71,-284>, a=<27,-6,22> +p=<-2376,167,-689>, v=<-341,27,-96>, a=<27,5,2> +p=<2956,-1705,-687>, v=<425,-245,-101>, a=<-29,15,11> +p=<2554,1019,-1412>, v=<365,142,-200>, a=<-25,-11,14> +p=<-2553,-1287,21>, v=<-364,-182,3>, a=<19,13,1> +p=<-490,-157,-2974>, v=<-67,-24,-424>, a=<11,1,31> +p=<445,-1199,-2332>, v=<61,-167,-336>, a=<-4,14,19> +p=<2467,301,-472>, v=<352,44,-67>, a=<-19,-3,5> +p=<2141,-2042,1053>, v=<306,-287,148>, a=<-22,24,-5> +p=<469,592,3024>, v=<64,90,434>, a=<-4,-1,-32> +p=<2064,-2571,1067>, v=<293,-367,152>, a=<-22,32,-7> +p=<1978,-903,2260>, v=<282,-129,326>, a=<-16,7,-22> +p=<-1414,370,-2116>, v=<-201,57,-302>, a=<12,-3,16> +p=<2130,-2195,-279>, v=<304,-313,-39>, a=<-21,19,0> +p=<-633,1683,2411>, v=<-87,233,341>, a=<5,-16,-24> +p=<1183,249,-3109>, v=<169,37,-444>, a=<-8,-1,31> +p=<-2276,-129,58>, v=<-325,-17,14>, a=<22,1,2> +p=<987,-602,2454>, v=<144,-81,350>, a=<-8,4,-23> +p=<-43,-2629,1306>, v=<-6,-372,185>, a=<0,23,-7> +p=<-893,1194,-2046>, v=<-124,168,-296>, a=<9,-7,24> +p=<1377,2672,373>, v=<196,381,53>, a=<-14,-28,-3> +p=<-2037,-1910,922>, v=<-293,-269,131>, a=<21,21,-10> +p=<3019,-1189,-1329>, v=<432,-169,-188>, a=<-30,8,10> +p=<-942,2668,-1270>, v=<-135,387,-178>, a=<10,-23,12> +p=<1283,-1511,2405>, v=<183,-211,343>, a=<-13,21,-22> +p=<936,-2161,1570>, v=<136,-308,224>, a=<-8,21,-14> +p=<-1935,1150,-2156>, v=<-273,161,-307>, a=<16,-11,17> +p=<2930,317,1241>, v=<415,45,177>, a=<-28,-3,-10> +p=<-862,2376,2043>, v=<-127,339,290>, a=<8,-26,-18> +p=<-595,-2386,-1512>, v=<-86,-346,-216>, a=<3,24,18> +p=<-1648,466,2020>, v=<-234,70,290>, a=<22,-9,-19> +p=<-630,-2368,1504>, v=<-93,-335,215>, a=<8,29,-15> +p=<-2095,1856,-1175>, v=<-298,263,-171>, a=<22,-18,11> +p=<1682,22,2204>, v=<239,3,315>, a=<-15,8,-24> +p=<2628,1082,-1489>, v=<376,148,-212>, a=<-24,-11,15> +p=<265,-490,-2706>, v=<36,-75,-388>, a=<-7,2,26> +p=<1461,1943,-942>, v=<213,278,-131>, a=<-17,-19,16> +p=<1211,1985,-1757>, v=<170,281,-251>, a=<-9,-23,13> +p=<-1518,-1144,-2331>, v=<-216,-166,-335>, a=<14,10,19> +p=<-2717,-1657,1318>, v=<-383,-241,190>, a=<23,16,-13> +p=<-1824,-1813,-899>, v=<-255,-256,-128>, a=<13,21,5> +p=<-2698,115,-500>, v=<-383,10,-71>, a=<27,1,5> +p=<-878,1841,2096>, v=<-126,264,300>, a=<7,-18,-20> +p=<1182,-2761,-53>, v=<167,-391,-10>, a=<-16,25,0> +p=<2266,-1319,1733>, v=<329,-191,247>, a=<-22,11,-19> +p=<2617,-1595,-310>, v=<373,-231,-42>, a=<-30,12,5> +p=<-1774,1040,2282>, v=<-252,146,329>, a=<15,-5,-23> +p=<2088,-658,-1733>, v=<299,-89,-245>, a=<-22,5,20> +p=<-2161,-1918,-850>, v=<-308,-275,-120>, a=<25,18,6> +p=<2384,-1075,1602>, v=<344,-156,226>, a=<-22,5,-8> +p=<-480,2295,-2213>, v=<-68,329,-316>, a=<1,-22,20> +p=<360,2759,-811>, v=<47,394,-118>, a=<-3,-22,5> +p=<1908,-559,-2431>, v=<267,-72,-347>, a=<-19,9,28> +p=<-1855,-2121,1133>, v=<-268,-300,159>, a=<20,21,-13> +p=<-613,-123,-3125>, v=<-87,-14,-449>, a=<10,2,31> +p=<2449,-2399,-760>, v=<354,-340,-108>, a=<-21,18,1> +p=<1808,1035,1486>, v=<265,150,211>, a=<-18,-11,-20> +p=<1800,-1978,-87>, v=<251,-280,-14>, a=<-19,22,1> +p=<-1667,-2859,1110>, v=<-236,-408,158>, a=<16,27,-11> +p=<-2422,1543,-437>, v=<-345,219,-62>, a=<25,-20,4> +p=<-1542,-2040,1603>, v=<-223,-290,231>, a=<16,16,-19> +p=<1505,2680,-1336>, v=<219,381,-187>, a=<-16,-28,15> \ No newline at end of file diff --git a/src/year_2017.rs b/src/year_2017.rs index bc5a28a..94b147c 100644 --- a/src/year_2017.rs +++ b/src/year_2017.rs @@ -23,6 +23,7 @@ pub mod day_16; pub mod day_17; pub mod day_18; pub mod day_19; +pub mod day_20; pub fn solve(day: u8, part: u8, input: impl Into) -> Option { if part > 2 { @@ -49,6 +50,7 @@ pub fn solve(day: u8, part: u8, input: impl Into) -> Option { 17 => Some(day_17::day_17(part, input).to_string()), 18 => Some(day_18::day_18(part, input).to_string()), 19 => Some(day_19::day_19(part, input).to_string()), + 20 => Some(day_20::day_20(part, input).to_string()), _ => None, } } @@ -189,4 +191,11 @@ mod tests { assert_eq!(day_19::day_19_v1(input), "RYLONKEWB"); assert_eq!(day_19::day_19_v2(input), "16016"); } + + #[test] + fn day_20() { + let input = include_str!("../inputs/year_2017/day_20_input"); + assert_eq!(day_20::day_20_v1(input), 157); + assert_eq!(day_20::day_20_v2(input), 499); + } } diff --git a/src/year_2017/day_20.rs b/src/year_2017/day_20.rs new file mode 100644 index 0000000..4cebe1f --- /dev/null +++ b/src/year_2017/day_20.rs @@ -0,0 +1,133 @@ +use std::{collections::HashMap, ops::AddAssign}; + +#[derive(Clone, Copy, Eq, Hash, PartialEq)] +struct Point { + x: i64, + y: i64, + z: i64, +} + +impl Point { + fn new(input: &str) -> Self { + let mut input = input.trim().split_once('<').unwrap().1; + input = input.strip_suffix('>').unwrap(); + let mut parts = input + .split(',') + .map(|number| number.parse::().unwrap()); + + Point { + x: parts.next().unwrap(), + y: parts.next().unwrap(), + z: parts.next().unwrap(), + } + } +} + +impl AddAssign for Point { + fn add_assign(&mut self, other: Point) { + *self = Point { + x: self.x + other.x, + y: self.y + other.y, + z: self.z + other.z, + }; + } +} +struct Particle { + id: u16, + position: Point, + velocity: Point, + acceleration: Point, +} + +impl Particle { + fn step(&mut self) { + self.velocity += self.acceleration; + self.position += self.velocity; + } + + fn distance(&self) -> i64 { + self.position.x.abs() + self.position.y.abs() + self.position.z.abs() + } + + fn new(id: u16, input: &str) -> Self { + let mut parts = input.split(", "); + let position = Point::new(parts.next().unwrap()); + let velocity = Point::new(parts.next().unwrap()); + let acceleration = Point::new(parts.next().unwrap()); + + Particle { + id, + position, + velocity, + acceleration, + } + } +} + +pub fn day_20_v1(input: impl Into) -> u16 { + let mut particles: Vec = input + .into() + .lines() + .enumerate() + .map(|(idx, line)| Particle::new(idx as u16, line)) + .collect(); + (0..1_000).for_each(|_| particles.iter_mut().for_each(|particle| particle.step())); + + particles + .iter() + .min_by_key(|particle| particle.distance()) + .unwrap() + .id +} + +pub fn day_20_v2(input: impl Into) -> u16 { + let mut particles: Vec = input + .into() + .lines() + .enumerate() + .map(|(idx, line)| Particle::new(idx as u16, line)) + .collect(); + (0..1_000).for_each(|_| { + let mut positions: HashMap = HashMap::new(); + particles.iter_mut().for_each(|particle| { + particle.step(); + *positions.entry(particle.position).or_default() += 1; + }); + particles.retain(|particle| *positions.get(&particle.position).unwrap() == 1); + }); + + particles.len() as u16 +} + +solvable!(day_20, day_20_v1, day_20_v2, u16); + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn works_with_samples_v1() { + let sample_one: [&str; 4] = [ + "p=<3,0,0>, v=<2,0,0>, a=<-1,0,0>\np=<4,0,0>, v=<0,0,0>, a=<-2,0,0>", + "p=<4,0,0>, v=<1,0,0>, a=<-1,0,0>\np=<2,0,0>, v=<-2,0,0>, a=<-2,0,0>", + "p=<4,0,0>, v=<0,0,0>, a=<-1,0,0>\np=<-2,0,0>, v=<-4,0,0>, a=<-2,0,0>", + "p=<3,0,0>, v=<-1,0,0>, a=<-1,0,0>\np=<-8,0,0>, v=<-6,0,0>, a=<-2,0,0>", + ]; + for sample in sample_one { + assert_eq!(day_20_v1(sample), 0); + } + } + + #[test] + fn works_with_samples_v2() { + let sample_two = [ + "p=<-6,0,0>, v=<3,0,0>, a=<0,0,0>", + "p=<-4,0,0>, v=<2,0,0>, a=<0,0,0>", + "p=<-2,0,0>, v=<1,0,0>, a=<0,0,0>", + "p=<3,0,0>, v=<-1,0,0>, a=<0,0,0>", + ] + .join("\n"); + + assert_eq!(day_20_v2(sample_two), 1); + } +}