From d76a694bb370e060d7c026eebd6849bf890b7638 Mon Sep 17 00:00:00 2001 From: Mattrixwv Date: Sat, 6 Dec 2025 10:23:09 -0500 Subject: [PATCH] Add solution to problem 4 --- Problem4_1.py | 71 +++++++++++++++++++++++ Problem4_2.py | 95 +++++++++++++++++++++++++++++++ files/Problem1.txt | 2 +- files/Problem2.txt | 2 +- files/Problem3.txt | 5 +- files/Problem4.txt | 136 +++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 306 insertions(+), 5 deletions(-) create mode 100644 Problem4_1.py create mode 100644 Problem4_2.py create mode 100644 files/Problem4.txt diff --git a/Problem4_1.py b/Problem4_1.py new file mode 100644 index 0000000..4b558ce --- /dev/null +++ b/Problem4_1.py @@ -0,0 +1,71 @@ +def checkRolls(x: int, y: int) : + rolls = 0 + #!Check row above + if y > 0 : + #Check above left + if x > 0 and inputGrid[y - 1][x - 1] == "@" : + rolls += 1 + #Check directly above + if inputGrid[y - 1][x] == "@" : + rolls += 1 + #Check above right + if x < len(inputGrid[y - 1]) - 1 and inputGrid[y - 1][x + 1] == "@" : + rolls += 1 + #!Check same row + #Check left + if x > 0 and inputGrid[y][x - 1] == "@" : + rolls += 1 + #Check right + if x < len(inputGrid[y]) - 1 and inputGrid[y][x + 1] == "@": + rolls += 1 + #!Check row below + if y < len(inputGrid) - 1 : + #Check below left + if x > 0 and inputGrid[y + 1][x - 1] == "@" : + rolls += 1 + #Check directly below + if inputGrid[y + 1][x] == "@" : + rolls += 1 + #Check below right + if x < len(inputGrid[y]) - 1 and inputGrid[y + 1][x + 1] == "@" : + rolls += 1 + return rolls + + +testInput = [ + "..@@.@@@@.", + "@@@.@.@.@@", + "@@@@@.@.@@", + "@.@@@@..@.", + "@@.@@@@.@@", + ".@@@@@@@.@", + ".@.@.@.@@@", + "@.@@@.@@@@", + ".@@@@@@@@.", + "@.@.@@@.@." +] + +def readFile() : + ary = [] + with open("files/Problem4.txt", "r") as file : + for line in file : + ary.append(line.replace("\n", "")) + return ary + + +#inputGrid = testInput +inputGrid = readFile() +accessibleRoles = 0 +x = 0 +y = 0 +for y in range(len(inputGrid)) : + for x in range(len(inputGrid[y])) : + if inputGrid[y][x] == "@" : + rollsAround = checkRolls(x, y) + #print(f"roll at ({x}, {y}) with {rollsAround} rolls around") + if rollsAround < 4 : + accessibleRoles += 1 + #print(f"Accessible roll at ({x}, {y}) with {rollsAround} rolls around") +print(f"Total accessible roles = {accessibleRoles}") + +#Total accessible roles = 1445 diff --git a/Problem4_2.py b/Problem4_2.py new file mode 100644 index 0000000..aece8fc --- /dev/null +++ b/Problem4_2.py @@ -0,0 +1,95 @@ +def checkRolls(x: int, y: int) : + rolls = 0 + #!Check row above + if y > 0 : + #Check above left + if x > 0 and inputGrid[y - 1][x - 1] == "@" : + rolls += 1 + #Check directly above + if inputGrid[y - 1][x] == "@" : + rolls += 1 + #Check above right + if x < len(inputGrid[y - 1]) - 1 and inputGrid[y - 1][x + 1] == "@" : + rolls += 1 + #!Check same row + #Check left + if x > 0 and inputGrid[y][x - 1] == "@" : + rolls += 1 + #Check right + if x < len(inputGrid[y]) - 1 and inputGrid[y][x + 1] == "@": + rolls += 1 + #!Check row below + if y < len(inputGrid) - 1 : + #Check below left + if x > 0 and inputGrid[y + 1][x - 1] == "@" : + rolls += 1 + #Check directly below + if inputGrid[y + 1][x] == "@" : + rolls += 1 + #Check below right + if x < len(inputGrid[y]) - 1 and inputGrid[y + 1][x + 1] == "@" : + rolls += 1 + return rolls + + +testInput = [ + "..@@.@@@@.", + "@@@.@.@.@@", + "@@@@@.@.@@", + "@.@@@@..@.", + "@@.@@@@.@@", + ".@@@@@@@.@", + ".@.@.@.@@@", + "@.@@@.@@@@", + ".@@@@@@@@.", + "@.@.@@@.@." +] + +def readFile() : + ary = [] + with open("files/Problem4.txt", "r") as file : + for line in file : + ary.append(line.replace("\n", "")) + return ary + +def printGrid() : + for line in inputGrid : + print(line) + print("") + +def clearGrid() : + for y in range(len(inputGrid)) : + newLine = inputGrid[y] + newLine = newLine.replace("x", ".") + inputGrid[y] = newLine + + +#inputGrid = testInput +inputGrid = readFile() +removableRoles = 0 +x = 0 +y = 0 +rollLocations = [] +#If accessible roles are found, remove them from the grid and begin again until no more are found +while True : + #printGrid() + #clearGrid() + for y in range(len(inputGrid)) : + for x in range(len(inputGrid[y])) : + if inputGrid[y][x] == "@" : + rollsAround = checkRolls(x, y) + #print(f"roll at ({x}, {y}) with {rollsAround} rolls around") + if rollsAround < 4 : + removableRoles += 1 + #Save X,Y of accessible rolls + rollLocations.append((x, y)) + #print(f"Accessible roll at ({x}, {y}) with {rollsAround} rolls around") + if len(rollLocations) == 0 : + break + for loc in rollLocations : + inputGrid[loc[1]] = inputGrid[loc[1]][:loc[0]] + "x" + inputGrid[loc[1]][loc[0] + 1:] + rollLocations = [] +#printGrid() +print(f"Total removable roles = {removableRoles}") + +#Too low = 8316 diff --git a/files/Problem1.txt b/files/Problem1.txt index 492c983..8061400 100644 --- a/files/Problem1.txt +++ b/files/Problem1.txt @@ -4729,4 +4729,4 @@ L22 R42 L14 L41 -L5 +L5 \ No newline at end of file diff --git a/files/Problem2.txt b/files/Problem2.txt index d155397..b33abf0 100644 --- a/files/Problem2.txt +++ b/files/Problem2.txt @@ -1 +1 @@ -6161588270-6161664791,128091420-128157776,306-494,510-1079,10977-20613,64552-123011,33-46,28076-52796,371150-418737,691122-766624,115-221,7426210-7504719,819350-954677,7713444-7877541,63622006-63661895,1370-1981,538116-596342,5371-8580,8850407-8965070,156363-325896,47-86,452615-473272,2012-4265,73181182-73335464,1102265-1119187,3343315615-3343342551,8388258268-8388317065,632952-689504,3-22,988344-1007943 +6161588270-6161664791,128091420-128157776,306-494,510-1079,10977-20613,64552-123011,33-46,28076-52796,371150-418737,691122-766624,115-221,7426210-7504719,819350-954677,7713444-7877541,63622006-63661895,1370-1981,538116-596342,5371-8580,8850407-8965070,156363-325896,47-86,452615-473272,2012-4265,73181182-73335464,1102265-1119187,3343315615-3343342551,8388258268-8388317065,632952-689504,3-22,988344-1007943 \ No newline at end of file diff --git a/files/Problem3.txt b/files/Problem3.txt index 094e4a5..d21706f 100644 --- a/files/Problem3.txt +++ b/files/Problem3.txt @@ -42,8 +42,7 @@ 5886868774555746344643885473376676884344675734948355455843433537685787785745645786674574548985575575 3547866352236644664573227563164454434563474557214356536355366554436444344465743441774145553622545244 2454542445455454335434451454454434434474452533324232524334341443363345334445444333733546444434534343 -1232131114123623332241132222224225224222232263211324231213315372222524322142233412121735172623122225 -9267262423528474362245832533348735374544892892233421337236372142334223347313276322562331634332122245 +12321311141236233322411322222242252242222322632113242312133153722225243221422334121217351726231222259267262423528474362245832533348735374544892892233421337236372142334223347313276322562331634332122245 2223175344331222122123222233314252237251132723333321213232122532223222624333233312323452332222123222 2313333333355313653336333333333332633333353253333336633333433234533823365342433553333233314344453153 5323433341124332233332513233244283823243445365333343562232342421323322443533255323422433243333441213 @@ -197,4 +196,4 @@ 3435364346335235433434536431464642533325336432334433324343343348345334335513343353573432462435433445 1322332232123333231122235282322332132233243232231243253522221182232623322312232223332213122212222333 1332242223122322223432422223223222231321422232323322315323254332421213323312211322342222121233222222 -2122222222222321221222211222242314232222112262321222232226222422222212222222222222222221222242222212 +2122222222222321221222211222242314232222112262321222232226222422222212222222222222222221222242222212 \ No newline at end of file diff --git a/files/Problem4.txt b/files/Problem4.txt new file mode 100644 index 0000000..eb9c9b0 --- /dev/null +++ b/files/Problem4.txt @@ -0,0 +1,136 @@ +@@@@..@@@.@.@.@@@@...@@@.@.@@@@.@@@@@@.@@..@@@@@...@@@@@.@@.@...@@..@.@@@@@@@@@@.@@@...@@@@@@@@@@.@@@@@@@.@@.@@@.@@@@@@.@..@@@.@@@@@@@@@ +.@.@@@@@@@@@@@..@@.@.@@@@.@.@.@@.@.@@@..@@@..@....@@@@@@.@@..@@@@@@...@@@...@@@..@@.@@@.@@@@.@@@@...@@.@@.@@....@@@@@@.@@.@@@.@@@.@.@@@. +@@@@@@@@..@.@..@...@@@@@.@.....@.@@@@@.@@@@@@@@@@@.@.@@@@@....@.@.@.@.@..@@@@@.@..@@.@.@@@.@@@.@.@@.@@.@@@..@....@@@@@@@@@@..@@@...@@@@@ +@.@@.@@@@@.@@@..@.....@@.@@..@@..@.@@.@@@@@@@.@@@.@..@@@.@.@@@@.@@..@@@@@@@@.@@@@@@@@@@@@@..@.@@.@.@@@@.@@@@@@.@@@@@.@.@@@@@@@@...@..... +...@.@...@.@@@....@@@@.@.@@@@@@@.@.@.@.@@.@@...@@@@@@...@....@@...@.@@..@@@@@@@@.@@@@.@.@@.@@.@.........@.......@@@@.@@.@.@@.@@@.@@@@... +@@@@..@@.@..@@@..@@..@.@@......@@@@@@@@.@@.@..@@@@@..@.@@@.@@@.@@@@.@@.@.@@@.@@.@.@..@@@@@.@.@@..@.@.@@@@@@.@@.@@@.@@@@@@@@@@........... +..@@@....@.@.@@@@@@.@@@@@...@.@.@@@.....@@@@.@@@@@@@@@.@@@@@.@@@.@.@@@@@..@.@@..@@.@..@@.@@@@..@.@@.@.@@@.@@@..@@.@.@@@..@..@....@.@@@.@ +...@..@@@@@..@@@@.@@.@..@.@@.@..@@@.@.@.@.@..@@@.@.@@@@@@.@@@@.@@@.@@.@@@@@@@@@@@@@.@.@@@..@@@.@...@.@....@@@@.@@@@@@@@@.@.@@@@...@.@@@@ +.@@..@.@@...@.@.@..@@@.@@.@@@@.@.@.@@..@..@@...@.@@@..@.@@..@@@.@@..@@@..@@@@@.@@.@@.@.@@.@.@@@..@@@@@@@@@@@@@@.@@.@..@.@.@@@.@@@..@@.@. +@@@..@@@@@.@@.@...@@@@.@.@@.@@@.@.@@@@@.@.@@.@@@@@@@.@@@@@@@..@@@@.@...@@@@@@.@@@@@@@.@@@@@@@@@@.@@..@@.@@.....@@@@@@@.@@@..@@..@@.@@@@@ +.@@@@.@@.@.@@@@@..@.@@@.@@@@..@@..@@@..@.@@@@@.@@@@@@.@@@..@@@..@.@..@@.@@@.@@@.@@.@@.@.@..@@.@@@@...@@@@@@@.@@@@..@.@.@...@@@...@..@@.@ +.@.@..@@..@@@@@@...@.@@@@.@.@.@@@.@@....@@@@.@@@.@@@@@.@.@@@@@..@@@.@@.@@.@@@..@.@@@....@@@@.@@.@@@@@.@@@@@@@@@@.@@@.@.@@.@@@@..@@@@@@@@ +@.@.@@.@....@...@@@...@@@@@@@@@..@@.@@.@.@@@@@@@@@@.@.@.@@..@@.@@@@.@.@@@..@.@@@@@.@@@@@@.@@@...@@.@@@@@@@@....@@..@@@@@@@.@@@@.@@@@.... +@@.@..@@.@@@@..@@@@..@.@@..@@.@@@...@.@.@@@.@@@@@.@.@.@.@@.@.@@@@.@@@@@@@@..@@..@@...@@.@.@@@.@@@@.@@..@.@@.@@.@@@..@@@@@@@@@@@@..@@.@@. +@@@@@@.@.@.@.@@.@.@@.@@@@..@@.@@@.@@@.@@.@@@@.@.@@@@@@.@@.@@@..@@@.@@@@@@@@@@@.@..@.@@.@@.@@@....@@.@@@.@.@.@@@@@.@.@..@..@@@.@.@@.@@.@@ +.@@..@@@@@@.@@.@.@@....@@...@.@..@.@@@@@@@@@.@@@.@@@@@@@@@..@@@@@@@@@@@@@.@@.@....@@@@.@@@@@@.@@.@.@.@.@@@.@.@@@@@@.@@.@@@.@@@.@@@@@..@@ +.@.@.@@@..@@...@.@@..@@.@..@@@@@..@@@....@@@.@@@@@@.@@@.@..@...@.@@.@@@@@.@@@@@@@@@@@@@.@@.@@@..@@@@@@..@@@@..@.@..@..@.@@@@.@.@@@@@@@@@ +@@@.@@..@@@@@.@@@@@..@@@.@@@.@@.@@..@..@@@@@@@@.@..@@..@.@.@@@@@@@.@.@..@.@.@@@@.@@.@.@@@.@@@@@@.@@@@..@@....@..@@@.@@.@.@@.@@.@@@@@@@.@ +@.@@@@@@.@@@.@@@.@.....@..@@@.@@.@@...@....@@@.@@.@.@@.@@..@.@@.@@...@@..@@.@.@@..@..@@@@...@..@@@@@.@@..@...@.@.@@@..@@@@@@@@@@@.@..@.@ +@..@@@@.@@@@.@..@@@..@.@@@@.@@..@..@@@@@.@@@@.@@......@@.@@@@@@@@.@@@.@@.@.@@..@@@...@...@..@@.@.@@.@@.@..@.@@@@@..@@@.@.@@@.@@@@@@@@@@@ +@@.@.@@.@@.@.@.@@.@...@@@@......@..@.@@.@.@@.@..@@@.@@@.@..@@.@@@.@.@.@@..@@@...@@@@@@.@.@.@.@@@.@@.@..@@....@@@@@.@@@@.@@@@@.@@@@@@@@@@ +@@..@@@@@@@@..@@@...@.@@.@@@..@@@..@@@@.@@@.@.@.@@.@@@@@@@.@@@.@@.@@@@....@@.@@@.@@@..@.@@@@@@.@@@@@..@@@@@@@.@..@@@@@@.@@.@@..@.@...@@. +.@....@..@@@@.@.@.@@.@@.@@@@.@.@@@@.@@@@@@@@@@@@..@.@@...@@@@@....@...@@@@@@.@@..@.@..@@.@@.@.@.@@@.@@@.@@..@@@.@@@@@.@@@@.@.@.@..@@@@@. +@@@.@..@..@...@@@.@..@.@....@@@@@.@@..@@.@.@.@..@.@@.@@@..@@@.@@@@@@@@@@.@@@@@@..@@@@....@.@@@@@@@@@@@@@..@@@@.@@@@@@@.@@@@@@.@@@@@@@@.@ +@@@.@@@@@.@@@@@..@@@..@.@.@.@@@.@.@@@@@@..@@.@@@@@.@@@..@@.@.@@@.@@@..@@@..@@@.@@@..@@@..@@.@@@.@@.@.@@@@..@.@@..@@.@@@@..@@.@@@@@..@..@ +..@.@.@@.@@.@.@@..@@@..@@@@@.@@@.@@@@@.....@.@@@..@.@@@@@@..@@@@@...@@@..@.@.@@@@@@..@..@@.@@@@.@..@.@@@.@.@@@@@@.@@@@..@@@@@@@@@@@@@@.@ +@@@@@..@@@@@.@@..@.@.@.@@.@@@@.@.@@...@@.@..@..@@.@@@@..@@.@@@@@.@@.@@@@@..@@@@@@.@.@.@@@@.@.@@@..@@@@@@..@.@@.@@@..@@@@@@@@@@..@@@@.@.. +@@@@.@.@.@@@.@@.@.@@@@@@..@@.@@@@.@@@.@@@@..@@@@@.@@...@.@@.@.@..@@@.@@.@@@..@..@@@.@.@.@.@@..@.@.@@.....@...@@.@@@.@@@@@..@@@@@@.@@@@@. +@@..@@.@@.@.@@.@@@@@@@@..@@..@@@@@@@.@...@@..@@..@@@@.@...@@@@@@@.@.@@@@@@@@@@@.@@..@.@@@.@@@@@@@@@@....@@.@....@.@@@.@@.@..@@@@@@.@@... +@..@..@.@.@@@...@.@@.@@.@@@.@@@@...@..@@@.@@.@@@@.@@.@@.@@@@.@.@@@@@@@@.@@..@@...@.@@@@@@@...@.@@@@@@.@@..@..@@...@@@@....@@@@.@@@@@.@@. +@@@.@@@@@@@@@@@..@.@.@..@@.@@..@..@@@.@..@.@....@@@..@@.@@.@@.@@@@@.@@.@@@@.@@@@.@@@@@@@@@.@@@.@.@@.@.@@.@.@@.@@..@.@@@.@.@.@.@..@@.@@@@ +@.@@@@.@@@.@@@@@.@@.@@@...@@@..@@@.@@...@..@....@@@..@@@..@@@.@@@@.@@....@...@@..@@@.@.@@@..@@.@.@....@.@@@@@@@...@@@@@@@@....@@@@@@@.@@ +@@@@@.@@@..@.@@.@..@@@@.@@@@.@@@.@@..@@...@.@@.@@@.@@@@@.@.@@@..@@..@@@@@.@....@@@.@.@@@..@....@..@@@@...@@..@@@.@.@@@.@@@@@@@.@...@@@.. +.@@.@@....@@@@..@@@.@@@@@.@@@..@@@@.@@...@..@.@@@@@@@@@@@@@@@..@.@@@@@@@.@...@@@.@..@@.@.@@@..@..@@..@@@@@..@@@@..@.@@@@@@..@@@@@@@@.@.. +@@.@@.@@@.@@@@.@@@@@..@.@.@.@@@@@@@@....@@@.@@@@@@.@@.@@@@....@@.@@..@@@@..@.@@.@@@@@@@.@@@@@@...@@.@.@@@..@@@@@.@.@..@...@..@.@@@..@.@. +.@@@@@@.@@@@@..@@@@@@.@@@@..@.@@.@@@.@@@@@@.@.@@@.@..@.@@@.@@@@@.@@@@@.@@@@..@@@@@@.@@@@@@@@.@@@.@...@..@@@..@@@...@..@@@.@@@@@@@@@.@@@@ +...@@@@.@@@.@.@@@@@@..@...@.@..@@@@@@@@@@@...@.@@.@@@@.@..@@@..@@@@...@@@@@@@@@.@@@@.@@@@@@@.@@@@@@@@@@@@@@@..@@@..@@@.@@.@..@@@@.@@@@.@ +@..@@@@.@.@..@@@....@..@@@.@@@@@@@.@.@@..@@.@@@.@@@@.@@@@@@.@.@@.@.@.@@@.@@@@.@@@@.@@@@@@@.@@.@@@@@..@@@@@@.@@@@@.@..@@.@..@@.@..@@.@... +@@.@.@@@..@@@.@@.@.@@@.@..@@@@@@.@.@@@.@@@@@@.@@.@.@@..@.@@@@@@@@@.@..@@@.@@@@@@..@@@@...@..@.@@@.@..@@@..@..@@@@.@@.@.@@@@@.@.@@@@...@@ +@@...@@...@.@@..@@@@@@@.@.@@@..@@.@@@.@@@@@@.@@.@@@@@@..@..@@.@@@@@.@@@@@.@@@@@...@@@@.@...@..@@@..@@@@@@@@@@@@@@@.@@.@.@@@@..@@.@@@@@.. +@@@@.@@@@@@.@@..@@...@@@@@.@.@....@.@@@@...@..@..@@@@.@@.@@.@.@.@@.@@@.@@.@@@.@@.@.@@@.@...@@@..@.@@@@...@@....@@@@@..@...@@....@@.@@.@@ +@@@..@@@@@@@..@.@....@@@.@@@@@.@.@...@@.....@@@..@@@.@.@@..@@..@@.@@..@@@@.@@@@.@@@@@.@@@@@.@..@@.@@@@@@.@.@.@.@@@@.@@@.@.@@..@.@@@@@.@@ +.@.@@@@@@@@@@@@@@@@@@.@@@@@@@..@@@...@...@.@@.@..@@@.@.@@@.@@.@@.@@@@@@@@@.@@@@@....@@.@@.@@@@.@@@@..@@@@.@@@@@.@.@.@..@..@@@.....@@@@@@ +@@@@@@@@@.@@@.@@@.@.@.@@..@@@@@@@@...@@@@@@...@@..@@.@@@@@...@.@..@@@@.@@@..@.@@..@@@.@..@.@@.@@@@@@@@@..@.@.@@@@@@@@@@@@.@.@.@@.....@@@ +@@@@@@..@@..@@@.@.@@@@@@@@...@..@@..@.@@@@.@@@..@...@@@@@@@.@@@@@.@@@.@@@@@@@.@@@.@@@.@@@@@@@.@.@@@@@..@.@@@@@@@.@@@@....@@.@@@@.@@..... +..@@@@@@@.@@@...@..@@@@@@@@.@@..@@@.@@.@@@@@.@@@.@@@.@@@@.@@.@@.@@..@@@@@@..@.@@@..@@@...@...@...@@..@@....@.@@@@@@.@.@@@@@@@.@....@@@@@ +@@@@.@@.@.@@@@....@@@@.@.@.@@@@@.@.@@...@.@...@@@@..@.@@@@@@@.@@..@@.@@@@@@@@.@@@@.@.@@.@.@@@@@.@@@@@@..@..@@@..@@@.@@@@.@.@.@@@.@@@..@. +..@.@@.@@@@@@@@@..@@.@@..@@@@..@.@@.@@.@@@.@.@@@..@@@.@.@@@.@@@.@@@..@...@..@@.@@@@@@.@@@@@.@.@.@@@@@@@@@@@@.@@@@@@@.@@.@@@.@@@@.@@@@@@@ +@@.@@@@.@@@@..@..@@..@@.@@@@@@.@@@...@@@@@.@@.@@.@.@@@@@.@@@.@@@@@@.@@@@...@@@.@..@.@@..@@@@@.@@@@..@@@@.@@@.@@.@@@@.@..@.@@@@@.@@@@@@@@ +@..@..@@@@@@@@@..@@.@@@@@.@@.@.@.@.@@@@.@@.@@.@@@@.@@@....@.@@.@@..@.@@@@@@..@@@@...@.@..@...@@@@.@@@@@@@.@@@@@@@@@@@@@...@@@..@@..@.@@@ +@@.@..@@@.@..@.@.@@..@@@.@@@@@@...@@@@@@@.@@@@@..@@.@...@@.@..@@@@.@.@@@@.@.@@@@@..@@@@@@@.@..@.@.@@@@@.@@@@.@@..@.@.@@@.@@@@...@.@@@.@@ +@@..@@...@.@@@..@@@.@@@@..@@@..@@.....@..@@@@@@..@@.@@@@@@@@@@@@@@@@@@@.@.@@@@..@@.@@@@.@@@@@@@.@@@@@.@.@@@@@..@@@@@@@.@@@.@...@@@@@@.@@ +@...@@..@@@@@.@@.@@@@@@@@@@@@.@@@..@.@.@@@@@@@@.@@@@@.@.@@@@.@@@@@.@@.@@.@@...@.@....@.@@...@@@...@@@..@....@.@@@.@@..@@@@....@..@@@@.@. +@.@@.@@@@@.@@..@.@@@@@@.@.@...@.@..@@@..@.@@@...@@@.@.@....@.@.@..@@@@@@@@@@@@@@.@@@@.@@@@@@.@@.@.@@@@.@@@@.@@@@@@@.@@@..@...@@.@..@.@@@ +@.@@@.@.@@@@@.@..@.@@@@@@@.@@@@@.@@@@@.@@@.@@.@@..@@@@@@@@@@@@..@@@@.@@@@@.@@@@.@@@@@.@@@..@@@.@@@@@@@..@..@...@@....@..@.@..@....@@.@@@ +..@@@@@@.@..@@@@@@.@@@@@@@@@@....@..@@.@@@@@.@@.@.@@@@.@...@@.@..@.@@@@.@.@@@@@@...@...@@@@@..@.@@.@@@@....@@@.@.@@.@@....@@@..@@@.@@@.@ +@@@@..@.@.@@..@@@.@.@.@.@.@@@.@.@.@@@......@@@.@@.@@@@@@@.@@.@..@@@@@..@@@@@@@..@@@@@@@.@@@@.@@@.@@@@@.@.@@...@@@.@@@@@.@@@@.@..@.@@@.@. +@@.@@@@.@@.@@@@@@.@...@@@@.@......@@@.....@.@@.@@@..@@.@@..@@@.@...@@.@.@.@@@@.@@@@@@@@.@@.@@@.@..@@@......@.@@..@@..@@..@@.@.@.@@@@@@@. +@@@@.@..@@@.@@@@.@@@@..@@@...@..@..@@@.@...@@@@@@@.@@@..@.@@..@@@@..@@...@..@..@@.@.@@@@@@@@@.@.@..@@.@@@.@@..@@@@@@@@@.@@@@.@..@@@.@@.@ +@@.@@@.@.@@@@@@@@.@@.@@@@@.@@@@@@@@...@...@.@@@@...@@@@@..@@..@@@.@@@@@@@@@.@.@@@.@..@.@@@@@@@@@..@@..@.@..@.@@@.@.@@@....@@@@...@..@... +@..@@@@@@@..@@.@...@@.@@@.@.@@@..@@@@@@.@@@@..@@.@...@..@..@..@.@@@@@@@@@@@@@@@..@@@@@.@.@.@.@@@@@@@@@@@@..@@.@@@..@@@.@@.@@.@@.@.@@@@@. +@.@@@.@@.@@.@@.@@@@@..@.@..@..@@@@@@@@..@@...@@@@@@@@..@@@@@@.@@@.@.@@...@.@@@@@@@@@@@@@.@@...@@.@@@@@@@.....@.@@..@@@@@@...@.@.@..@@@@@ +@.@.@..@@@@@..@.@@.@@.@@@@@@@@.@@@@@.@@@.@@...@@..@@...@.@.@.@@@..@.@.@@@@@.@@@@@.@..@@.@.@...@.@@@.@@@@...@@@.@@@.@@@@....@@@@.@.@.@@@@ +@..@.@@@..@@@.@.@@@@.@.@@.@@@.......@@@.@@@.@..@@@@@@@@@@.@@.@@@...@@..@@@@@@@@@@.@@@@@@@@@.@.@@.@.@@@@@@@@.@@@@..@@@@@@.@@@@..@@@@@@.@@ +@@@.@@..@@.@.@.@@@@@@@@@@.@.@..@.....@.@.@@@.@@@@@@..@@@..@.@@@.@..@..@@..@@....@@@@@.@@@@.@@..@.@@.@@.@@@@.@@@@@@@.@.@@..@@@@@@@.@@.@@@ +@...@..@@..@@@@@.@@@.@@@@.@.....@@....@.@@@.@.@.@.@..@@@..@@@@@.@..@.@.@@@@@@...@@@@@.@@@@..@@@..@.@@..@...@.@@.@@..@@@.@@@@.@@@.@..@@.@ +@@.@@@.@@.@@..@@@..@@@@@@.@.@@@.@@.@@@@@....@..@@.@@.@@.@.@.@@.@@@@..@@@@.@@@@@@@@@.@@@@@.....@@.@@...@@@.@.@@.@@.@..@..@..@@@@.@@@@@.@@ +@@.@@@@.@.@..@@.@@@.@....@@@@.@@..@@@@@@@@..@@@..@@@@.@@@@...@@@@.@@@.@..@@.@@@..@@.@@...@@@..@@@@@.@@@....@.@@@@@..@@@@@@@.@@..@..@@@@. +@@@@.@@@.@.@@.@.@@.@@@@.@.@@@@..@@@...@.@@@@..@@.@....@@@..@@...@@.@@..@.@..@.@@..@..@@@@@@.@.@@@@@@@@@@@.@@@@.@.@@.@.@@@.@@@.@@@.@@.@@@ +.@..@@@....@...@.@.@@.@@.@.@@@...@.@@@.@@@..@@@@@@@.@@.@.@..@@...@.@..@@@.@@@@@@@@@.@.@@@@@@..@@@@@.@@@....@.@@@@@@@@@@@@.@@@@@.....@.@@ +..@.@.@@@.@@.@@@.@.@@@@@.@@@@..@@@..@@.@@@..@@@@..@@@@@.@@@@@.@..@.@.@@@@@.@@@..@...@@@@..@@..@@@@...@@@..@@@@.@@..@@..@@@@....@@@@.@@.@ +@@@.@@@..@@@@@.@@@.....@@@....@@..@@@@@@.@@@@@@.@@@.@@.@.@@@@@@.@.@@@@@@@@@@.@@@@@@@.@.@@@@..@@@@....@@@@@......@@@.@@.@@@@@@@.@@.@@.@@@ +@.@@@...@@@.@@@..@@@.@@@...@.@.@..@@@.@.@@.@@@@.@...@@.@@@@.@@@..@.@.@.@@@..@@@.@@@.@@@@@.@.@@@..@@.@@....@@..@@@.@.@@@@..@@@.@.@@....@@ +@@.@.@@@@@.@.@.....@@.@...@@.@.@@.@@@....@@..@@@@@..@@...@@.@@...@@@@.@@..@@@@@@@...@...@.@@..@...@@@@@....@@@@@@@@@@.@@@@@@@.@@@@@..@@@ +.@@@@@.@@.@@..@@@@@.@@@@@@@@@@@@@@@....@@@.@..@@.@@.@@.@...@..@@.@@@@@@.@@@@.@@@@@@....@@.@@.@@.@@.....@.@@@@..@@@@@@@@@...@@@@@@@@.@@@@ +.@@@@@@@@..@@@@.@@.@@@...@@.@@@...@.@..@...@@@@@.@@.@@@..@.@@@@@@@.@.@@@@.@@.@..@...@@.@@@@@..@.@@.@@@.@@...@@@@@..@.....@@..@@.@@@@@..@ +@@.@@@@.@...@..@@@@@@@.@@@..@....@@@@@..@...@.@@@@@@@@...@@..@.@@@.@@@@.@.@@@.@@..@@.@@@.@@@.@..@@@.@@@@@@@....@.@@@..@@@@.@@@@@@@@.@@@@ +.@@@@@@@@@@@..@@@..@@@.@@@@@.@.@..@@@.@@@@@@.@@@@@.@@@@@@..@@@@@.@@@@@@.@@@.@..@@@@@@.@@..@@@@@.@.@@@@.@@.@@..@.@@@..@@@.@@@@.@@@..@...@ +@@@@@@@@@...@.@@@@@@.@.@.@@@@@@@@.@.@@@.@.@.@@@.@@@@..@@.@@@.@.@@..@@.@@..@@.@@@@@@.@@.@.@.@@.@@.@.@@@@@@@.@@@@@@@......@@..@.@.@@@..@.. +.@@..@@@..@@@@.@@.@..@.@.@@@.@@@@@@@@@.@@@@..@@@.@@@..@.@@@.@@@....@@@@@@.@@.@.@@@@@@@.@@.@..@@@@@@@.@.@.@..@@.@.@@.@...@...@@@..@@.@@.@ +...@@@..@...@@@..@@..@@.@.@@@@@@@@@@.@@@@@@.@@@.@...@@.@..@.@..@@@@.@.@@@...@@@@.@..@@@@@@.@@@..@..@@@@.@@@@@@@@@@@@@.@@.@@..@@@@@...@@@ +@@@@@.@..@@@@.@@.@@@..@@..@.@@.@..@@@@@.@@.@@@..@.@@@.@@@@@@@@.@.@..@.@...@.@@@@.@.@...@@.@@.@@@@@@..@.@@..@@@@@@.@...@@@@@@.@@@@..@...@ +@@@.@.@@@.@.@..@@...@@@@@@@@@@@.@@@@..@@..@.@.@@...@..@@..@..@@@@@.@@.@@@..@.@@.@@@@@.@...@@.@.@.@..@@.@@..@...@...@@@.@@@..@.@@@..@@.@. +@@@@.@@@.@@...@.@@@@@.@@.@@@@@@@@@..@@@@..@.@@..@.@@@...@..@@@@@@.@@@@..@@@.@@.@..@@@@@.@@@@.@@@@.@@.@@@..@@@@..@@.@@@.@@...@..@@..@@@@. +@.@@@@..@@..@..@@.@..@@.@@.@@..@@@....@@.@.@..@.@@.@@@@@.@@@@@...@@@@.@@@@@.@@@@@.@..@.@@@@@.@...@..@.@@@@@@.@@@.@@...@@..@@@@...@.@.@.. +@@..@@..@..@@@@.@@..@.@@@@@@..@..@.@.@@@@.@@@@.@..@@..@@@@@@@@@@@@@@@@@.@.@@@@@@@@.@.@@..@@@@..@@.@@@.@.@@.@@@@.@@@@@@@@.@@@@...@@.@@@.@ +@....@......@@@@@@@.@@@.@@@@.@.@@.@.@@@@@@@..@@@@.@..@@....@@@@@@.@.@@.@@@@@@@..@@@@.@@@@.@@.@@@.@@.@..@..@@@@.@.@.@@@...@@@@@.@@@@@@@@@ +@@@@.@@@@@@.@.@..@@.@..@@@@@@@@@@@.@.@...@.....@.@@@@@@..@.@@.@..@@@..@@@@@@@@....@@@@@@@@@@..@.@@@@@@.@@@@@.@@@@@@...@@@.@@.@@@...@@@@@ +@@.@@.@.@.@.@.@@...@@.@@@@@@@@.@@@@@@@@@@@@..@.@@@@..@..@@@..@@.@@@@.@..@@@@@@@@@@@..@@@..@@@@@.@@.@@@@.@..@.@@@@@.@@.@@.@@@@.@@.@@@@.@. +.@....@.@@.@.@@@.@@@@@@@....@@@.@@@.@@.@.@.@@.@@.@.@.....@@@..@@.@..@@@.@@.@@..@@..@@....@@@@..@.@..@..@@@.@@...@.@@@.@@.@@.@..@@.@@@@@@ +.@@.@.@@@@..@...@@@@@@.@@@@.@.@..@@@@.@..@@@@@@@@@@.@@@.@@@.@@.@@.@@.@.@@@..@.@@@@@@@@@@.@..@..@@@@@@..@.@@@@.@.@.@@.@@@@@@@@@.@@@.@@@.@ +@@.@@@.@@@@..@@......@..@@@@.@@@@.@.@@@@@.@@.@.@@..@..@@@@@@.@@@.@@@@@..@@@@@.@@@.@@@.@..@@..@....@.@@@..@@@@@@.@.@@@@.@@@.@.@@@@.@..@.. +.@@@@...@.@@@@@@@@@@@@@@.@.@.@@....@@@@@.@.@@@...@@@@@@@@.@..@..@@@@@@@@@@.@@@@@.@.@@@@..@@@.@@.@@@@.@@.@@...@..@.@@@@@.@.@@@.@@@.@@..@. +.@..@@@....@.@...@@..@..@@@@.@....@@@@.@@@@@@.@.@.@@.@@@@.@@.@.@@.@@@.@@.@@@.@@@@.@...@@.@@@@@@@@..@@@@@@@.@.@@@@.@@@@@@@@@..@@@.@@.@@@@ +@..@@.@@@@@@@.@@@..@@@.@@@@.@@@@@@@@@@...@...@.@@@@@@@@@.....@@@..@....@@@..@@@@@.@..@@@.@..@..@@@..@.@@@.@.@@.@.@@..@@@@@.@.@.@@@@@@@.. +@.@.@@@@@@@@@..@.@.@@@..@@@@@@@.@@@@.@@@@.@..@@@@@.@@.@@@@@@@@@.@@@..@@@@.@@.@.@.@@@@@@@@.@@@.@..@@@@@@..@@@.@.@..@@@@@@@@..@..@@@@.@@.. +@.@@@@.@@@..@@...@@@......@@@..@.....@..@.@.@@@@@@@@@..@.@@@@@...@@@.@@@.@@@@@@.@@@@.@.@@@...@@.@.@@@@@@.@..@.@..@.@@@@.@@.@@.@@@@.@@@.@ +.@....@.@@@@@@@.@@@@@@..@@.@@@..@@@.@@@@@.@...@@.@@@.@.@@@@@@@@@@@@@@.@@@@@@@..@@.@.@.@@@.@@@@@@@.@@@.@.@@@..@@@..@.@@@.@@@.@@.@.@.@@... +@@@@...@.@..@@.@.@@@@@..@..@@.@@...@@@@@@.@@.@@@@@@@.@@.@@@@@@@.@@@@.@@@@@.@@@@@.@@@.@.@@@...@@.@...@@@@@@@.@@..@.@@@.@.@...@@.@@.@..@@@ +@@@@@@@@.@@.@@@@@@@.@@.@@..@@@.@@.@...@@@@.....@@.@.@@.@.@@@@.@@...@@@@@..@@@....@...@@.@.@.@.@@.@@.@@@@.@.@@.@.@@@@@@@.@@@@@..@@@.@@@.. +@@@@@..@@@@@@@@@@.@@@@.@@.@....@...@@.@.@@..@.@@..@...@..@...@@..@@@@@@@@.@.@@.@.@@@@.@@@@.@@@..@@@@.@@@@.@@@@@@.@@.@@@@@@.@.@@@.@@@@..@ +.@@@.@@.@.@@@.@@@..@@@.@@.@@@@.@@.@@@@.@@.@@@@@.@..@@@@@@@@.@@.@@....@@@@@@....@.@@@@@@@@@@.@@@@@@.@.@....@..@@.@.....@..@..@@@@@.@@.@@@ +@@@.@@@@@..@.@@.@@@.@.@@@@.@@@...@..@@..@...@@@.@..@.@@.@..@@@@.@@@@@@.@.@@.@.@@@@@.@.@@@@@@.@@@@@@@@.@@.@.@@@@@@@.@@..@@@@.@@@...@@@@@@ +.@@@@@@@.@.@@@@.....@.@@@@@..@@@@@@.@@@@@.@@@@@@..@@.@@@.@@@.@@@@@.....@@@.@@@@.@@.@.@@.@@.@......@@@@@.@@.@@.@..@@.@..@@.@@@@.@.@.....@ +.@@@@@@.@@@.@@@@@@@....@@..@@@.@.@..@.@@.@.@@..@.@@.@...@@...@.@.@..@.@@@@.@@.@.@.@.@.@....@@..@@.@.@.@.@...@@.@@@@@@.@.@@.@.@@.@@.@@.@@ +@@@@@.@@@@@.@.@.@.@@@@.@@.@.@...@@..@@@@@@@@..@@.@@..@.@@@.@@@@@@....@@...@@@@@@@..@..@@@....@@@@@@.@@.@.@@..@@@.@@.@@@@@.....@.@.@@..@. +.@@@@@.@@..@.@..@@@.@@.@@@.@@@@@@@@@..@@@@.@.@..@.@@.@@.@@.@@.@@@@.@@@@...@@.@@.@..@.@@@@..@..@.@@@@.@@..@@.@@..@@..@@@@...@..@@...@@@.. +@....@@@..@@..@@.@@@@..@@@@@.@.@@@.@@@@@.@.@.@.@..@@@..@@..@@.@@@.@@@@@.@@..@@......@@.@@.@@@@.@@.@@@.@@..@@@.@@.@@@@@@@@@@.@..@@...@@.. +@@@.@.@...@..@.@@@@@@@.@@....@@....@@@..@.@..@.@.@@@@@..@@@.@@@@..@@@@@@@.@@..@@..@@@...@@@@.@@.@@.@.@@..@@@@.@@@.@@@..@@@@.@@@@@@....@. +.@.@@.@@..@@...@@@@@.@.@@..@@@...@.@@@.@@@@.@..@..@@..@.@.@.@@@...@@@@@@@@@.@@@@@@@@@@@@...@@@@@@....@.@.@.@.@@@@.@@@.@@@@@@@.@.@@@@@.@. +@@@@@@.@.@...@@@..@@@@.@@@@@.@..@@@@@@@..@@@@.@@@.@@@@@.@@..@.@.@@@@@@@.@..@@@@.@..@@@@@.@@.@@....@@.@@.@@..@.@...@.@@...@@@...@.@@.@@@@ +@.@@@@.@@@@@@.@@.@.@..@@@@..@@...@.@@.@@@..@@@@@.@@@.@@...@@...@.@@.@@@@..@@...@.@@..@.@@.@.@@@@@.@..@.@...@.@@@..@@@..@...@..@@.@.@.@.@ +@@@@@.@@@@@@@@..@@@@.@.@.@.@@@@@@@..@@@.@@.@.@.@@@.@@..@@@@@@.@@@@@@@@@..@@@@@@.@@@@.@....@..@.@.@.@@@@.@@@@.@@@@@@..@.@@@@@.@@@@@@@@@@. +@..@..@..@@@@@..@@..@@@@.@@..@@@@@@@@.@..@@@@@@@.@..@@@...@@@..@@.@@@@@@@@....@.@@@@.@@@@.@@..@..@@..@.@@@..@@@@@@@.@@@@@@@@@@.@..@@..@@ +@.@@.@.@@..@@@@@...@@.@@@@.@@@@@.@@@@@@@.@@.@@@.@..@@@.@.@....@@@@@@@@@.@.@@..@..@@@..@@@..@@....@@...@@.@@.@@@@....@.@@@.@@.@.@@.@.@@@@ +@..@@@@.@@.@.@@@@@.@.@@.@@.@@@.@..@@@.@@@.@@..@@.@.@@..@@.@@..@.@...@.@@@@...@@.@@@.@@@.@@.@.@.@@..@@@.@.@.@@@@....@.@.@..@@.@@@@..@..@@ +@@.@.@@@@@.@@@@...@@@@@@@.@@@@@.@@.@@@@@@..@@@@@.@@.@@@@@....@.@@@...@@@@.@..@..@@.@@.@@@@.@@@@.@@.@@@.@@.@@@@@@@.@.@@@@@.@@..@..@.@@@@. +.@.@@.@.@@@@@.@.@@.@@..@.@@..@@@.@@@@.@.@@@.@@.@.@@@@@....@@@@.@@@.@.@..@@...@..@....@@@..@@..@@@.@@..@@@@@@@@@@@@@@....@@@@@@@@.@.@.@@@ +.@.@@@@@@@@@@@..@.@@@@@@@@.@.@...@@..@.@@..@@@@@@@@@.@@@@@@@@@..@@@..@..@@@@@@.@@@..@.@@...@@@...@@@@.@@..@@@@@@@@@@@@@@@@.@@@@.@@.@.@@. +.@@@...@@@@@..@.@@@@@@@@@..@.@.@@@@@@@.@@@.@..@@@..@@@@@@..@@@@@.@@@@@..@@@..@@@@@..@.@@@@.@@....@@@@@@@@@@.@.@@@@@.@@@@..@@@@.@@@@@.@@. +....@.@@.@@@...@.@@@..@@@..@@@@.@@@@@.@@@..@@@@..@@@@@.@@@..@@@.@@@@@@@...@@.@@@@@@.@....@.@@..@.@@.@@@.@@..@@.@.@@@@@..@...@@@.@@@.@... +.@@@..@.@@@@.@@@.@.@@@@.@...@@@@@@@@.@.@@@.@@@...@@@@.@@.@.@@@.@.@..@@.@@@@...@@@@.@@@@@@.....@@@..@.@.@@@@..@@@..@@@@.@@@@@.@...@@@..@@ +@@....@.@@@@.@.@....@@.@....@@@..@@@@@@..@@@@@..@.@..@@@.@@@@@@@@.@@@.@..@...@@@@..@...@@.@@@.@@@.@.@@.@@@@@@@@.@@@.@.@@@.@.@@.@@@@..@@@ +@@@.@@@@.@@.@@@@@@@@.@@@.@@.@...@@.@@@@.@@..@@@@.@.@@@...@.@@.@@@@@.@@@@.@@.@.@@.@@@@@@@@@.@@...@...@.@@@@.@.@@@.@...@..@@@@.@@@.@@.@@@@ +@@@@.@..@@@..@@@@.@@@@@.@.@.@....@@@@@.@@@@@@.@@@..@.@..@@@@@@.@@..@.@.@..@@@@@.@@.@@.@.@@@..@@@@@@@.@@@@.@@..@@@@.@@....@.@@@@.@@..@@.@ +@@@.@.@..@@@@@@.@.@@@@..@@@@.@@@.@..@@@@@.@..@..........@@.@.@@@@@..@@.@@@@@@@..@.@@..@..@.@@@@@....@@@@@@@...@@@..@@.@@.@...@@.@@..@@.. +..@@@@@.@@@.@@.@.@.@@..@.@..@@.@.@.@@@@.@@.@@@.@....@@@@@@@.@.@.@.@...@@.@.@@@@.@@..@@@.....@@@@@@@.@@.@..@@@@@@@@.@.@@.@.@@..@@@.@.@@.@ +.@..@@@@.@@@@@@..@.@.@....@..@@.@@..@@@.@@@.@@@@@@..@@@@@@..@...@@.@@...@@@@@.@.@..@..@.@@@@.@@@@.@@@@@@.@@@@@@@@@.@@@@@.@.@@@.@...@.@@. +@@@@.@..@.@@@@.@.@.@..@@@@@@@@@@@@@@..@@@@.@@.@..@@.@@@@.@@@.@@@..@.@@..@@@@@@.@@...@..@..@@@@.@@@@@@@@...@.@@@@@@@@@.@.@@@@@..@@@@@@@.@ +@@.@.@@@.@@@@@@@.@.@@@..@.@.@@.@@@@@@@@@@@@..@@@@@@.@.@..@@@@.@.@...@@@.@@@@.@@@@@@.@@@.@@@@@..@@@.@.@.@@@@@..@@.....@@@@@@@.@@@@@@@@@.@ +@@.@@@..@@@@@@@@@@@@@@@@.@@@@...@..@.@.@@@@@@@@@.@@.@@@..@.@.@.@@@@.@@.@..@@.@.@.@@@@.@@@@@@.@@@.@@@.@.@...@.@..@@@@@@@@@@..@.@@@..@@@.. +@@.@...@..@@@@@@..@@...@@@@@@@@@..@@.@@@..@@.@@.@@.@@.@..@...@.@@@.@@@.@@@@@@@@@.@@@@@...@.@@@@.@@.@@@...@.....@.@@@@.@@.....@@@@...@@@@ +@.@@@@@@.@..@@...@@@@@@.@@@@@@@.@.@@.@@@@@@@.@@@@@@@.@.@@@@@.@@@@@@@@.@@@.@.@.@..@.@@.@@@.@@@.@@@..@@..@@@@@@.@@@@..@@@@@@@@@@..@@@@@.@@ +@@@@.@@.@@@.....@@.@.@@@.@@@.@@..@.@@@@@@@@.@.@@.@.@..@@...@@..@..@@@.@.@...@.@...@@.@..@.@@.@.@@@@@@@@@@@.@@.@..@@.@@@..@.@.@.@@@@@@.@. +@@@@@.@@...@@@@.@.@@.@@@.@@.@@@...@@@.@..@.@@@@.@.@@@@.@@.@.@@.@.@@@@@@@@@@....@@@.@@..@..@@.@.@@@.@@@@@@@.@@@@..@@@.@@@@...@@@@.@@.@@@. +@@@@@..@@@@@....@@@@.@@.@@..@@@.@.@.@@@.@.@.@@@.@.@@@@@@@..@@.@@@@.@@@@@.@.@..@@@..@.@@@@@@@@@.@@@..@@@.@@@@..@@@.@@@@.@@@..@@@..@.@.@@. \ No newline at end of file