diff --git a/2018/day13/day13.go b/2018/day13/day13.go
index ad78a9f..13ec437 100644
--- a/2018/day13/day13.go
+++ b/2018/day13/day13.go
@@ -42,8 +42,11 @@ func part1() {
}
}
+var ticks int
+
func part2() {
for len(cartMap) > 1 {
+ ticks++
sort.Sort(ByPos(carts))
for _, c := range carts {
if *c != 0 {
@@ -54,6 +57,7 @@ func part2() {
for pos := range cartMap {
fmt.Printf("🔵: %0.0f,%0.0f\n", real(pos), imag(pos))
}
+ fmt.Println("Ticks: ", ticks)
}
type Cart struct {
@@ -69,7 +73,7 @@ func (c *Cart) tick() bool {
delete(cartMap, c.pos)
c.pos += c.dir
if cart, ok := cartMap[c.pos]; ok {
- fmt.Printf("❌: %0.0f,%0.0f\n", real(c.pos), imag(c.pos))
+ fmt.Printf("❌: %0.0f,%0.0f (%d ticks)\n", real(c.pos), imag(c.pos), ticks)
// Remove the cart we crashed into from the map
delete(cartMap, c.pos)
// And clear the cart's pos, we can ignore them now
diff --git a/2018/day17/day17.go b/2018/day17/day17.go
new file mode 100644
index 0000000..579da1b
--- /dev/null
+++ b/2018/day17/day17.go
@@ -0,0 +1,182 @@
+package main
+
+import (
+ "bufio"
+ "fmt"
+ "log"
+ "os"
+ "strconv"
+ "strings"
+ "time"
+)
+
+const (
+ MaxInt = int(^uint(0) >> 1)
+ MinInt = -MaxInt - 1
+ ClearScreen = "\033[H\033[2J"
+)
+
+func main() {
+ input := stdinToStringSlice()
+ part1(input)
+ //part2(input)
+}
+
+var scan [1000][1000]byte
+var minX, maxX int = MaxInt, MinInt
+var minY, maxY int = MaxInt, MinInt
+
+func part1(input []string) {
+ for _, v := range input {
+ pts := strings.Split(v, ", ")
+ fst := strings.Split(pts[0], "=")
+ scd := strings.Split(pts[1], "=")
+ scdRange := strings.Split(scd[1], "..")
+ var x, y int
+ if fst[0] == "x" {
+ x = Atoi(fst[1])
+ for y = Atoi(scdRange[0]); y <= Atoi(scdRange[1]); y++ {
+ minmax(x, y)
+ scan[x][y] = '#'
+ }
+ } else if fst[0] == "y" {
+ y = Atoi(fst[1])
+ for x := Atoi(scdRange[0]); x <= Atoi(scdRange[1]); x++ {
+ minmax(x, y)
+ scan[x][y] = '#'
+ }
+ }
+ }
+ printScan()
+ // The water starts at 500, 0
+ fillDown(500, 0)
+}
+
+func part2(input []string) {
+}
+
+// The 'fill
' functions return the x, y that was filled
+// or MinInt, MinInt, if x, y can't be filled
+
+// fillDown will check down, then left, then right
+func fillDown(x, y int) (int, int) {
+ fx, fy := fillSpot(x, y)
+ if !gud(fx, fy) {
+ return fx, fy
+ }
+ // Try to fill the spot below it
+ dx, dy := fillDown(x, y+1)
+ if dx == MinInt && dy == MinInt {
+ // We couldn't go down
+ lx, ly := fillLeft(x-1, y) // left?
+ rx, ry := fillRight(x+1, y) // right?
+ if !gud(lx, ly) || !gud(rx, ry) {
+ return MinInt, MinInt // Off to infinity
+ }
+ if ly == y && ry == y {
+ scan[lx][y] = '~'
+ scan[rx][y] = '~'
+ }
+ }
+ return dx, dy
+}
+
+func fillLeft(x, y int) (int, int) {
+ fx, fy := fillSpot(x, y)
+ if !gud(fx, fy) {
+ return fx, fy
+ }
+ // This spot can be filled, try to go down
+ rx, ry := fillDown(fx, fy+1)
+ if gud(rx, ry) {
+ return rx, ry
+ }
+ // Couldn't go down, try to go left
+ rx, ry = fillLeft(fx-1, y)
+ if gud(rx, ry) {
+ return rx, ry
+ }
+ return x, y
+}
+
+func fillRight(x, y int) (int, int) {
+ fx, fy := fillSpot(x, y)
+ if !gud(fx, fy) {
+ return fx, fy
+ }
+ // This spot can be filled, try to go down
+ rx, ry := fillDown(fx, fy+1)
+ if gud(rx, ry) {
+ return rx, ry
+ }
+ // Couldn't go down, try to go left
+ rx, ry = fillRight(fx+1, y)
+ if gud(rx, ry) {
+ return rx, ry
+ }
+ return x, y
+}
+
+func fillSpot(x, y int) (int, int) {
+ time.Sleep(time.Millisecond * 250)
+ printScan()
+ if y > maxY || !canFill(x, y) {
+ return MinInt, MinInt
+ }
+ scan[x][y] = '|'
+ return x, y
+}
+
+func gud(x, y int) bool {
+ return x != MinInt && y != MinInt
+}
+
+func printScan() {
+ fmt.Print(ClearScreen)
+ for y := minY; y <= maxY; y++ {
+ for x := minX; x <= maxX; x++ {
+ if scan[x][y] == 0 {
+ fmt.Print(".")
+ } else {
+ fmt.Print(string(scan[x][y]))
+ }
+ }
+ fmt.Println()
+ }
+}
+func canFill(x, y int) bool {
+ return scan[x][y] == 0 || scan[x][y] == '|'
+}
+
+func minmax(x, y int) {
+ if x < minX {
+ minX = x
+ }
+ if x > maxX {
+ maxX = x
+ }
+ if y < minY {
+ minY = y
+ }
+ if y > maxY {
+ maxY = y
+ }
+}
+
+func stdinToStringSlice() []string {
+ var input []string
+ scanner := bufio.NewScanner(os.Stdin)
+ for scanner.Scan() {
+ input = append(input, scanner.Text())
+ }
+ 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: " + i)
+ }
+ return ret
+}
diff --git a/2018/day17/input b/2018/day17/input
new file mode 100644
index 0000000..a294b8b
--- /dev/null
+++ b/2018/day17/input
@@ -0,0 +1,1794 @@
+x=401, y=545..548
+x=429, y=1026..1041
+x=462, y=229..240
+x=398, y=134..140
+y=1251, x=562..565
+y=543, x=595..617
+y=1369, x=401..421
+y=797, x=622..627
+y=133, x=498..518
+x=426, y=1587..1589
+y=1707, x=416..419
+x=589, y=937..964
+y=205, x=554..559
+x=394, y=514..523
+y=667, x=441..459
+x=457, y=904..911
+y=1555, x=513..525
+x=533, y=1741..1745
+x=393, y=1393..1408
+x=673, y=1689..1702
+y=1647, x=503..507
+x=509, y=685..698
+y=1562, x=400..421
+x=632, y=1427..1441
+x=505, y=731..740
+x=588, y=1738..1750
+x=446, y=63..65
+x=458, y=88..94
+y=494, x=610..617
+y=1559, x=633..643
+x=505, y=323..337
+x=584, y=753..765
+y=1323, x=647..650
+x=419, y=514..523
+x=491, y=931..942
+x=498, y=880..889
+x=564, y=165..184
+x=633, y=798..825
+y=377, x=626..630
+x=649, y=1343..1354
+x=553, y=336..343
+x=631, y=1071..1075
+y=1039, x=499..502
+x=514, y=1146..1159
+x=535, y=1741..1745
+y=507, x=466..476
+y=393, x=416..425
+x=456, y=1742..1747
+x=488, y=1585..1603
+x=516, y=241..250
+y=624, x=616..621
+y=68, x=487..511
+x=431, y=79..84
+x=559, y=201..205
+x=579, y=1687..1703
+x=514, y=751..763
+x=594, y=1505..1514
+x=574, y=9..17
+x=511, y=1767..1782
+x=511, y=321..333
+x=525, y=705..719
+y=888, x=426..450
+x=510, y=1051..1068
+x=484, y=1644..1654
+x=578, y=344..361
+y=1785, x=656..675
+x=534, y=1585..1599
+x=552, y=12..18
+x=648, y=376..398
+x=593, y=980..1008
+y=1109, x=534..538
+x=571, y=1494..1508
+x=482, y=1696..1712
+x=576, y=809..811
+x=643, y=1568..1588
+x=514, y=989..1010
+x=493, y=165..177
+y=1359, x=523..543
+x=555, y=795..806
+y=392, x=493..497
+x=621, y=609..624
+x=433, y=565..572
+x=514, y=348..359
+x=556, y=1160..1168
+y=1253, x=562..565
+x=591, y=200..212
+x=627, y=509..536
+x=502, y=78..92
+y=427, x=476..523
+x=530, y=622..631
+x=429, y=809..818
+x=592, y=155..167
+y=94, x=473..480
+x=505, y=1006..1022
+x=475, y=1428..1445
+x=459, y=1044..1056
+x=541, y=253..278
+x=446, y=1234..1244
+x=595, y=539..543
+y=1712, x=474..482
+x=555, y=1309..1320
+x=510, y=1615..1617
+x=656, y=1547..1557
+x=427, y=942..952
+y=1370, x=656..658
+x=447, y=288..298
+y=1250, x=521..542
+x=480, y=68..94
+y=688, x=417..419
+y=1758, x=470..490
+x=463, y=1406..1418
+y=275, x=530..533
+y=918, x=635..637
+x=394, y=1492..1519
+x=526, y=604..613
+x=612, y=18..29
+x=592, y=34..62
+y=25, x=409..423
+x=409, y=470..474
+x=646, y=1697..1699
+x=669, y=1772..1782
+y=1090, x=572..600
+y=1533, x=493..513
+x=600, y=1087..1090
+x=559, y=425..434
+y=1589, x=415..426
+x=509, y=1173..1179
+x=452, y=501..520
+x=606, y=1119..1123
+y=1638, x=476..485
+x=488, y=303..316
+x=394, y=328..335
+x=525, y=1543..1555
+x=568, y=517..520
+y=1558, x=586..602
+x=658, y=1054..1056
+y=1710, x=416..419
+x=395, y=1597..1619
+y=1287, x=569..591
+x=544, y=1606..1612
+y=1156, x=472..491
+y=955, x=561..568
+x=563, y=1330..1340
+x=546, y=1114..1119
+y=369, x=610..615
+x=532, y=622..631
+x=595, y=391..398
+y=1539, x=464..470
+x=568, y=1049..1054
+y=218, x=475..496
+y=1489, x=657..668
+x=517, y=446..450
+x=553, y=1335..1337
+x=397, y=101..113
+x=514, y=321..333
+x=598, y=382..392
+x=629, y=1124..1148
+x=495, y=1313..1317
+y=941, x=666..672
+x=581, y=491..505
+x=628, y=654..681
+y=392, x=654..658
+y=1415, x=651..673
+y=1269, x=628..636
+x=425, y=629..638
+x=581, y=1743..1746
+x=656, y=1775..1785
+y=865, x=491..579
+y=1386, x=439..449
+x=625, y=86..88
+x=561, y=1575..1577
+y=487, x=630..656
+x=552, y=570..580
+x=617, y=984..1003
+y=536, x=627..638
+x=421, y=1250..1257
+y=210, x=543..546
+x=457, y=303..313
+x=442, y=468..490
+x=532, y=812..828
+y=823, x=462..482
+x=433, y=1749..1772
+x=673, y=708..711
+y=419, x=580..594
+y=696, x=487..490
+y=293, x=464..468
+y=1075, x=631..640
+x=414, y=590..594
+x=651, y=913..918
+x=572, y=1687..1703
+x=562, y=530..540
+y=1722, x=538..664
+x=495, y=913..924
+y=1718, x=558..655
+x=498, y=465..467
+x=535, y=310..314
+x=464, y=1518..1539
+x=423, y=1411..1415
+x=493, y=752..763
+x=607, y=1274..1296
+x=629, y=942..969
+x=670, y=964..991
+x=474, y=978..988
+x=575, y=1037..1057
+x=594, y=417..419
+x=571, y=1244..1256
+x=542, y=1237..1250
+y=598, x=537..558
+x=635, y=450..452
+x=568, y=533..543
+x=446, y=513..516
+x=578, y=1743..1746
+x=638, y=577..605
+x=505, y=1084..1096
+x=602, y=1507..1517
+y=1436, x=589..591
+y=777, x=442..450
+x=494, y=1090..1092
+y=1434, x=589..591
+x=533, y=1052..1068
+x=467, y=1644..1654
+y=1010, x=514..531
+x=515, y=1485..1488
+x=442, y=527..547
+y=291, x=464..468
+x=420, y=368..381
+x=573, y=756..760
+y=716, x=561..563
+x=405, y=100..113
+x=467, y=385..387
+x=431, y=1136..1138
+x=397, y=1661..1663
+x=403, y=1477..1487
+x=543, y=1331..1340
+y=1420, x=516..564
+y=1314, x=594..602
+x=552, y=1647..1661
+x=633, y=1333..1342
+x=591, y=1197..1208
+y=547, x=442..466
+y=296, x=559..581
+x=464, y=181..195
+y=1109, x=482..491
+x=448, y=932..946
+y=1154, x=542..558
+y=1409, x=490..502
+x=672, y=934..941
+x=479, y=1540..1548
+x=462, y=1235..1244
+y=894, x=645..661
+y=572, x=419..433
+x=591, y=1096..1109
+x=566, y=679..701
+x=526, y=86..101
+x=561, y=639..643
+y=921, x=472..485
+x=663, y=327..352
+x=421, y=144..155
+x=447, y=1056..1060
+x=646, y=752..754
+x=650, y=1308..1323
+y=73, x=406..426
+x=454, y=1055..1060
+x=655, y=105..116
+x=459, y=656..667
+y=1201, x=528..532
+y=187, x=436..438
+x=438, y=1308..1320
+x=482, y=1541..1548
+x=643, y=1557..1559
+y=469, x=505..521
+x=537, y=1028..1042
+x=463, y=1663..1685
+y=1323, x=638..641
+x=502, y=1383..1409
+y=91, x=617..637
+y=1435, x=563..568
+x=425, y=1705..1716
+x=562, y=406..420
+y=1778, x=558..572
+x=476, y=502..507
+x=516, y=385..395
+x=667, y=278..282
+y=1626, x=426..436
+x=462, y=813..823
+x=627, y=1497..1515
+x=640, y=1742..1758
+x=436, y=1605..1626
+y=65, x=502..504
+x=491, y=1013..1015
+y=1019, x=400..412
+x=630, y=797..825
+y=162, x=608..615
+y=889, x=498..521
+x=637, y=296..323
+x=593, y=966..971
+x=644, y=1697..1699
+x=408, y=1480..1482
+x=555, y=1036..1057
+x=605, y=569..580
+y=1105, x=658..664
+x=640, y=1072..1075
+y=636, x=570..581
+y=1602, x=661..673
+y=1676, x=652..655
+x=656, y=485..487
+y=78, x=653..663
+x=545, y=753..765
+x=581, y=260..265
+y=1460, x=499..509
+x=486, y=1616..1617
+y=1168, x=554..556
+x=450, y=1119..1146
+y=1441, x=445..459
+x=654, y=914..918
+x=497, y=831..843
+x=660, y=1187..1200
+y=337, x=505..523
+y=392, x=598..608
+x=494, y=301..309
+x=494, y=1586..1603
+y=1124, x=457..462
+x=480, y=234..237
+y=213, x=487..490
+x=444, y=1336..1344
+x=647, y=1307..1323
+x=633, y=1629..1639
+x=542, y=1143..1154
+x=485, y=167..180
+x=491, y=1109..1111
+y=352, x=663..669
+x=601, y=231..243
+y=970, x=449..469
+x=634, y=1119..1135
+y=616, x=436..439
+x=587, y=809..811
+y=240, x=462..486
+x=419, y=565..572
+y=742, x=545..548
+y=1367, x=570..594
+y=1354, x=649..653
+x=602, y=1546..1558
+y=1703, x=572..579
+y=1641, x=532..539
+x=599, y=1429..1439
+x=546, y=198..210
+x=414, y=107..110
+x=464, y=291..293
+x=572, y=1764..1778
+x=454, y=1475..1484
+x=513, y=1255..1266
+x=619, y=924..939
+x=610, y=505..512
+y=1057, x=493..497
+y=1184, x=420..434
+x=428, y=42..47
+x=416, y=1226..1242
+x=425, y=393..395
+x=523, y=324..337
+x=578, y=1611..1624
+y=1547, x=500..502
+x=423, y=1225..1242
+x=412, y=134..140
+y=35, x=461..475
+y=782, x=591..593
+x=655, y=941..969
+x=645, y=867..894
+y=1152, x=481..485
+y=1782, x=511..515
+x=633, y=1025..1043
+x=473, y=730..735
+y=594, x=414..420
+y=7, x=585..612
+x=576, y=696..698
+x=510, y=1562..1567
+x=664, y=1713..1722
+x=532, y=1723..1729
+x=536, y=286..297
+y=20, x=589..599
+x=670, y=900..927
+x=474, y=100..111
+x=562, y=38..44
+x=454, y=954..967
+y=772, x=609..614
+x=486, y=229..240
+x=468, y=802..804
+x=628, y=53..64
+y=50, x=419..434
+y=1729, x=515..532
+x=608, y=382..392
+y=467, x=484..498
+y=659, x=409..433
+y=698, x=509..562
+x=464, y=306..318
+y=1745, x=533..535
+x=657, y=1467..1489
+y=906, x=482..503
+x=505, y=465..469
+x=449, y=569..571
+x=591, y=392..398
+x=510, y=813..819
+y=68, x=437..462
+x=462, y=44..68
+x=584, y=657..670
+x=489, y=1127..1137
+x=589, y=853..857
+y=1630, x=490..493
+y=313, x=455..457
+x=462, y=954..967
+y=774, x=393..414
+x=539, y=625..634
+y=1575, x=561..564
+y=1555, x=594..596
+x=479, y=186..196
+y=1439, x=584..599
+y=1663, x=397..416
+x=491, y=873..884
+y=1068, x=510..533
+y=1415, x=423..429
+x=460, y=1192..1202
+y=727, x=411..419
+x=662, y=1187..1200
+x=543, y=1347..1359
+y=84, x=431..448
+y=41, x=514..517
+x=521, y=466..469
+x=569, y=1278..1287
+x=433, y=348..359
+y=263, x=654..657
+x=473, y=665..684
+x=589, y=18..20
+x=484, y=1045..1056
+y=1538, x=561..577
+y=184, x=540..564
+y=1500, x=539..546
+y=785, x=573..599
+y=94, x=458..467
+y=316, x=488..505
+y=560, x=564..590
+x=650, y=561..581
+x=480, y=870..881
+x=541, y=834..843
+x=426, y=880..888
+y=1476, x=506..590
+x=436, y=600..616
+y=490, x=442..455
+x=400, y=1500..1522
+x=427, y=603..605
+x=538, y=1196..1205
+x=522, y=1195..1205
+x=610, y=1565..1578
+y=991, x=489..502
+y=17, x=562..574
+x=477, y=1063..1073
+y=520, x=430..452
+x=442, y=385..387
+x=454, y=63..65
+x=486, y=613..640
+y=634, x=520..539
+x=475, y=207..218
+x=564, y=1410..1420
+y=195, x=457..464
+y=1550, x=490..508
+x=434, y=1158..1184
+x=663, y=76..78
+y=1208, x=586..591
+y=1274, x=536..553
+x=536, y=61..78
+x=556, y=466..476
+x=643, y=1497..1515
+x=497, y=1043..1057
+y=420, x=557..562
+x=426, y=58..73
+x=544, y=985..993
+y=1430, x=402..407
+y=1677, x=619..640
+x=608, y=854..857
+x=559, y=291..296
+y=88, x=625..628
+x=537, y=606..616
+x=468, y=811..819
+y=402, x=476..480
+y=1266, x=453..513
+x=580, y=416..419
+x=617, y=540..543
+y=243, x=591..601
+x=446, y=247..275
+x=541, y=1605..1612
+x=470, y=1742..1758
+x=549, y=392..397
+x=571, y=709..722
+y=291, x=622..624
+x=472, y=234..237
+y=911, x=590..596
+x=487, y=692..696
+x=655, y=541..545
+x=551, y=1368..1379
+x=587, y=156..167
+x=562, y=9..17
+y=927, x=667..670
+y=1123, x=594..606
+x=451, y=1208..1219
+y=1148, x=616..629
+x=537, y=1345..1355
+x=593, y=1494..1496
+x=665, y=1314..1332
+y=409, x=611..635
+y=1643, x=403..405
+x=530, y=272..275
+x=630, y=351..377
+x=455, y=303..313
+x=463, y=749..752
+x=544, y=552..559
+y=395, x=416..425
+x=511, y=1173..1179
+y=1266, x=628..636
+x=407, y=1426..1430
+y=811, x=576..587
+y=1323, x=561..568
+x=415, y=630..638
+y=576, x=593..595
+x=419, y=855..870
+x=535, y=1345..1355
+y=481, x=545..563
+x=397, y=872..876
+y=1223, x=444..460
+x=644, y=788..794
+y=1603, x=488..494
+y=116, x=635..655
+y=959, x=515..522
+y=916, x=635..637
+x=558, y=588..598
+y=395, x=516..544
+x=396, y=1136..1143
+x=638, y=1300..1323
+x=476, y=375..402
+y=740, x=505..524
+x=416, y=1707..1710
+x=539, y=1586..1599
+x=431, y=119..139
+y=359, x=433..514
+x=437, y=247..275
+y=1557, x=656..668
+x=661, y=1584..1602
+y=806, x=482..555
+x=628, y=578..605
+x=393, y=424..434
+y=640, x=481..486
+x=403, y=690..693
+x=661, y=603..618
+x=657, y=259..263
+y=605, x=419..427
+x=419, y=702..727
+y=1379, x=537..551
+x=480, y=376..402
+x=530, y=1775..1779
+y=148, x=609..628
+x=584, y=1429..1439
+x=534, y=1481..1504
+x=483, y=1275..1303
+y=701, x=566..587
+x=544, y=1073..1087
+x=586, y=89..96
+x=490, y=1743..1758
+x=560, y=530..540
+y=922, x=628..643
+x=461, y=919..924
+x=450, y=1576..1594
+x=609, y=1176..1187
+x=515, y=1723..1729
+y=1033, x=463..465
+x=471, y=1069..1076
+x=511, y=1584..1609
+x=501, y=1143..1152
+x=610, y=470..494
+x=613, y=903..906
+x=459, y=1434..1441
+y=1482, x=459..464
+x=654, y=259..263
+x=466, y=526..547
+x=554, y=1493..1508
+x=552, y=1776..1779
+y=133, x=559..562
+x=599, y=19..20
+x=513, y=1192..1202
+x=628, y=1266..1269
+y=183, x=626..641
+y=1502, x=563..565
+y=1742, x=451..456
+y=1076, x=466..471
+x=646, y=654..681
+x=411, y=1480..1482
+y=1445, x=605..616
+y=991, x=469..485
+x=615, y=282..294
+y=1240, x=454..456
+x=638, y=510..536
+x=579, y=852..865
+y=638, x=445..471
+x=493, y=772..784
+x=653, y=76..78
+y=1439, x=558..576
+y=693, x=403..409
+x=490, y=1541..1550
+y=140, x=398..412
+x=439, y=600..616
+x=504, y=61..65
+x=665, y=254..271
+x=467, y=88..94
+x=490, y=11..22
+x=409, y=690..693
+y=167, x=587..592
+y=1184, x=615..618
+x=419, y=1423..1438
+x=640, y=1673..1677
+x=645, y=1647..1661
+y=559, x=538..544
+x=481, y=614..640
+x=599, y=772..785
+y=719, x=507..525
+y=613, x=526..531
+y=942, x=491..507
+x=452, y=801..804
+x=614, y=1524..1537
+y=1548, x=479..482
+x=509, y=1675..1690
+x=538, y=1712..1722
+y=237, x=472..480
+x=523, y=427..431
+x=593, y=1386..1398
+y=206, x=575..588
+y=1487, x=403..419
+x=526, y=916..940
+x=651, y=334..355
+x=441, y=782..788
+y=1398, x=582..593
+x=450, y=1336..1344
+x=658, y=160..170
+x=619, y=427..441
+x=675, y=1774..1785
+y=1317, x=472..495
+y=1708, x=505..523
+y=111, x=474..498
+x=532, y=1259..1273
+y=258, x=610..612
+x=620, y=1385..1390
+x=469, y=1002..1014
+x=504, y=1170..1184
+y=1766, x=658..675
+y=1115, x=440..442
+x=637, y=73..91
+x=426, y=1606..1626
+x=462, y=701..709
+x=422, y=118..139
+x=454, y=1232..1240
+y=1179, x=615..618
+y=1350, x=611..613
+y=50, x=570..586
+x=437, y=1405..1418
+y=377, x=507..529
+x=472, y=1720..1724
+x=433, y=390..403
+y=718, x=561..563
+x=599, y=35..62
+x=450, y=765..777
+x=488, y=288..298
+y=361, x=567..578
+y=176, x=417..427
+x=664, y=1081..1105
+x=643, y=906..922
+x=410, y=1704..1716
+x=442, y=765..777
+y=843, x=474..497
+y=1666, x=482..499
+y=906, x=611..613
+x=409, y=656..659
+x=442, y=1089..1115
+x=442, y=1191..1195
+y=1073, x=477..494
+y=89, x=491..495
+y=1537, x=594..614
+x=585, y=4..7
+y=971, x=593..614
+y=989, x=408..410
+x=650, y=375..398
+y=1577, x=561..564
+x=513, y=577..581
+x=420, y=590..594
+y=1554, x=544..556
+y=1399, x=526..544
+x=658, y=1730..1742
+x=648, y=278..282
+x=570, y=517..520
+x=636, y=1331..1342
+y=881, x=480..485
+x=599, y=1571..1574
+y=709, x=445..462
+x=487, y=1085..1096
+y=355, x=646..651
+y=1573, x=463..469
+y=684, x=462..473
+x=611, y=904..906
+x=518, y=123..133
+x=664, y=709..711
+y=943, x=455..461
+y=1649, x=476..478
+x=543, y=443..457
+x=537, y=1368..1379
+x=484, y=271..283
+x=455, y=1025..1036
+y=61, x=502..504
+y=643, x=555..561
+x=452, y=569..571
+x=601, y=1137..1158
+x=570, y=75..79
+x=534, y=1094..1109
+x=466, y=859..861
+x=603, y=981..1008
+y=144, x=639..645
+x=449, y=957..970
+x=482, y=814..823
+y=1102, x=613..636
+y=1099, x=558..561
+y=433, x=590..598
+y=403, x=406..433
+x=467, y=914..924
+x=475, y=12..35
+y=1617, x=598..623
+x=635, y=383..409
+x=445, y=1433..1441
+x=658, y=676..693
+x=594, y=1525..1537
+x=515, y=703..716
+y=748, x=646..649
+y=779, x=484..487
+x=578, y=1136..1158
+y=1482, x=408..411
+x=496, y=206..218
+x=620, y=1569..1588
+y=21, x=540..558
+x=519, y=152..160
+y=140, x=615..617
+y=1624, x=564..578
+y=36, x=641..660
+x=532, y=1193..1201
+x=521, y=1236..1250
+y=581, x=650..656
+y=517, x=645..653
+x=507, y=932..942
+y=754, x=646..660
+x=572, y=938..964
+x=570, y=1570..1580
+x=484, y=770..779
+y=889, x=415..422
+y=1217, x=567..574
+y=293, x=541..544
+y=924, x=467..495
+x=460, y=781..788
+x=520, y=624..634
+x=644, y=1607..1620
+y=1515, x=426..433
+x=505, y=304..316
+x=640, y=632..636
+x=417, y=981..993
+x=458, y=920..924
+x=548, y=1027..1042
+y=1056, x=459..484
+x=406, y=59..73
+y=1667, x=522..536
+x=630, y=484..487
+y=78, x=529..536
+x=495, y=76..89
+y=502, x=573..575
+y=1244, x=446..462
+x=472, y=1143..1156
+y=988, x=474..477
+x=483, y=103..107
+y=1653, x=568..596
+x=540, y=166..184
+x=636, y=1091..1102
+x=628, y=86..88
+x=552, y=514..525
+x=502, y=61..65
+y=946, x=448..467
+y=964, x=572..589
+x=549, y=1449..1458
+x=666, y=1733..1745
+x=620, y=1260..1273
+x=652, y=1016..1022
+x=583, y=1301..1327
+x=404, y=1208..1228
+y=1332, x=665..670
+x=556, y=756..760
+x=561, y=1527..1538
+y=271, x=648..665
+x=430, y=903..909
+y=822, x=646..655
+x=568, y=949..955
+x=412, y=947..949
+x=445, y=621..638
+x=394, y=1627..1646
+x=420, y=1157..1184
+y=692, x=600..607
+x=538, y=1095..1109
+y=525, x=552..576
+x=655, y=800..822
+x=463, y=1562..1573
+x=452, y=1003..1014
+y=1158, x=578..601
+x=594, y=1118..1123
+x=531, y=604..613
+y=1256, x=552..571
+x=518, y=693..695
+x=426, y=42..47
+x=491, y=76..89
+x=394, y=1208..1228
+x=667, y=1772..1782
+x=612, y=1233..1254
+x=618, y=1179..1184
+y=1202, x=460..513
+x=601, y=438..447
+x=558, y=1080..1099
+y=444, x=447..468
+y=1699, x=644..646
+x=617, y=469..494
+y=278, x=524..541
+y=1056, x=655..658
+x=666, y=935..941
+x=611, y=1324..1350
+y=277, x=400..411
+x=621, y=757..770
+x=661, y=52..58
+x=553, y=1260..1274
+x=590, y=889..911
+y=288, x=622..624
+y=716, x=515..518
+x=563, y=469..481
+x=475, y=249..262
+x=647, y=221..242
+x=445, y=701..709
+y=1369, x=601..626
+x=468, y=442..444
+y=1758, x=640..645
+x=563, y=1431..1435
+x=628, y=905..922
+x=586, y=254..258
+x=607, y=664..692
+x=419, y=1325..1338
+x=656, y=1253..1266
+y=1137, x=489..512
+x=437, y=44..68
+x=621, y=1233..1254
+y=993, x=539..544
+x=558, y=1715..1718
+x=651, y=1410..1415
+x=493, y=387..392
+x=408, y=983..989
+y=1742, x=658..660
+x=596, y=1553..1555
+y=431, x=476..523
+x=444, y=1210..1223
+x=514, y=38..41
+x=462, y=1720..1724
+x=545, y=729..742
+x=660, y=27..36
+x=639, y=1016..1022
+x=568, y=1431..1435
+y=387, x=442..467
+x=485, y=916..921
+x=570, y=630..636
+x=509, y=12..22
+x=434, y=247..253
+y=788, x=441..460
+x=393, y=144..155
+x=592, y=1505..1514
+y=752, x=463..465
+y=447, x=587..601
+x=563, y=326..354
+y=336, x=553..556
+y=419, x=433..518
+x=590, y=1464..1476
+y=258, x=586..603
+x=534, y=1287..1292
+x=402, y=1038..1063
+y=397, x=549..561
+x=564, y=1611..1624
+x=591, y=230..243
+x=646, y=335..355
+y=1179, x=509..511
+x=458, y=393..402
+x=583, y=994..999
+x=506, y=1463..1476
+y=1639, x=617..633
+x=590, y=429..433
+y=505, x=563..581
+x=411, y=269..277
+y=1651, x=476..478
+x=420, y=1393..1408
+y=1297, x=524..544
+y=1745, x=649..666
+x=485, y=79..92
+y=1580, x=553..570
+x=636, y=1266..1269
+x=669, y=328..352
+x=615, y=366..369
+x=482, y=895..906
+x=490, y=692..696
+x=596, y=324..331
+x=613, y=1325..1350
+y=160, x=519..530
+x=496, y=268..276
+x=454, y=1643..1668
+x=668, y=1468..1489
+y=1195, x=442..448
+x=645, y=492..517
+x=538, y=552..559
+y=745, x=537..554
+y=909, x=424..430
+x=553, y=1570..1580
+y=292, x=512..514
+y=825, x=630..633
+y=1292, x=530..534
+x=570, y=1348..1367
+x=467, y=933..946
+y=1594, x=447..450
+x=610, y=1274..1296
+x=415, y=1586..1589
+x=537, y=731..745
+x=550, y=532..543
+x=655, y=1715..1718
+y=103, x=483..492
+x=554, y=709..722
+x=408, y=1400..1404
+x=494, y=1064..1073
+x=515, y=728..735
+x=531, y=87..101
+y=770, x=621..626
+x=668, y=1547..1557
+y=863, x=633..636
+x=626, y=1367..1369
+y=1200, x=660..662
+y=1022, x=478..505
+x=524, y=1584..1609
+x=405, y=1641..1643
+x=545, y=1738..1763
+x=511, y=56..68
+x=431, y=1705..1725
+y=62, x=592..599
+y=857, x=589..608
+y=939, x=605..619
+x=503, y=270..283
+x=487, y=209..213
+x=410, y=983..989
+y=155, x=393..421
+x=395, y=1422..1438
+y=1779, x=530..552
+x=471, y=1024..1036
+x=464, y=1492..1496
+y=522, x=514..530
+x=528, y=1193..1201
+x=646, y=1427..1441
+x=582, y=1387..1398
+y=1480, x=408..411
+y=457, x=543..561
+x=653, y=1344..1354
+x=518, y=1260..1273
+x=528, y=1415..1417
+y=573, x=593..595
+x=615, y=1179..1184
+y=924, x=458..461
+x=501, y=33..45
+x=646, y=722..748
+y=477, x=634..636
+x=420, y=328..335
+x=658, y=1754..1766
+y=828, x=532..543
+x=465, y=1383..1399
+y=196, x=477..479
+y=698, x=573..576
+x=564, y=994..999
+y=309, x=494..498
+y=1418, x=437..463
+x=544, y=386..395
+x=617, y=1628..1639
+x=555, y=441..453
+x=622, y=1062..1084
+x=512, y=1127..1137
+x=498, y=1013..1015
+y=294, x=615..630
+y=199, x=468..485
+y=1344, x=444..450
+x=658, y=450..452
+x=456, y=1560..1579
+x=433, y=657..659
+x=591, y=1434..1436
+x=554, y=1160..1168
+x=485, y=981..991
+y=314, x=535..562
+y=1173, x=509..511
+x=535, y=365..374
+x=579, y=1487..1499
+y=310, x=597..606
+x=416, y=106..110
+x=463, y=1740..1750
+x=568, y=1448..1458
+x=507, y=1645..1647
+y=96, x=581..586
+y=1084, x=608..622
+y=1087, x=535..544
+x=461, y=930..943
+y=1129, x=648..652
+y=282, x=648..667
+x=531, y=555..564
+x=439, y=368..381
+x=670, y=1689..1702
+y=1747, x=451..456
+x=608, y=1061..1084
+x=416, y=159..164
+x=547, y=74..79
+x=460, y=1000..1007
+y=157, x=487..504
+x=673, y=1583..1602
+y=1517, x=582..602
+x=576, y=514..525
+x=604, y=503..508
+x=515, y=946..959
+y=311, x=408..434
+x=542, y=365..374
+x=675, y=1754..1766
+y=262, x=475..501
+y=918, x=651..654
+x=663, y=542..545
+x=603, y=200..212
+y=251, x=565..581
+x=469, y=980..991
+y=1187, x=660..662
+x=507, y=706..719
+x=521, y=880..889
+x=497, y=679..699
+y=892, x=550..563
+x=659, y=51..58
+y=110, x=414..416
+x=446, y=1119..1142
+y=1146, x=450..469
+y=1138, x=431..437
+x=594, y=1565..1578
+x=594, y=1302..1314
+x=471, y=620..638
+x=397, y=1491..1519
+y=1291, x=646..658
+x=476, y=1383..1399
+y=1504, x=523..534
+x=658, y=376..392
+x=485, y=189..199
+y=1159, x=494..514
+x=403, y=1641..1643
+x=654, y=846..854
+y=675, x=524..540
+y=323, x=637..642
+x=439, y=1378..1386
+x=457, y=854..865
+x=562, y=310..314
+y=1588, x=620..643
+x=627, y=775..797
+y=1725, x=431..434
+y=1599, x=534..539
+x=658, y=1360..1370
+y=1063, x=402..406
+y=1488, x=501..515
+x=635, y=221..242
+x=403, y=872..876
+y=79, x=547..570
+x=481, y=1140..1152
+x=560, y=1737..1750
+x=493, y=1527..1533
+x=403, y=1084..1088
+y=1088, x=403..418
+y=1139, x=457..462
+x=639, y=846..854
+y=605, x=628..638
+y=64, x=604..628
+x=660, y=753..754
+x=488, y=1491..1496
+x=563, y=492..505
+x=550, y=1146..1150
+x=434, y=37..50
+y=1685, x=463..476
+y=226, x=433..435
+x=498, y=1103..1117
+y=275, x=437..446
+y=1404, x=408..412
+y=638, x=415..425
+x=523, y=1348..1359
+x=406, y=1038..1063
+x=624, y=288..291
+y=1041, x=429..450
+x=531, y=1215..1229
+y=1014, x=452..469
+y=1782, x=667..669
+y=1746, x=578..581
+y=581, x=513..515
+x=607, y=18..29
+x=477, y=978..988
+x=508, y=1540..1550
+x=649, y=1553..1564
+x=428, y=1053..1065
+x=419, y=1707..1710
+y=1242, x=416..423
+x=490, y=1384..1409
+x=482, y=1109..1111
+y=1065, x=428..434
+y=589, x=465..486
+y=29, x=607..612
+x=573, y=696..698
+x=596, y=889..911
+x=539, y=693..695
+y=1320, x=438..555
+x=433, y=408..419
+x=457, y=1124..1139
+x=610, y=254..258
+y=476, x=553..556
+x=400, y=1012..1019
+x=556, y=286..297
+x=598, y=429..433
+x=646, y=1282..1291
+y=381, x=420..439
+x=411, y=701..727
+x=530, y=1287..1292
+x=598, y=1607..1617
+x=469, y=956..970
+x=425, y=470..474
+y=107, x=483..492
+x=602, y=1303..1314
+x=597, y=295..310
+y=543, x=453..459
+x=501, y=1485..1488
+y=1508, x=554..571
+x=498, y=122..133
+x=499, y=1682..1684
+x=593, y=573..576
+x=614, y=748..772
+y=884, x=472..491
+x=603, y=607..624
+x=487, y=145..157
+y=450, x=498..517
+x=649, y=1732..1745
+x=440, y=1089..1115
+x=513, y=1543..1555
+y=265, x=563..581
+x=514, y=512..522
+y=876, x=397..403
+x=485, y=411..416
+x=530, y=513..522
+x=490, y=209..213
+x=609, y=426..441
+x=446, y=904..911
+x=523, y=1481..1504
+x=554, y=201..205
+y=1609, x=511..524
+x=487, y=57..68
+y=763, x=493..514
+y=631, x=530..532
+x=669, y=1182..1209
+x=500, y=1545..1547
+x=509, y=205..220
+x=595, y=573..576
+y=1117, x=474..498
+y=1507, x=477..492
+x=526, y=642..652
+x=603, y=255..258
+x=622, y=774..797
+y=711, x=664..673
+x=544, y=289..293
+x=533, y=272..275
+x=589, y=1434..1436
+x=557, y=407..420
+y=916, x=472..485
+x=586, y=1546..1558
+x=616, y=1442..1445
+y=1617, x=486..510
+x=554, y=732..745
+x=656, y=1359..1370
+x=421, y=1119..1142
+y=1208, x=605..624
+x=639, y=127..144
+x=622, y=504..512
+y=1417, x=528..538
+x=476, y=427..431
+x=502, y=965..991
+y=1408, x=393..420
+y=735, x=515..517
+x=546, y=1497..1500
+y=276, x=491..496
+y=695, x=518..539
+x=658, y=1283..1291
+x=435, y=211..226
+y=520, x=568..570
+x=450, y=881..888
+x=555, y=640..643
+x=508, y=1143..1152
+x=457, y=182..195
+x=515, y=1766..1782
+x=605, y=1197..1208
+x=628, y=36..50
+x=413, y=442..463
+x=402, y=980..993
+x=596, y=496..523
+x=619, y=1673..1677
+y=1337, x=553..557
+x=655, y=676..693
+x=515, y=578..581
+x=590, y=548..560
+x=550, y=554..564
+x=433, y=211..226
+x=636, y=1177..1187
+x=587, y=1779..1781
+y=819, x=505..510
+x=648, y=604..618
+x=594, y=1349..1367
+x=556, y=649..658
+y=993, x=402..417
+x=477, y=186..196
+y=735, x=460..473
+x=507, y=367..377
+y=180, x=485..504
+x=412, y=1012..1019
+x=581, y=1780..1781
+x=448, y=1191..1195
+x=492, y=103..107
+x=615, y=642..659
+y=113, x=397..405
+y=699, x=479..497
+x=636, y=471..477
+x=577, y=39..44
+y=63, x=446..454
+x=544, y=1549..1554
+y=1036, x=455..471
+y=1620, x=639..644
+x=630, y=283..294
+x=564, y=1575..1577
+x=468, y=291..293
+x=589, y=1494..1496
+y=618, x=648..661
+y=861, x=466..469
+x=596, y=1651..1653
+x=615, y=138..140
+x=645, y=128..144
+x=477, y=1499..1507
+y=1022, x=639..652
+x=645, y=1743..1758
+x=438, y=513..516
+x=491, y=853..865
+x=527, y=1739..1763
+y=1702, x=636..652
+x=524, y=730..740
+y=1514, x=592..594
+x=662, y=1669..1679
+x=421, y=1549..1562
+x=540, y=8..21
+x=464, y=1480..1482
+x=473, y=68..94
+x=572, y=1086..1090
+x=593, y=780..782
+y=92, x=485..502
+x=518, y=703..716
+y=441, x=609..619
+x=633, y=1557..1559
+x=530, y=659..672
+x=498, y=1090..1092
+x=556, y=1550..1554
+y=765, x=545..584
+x=497, y=388..392
+x=476, y=1663..1685
+x=572, y=1300..1327
+y=220, x=505..509
+x=573, y=773..785
+y=1515, x=627..643
+x=581, y=88..96
+x=449, y=1208..1219
+x=539, y=1496..1500
+x=649, y=722..748
+y=843, x=515..541
+x=581, y=291..296
+x=430, y=502..520
+y=1342, x=623..633
+y=1327, x=572..583
+y=1135, x=634..659
+y=1007, x=460..462
+y=1287, x=530..534
+x=409, y=11..25
+x=637, y=916..918
+x=544, y=1284..1297
+y=1684, x=499..502
+y=1057, x=555..575
+y=1096, x=487..505
+y=22, x=490..509
+x=524, y=661..675
+y=1390, x=620..636
+x=429, y=1251..1257
+y=548, x=401..417
+y=794, x=644..667
+x=472, y=811..819
+y=636, x=617..640
+x=434, y=305..311
+x=540, y=662..675
+x=422, y=1748..1772
+x=522, y=1644..1667
+x=567, y=343..361
+x=448, y=78..84
+y=865, x=457..475
+x=605, y=924..939
+y=398, x=591..595
+x=655, y=1666..1676
+y=580, x=552..605
+x=558, y=1143..1154
+x=530, y=152..160
+x=494, y=1145..1159
+x=482, y=796..806
+x=451, y=1742..1747
+y=819, x=468..472
+x=573, y=489..502
+x=562, y=1251..1253
+x=411, y=1628..1646
+y=1772, x=422..433
+x=421, y=1362..1369
+y=335, x=394..420
+y=1342, x=636..639
+y=1131, x=648..652
+y=1054, x=566..568
+y=1228, x=394..404
+x=417, y=1135..1143
+x=609, y=641..659
+x=400, y=268..277
+x=505, y=1694..1708
+x=469, y=1120..1146
+x=456, y=1232..1240
+x=422, y=758..761
+x=515, y=834..843
+x=648, y=1129..1131
+x=667, y=393..409
+x=641, y=1299..1323
+x=586, y=48..50
+x=492, y=1674..1690
+y=672, x=530..532
+x=423, y=11..25
+y=398, x=648..650
+x=491, y=1142..1156
+y=58, x=659..661
+x=529, y=62..78
+x=561, y=391..397
+x=591, y=780..782
+x=628, y=134..148
+x=535, y=1073..1087
+x=413, y=1500..1522
+x=426, y=1501..1515
+x=459, y=529..543
+x=635, y=104..116
+x=453, y=1255..1266
+x=587, y=680..701
+x=487, y=770..779
+x=447, y=1577..1594
+x=437, y=1136..1138
+y=1646, x=394..411
+y=1564, x=622..649
+x=522, y=1170..1184
+y=761, x=422..443
+y=1049, x=566..568
+x=544, y=1387..1399
+x=417, y=170..176
+y=516, x=438..446
+x=532, y=659..672
+y=870, x=419..440
+y=47, x=426..428
+x=465, y=586..589
+x=558, y=1764..1778
+y=212, x=591..603
+x=417, y=276..286
+x=610, y=365..369
+y=253, x=407..434
+x=453, y=529..543
+x=600, y=665..692
+y=283, x=484..503
+x=516, y=1410..1420
+y=517, x=568..570
+x=509, y=1447..1460
+x=424, y=903..909
+x=577, y=658..670
+y=1619, x=395..408
+x=563, y=716..718
+x=599, y=1097..1109
+x=462, y=1000..1007
+x=638, y=1468..1480
+x=438, y=183..187
+x=499, y=1660..1666
+x=517, y=38..41
+x=573, y=650..658
+y=911, x=446..457
+y=1750, x=560..588
+x=605, y=1442..1445
+x=653, y=493..517
+y=652, x=526..552
+x=462, y=1124..1139
+y=1484, x=449..454
+x=641, y=28..36
+x=400, y=1548..1562
+y=402, x=458..462
+y=1219, x=449..451
+y=512, x=610..622
+x=499, y=1447..1460
+y=1042, x=537..548
+x=486, y=1429..1445
+x=476, y=1649..1651
+x=434, y=1326..1338
+y=1741, x=533..535
+y=1781, x=581..587
+x=526, y=1387..1399
+x=518, y=408..419
+x=475, y=855..865
+x=476, y=773..784
+x=505, y=814..819
+x=606, y=294..310
+x=417, y=544..548
+x=565, y=1251..1253
+x=639, y=1330..1342
+y=681, x=628..646
+y=1296, x=607..610
+y=1254, x=612..621
+x=503, y=894..906
+y=1015, x=491..498
+x=558, y=9..21
+x=419, y=665..688
+x=482, y=1659..1666
+y=1702, x=670..673
+x=557, y=1335..1337
+y=1111, x=482..491
+y=333, x=511..514
+x=661, y=868..894
+y=1458, x=549..568
+x=433, y=1500..1515
+x=441, y=656..667
+x=440, y=855..870
+x=636, y=839..863
+x=607, y=1589..1602
+y=18, x=550..552
+x=524, y=32..45
+y=44, x=562..577
+x=415, y=886..889
+x=604, y=53..64
+x=474, y=1696..1712
+x=655, y=1055..1056
+x=501, y=249..262
+y=940, x=526..540
+y=1142, x=421..446
+y=1150, x=550..552
+x=617, y=633..636
+x=563, y=890..892
+x=408, y=304..311
+x=499, y=1036..1039
+x=538, y=1415..1417
+x=462, y=394..402
+x=667, y=900..927
+y=1445, x=475..486
+x=412, y=1400..1404
+y=1008, x=593..603
+x=664, y=392..409
+x=649, y=159..170
+x=645, y=1668..1679
+x=536, y=1645..1667
+x=532, y=1630..1641
+y=659, x=609..615
+x=406, y=391..403
+x=563, y=1499..1502
+x=513, y=1527..1533
+y=1750, x=438..463
+x=524, y=253..278
+y=1438, x=395..419
+x=550, y=891..892
+y=50, x=619..628
+y=1545, x=500..502
+y=409, x=664..667
+y=452, x=635..658
+x=474, y=830..843
+x=484, y=465..467
+y=784, x=476..493
+y=1499, x=563..565
+x=562, y=121..133
+y=331, x=596..602
+x=522, y=947..959
+x=652, y=1129..1131
+y=250, x=516..521
+y=38, x=514..517
+x=493, y=1044..1057
+y=416, x=470..485
+x=626, y=352..377
+y=1661, x=552..645
+x=652, y=1666..1676
+y=1574, x=599..602
+x=633, y=840..863
+x=529, y=367..377
+y=692, x=487..490
+y=1499, x=579..600
+x=615, y=159..162
+x=582, y=1508..1517
+x=617, y=138..140
+x=656, y=560..581
+x=543, y=812..828
+x=465, y=748..752
+y=1496, x=464..488
+x=449, y=1474..1484
+y=1205, x=522..538
+y=1136, x=431..437
+x=588, y=187..206
+x=646, y=800..822
+x=588, y=1188..1192
+x=661, y=1252..1266
+x=427, y=1644..1668
+y=1340, x=543..563
+x=667, y=787..794
+x=479, y=1276..1303
+y=1146, x=550..552
+y=540, x=560..562
+x=602, y=1571..1574
+x=642, y=296..323
+x=463, y=1022..1033
+x=485, y=1635..1638
+x=659, y=1119..1135
+x=587, y=497..523
+y=1092, x=494..498
+x=548, y=441..453
+x=660, y=1730..1742
+x=613, y=1090..1102
+y=374, x=535..542
+x=432, y=275..286
+x=460, y=730..735
+x=419, y=36..50
+y=453, x=548..555
+y=969, x=629..655
+y=1415, x=528..538
+x=414, y=756..774
+y=543, x=550..568
+x=536, y=1261..1274
+x=472, y=916..921
+x=505, y=204..220
+x=539, y=984..993
+x=407, y=248..253
+y=1266, x=656..661
+y=1522, x=400..413
+x=474, y=1103..1117
+x=673, y=1410..1415
+y=463, x=406..413
+x=619, y=1024..1043
+x=648, y=1261..1273
+x=543, y=199..210
+x=575, y=489..502
+x=561, y=1306..1323
+x=561, y=1079..1099
+x=416, y=1662..1663
+x=462, y=664..684
+y=1109, x=591..599
+y=343, x=553..556
+y=298, x=447..488
+y=693, x=655..658
+y=1338, x=419..434
+x=502, y=1682..1684
+x=626, y=181..183
+x=406, y=443..463
+x=609, y=134..148
+x=616, y=1125..1148
+y=611, x=549..568
+x=504, y=144..157
+x=613, y=985..1003
+y=177, x=493..498
+y=1257, x=421..429
+y=128, x=508..512
+y=722, x=554..571
+x=466, y=1068..1076
+x=654, y=377..392
+x=470, y=411..416
+x=617, y=72..91
+x=498, y=447..450
+y=564, x=531..550
+y=523, x=587..596
+y=434, x=393..559
+x=485, y=1140..1152
+x=512, y=120..128
+x=565, y=227..251
+x=577, y=1526..1538
+y=523, x=394..419
+x=561, y=716..718
+x=608, y=160..162
+x=614, y=967..971
+x=524, y=1283..1297
+x=469, y=1562..1573
+y=1519, x=394..397
+x=455, y=469..490
+x=603, y=1189..1192
+y=1273, x=620..648
+x=503, y=1644..1647
+x=393, y=757..774
+y=1119, x=546..564
+x=502, y=1545..1547
+x=648, y=254..271
+y=967, x=454..462
+x=548, y=729..742
+x=479, y=679..699
+x=521, y=240..250
+x=408, y=1596..1619
+x=600, y=1488..1499
+x=443, y=758..761
+y=1313, x=472..495
+y=1679, x=645..662
+x=504, y=168..180
+x=447, y=441..444
+x=570, y=48..50
+y=1060, x=447..454
+x=498, y=301..309
+x=639, y=1607..1620
+x=623, y=1608..1617
+y=670, x=577..584
+x=601, y=1366..1369
+x=434, y=1705..1725
+x=568, y=1651..1653
+y=65, x=446..454
+y=1480, x=626..638
+y=1187, x=609..636
+y=170, x=649..658
+y=354, x=536..563
+x=438, y=1739..1750
+x=498, y=101..111
+x=466, y=503..507
+x=609, y=748..772
+y=1043, x=619..633
+x=552, y=1243..1256
+x=523, y=1694..1708
+x=622, y=288..291
+y=1697, x=644..646
+y=818, x=429..444
+y=139, x=422..431
+x=419, y=1477..1487
+x=419, y=603..605
+x=549, y=606..611
+y=1184, x=504..522
+x=434, y=1053..1065
+x=469, y=859..861
+x=566, y=1049..1054
+x=537, y=589..598
+y=297, x=536..556
+x=624, y=1197..1208
+x=572, y=1589..1602
+x=489, y=964..991
+x=568, y=607..611
+x=636, y=1386..1390
+x=561, y=444..457
+y=1690, x=492..509
+x=652, y=1690..1702
+x=459, y=1481..1482
+x=436, y=183..187
+x=558, y=1428..1439
+y=949, x=410..412
+x=670, y=1314..1332
+y=1668, x=427..454
+x=545, y=468..481
+x=568, y=1305..1323
+y=571, x=449..452
+y=1494, x=589..593
+x=410, y=947..949
+x=576, y=1428..1439
+y=1612, x=541..544
+x=594, y=1553..1555
+y=624, x=593..603
+x=602, y=324..331
+x=444, y=809..818
+y=242, x=635..647
+y=991, x=670..672
+y=1303, x=479..483
+x=417, y=664..688
+x=402, y=1426..1430
+x=485, y=870..881
+x=575, y=188..206
+x=398, y=158..164
+x=512, y=266..292
+y=1579, x=456..479
+x=672, y=964..991
+x=427, y=170..176
+x=472, y=872..884
+x=445, y=305..318
+y=1724, x=462..472
+y=1567, x=510..518
+y=101, x=526..531
+y=1441, x=632..646
+x=581, y=227..251
+x=531, y=988..1010
+y=1152, x=501..508
+y=1399, x=465..476
+x=514, y=266..292
+x=562, y=685..698
+x=623, y=1333..1342
+x=508, y=120..128
+x=401, y=1362..1369
+x=651, y=1181..1209
+x=491, y=268..276
+y=616, x=521..537
+x=490, y=1628..1630
+x=641, y=181..183
+y=474, x=409..425
+x=472, y=1313..1317
+y=545, x=655..663
+x=486, y=587..589
+y=164, x=398..416
+x=593, y=607..624
+x=586, y=1197..1208
+x=461, y=11..35
+x=498, y=165..177
+x=561, y=950..955
+y=854, x=639..654
+x=502, y=1035..1039
+x=574, y=1213..1217
+x=622, y=1553..1564
+x=518, y=1563..1567
+x=581, y=629..636
+x=626, y=1469..1480
+y=1192, x=588..603
+x=429, y=1410..1415
+y=1763, x=527..545
+x=612, y=255..258
+y=760, x=556..573
+x=559, y=122..133
+x=564, y=1114..1119
+x=587, y=438..447
+y=1003, x=613..617
+y=999, x=564..583
+x=563, y=259..265
+x=540, y=917..940
+x=601, y=504..508
+x=565, y=1499..1502
+x=416, y=393..395
+x=564, y=548..560
+y=804, x=452..468
+y=1355, x=535..537
+x=460, y=1211..1223
+x=556, y=336..343
+x=502, y=1215..1229
+y=952, x=404..427
+y=1602, x=572..607
+x=478, y=1649..1651
+x=422, y=887..889
+x=567, y=1214..1217
+x=616, y=610..624
+x=470, y=1517..1539
+x=517, y=728..735
+x=468, y=188..199
+x=550, y=12..18
+y=1209, x=651..669
+x=521, y=607..616
+x=635, y=916..918
+y=658, x=556..573
+x=493, y=1629..1630
+y=1716, x=410..425
+y=1229, x=502..531
+y=508, x=601..604
+x=449, y=1379..1386
+x=450, y=1026..1041
+x=636, y=1689..1702
+x=553, y=466..476
+x=658, y=1082..1105
+x=611, y=384..409
+y=318, x=445..464
+y=45, x=501..524
+x=612, y=5..7
+y=1578, x=594..610
+x=479, y=1559..1579
+y=1273, x=518..532
+y=1654, x=467..484
+y=1426, x=402..407
+y=209, x=487..490
+x=455, y=930..943
+x=536, y=326..354
+y=1496, x=589..593
+x=418, y=1084..1088
+x=619, y=37..50
+x=591, y=1279..1287
+y=1143, x=396..417
+x=541, y=289..293
+x=552, y=1146..1150
+x=552, y=642..652
+x=492, y=1500..1507
+x=404, y=943..952
+x=634, y=471..477
+x=626, y=756..770
+x=478, y=1005..1022
+x=465, y=1022..1033
+x=476, y=1634..1638
+x=539, y=1630..1641
+y=286, x=417..432
diff --git a/2018/day17/testinput b/2018/day17/testinput
new file mode 100644
index 0000000..293b5af
--- /dev/null
+++ b/2018/day17/testinput
@@ -0,0 +1,8 @@
+x=495, y=2..7
+y=7, x=495..501
+x=501, y=3..7
+x=498, y=2..4
+x=506, y=1..2
+x=498, y=10..13
+x=504, y=10..13
+y=13, x=498..504