commit 20f599466cbf8ba5052d777358e854b890df5764
parent 65cb0739fc3ccd6ca1b4ada725313c073a0ee76f
Author: aabacchus <ben@bvnf.space>
Date: Wed, 21 Dec 2022 21:39:43 +0000
22.14 in Lua
Diffstat:
A | 2022/14/a.lua | | | 87 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | 2022/14/example | | | 2 | ++ |
A | 2022/14/input | | | 141 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
3 files changed, 230 insertions(+), 0 deletions(-)
diff --git a/2022/14/a.lua b/2022/14/a.lua
@@ -0,0 +1,87 @@
+local dbg = require("debugger")
+local f
+if (arg[1]) then
+ f = assert(io.open(arg[1], "r"))
+else
+ f = io.stdin
+end
+
+WIDTH = 10000
+
+local nodes = {}
+local minx, miny, maxx, maxy
+
+function printgrid()
+ for y=miny-5,maxy do
+ for x=minx,maxx do
+ i = nodes[x *WIDTH + y]
+ io.write(i == 1 and "#" or i == 2 and "+" or i == 3 and "@" or ".")
+ end
+ io.write("\n")
+ end
+end
+
+for line in f:lines() do
+ local prev = nil
+ for x,y in line:gmatch("(%d+),(%d+)") do
+ x = tonumber(x)
+ y = tonumber(y)
+ minx = math.min(x, minx and minx or x)
+ maxx = math.max(x, maxx and maxx or x)
+ miny = math.min(y, miny and miny or y)
+ maxy = math.max(y, maxy and maxy or y)
+
+ if (prev) then
+ for i = prev.x,x,(prev.x < x and 1 or -1) do
+ for j = prev.y,y,(prev.y < y and 1 or -1) do
+ nodes[i*WIDTH + j] = 1
+ end
+ end
+ end
+ nodes[x *WIDTH + y] = 1
+ prev = {x=x,y=y};
+ end
+end
+
+function isempty(x, y)
+ return (not nodes[x*WIDTH + y] and y < maxy+2) and {x,y} or false
+end
+
+local cntr = 0
+local x,y = 500,0
+while 1 do -- new grains coming in
+
+ --local x, y = 500, 0
+ x, y = 500, 0
+
+ while 1 do -- path of each grain
+ local xy = isempty(x, y+1) or isempty(x-1, y+1) or isempty(x+1, y+1) or nil
+ if xy == nil then break end
+ x, y = xy[1], xy[2]
+ if y > maxy then break end
+ end
+ nodes[x *WIDTH + y] = 2
+ if y > maxy then
+ break
+ end
+ cntr = cntr + 1
+end
+
+print(cntr)
+
+-- don't reset cntr or reset nodes.
+
+while 1 do
+ x, y = 500, 0
+ while 1 do
+ local xy = isempty(x, y+1) or isempty(x-1, y+1) or isempty(x+1, y+1) or nil
+ if xy == nil then break end
+ x, y = xy[1], xy[2]
+ if y == 0 and x == 500 then break end
+ end
+ nodes[x *WIDTH + y] = 2
+ if y == 0 and x == 500 then break end
+ cntr = cntr + 1
+end
+
+print(cntr+2) -- +2 for the two we missed after
diff --git a/2022/14/example b/2022/14/example
@@ -0,0 +1,2 @@
+498,4 -> 498,6 -> 496,6
+503,4 -> 502,4 -> 502,9 -> 494,9
diff --git a/2022/14/input b/2022/14/input
@@ -0,0 +1,141 @@
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+549,140 -> 549,143 -> 541,143 -> 541,147 -> 555,147 -> 555,143 -> 554,143 -> 554,140
+519,98 -> 523,98
+524,111 -> 524,109 -> 524,111 -> 526,111 -> 526,103 -> 526,111 -> 528,111 -> 528,110 -> 528,111 -> 530,111 -> 530,108 -> 530,111 -> 532,111 -> 532,108 -> 532,111 -> 534,111 -> 534,107 -> 534,111
+511,50 -> 511,51 -> 525,51 -> 525,50
+506,46 -> 506,43 -> 506,46 -> 508,46 -> 508,37 -> 508,46 -> 510,46 -> 510,40 -> 510,46 -> 512,46 -> 512,45 -> 512,46 -> 514,46 -> 514,38 -> 514,46
+524,111 -> 524,109 -> 524,111 -> 526,111 -> 526,103 -> 526,111 -> 528,111 -> 528,110 -> 528,111 -> 530,111 -> 530,108 -> 530,111 -> 532,111 -> 532,108 -> 532,111 -> 534,111 -> 534,107 -> 534,111
+555,150 -> 555,154 -> 550,154 -> 550,157 -> 561,157 -> 561,154 -> 557,154 -> 557,150
+506,46 -> 506,43 -> 506,46 -> 508,46 -> 508,37 -> 508,46 -> 510,46 -> 510,40 -> 510,46 -> 512,46 -> 512,45 -> 512,46 -> 514,46 -> 514,38 -> 514,46
+520,56 -> 525,56
+524,111 -> 524,109 -> 524,111 -> 526,111 -> 526,103 -> 526,111 -> 528,111 -> 528,110 -> 528,111 -> 530,111 -> 530,108 -> 530,111 -> 532,111 -> 532,108 -> 532,111 -> 534,111 -> 534,107 -> 534,111
+517,58 -> 522,58
+513,94 -> 517,94
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+498,70 -> 503,70
+506,46 -> 506,43 -> 506,46 -> 508,46 -> 508,37 -> 508,46 -> 510,46 -> 510,40 -> 510,46 -> 512,46 -> 512,45 -> 512,46 -> 514,46 -> 514,38 -> 514,46
+519,94 -> 523,94
+515,30 -> 520,30
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+524,58 -> 529,58
+509,89 -> 509,80 -> 509,89 -> 511,89 -> 511,84 -> 511,89 -> 513,89 -> 513,88 -> 513,89 -> 515,89 -> 515,84 -> 515,89 -> 517,89 -> 517,88 -> 517,89
+507,98 -> 511,98
+549,140 -> 549,143 -> 541,143 -> 541,147 -> 555,147 -> 555,143 -> 554,143 -> 554,140
+527,56 -> 532,56
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+524,111 -> 524,109 -> 524,111 -> 526,111 -> 526,103 -> 526,111 -> 528,111 -> 528,110 -> 528,111 -> 530,111 -> 530,108 -> 530,111 -> 532,111 -> 532,108 -> 532,111 -> 534,111 -> 534,107 -> 534,111
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+522,96 -> 526,96
+524,111 -> 524,109 -> 524,111 -> 526,111 -> 526,103 -> 526,111 -> 528,111 -> 528,110 -> 528,111 -> 530,111 -> 530,108 -> 530,111 -> 532,111 -> 532,108 -> 532,111 -> 534,111 -> 534,107 -> 534,111
+549,140 -> 549,143 -> 541,143 -> 541,147 -> 555,147 -> 555,143 -> 554,143 -> 554,140
+535,60 -> 540,60
+506,46 -> 506,43 -> 506,46 -> 508,46 -> 508,37 -> 508,46 -> 510,46 -> 510,40 -> 510,46 -> 512,46 -> 512,45 -> 512,46 -> 514,46 -> 514,38 -> 514,46
+511,50 -> 511,51 -> 525,51 -> 525,50
+506,46 -> 506,43 -> 506,46 -> 508,46 -> 508,37 -> 508,46 -> 510,46 -> 510,40 -> 510,46 -> 512,46 -> 512,45 -> 512,46 -> 514,46 -> 514,38 -> 514,46
+524,111 -> 524,109 -> 524,111 -> 526,111 -> 526,103 -> 526,111 -> 528,111 -> 528,110 -> 528,111 -> 530,111 -> 530,108 -> 530,111 -> 532,111 -> 532,108 -> 532,111 -> 534,111 -> 534,107 -> 534,111
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+555,150 -> 555,154 -> 550,154 -> 550,157 -> 561,157 -> 561,154 -> 557,154 -> 557,150
+533,114 -> 533,118 -> 525,118 -> 525,124 -> 541,124 -> 541,118 -> 538,118 -> 538,114
+549,140 -> 549,143 -> 541,143 -> 541,147 -> 555,147 -> 555,143 -> 554,143 -> 554,140
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+524,111 -> 524,109 -> 524,111 -> 526,111 -> 526,103 -> 526,111 -> 528,111 -> 528,110 -> 528,111 -> 530,111 -> 530,108 -> 530,111 -> 532,111 -> 532,108 -> 532,111 -> 534,111 -> 534,107 -> 534,111
+509,89 -> 509,80 -> 509,89 -> 511,89 -> 511,84 -> 511,89 -> 513,89 -> 513,88 -> 513,89 -> 515,89 -> 515,84 -> 515,89 -> 517,89 -> 517,88 -> 517,89
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+513,98 -> 517,98
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+555,150 -> 555,154 -> 550,154 -> 550,157 -> 561,157 -> 561,154 -> 557,154 -> 557,150
+505,33 -> 510,33
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+498,13 -> 498,16 -> 492,16 -> 492,19 -> 506,19 -> 506,16 -> 501,16 -> 501,13
+524,111 -> 524,109 -> 524,111 -> 526,111 -> 526,103 -> 526,111 -> 528,111 -> 528,110 -> 528,111 -> 530,111 -> 530,108 -> 530,111 -> 532,111 -> 532,108 -> 532,111 -> 534,111 -> 534,107 -> 534,111
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+533,114 -> 533,118 -> 525,118 -> 525,124 -> 541,124 -> 541,118 -> 538,118 -> 538,114
+498,13 -> 498,16 -> 492,16 -> 492,19 -> 506,19 -> 506,16 -> 501,16 -> 501,13
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+509,89 -> 509,80 -> 509,89 -> 511,89 -> 511,84 -> 511,89 -> 513,89 -> 513,88 -> 513,89 -> 515,89 -> 515,84 -> 515,89 -> 517,89 -> 517,88 -> 517,89
+549,140 -> 549,143 -> 541,143 -> 541,147 -> 555,147 -> 555,143 -> 554,143 -> 554,140
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+549,140 -> 549,143 -> 541,143 -> 541,147 -> 555,147 -> 555,143 -> 554,143 -> 554,140
+509,89 -> 509,80 -> 509,89 -> 511,89 -> 511,84 -> 511,89 -> 513,89 -> 513,88 -> 513,89 -> 515,89 -> 515,84 -> 515,89 -> 517,89 -> 517,88 -> 517,89
+533,114 -> 533,118 -> 525,118 -> 525,124 -> 541,124 -> 541,118 -> 538,118 -> 538,114
+498,13 -> 498,16 -> 492,16 -> 492,19 -> 506,19 -> 506,16 -> 501,16 -> 501,13
+509,89 -> 509,80 -> 509,89 -> 511,89 -> 511,84 -> 511,89 -> 513,89 -> 513,88 -> 513,89 -> 515,89 -> 515,84 -> 515,89 -> 517,89 -> 517,88 -> 517,89
+509,89 -> 509,80 -> 509,89 -> 511,89 -> 511,84 -> 511,89 -> 513,89 -> 513,88 -> 513,89 -> 515,89 -> 515,84 -> 515,89 -> 517,89 -> 517,88 -> 517,89
+524,111 -> 524,109 -> 524,111 -> 526,111 -> 526,103 -> 526,111 -> 528,111 -> 528,110 -> 528,111 -> 530,111 -> 530,108 -> 530,111 -> 532,111 -> 532,108 -> 532,111 -> 534,111 -> 534,107 -> 534,111
+503,76 -> 513,76 -> 513,75
+498,13 -> 498,16 -> 492,16 -> 492,19 -> 506,19 -> 506,16 -> 501,16 -> 501,13
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+509,89 -> 509,80 -> 509,89 -> 511,89 -> 511,84 -> 511,89 -> 513,89 -> 513,88 -> 513,89 -> 515,89 -> 515,84 -> 515,89 -> 517,89 -> 517,88 -> 517,89
+533,114 -> 533,118 -> 525,118 -> 525,124 -> 541,124 -> 541,118 -> 538,118 -> 538,114
+521,60 -> 526,60
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+516,92 -> 520,92
+498,13 -> 498,16 -> 492,16 -> 492,19 -> 506,19 -> 506,16 -> 501,16 -> 501,13
+506,46 -> 506,43 -> 506,46 -> 508,46 -> 508,37 -> 508,46 -> 510,46 -> 510,40 -> 510,46 -> 512,46 -> 512,45 -> 512,46 -> 514,46 -> 514,38 -> 514,46
+506,46 -> 506,43 -> 506,46 -> 508,46 -> 508,37 -> 508,46 -> 510,46 -> 510,40 -> 510,46 -> 512,46 -> 512,45 -> 512,46 -> 514,46 -> 514,38 -> 514,46
+512,33 -> 517,33
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+528,60 -> 533,60
+524,111 -> 524,109 -> 524,111 -> 526,111 -> 526,103 -> 526,111 -> 528,111 -> 528,110 -> 528,111 -> 530,111 -> 530,108 -> 530,111 -> 532,111 -> 532,108 -> 532,111 -> 534,111 -> 534,107 -> 534,111
+524,111 -> 524,109 -> 524,111 -> 526,111 -> 526,103 -> 526,111 -> 528,111 -> 528,110 -> 528,111 -> 530,111 -> 530,108 -> 530,111 -> 532,111 -> 532,108 -> 532,111 -> 534,111 -> 534,107 -> 534,111
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+498,13 -> 498,16 -> 492,16 -> 492,19 -> 506,19 -> 506,16 -> 501,16 -> 501,13
+503,76 -> 513,76 -> 513,75
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+506,46 -> 506,43 -> 506,46 -> 508,46 -> 508,37 -> 508,46 -> 510,46 -> 510,40 -> 510,46 -> 512,46 -> 512,45 -> 512,46 -> 514,46 -> 514,38 -> 514,46
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+509,89 -> 509,80 -> 509,89 -> 511,89 -> 511,84 -> 511,89 -> 513,89 -> 513,88 -> 513,89 -> 515,89 -> 515,84 -> 515,89 -> 517,89 -> 517,88 -> 517,89
+498,24 -> 513,24
+506,46 -> 506,43 -> 506,46 -> 508,46 -> 508,37 -> 508,46 -> 510,46 -> 510,40 -> 510,46 -> 512,46 -> 512,45 -> 512,46 -> 514,46 -> 514,38 -> 514,46
+524,111 -> 524,109 -> 524,111 -> 526,111 -> 526,103 -> 526,111 -> 528,111 -> 528,110 -> 528,111 -> 530,111 -> 530,108 -> 530,111 -> 532,111 -> 532,108 -> 532,111 -> 534,111 -> 534,107 -> 534,111
+525,98 -> 529,98
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+555,150 -> 555,154 -> 550,154 -> 550,157 -> 561,157 -> 561,154 -> 557,154 -> 557,150
+511,27 -> 516,27
+509,89 -> 509,80 -> 509,89 -> 511,89 -> 511,84 -> 511,89 -> 513,89 -> 513,88 -> 513,89 -> 515,89 -> 515,84 -> 515,89 -> 517,89 -> 517,88 -> 517,89
+514,60 -> 519,60
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+523,54 -> 528,54
+511,50 -> 511,51 -> 525,51 -> 525,50
+524,111 -> 524,109 -> 524,111 -> 526,111 -> 526,103 -> 526,111 -> 528,111 -> 528,110 -> 528,111 -> 530,111 -> 530,108 -> 530,111 -> 532,111 -> 532,108 -> 532,111 -> 534,111 -> 534,107 -> 534,111
+549,140 -> 549,143 -> 541,143 -> 541,147 -> 555,147 -> 555,143 -> 554,143 -> 554,140
+509,89 -> 509,80 -> 509,89 -> 511,89 -> 511,84 -> 511,89 -> 513,89 -> 513,88 -> 513,89 -> 515,89 -> 515,84 -> 515,89 -> 517,89 -> 517,88 -> 517,89
+533,114 -> 533,118 -> 525,118 -> 525,124 -> 541,124 -> 541,118 -> 538,118 -> 538,114
+506,46 -> 506,43 -> 506,46 -> 508,46 -> 508,37 -> 508,46 -> 510,46 -> 510,40 -> 510,46 -> 512,46 -> 512,45 -> 512,46 -> 514,46 -> 514,38 -> 514,46
+508,30 -> 513,30
+506,46 -> 506,43 -> 506,46 -> 508,46 -> 508,37 -> 508,46 -> 510,46 -> 510,40 -> 510,46 -> 512,46 -> 512,45 -> 512,46 -> 514,46 -> 514,38 -> 514,46
+497,66 -> 502,66
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+509,89 -> 509,80 -> 509,89 -> 511,89 -> 511,84 -> 511,89 -> 513,89 -> 513,88 -> 513,89 -> 515,89 -> 515,84 -> 515,89 -> 517,89 -> 517,88 -> 517,89
+524,111 -> 524,109 -> 524,111 -> 526,111 -> 526,103 -> 526,111 -> 528,111 -> 528,110 -> 528,111 -> 530,111 -> 530,108 -> 530,111 -> 532,111 -> 532,108 -> 532,111 -> 534,111 -> 534,107 -> 534,111
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+524,111 -> 524,109 -> 524,111 -> 526,111 -> 526,103 -> 526,111 -> 528,111 -> 528,110 -> 528,111 -> 530,111 -> 530,108 -> 530,111 -> 532,111 -> 532,108 -> 532,111 -> 534,111 -> 534,107 -> 534,111
+531,58 -> 536,58
+519,33 -> 524,33
+555,150 -> 555,154 -> 550,154 -> 550,157 -> 561,157 -> 561,154 -> 557,154 -> 557,150
+555,150 -> 555,154 -> 550,154 -> 550,157 -> 561,157 -> 561,154 -> 557,154 -> 557,150
+501,63 -> 511,63
+491,70 -> 496,70
+506,46 -> 506,43 -> 506,46 -> 508,46 -> 508,37 -> 508,46 -> 510,46 -> 510,40 -> 510,46 -> 512,46 -> 512,45 -> 512,46 -> 514,46 -> 514,38 -> 514,46
+516,96 -> 520,96
+509,89 -> 509,80 -> 509,89 -> 511,89 -> 511,84 -> 511,89 -> 513,89 -> 513,88 -> 513,89 -> 515,89 -> 515,84 -> 515,89 -> 517,89 -> 517,88 -> 517,89
+505,70 -> 510,70
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+524,111 -> 524,109 -> 524,111 -> 526,111 -> 526,103 -> 526,111 -> 528,111 -> 528,110 -> 528,111 -> 530,111 -> 530,108 -> 530,111 -> 532,111 -> 532,108 -> 532,111 -> 534,111 -> 534,107 -> 534,111
+501,68 -> 506,68
+506,46 -> 506,43 -> 506,46 -> 508,46 -> 508,37 -> 508,46 -> 510,46 -> 510,40 -> 510,46 -> 512,46 -> 512,45 -> 512,46 -> 514,46 -> 514,38 -> 514,46
+510,96 -> 514,96
+533,114 -> 533,118 -> 525,118 -> 525,124 -> 541,124 -> 541,118 -> 538,118 -> 538,114
+524,111 -> 524,109 -> 524,111 -> 526,111 -> 526,103 -> 526,111 -> 528,111 -> 528,110 -> 528,111 -> 530,111 -> 530,108 -> 530,111 -> 532,111 -> 532,108 -> 532,111 -> 534,111 -> 534,107 -> 534,111
+498,13 -> 498,16 -> 492,16 -> 492,19 -> 506,19 -> 506,16 -> 501,16 -> 501,13
+532,137 -> 532,130 -> 532,137 -> 534,137 -> 534,127 -> 534,137 -> 536,137 -> 536,135 -> 536,137 -> 538,137 -> 538,127 -> 538,137 -> 540,137 -> 540,132 -> 540,137 -> 542,137 -> 542,135 -> 542,137 -> 544,137 -> 544,127 -> 544,137 -> 546,137 -> 546,131 -> 546,137 -> 548,137 -> 548,134 -> 548,137 -> 550,137 -> 550,133 -> 550,137
+555,150 -> 555,154 -> 550,154 -> 550,157 -> 561,157 -> 561,154 -> 557,154 -> 557,150
+494,68 -> 499,68
+533,114 -> 533,118 -> 525,118 -> 525,124 -> 541,124 -> 541,118 -> 538,118 -> 538,114
+509,89 -> 509,80 -> 509,89 -> 511,89 -> 511,84 -> 511,89 -> 513,89 -> 513,88 -> 513,89 -> 515,89 -> 515,84 -> 515,89 -> 517,89 -> 517,88 -> 517,89
+506,46 -> 506,43 -> 506,46 -> 508,46 -> 508,37 -> 508,46 -> 510,46 -> 510,40 -> 510,46 -> 512,46 -> 512,45 -> 512,46 -> 514,46 -> 514,38 -> 514,46
+509,89 -> 509,80 -> 509,89 -> 511,89 -> 511,84 -> 511,89 -> 513,89 -> 513,88 -> 513,89 -> 515,89 -> 515,84 -> 515,89 -> 517,89 -> 517,88 -> 517,89