some more solutions

This commit is contained in:
Samuel Enocsson
2025-12-06 18:38:28 +01:00
parent 549f0c4382
commit ea6d3ba6ff
13 changed files with 1909 additions and 8 deletions
+4
View File
@@ -6,6 +6,8 @@ from .helpers import (
read_ints, read_ints,
read_grid, read_grid,
read_blocks, read_blocks,
split_grid_on_cols,
to_digit_grids,
) )
__all__ = [ __all__ = [
@@ -14,4 +16,6 @@ __all__ = [
"read_ints", "read_ints",
"read_grid", "read_grid",
"read_blocks", "read_blocks",
"split_grid_on_cols",
"to_digit_grids",
] ]
+74 -2
View File
@@ -28,9 +28,34 @@ def read_ints(day: int) -> list[int]:
return read_lines(day, int) return read_lines(day, int)
def read_grid(day: int, dtype=str) -> np.ndarray: def read_grid(day: int, dtype=str, split=False, keep_spaces=False, width=None):
"""Read input as a 2D numpy grid of characters or digits.""" """Read input as a 2D grid.
split=False: each character is a cell (default)
split=True: split on whitespace
split=',': split on specific delimiter
keep_spaces: preserve all whitespace (don't strip)
width=5: fixed-width columns (5 chars each)
"""
if width:
lines = get_input_path(day).read_text().splitlines()
rows = []
for line in lines:
row = [line[i:i+width].strip() for i in range(0, len(line), width)]
rows.append(row)
return np.array(rows)
if keep_spaces:
lines = get_input_path(day).read_text().splitlines()
max_len = max(len(line) for line in lines)
rows = [list(line.ljust(max_len)) for line in lines]
return rows
lines = read_input(day).splitlines() lines = read_input(day).splitlines()
if split:
delim = None if split is True else split
rows = [line.split(delim) for line in lines]
if dtype == int:
return np.array([[int(x) for x in row] for row in rows])
return np.array(rows)
if dtype == int: if dtype == int:
return np.array([[int(c) for c in line] for line in lines]) return np.array([[int(c) for c in line] for line in lines])
return np.array([list(line) for line in lines]) return np.array([list(line) for line in lines])
@@ -41,6 +66,53 @@ def read_blocks(day: int) -> list[str]:
return read_input(day).split("\n\n") return read_input(day).split("\n\n")
def to_digit_grids(grid):
"""Convert whitespace-split grid to list of digit grids.
Input: [['123', '328'], ['45', '64'], ['6', '98']]
Output: [
[['1','2','3'], ['4','5',''], ['6','','']], # kolumn 1
[['3','2','8'], ['6','4',''], ['9','8','']] # kolumn 2
]
"""
cols = list(zip(*grid))
grids = []
for col in cols:
max_len = max(len(s) for s in col)
digit_grid = [[c for c in s] + [''] * (max_len - len(s)) for s in col]
grids.append(np.array(digit_grid))
return grids
def split_grid_on_cols(grid):
"""Split grid on whitespace columns.
Input: grid from read_grid(day, keep_spaces=True)
Returns: list of numpy arrays, one per column group
"""
arr = np.array(grid)
empty_cols = np.all(arr == ' ', axis=0)
# Hitta start/slut för varje grupp (icke-tomma kolumner)
result = []
in_group = False
start = 0
for i, is_empty in enumerate(empty_cols):
if not is_empty and not in_group:
start = i
in_group = True
elif is_empty and in_group:
result.append(arr[:, start:i])
in_group = False
# Sista gruppen
if in_group:
result.append(arr[:, start:])
return result
# Common grid directions # Common grid directions
DIRS_4 = [(0, 1), (1, 0), (0, -1), (-1, 0)] # right, down, left, up DIRS_4 = [(0, 1), (1, 0), (0, -1), (-1, 0)] # right, down, left, up
DIRS_8 = DIRS_4 + [(1, 1), (1, -1), (-1, 1), (-1, -1)] # + diagonals DIRS_8 = DIRS_4 + [(1, 1), (1, -1), (-1, 1), (-1, -1)] # + diagonals
+11 -3
View File
@@ -1,5 +1,6 @@
"""Day 1: Advent of Code 2025.""" """Day 1: Advent of Code 2025."""
import time
from aoc import read_lines, read_input from aoc import read_lines, read_input
def get_pointer(dial, move, pointer): def get_pointer(dial, move, pointer):
@@ -56,7 +57,14 @@ def part2(data):
if __name__ == "__main__": if __name__ == "__main__":
data = read_lines(1) # or read_input(1), read_ints(1), read_grid(1) data = read_lines(1)
print(f"Part 1: {part1(data)}") t0 = time.perf_counter()
print(f"Part 2: {part2(data)}") p1 = part1(data)
t1 = time.perf_counter()
print(f"Part 1: {p1} ({(t1-t0)*1000:.2f} ms)")
t0 = time.perf_counter()
p2 = part2(data)
t1 = time.perf_counter()
print(f"Part 2: {p2} ({(t1-t0)*1000:.2f} ms)")
+12 -3
View File
@@ -1,3 +1,4 @@
import time
from aoc import read_lines, read_input from aoc import read_lines, read_input
from aoc.helpers import read_lines_and_split from aoc.helpers import read_lines_and_split
@@ -47,6 +48,14 @@ def part2(data):
return sum(ids) return sum(ids)
if __name__ == "__main__": if __name__ == "__main__":
data = read_lines_and_split(2, ",") # or read_input(2), read_ints(2), read_grid(2) data = read_lines_and_split(2, ",")
print(f"Part 1: {part1(data)}")
print(f"Part 2: {part2(data)}") t0 = time.perf_counter()
p1 = part1(data)
t1 = time.perf_counter()
print(f"Part 1: {p1} ({(t1-t0)*1000:.2f} ms)")
t0 = time.perf_counter()
p2 = part2(data)
t1 = time.perf_counter()
print(f"Part 2: {p2} ({(t1-t0)*1000:.2f} ms)")
+55
View File
@@ -0,0 +1,55 @@
import time
from aoc import read_lines, read_input
from aoc.helpers import read_lines_and_split
import numpy as np
def part1(data) -> int:
totals = 0
for line in data:
line_max = 0
arrray = np.array([int(d) for d in str(line)])
for i in range(len(arrray)):
if i == len(arrray) - 1:
break
current = int(arrray[i]) * 10
max_val = int(np.max(arrray[i+1:]))
if current + max_val > line_max:
line_max = current + max_val
totals += line_max
return totals
def part2(data):
totals = 0
for line in data:
array = np.array([int(d) for d in str(line)])
values = []
for i in range(11, -1, -1):
if i == 0:
slice = array
else:
slice = array[:-i]
max_val = np.max(slice)
max_index = np.where(slice == max_val)[0][0] + 1
values.append(max_val)
array = array[max_index:]
line_total = sum(d * 10**i for i, d in enumerate(values[::-1]))
totals += line_total
return totals
if __name__ == "__main__":
data = read_lines(3, int)
t0 = time.perf_counter()
p1 = part1(data)
t1 = time.perf_counter()
print(f"Part 1: {p1} ({(t1-t0)*1000:.2f} ms)")
t0 = time.perf_counter()
p2 = part2(data)
t1 = time.perf_counter()
print(f"Part 2: {p2} ({(t1-t0)*1000:.2f} ms)")
+61
View File
@@ -0,0 +1,61 @@
"""Day X: Advent of Code 2025."""
import time
from aoc import read_lines, read_input, read_grid, read_ints
import numpy as np
from aoc.helpers import DIRS_8
def neighbors(grid, row, col, dirs=DIRS_8):
"""Yield (row, col, value) for valid neighbors."""
rows, cols = grid.shape
for dr, dc in dirs:
nr, nc = row + dr, col + dc
if 0 <= nr < rows and 0 <= nc < cols:
yield nr, nc, grid[nr, nc]
def part1(data: np.ndarray):
sum = 0
for row, col in np.ndindex(data.shape):
if data[row, col] != '@':
continue
l = list(neighbors(data, row, col))
ats = len(list(filter(lambda x: x[2] == '@', l)))
if ats < 4:
sum += 1
return sum
def part2(data: np.ndarray):
sum = 0
past_array = np.array([['']*data.shape[1]]*data.shape[0])
while not np.equal(data, past_array).all():
past_array = data.copy()
for row, col in np.ndindex(data.shape):
if data[row, col] != '@':
continue
l = list(neighbors(data, row, col))
ats = len(list(filter(lambda x: x[2] == '@', l)))
if ats < 4:
sum += 1
data[row, col] = '-'
print(data)
return sum
if __name__ == "__main__":
DAY = 4
data = read_grid(DAY)
t0 = time.perf_counter()
p1 = part1(data)
t1 = time.perf_counter()
print(f"Part 1: {p1} ({(t1-t0)*1000:.2f} ms)")
t0 = time.perf_counter()
p2 = part2(data)
t1 = time.perf_counter()
print(f"Part 2: {p2} ({(t1-t0)*1000:.2f} ms)")
+72
View File
@@ -0,0 +1,72 @@
"""Day X: Advent of Code 2025."""
import time
from aoc import read_lines, read_input, read_grid, read_ints
def part1(data):
n_array = []
for i in range(0, len(data) - 1):
line = data[i].strip()
if line == '':
data = data[i+1:]
break
nrs = line.split('-')
n1 = int(nrs[0])
n2 = int(nrs[1])
n_array.append((n1, n2))
sum = 0
for number in data:
i = int(number.strip())
for nn in n_array:
l, h = nn
if i >= l and i <= h:
sum += 1
break
return sum
def part2(data):
n_array = []
for line in data:
if line == '':
break
nrs = line.split('-')
n1 = int(nrs[0])
n2 = int(nrs[1])
n_array.append((n1, n2))
sd = sorted(n_array, key=lambda p: p[0])
merged = [sd[0]]
for start, end in sd[1:]:
last_start, last_end = merged[-1]
if start <= last_end: # överlappar
merged[-1] = (last_start, max(last_end, end))
else:
merged.append((start, end))
total = 0
for k,v in merged:
total += v - k + 1
return total
if __name__ == "__main__":
DAY = 5 # <- ändra till rätt dag
data = read_lines(DAY)
t0 = time.perf_counter()
p1 = part1(data)
t1 = time.perf_counter()
print(f"Part 1: {p1} ({(t1-t0)*1000:.2f} ms)")
t0 = time.perf_counter()
p2 = part2(data)
t1 = time.perf_counter()
print(f"Part 2: {p2} ({(t1-t0)*1000:.2f} ms)")
+67
View File
@@ -0,0 +1,67 @@
"""Day X: Advent of Code 2025."""
import time
from aoc import split_grid_on_cols, read_input, read_grid, read_ints
import numpy as np
import operator
from functools import reduce
ops = {
'+': operator.add,
'-': operator.sub,
'*': operator.mul,
'/': operator.truediv,
'//': operator.floordiv,
'%': operator.mod,
'**': operator.pow,
}
def part1(data: np.ndarray):
totals = []
rows, cols = data.shape
for i in range(0, cols):
numbers = []
operator = data[rows - 1][i]
for ii in range(0, rows - 1):
numbers.append(int(data[ii][i]))
op = ops[operator]
totals.append(reduce(op, numbers))
return sum(totals)
def part2(data: np.ndarray):
totals = []
grids = split_grid_on_cols(data)
for i in range(0, len(grids)):
numbers = []
grid = np.array(grids[i])
r, _ = grid.shape
operator = str(grid[-1:][0][0])
flipped = np.rot90(grid[:-1])
nr, _ = flipped.shape
for ii in range(0, nr):
numbers.append(int(reduce(lambda a,b: a + b, flipped[ii])))
op = ops[operator]
r_total = reduce(op, numbers)
print(f"{numbers}, op: {op}: total: {r_total}")
totals.append(r_total)
return sum(totals)
if __name__ == "__main__":
DAY = 6 # <- ändra till rätt dag
data = read_grid(DAY, str, True)
t0 = time.perf_counter()
p1 = part1(data)
t1 = time.perf_counter()
print(f"Part 1: {p1} ({(t1-t0)*1000:.2f} ms)")
data = read_grid(DAY, str, keep_spaces=True)
t0 = time.perf_counter()
p2 = part2(data)
t1 = time.perf_counter()
print(f"Part 2: {p2} ({(t1-t0)*1000:.2f} ms)")
+200
View File
@@ -0,0 +1,200 @@
3243342952212532333831142251933144323222213232122222323333226253325232222324622352337352222123223314
3353443623344444442533323673445444565758516456445436445644454644454566344444733444643563445546444734
4544644463574842545428466934446366933968639333234477948644946619455756539631276986475444645465433321
5122327242335622223222555422232732251315442341373221283825224222546743266216244223535433521222225915
4323232342322325345234234332631432121332323337324232343442422224344324423293233233323233452312432433
4872493454583666466657687369628966455649545813595473734576687664495785675633876663486248448865446343
7262312253414524453322432322224323221342622433127321333272223322233246332223233524372325213234733225
3543323353424523331332322442334221216342522452442322233372321523131243622323832333233525723222123233
4343232333332233334242633436632423374433334531212123372334433214333433333443642323125374533383364343
2412145285934415562531335123751222243462522222134222241232536263343432825362223362321631232522132242
2864811433432334472224242423433454414633234228246252548637584358332233712425432736526542479564748392
1331233334322132333333438332332333633342332313332624343433633323833323333332313434323243322342323333
4222222122231422313212223214142212252222222122223213121325212223312223252232132124211232221422112722
3597464736467757425647554555736547566357467448657553773674456566766467545675764775544554546664596663
4334222222222232222433333323322221342121222334212632422343432231212283211233342343313323254233223233
5435643441664733426365743225253246533243626385234676562563339366555542654312256634296433546672424453
4255235342132644234212221762524355311424353644342225453232353325233225423233652335212235422223222512
2212222322523222132222232222222122322221222222212212522222112222221222121223131232223322223223221221
9344745395656528759446474762443744278376528888828482673645384685666773577547695964287348363336794598
3224423232444325634115622541322256543424366243244245474255324342245426444663344365422512455743446623
3223454436253472352424144242543693124234523332434343422414143443334381444474445623442944334434424563
3433744345944353536244226444237577546434343424657485537436546472457337466637234554565863456743837654
5426333333323422243322331622321232531412323224327255625621243323242232267422232865363224333123625323
3622373343246355422245134456645162233454222244422332242645536552542645325235423334532222253136422232
3134332222332123434323323321123222333122222232332233333112435323322333223123212332322331332223222342
1242362435348113325228512323126435245255332152242733226259322255221324224364532215262252535127225622
1121382322522243343154224122222252221114422222221242422222123321224421123222122512234214224722322513
2313223323452232443335535333233474413345342242333533333142443321663321323333133423142332323234222322
5454396555445776447347564845545354544955545533775546555445563546545555644945455555455516575554474545
4658453654546429446265443454655643665684533326474388744367574863484463443545354466844464723945548437
4544447462844657154551314548755445222775423333322755737574477382635442333553554254554675554554485835
8464357246935655445644345343634255424446534444454146444573445424432521452444145434755445615435844454
2232323333342236213211342521322233223311326232142332622212222223233233432632323321323126121222233322
5223333343153323312332473223323144432323453134414243122153922232542334244322144223245523134264424222
3333129524232222232341222232322227122242222232222252332222242321224321222243412421236121222333223222
6754556372372554522223323343313425324242222334453433343347235232522514533445427257295422225927728643
4433332143428342723444225122628424422224255264122444534282531322432254343442325365464522454674432523
2494312179242323172344832733132253651522434323244423229423228512264623394451222345233121522664522222
6323362463156443426754634637423234464363525462626325446454535333734546664444374741546346257444353362
2242211324423247231122222521312253232222232215412255322242222511132222324232222235221222134312142612
3422233334433433332324373343223343444343233333433414343442333542442433313343433322338213443333434334
2222121122123252522212322222222252222222224211322142212222322111211223221322221222224112124212721231
6646665675266656566534442566663653466664355324635566564464436636663667544265655554436642456534353655
2224122246246152255426222222613234136435252325241112452521273222344212312231212444123221212225222412
3672222262533221222222442515412522242222232223152412122242344222225622263222214224163312726322422222
2423672593736712554339283535832492567579324354338268236223433393778593339723332394976743369464556353
1244343452133334322235334241213242538232324143125232142451222322231323328332325453423233331112233232
3122122212222222332222222323421221211222222213212222223212211223233232322212233132232215222221212221
5865825462652524644434554377636576582336724652613587463252545575373434578425565867245342444757436361
1512122422532252321122212221223221522212322132332322324322233232233233222333526222223123231222231223
2433333221336335626417722221334773353133434213523636623323362333332533333222553322122131123223356134
7535512233234222333232353222133565335313335233334445114732332232212232534543133342214733133315243133
4324224122452323663233332342653627233546363232432656322554344213425432143433233433334132441642335233
4343323484235574214315233273462235423532554443514736255554343911242442244565644343474623723459375423
3222923113352342232152362425312293222442231223234232222322223218922221225221221132212228246252226372
2334832222443323252224132142333422121323323433222224232826412133242632245221522121662323223222222241
2222331242222512212222221221222121222422222222222212222211221314242222222112423241332262127342252262
2415262622552255346264636433113423231323633743156212256384534441621143725246332523454323223424542956
3225313333535542223237541543332343543154547323545554453372164513335425445364333635334157235444346463
1217216222221322233311242311242212222224212621442212233212247222132422222212223132222222233222125214
2243622334444222242152422424229222421231352121214244312222234412425422241322222522322232432341212222
2343654345533333332343454334232423334361147223736227254223443322237311633334355234243442232345433434
2425533328234421351492127693223222212321842334252545223233423223228211422372534422646272324325316244
3333393233322333323322233322113332334522342323332363311444224235353323242422235235225343232321335344
2333323334353213133922344322332323121234324333333333333323324423333222213333321233225332333332344323
3344423431313423333133232232423241352344433243234324241313313421135213433422313412322231332324442343
2374223331325122223233122231222332423422128311233322242222213222152523233222166222323663312223222122
3224213234834524512322323224232732262133522443242731223222322211331122222332332213122212214224821214
3446325684543686527771818352554478526563585272267631871518232252667243861482371354346615272735662829
2443447233351223453231122524343242524275344732433355633421324333422564344243452435415353443244344247
4313325255323233431122455355521342914244554444244153344443923434353353472122254435344414341563435433
2443313413233344323344353344334233232534343423143633433436433342443443332334333243422334243342433442
2233332122216333212225143333333352453333233333324632341325336233122363333333223342233333332322145312
3333232346233623233333644333343633334532433512323333323332443546231133632333363271133425321133323133
4444374343434434244544345444347521344543434443244444244443434344245353334344444734638349383534444244
5846694454745176466483363334858365854345446448443263376255414651534687843624444463157453115474447655
7355221344424533425345345445463336453535455456725234244443235425544233441433353335313124344346343355
6755476626574656663763466674465672657556895357156544567547566563776547659517754439367166345594473585
4424224242341222233362122432426122223272246522623233133533224553434322356431232243352753522543246424
2343487322374225873675273229553263314234254347245137662221243823345342582524572925737766423355426228
3295232254123543554248323362512386442313333341253325434132525633532435424323534325313333532222323336
5712225545123233125642322342224454222224645125523323615263312227513524572513425221254532342253325537
6463546269253474666364577551333675352336643746264343454544333548672562815537375526516854525142757661
4358424667685444465547558466556446924444845445795664647754445335458554544554444443644553645555335486
3211122433412434124343132222241222412414141313112233431211422134111232142222232233211211111223256789
4432253836322534474773467627624474454444437825447427442345431554472263475446664473167662516372434437
2222253423222222422222234142325285225222121223112244232245227221222211212123322212221212222213322222
1334333132333525463365522322332333534333332322242233323221335233432323273123226323254434222352225332
2222121222251213222122121222215322222224412321222252223222224372224232222112222242224224321522124222
3323423843355435332354434436475345472842233647637434363412533332847334444463553443746334637657443334
4151154413234535222543154221222523545441214542112132122151232313544115214432311332121424534543226789
3233721352132231326323332122232332132411542334221322232212321242222727213823323323323633323322257522
3623425223321433353533333227233463343532235383232234342324279231233232745132115251233331335343363332
2225631325232222331132223242631222523232612243122542212722344132222222332422212227242262221252223222
4245141234538445442315532243236354226222255243655442435523233433352326533525453516455252344556254453
5223524523221422122255224152222222212322243233123224121322224213222229222212232143622322335224122222
3324124145315152534142323441353223433345442472354334225433265322353255433535242512334535354453514445
2224222322122222322212323222322212212213227223222432223211213222223223423112343222226232222212222233
2223222221231124214322222343432622212221222211112212321221211212322245221242423322222322422252424342
1112422113343622632322123123323623223337212334133125433312323621252227121252123122243212142222125332
4435425334341425648453435333333444537394454335433453424242343344442464954254531632344332653464444341
5853344266446552325362233536633133324333663253323384423942661424233613342346284563345363435343336642
7654476357344448773453835623571233542247352543541453461334334383474455342384364345434336474668333333
2433123335256417183232642625574474447745672724772623432235622635482473464611573746254422244215253238
4544634574533356639436356296494443535453466653766435464894666549444674547258624265765575545764585492
4244433443243396375483342354444342414344393493444644494248334444467644443344335454424449863345358643
7588396364755748744334565764413567477586673523446885544538764844444886886732424786567827746476678773
2225312224332111224221122422214223223822215422331442322222251426321242455126342324232114342422122212
6477647577377357764529147427567376355446425664556575745365496575654237767763255674765557673712665156
4843646486774657873455344743645364473375874449457543534453475454547383326246636344446593767673645493
5546325544544433354343245322488535443555433235546748452344584865331745234375525554353266339434534552
6569458535458577718836655584635645955357445443775756694475565345447777935755495567485453566645575555
2225422722412224751512442372233222233243323223152442211311233261233242363312321232231622342223433535
3122232221222342241213233244322232241243222212233222312222223213143222222232422323312422213223312324
2743399462563317465862234644563444357852568235448645465844363747876465434346598649558353668555535745
7527743356761115771527465546477427767227443322635624473412672215476744364313312165216412751634172189
3343363343332443733342433433234433373488616233283313232333333323133333333273622233337373342353333343
1228229312222432643222422422221235426324334324334142853321241234432224222244422242353243472322332915
1322113222232341222134524232222222222324312121222122222212222257222233222532222222242541222232222232
5233325442237122332324223222227235244421233222354223432218234425848222435432121122221245153274216721
2434833868385432466424354653334522635836132479474618334173421163238335244392425446458879434656528522
5323543533433434222243473383352535335333435455833554365332333535343543333333535351443335352454533533
3222212324232122353322224245252242524222323322222222133334321124222112214232222325312523359222225322
1117435224226142737923212423122422123342212132222323223223422343263345346224341423212442613223332212
3643434343444424424232134434323524164335345424444431424267424237314364364244442538244423334175644244
3633246453443332124424643374334334434464432444443143227423422644343234354437464443413344383474334244
3556558432556333478555334846432431464251566468456845586852657365943267553746367157543532735852716546
5522234323355224252322251342252254323324113252125232545543543243612413224342333334254552331423423324
6554954444464539478638739656534448665476564455954532175579756359346743166689833568488374854856975532
2482467639573357674464357445667845613676464635723653645754635553427468728347557324676675665737444667
6655795545471353366652252545335442533235643333383565653233325353243543654643636552263524364456357535
4354645554445533446445461443434525453234425244566532243857434453523424543448451544333422533231243353
2243242222222343722242423327313412135246224243322282322123422212112722224223532347122223413134831224
3323231224426343212222333333335232252123322132231232242222332232212221333232123152232123314153333112
2812524241232222676666461464416426163822386448712326523472247225327142784222685254258253124724167521
3362321132334542342232222532254124232316234223112221222344223123243222534413232442232323234324322242
5353535535447365524531553464573355535424453557445345735255454545354451355444551535675555538354545454
2282212222222324224221111212212211223121522222112221222322332223222322162322222122332232138221222232
1124222422311342132113414222222243222215112312212922145252322352522224924222322312222622342224212222
5426554244452442246645554544444324442446242424444446556626464343413552344241355345444554586354545454
4424424243233243432362434444322335335333345433124344413133433439415333443443433424444312233334424234
4335342342233331534523235422433247334322343333423331424313312344423334234333342533334354332312143434
3754968746847553256575435394354443553443364634585435285772344552492454544143352364822369715655463365
2342333313632313122233333234342243323343232233432334232314233323332123414223321322332373334234142323
2523652332232424522232123542452222324233112122234252524121352512323212546122422532232143523452222233
2531623222132337525364243355336536334636323326332353433243354216463332222262223833152312236522156925
3423233733463143323394255333752433434231523233333365333124766633332343542633343333473333334344863333
3533243333324255553533532235433738259315537534353523543375523431332323225245314442135533333333332234
4454333334534433343434343211335344434433334123331343374444373333433331332444223323437336444332433242
4373233633333339233223323272333333333433333333333333333442334333733433332333332323363233333234333332
2222123222242232222424522222241222221222223531223213512222323212113213321411142142222422112223272212
5655254624457577376632776658635557236275677343167556857353336457553432473666327443433172937694454398
3343221435333642524355413734133233313342224324353137243452333233242615333233723853654432384334528282
1344534125256233212223254232835324614232335393313326645432695582522333233361222233262555533622513542
4242231523342252582426776253242522424783223422829264632632453333123525327122231522635622324763422235
2154243564444445214243555446463452464444122326426465644665531443463333437352153354439243317134434232
2432352843523214655335423222632333323324642232623564325364522384332325331346623734238553633613623621
4325344333255553555655585424426214465344546643537355357413263546158614525343645543554135245528444456
3443463525644443433432263354212321411534838628522233231293434222445424144432129941722452225244222358
3243144245522344524327457532455445453434354528475332437287445363245364333534839344462625376638332372
5233233222353233823313353344422333463335235732153333421422351336333331353333733221334233423333332313
6213252222222221224221622422222822322223222121221123132232324113452622141211922222222823212428232222
2222322422312215212122731312714321424224233433226324249222632422232422613335722242282342253517321111
3336567632421356326255824343244453745352333635566558752523475477551261474619454553575455534444456346
3831446655231642232122235224422224133328222221296324271222422222242212422225424213221222123312222223
2232322222532222222223324245222222321326222122223432322222223233212222213222221324522321233223121113
1346614453165762863222372324236351261545653423656124732345375213355256445216252434672432644124666225
3553644535434344356533545446544453464441625533525455253564566444435447355645444544445467466536443586
6536234454684563574844652254253844836254414564565325437364242524573523452663635634254547647783433436
2223234225221222142222341222232221221363224322223222321222223232221332522223151222132222222132212322
2122224222222225324321312327253232312332732133115323212252223532331132223332362122222126214222422242
5867565339867736556338655683877876636557523534565335368324354664348584578276663383333466324782634574
4445664333343526338548644363344445543164755477543844841933331545578846374637763457632573546917243328
4331548313525353235364214443342454544433635315263322635353333146433444555526344424458522453644546254
4334553144154334644441123233435112331363343674333443343443262533322614533224443245336333433444626234
4372442222453314951342645554474521342254344364622443432327226444652523522953252434342443844324667322
6353347443433286737337268366534254682445656137364644647586634333453749273338534342348335356654433547
4335332333423332233343435333133363336212233433343333333633333333333233514333333323223323333333222334
2212222422332114212222223222222222223154223241221212414231322124232232222422228233222252222322422522
4533534544432344494224523154431321334323333324119535142526323453432434314425542553343332346233425235
3267436143336187224525162365256224726618232311235336168223372253456226563256922513335363966488538263
2121212234212212122332212221715123221223222231222623223332212222222222212221222221262432213235222113
5932234455324444344255155254323545235325242551325233423552355468555552334223554554552423453414434445
7345367668464745346554634726444484826838565466435838266665525535335135557465734545563587534375365547
7634482867626734874643773879945743338382678256379395597655473653154775765465744835765537386552275787
6446474755248776658565839565789474845643547289685584434428855894754888895585465497298644785284345799
7742313144324434444544524232322234532434443243244342645322863444132245314622434444444273242343422443
3114762242244746273232326244162235336434126254468223274442434344272223322535292574312324516444624261
3447435563254434725735445544537355335542253446435754544433345443343364442344343747334273644456634234
5655366666657858634756466747694666666677575666656568497665665355564266666766465564666656635436456666
7212641526136323543321423642642222552271266553333322345139223352334313333275532952332433362374424233
8529622449734236374645747753463382252992252612798415287246649464222537876876273562225352827946942515
2442233343534331242544424334331541342324233431122254344342342324441332242244424453342243423323434411
2624532412325434646616626132334555542433422511263244614316563115152666246122151346535115446335464789
2232434343243332443333432413434332214742313331354433342445374324525424243313315522375433447444344325
4563722636652515521631327222524422246555832453222644256353865523543523264633445537355355611452542336
4722554565532634217569382635464746646645973363542643674126563646256336644654634254535655642147676684
6243633632433518434434466732224545423224435333421633544243313334242363432423335432343524533135632335
3215335632333332312222322242322321333262232523332122343334323342525332334253421262212364422132322124
5555645555556232356365365454554363546565564543655535456554645645455463465445435553644446443555555746
+136
View File
@@ -0,0 +1,136 @@
@@@@@@@@@@@@.@@@@.@@@.@@.@@@@..@.@@......@@@@..@...@@@.@@@.....@.@@@@@.@@..@.@@.@..@@@.@...@@@@.@.@.@@@@@@@.@.@@@..@...@@@.@@@..@@...@.@
.@@....@@...@@@.@@@.@..@@..@@@@.@.@@.@.@@.@.@.@@..@@@@.@.@..@.@.@.@.@@@@@..@@@@@@..@@@@.@@.@@@@@@@..@@@.@.@@@@@@.@@@@@.@.@@.@@@.@...@.@.
@..@.@..@@@@.@@@@..@@...@@@@@@@...@.@@@@@@@.....@@...@@.@@......@@@@.@@..@@@..@@..@@.@.@@@@@@@@..@@.@@@@@.@@@@@@@@.@@.....@.@@.@@.@..@@@
@@@...@..@...@@.@@@...@@@@.@@@@@@@@.@@.@@@@@.@@@..@@@.@@.@.@@@@..@@@@@@@@@@@@.@@.@..@@@@..@@@@.@@.@.@@..@@@@@...@@@@@@@@@@@.@.@@@@.@..@@
..@@.@@@.@@@@@@@@@@@.@@.@@@@.@.@.@@@@@..@@@...@..@...@@....@@.@..@@@@.@@.@@@@.@@@@@@@@.@@@@.@@@.@@.@@@..@@.@@.@.@@@.....@@@@@.@.@.....@.
..@........@@@@..@@@@@..@.@@@.@.@..@.@@@@@@@...@@..@@.@..@@@@.@@.@@@.@.@@@@.@.@@@..@@@@@..@@.@@@@@@@@@@@@@@.@@@.@@@@@@@..@@@@@....@@..@@
@@@@.@.@.@@@@@@.@.@@@@.@.@...@.@@@.@@@@@@@..@@@@...@@@.@@@@@..@@@.@..@.@.@.@@@@.@@@@.@.@@.@.@.@..@@@@@@@@@@@@@@@@@@.@.@@@.@.@@@@..@@.@@.
.@@...@.@@.@@@@.@@..@..@...@@.@...@...@@@@@.@@@...@@..@@.@@@@.@@@.@@@@@.@@.@.@@..@@@@@..@@.@...@..@@@.@..@@.@.@@..@@@@...@.@@@@@..@@@@@.
.@.@@@@@..@.@.@@@@@...@@.@@@@@@.@.@.@...@@.@@@@@@@@.@@@.@.@@@@..@.@@@@@@@@.@.@@.@@@.@@@@@@@@..@@@.@@.@.@@..@@@.@@.@.@.@@@.@@@..@.@@@@@@.
.@...@@@@@@@@...@@@.@@@@.@@@..@..@@@..@.@@@@@@@@@..@@@.@@.@..@@.@@@@@..@@@.@.@@@@@@@..@.@@@...@@.@.@@@..@.@@.@@@.@.@@@@@.@@@@...@..@@.@@
@@@@..@.@@.@.@@.@@...@@@@@.@.@.@@@@@@@@@@@@@@@@@..@.@@.@@..@.@@.@.@@@@@@@@@@@.@@@@.@@@..@..@.@@@.@@@@..@@.@@@@.@@@@.@@.@...@.@..@@@@@@@.
.@.@.@@@@@.@@..@@@@..@.@...@@.@@@@@@@@.@@.@@.@@.@@.@@.@@@@@@.@@.@.@@@.@@..@@@@@.@.@.....@@@.@@@@@@..@@@.@@@@@@.@.@@@..@@@...@@..@.@@@@..
@@.@@@@@@@.@@@@@@@.@@..@@@@@@.@@@@..@@.@@@..@@.@....@.@@.@@@...@@@@@.@@..@@....@@.....@@@..@@.@@@.@@@..@@.@@@@@@@@@@.@@@@@@@....@.@..@@@
.@..@@@@@@@@@@..@@@.@.@...@.@@@..@...@@@..@@@.@@@@@.@..@@@@.@@@..@.@.@@@@..@@.@@@@@@.@@.@.@@@@@@@@@@@@....@@.@.@@@.@.@.@@@@....@@@.@@..@
@@@.@..@@@@@@@...@@@@@@.@.@@.@@....@@@@.@.@@.@@@@.@.@@@@@.@@@..@..@@@@....@@@...@@@@@@.@@@.@@@..@@@@@@..@..@@@@.@..@@.@.@.@.@..@.@....@@
.@@@.@@@@@.@@@@.@@..@.@.@@@.@@@.....@@@..@.@@@..@.@@@@@@..@.@.@.@@..@.@.@..@@.@.@.@@....@@..@@@.@@@@@@@.@@@@..@.@.@@@.@@..@@@@..@...@.@@
@@.@.@@..@@@@@@.@.@@@..@@..@@@@@.@..@.@....@@@...@@@@@@.@@@.@@.@@@@.@@..@@.@@@@@....@@@.@.@@@..@.@@@@@@@.@@..@@@..@@.@@@@@@@@@@.@.@@.@.@
@@.@@@@.@@@@@.@.@.@.@@@@@..@@@.@.@@..@@..@.@@.@.@.@@.@.@@..@@@@..@@@..@..@@@.@@@@@@.@@@@@@@.@@@@@.@@@@@.@@@.@@@@..@..@..@@@@@@.@.@@@@..@
@..@@..@@@.@.@@@..@.@@@...@.@@@..@@.@..@@@@@.@@@..@@@@@@@@@...@@@@.@..@@@.@@.@@..@@...@.@@@@.@@...@@@@@@@@..@.@@..@@@.@.@.@@@@@@.@@@.@.@
@@@@@@....@@@@.@@.@....@@@@..@@@@@@@.@@@@.@@@@@.@@.@@@@@@@@@@@@.@@@@@.@..@@.@.@@@.@@@.@.@@.@.@@.@@.@.@.@.@@@@@@.@@@.@.@.@@..@.....@@.@..
.@@@@.@.@@@@@.@@@@@@@@.@.@.@@@@.@.@@..@@@.@.@..@.@@@@.@.@@@.@@@@.@.@@@@@@@@@..@.@..@@...@@@@@@@.@@@@.@.@@@...@.@.@@@@@.@.@@.@@@...@@@@@@
@@@@.....@@.@@.@@@@.@@@.@@..@@@@@..@@@..@@.@@.@@@@.@....@@@@@@.@@@...@@@@@@.@@@..@@..@@@.@@@@.@@.@.@@@@@@.@..@..@@@@@@@..@@.@.@.@.@@@@@@
@@.@.@@@@@@@@..@@@@.@@.@@.@...@@@.@.@@..@..@.......@@@@@@@.@@.@@@@..@.@@.@@.@@@@@@@@@@@.@@..@..@@@@@@.@@@@@.@@@@@@..@.@@.@@@@@.@@@.@@.@.
.@@@@@@@.@.@.@.@@@@...@@@@.@@@@@@.@@@.@@...@@@@.@@@.@@@@@.@.@...@@.@@..@@@@@@@@.@.@.@@@...@@.@@@@.@@.@@@....@@@@@@@@@@@@@@.@@..@@@@@@..@
@@...@.@.@@@@.@@.@...@@.@..@@@@...@@@@....@.@@@@@@..@@@.@.@.@...@@@..@@@@@@.@@.@.@.....@.@@...@.@@@@@@@@.@.@@@@@.@@.@@@@..@@.@@.@@@..@@.
@@.@@@@@@@@@@@@..@@@@@@@@..@.@@@@@.@@@@@@@@@..@.@@@..@@.@.@@@@@@@@@@....@..@....@@@..@@@@@@...@@@@.@.@.@@@@.@@......@@@@@@@..@@@@..@@.@@
.@.@@@@.@@@..@...@@.@@@.@@..@@@@@.@.@.@.@...@@..@.@@@@....@@@@@@.@@.@.@@@.@@@..@.@@@@@@.@@..@@.@@@..@.@@...@@.@@@@@@@@.@@@@.....@@..@.@@
@@.@@@@..@@..@@..@@@@..@...@@@..@.@@@.@@@@@.@@@@@.@@..@@.@.@.@.@...@@@@@.@.@@.@..@@@.@@@@.@@@@@@@@..@...@@@@@.@..@@.@@.@@@@@.@@...@@@@@@
@.@.@...@@@@..@@.@..@.@@@@@@@@@@@@@@.@@.@@@@@.@@@.@@....@.@@@.@@@@..@@.@@@..@@@.@.@@@.@@.@@.@@...@@...@@@.@......@.@@@@@..@...@@@@@.@.@@
@@@@.@@@..@@@@@.@..@@@@.@@@@@.@@.@@.@.@..@@.@...@.@@@@@@.@@@@.@@.@.@.@..@@@@.@@.@@@@@@@@@@@@@@.@..@@.@@@@.@@@@@@@.@.@@....@@..@@..@@@@@@
.@@.@@..@@@@.@@.....@.@@.@.@.@@.@@@@@.@@@@@@@@@@@.@@@@@...@@@.@.@@@.@..@@@.@.@.@@@.@@.@....@@..@@@@.@.@.@@.@@...@.@@@@@@.....@@@@@@@@@@.
@@.@.@@@@@@.@@@.@@@@@..@@@@@..@@@.@@@.@@@@@@@...@@.@@@@.@@.@@@@.@@.@..@.@@@@@..@...@.@@@.@.@..@@@...@@@@@@.@@@.@.@@@@.@.@.@@.@.@@@@.@...
@@@@@..@@@@@...@.@@@@.@@..@@.....@@.@@@@@.@.@..@@@@@@@.@@.@.@@@@.@@@@@.@@@.@..@@@...@@@@.@@.@@@@@..@...@.@..@@@..@.@@.@@.@.@.@@..@..@@@.
@@.@@@@.@.@@.@..@@..@..@.@.@@@....@..@.@..@@@@@@@@.@@@@.@..@.@@@@.@....@.@@.@@@@.@@@@@@@.@@.@@..@@..@..@@@@.@@...@@..@...@.@@@.@@@@.@.@@
.@@@@@@...@@@@@.@@@.@.@@@.@@@@@.@.@@@@.@.@@@.@@@@@.@@@.@@@@@@@..@.@....@@.@@@..@@@.@@@.@...@@@.@.@@..@@@@@@.@@.@.@@@...@@.@@..@.@@.@@...
...@.@@@.@.@@.@@.@.@@@@..@@@@.@.@...@.@@.@@@@...@@@@@@...@@@@@@@@@@@@.@.@.@@@....@.@...@.@@@.@@@@@@.@@.@@..@@@@@.@@.@@@@.@..@@@...@@...@
@@@.@......@.@@.@.@.....@..@@.@.@@@@@@.@@..@@@@@@..@.@@@.@@@@..@@.@..@@@@@@.@@.@@@@@@@..@@@@.@@@@.@@@..@@@@@@@@@...@.@@@.@@.@@.@@@@.@@..
.@.@@@@@..@..@@.@@@..@.@.@@@....@.@.@@@@@.@.@@@.@@..@@.@.@@.@@@..@.@.....@@....@.@.@@.@..@@@.@@.@@@@.@@.@.@.@@@@@..@@.@@@@@..@@.@@@.@.@.
@@.@@@....@@@.@@@..@.@@@@.@@....@..@@@.@@@.@..@@@@..@.@.@@...@@.@@@@.@@@@.@@..@@@@@.@...@@@@@@.@@@..@@..@@@@..@@@.@@@@@@@@@@.@...@@@.@.@
.@@@@@.@@@@@@@@...@@@@....@@@@@@.@@@@@@@..@@@.@.@@@..@@@@@.@@.@@@@..@@.@@@@..@@.@@.@@@@@@@@@.@@.@@@..@@.@@.@@@.@@@@..@.@..@@.@@@.@@.@..@
...@@@@.@......@@@.@@@@..@@@..@.@@@..@@.@@@.@..@@@....@@@@@@.@@@@@@@@.@.@.@.@@@@...@..@.@.@@.@...@@@..@@@.@@@.@@.@@@..@.@@@@..@@@@...@.@
.@..@@..@@@..@@.@@.@@@@.@@.@@@@@@@@@@.@..@@.@@.@@.@@@@@@@@@@@@.@..@@.@@@@.@@.@@@...@@..@.@@@@@@@.@@@..@@@@....@.@@@@@@@.@@@.@@.@..@@@@@.
.@@.@..@@@@@.@@...@@@....@@@@.@@@@@@.@@..@@@@.@@@@.@.@@@.@@@..@@@@..@@...@@@.@.@@.@@@@@.@@@.@@@@..@.@@.@@@@@@.@@@@@@@@.@@.@@@@.@.@..@@@@
.@@.@.@.@@@@.@@@@@@@@.@@@@@.@..@..@@@@@.@...@@@@@@@.@.@@..@@@@@@@@@@...@@@@@...@@@@@@@@@@.@@...@@.....@..@@@....@.@@..@.@@.@@@@@@.@@.@.@
@.@@.@@@@@.@@@@@@@@@.@@@..@.@.....@@..@@@.@@@@@@...@....@@.@.@@.@@@@@@@@@@@@..@@@@@@.@..@.@@.@@@@@@.@....@@@@@@..@@@.@@@.@@.@@@..@.@.@@@
@@@@@@..@@@@@@@.@...@@.@.@@@@@@@@@@.@@.@..@@@@@@@@@.@@@@@.@@@@.@@..@@@@@@..@@....@.@@@..@@@@.@@@.@@@@@@@@..@...@@.@@@@@..@@@.@@@..@@@@@@
@@@@@..@@@@..@@@.@@@..@@@@@.@@@@.@@@.@@@.@@@@...@@@.@@@@@..@@.@@@@@@.@@@...@.@@...@..@@.@@..@...@@@@..@@@@..@@.@@@@@...@..@@..@@.@@.@@.@
@.@@...@@...@.@@.@.@.@@@.@.@@.@@@@.@.@@...@@@..@@@@@..@@@@@@@..@@.@.@@@@@@@...@.@@@@..@@@@@@@@.@.@@@@@@..@...@@..@@@@.@.@@@..@@@.....@.@
..@@.@@.@@@@@.@@@@@..@@@..@@@@@.@@@@.......@@@@.....@@@.@.@@..@@@@@@@@@@@@@.@@@...@.@@.@@@.@...@@@@.@..@@@.@..@@@..@..@.....@.@.@.@..@@@
@@@@@@..@@.@..@.@..@.@@@.@.@@@@@@@....@@@..@.@..@@@.@.@@@@@@@.@@.@..@.@@.@@@@@.@@@.@.@.@@@@@.@.@@@@..@@@@.@@@.@.@@@@@@..@@@.@@@@.@.@@@.@
@.@@@..@..@.@....@.@.@@..@@@@.@@@@@@@@@@@@@@@@@@@.@@@.@@@.@@@@..@@@@@.@@...@@..@.@@.@@@..@...@@@@.@@.@@@@@.@@@...@@@.@@@@.@@.@@@@@@..@@@
.@.@..@@@@.@@@..@@@@@@@@@@.@.@@.@.@@@@@@.@.@@..@....@@.@@.@.@@@.@@.@.@@@.@..@@..@@.@@..@..@@@@..@@..@@@@@..@.@.@@@@..@.@@.@.@@@@@.@@.@.@
@...@..@@@..@..@@..@@@@@@.@@@..@.@@@@@.@..@@..@@@@.@...@...@@.@@@......@@.@@@@.@@@..@@@@@@@@@@@@@.@.@.@@.@.@.@@@@@.@@@@@@@.@@@..@@@@..@.
@@.@@@@@@.@@@@....@@.@@..@@.@..@.@@..@@@@@.@.@@.@.@@@.@@@@@@@@@@@@.@@@@@@@@..@.@@@@@@.@.@..@@@@.@@@@@@@.@@@@.@@@@.@@@...@@@@@@@.@@...@@.
.@..@..@@@@@.@@.@@@@@..@....@.@.@@.@@@@@.@.@.@@.@@.@@@@@@..@.@@@.@@@@.@....@@@...@..@.@@@@..@@@.@@@@@@....@.@@@...@@@@@@@.@.@@@@@@@@.@@.
@@@.@@.@@@.@.@@@@@.@...@.@@@@@.@....@.@@.@.@@.@.@@@@.@@.@@.@@@@.....@@@.@.@.@@.@@@@@.@@..@@.@@@@..@@@.@..@..@....@.@@.@@@@@..@@@@@..@@@@
.@@@...@@....@.@@@@@...@@.@@.@.@.@@.@@@@..@@@@.@@@@..@@.@@@@@.@.@@@@.@@@.@...@@@@@@@....@@@@@@.@@..@.@@.@@@@@@.@@@.@.@@..@@@@.@@@@.@.@@@
..@@@@.@..@@@.@@@.@@@@.@...@@@.@@@@.@....@@...@@@@@@.@@@...@.@.@@..@@@@.@@@.@@@@@.@@....@.@@.@@@@@.@@@@..@.@@@@@@..@@@@.@@@.@.@@@..@@@@.
@@@@@@....@.@@@@@..@@..@.@@.@@@@@@@@@@@@@.@@@@@.@@@@@.@@.@@.@@@.@@@@@.@.@.@.@@@@@@@@@@@@@.@@...@@@@.....@.@@.@@@.@@.@..@.@@@@@.@@@@..@.@
@@@.@@..@@.@.@..@..@@@@@@@@....@@@...@.@@@.@@@..@@.@..@@@@.@..@.@@@@.@@@..@.@@@@.@@@@.@....@@.@@@.@@..@.@@.@..@.@@@@...@@@@.@@...@@@@@@@
@@@@.@.@@@@@..@@.@@@@@.@@.@....@@@@@..@.@@@@@.@..@.@.@.@..@@@@@..@@@.@@@@@@@.@.@@.@.@@.@.@@.@@@@@..@.@..@.@..@.@@@.@..@@@@..@@@.@.@.@@.@
.@.@@@.@@@@@@.@@.@@@@@..@@@.@.@.@@.@@@@@.@@@...@.@@..@@@@@.@.@.@@@@.@@@@....@@@@..@@@...@@@@@@.@@@..@@@..@@@@@@@.@.@@.@@@@@@@...@.@..@@.
..@@..@.@..@@@@@.@..@@@@@.@@@@@@..@.@.@@@.@@@@@@..@...@@@@.@....@@@.@@..@..@@.@..@@@@@@@...@@@..@..@@@@....@@@@@@.@@@.@@.@@@@@@.@@@@@@@@
.@@@@.@@.@@.@@@@.@@@@@.@@@@@.@@@...@..@..@@@@@.@@.@@@@@@@@@@@@@@@@.@.@@@.@..@@@@....@@@..@@@@@@@..@@@@@@.@@.@.@@..@@@@.@@..@@@..@.@@@@@@
@@@.@@@@.@@@@@@.@@.@@@@@@@@@@@@@@@.@@@.@@@.@@@@@@@..@@@@@@@@@@..@@@@.@@@@.@@@@@@@@..@.@@@.@@@.@@@@@.@@@@.@@@@.@..@@@.@@@..@@@@@@@@@@@@@@
.@.@@@@@.@@..@@..@@@@.@@@@..@@@@@@@@.@.@@@.@.@.@@@@@@.@@@.@@..@@@...@..@@@@@@@@..@@.@...@@@@@.@@@@....@@@@@@@@@@@..@.@.@.@.@@@...@@@@@.@
@@.@@.@..@..@@.@..@...@@..@@.@@.@..@.@@.@@@@@@@@@@..@@@@.@..@@.@@@@.@@.@@.@@..@@@.@@@@@.@@@..@@.@.@@.@.@...@@.@.@@@@@.@@.@@.@@.@..@@@...
...@...@@@.@@@@@@@@@@@@@@@@@@@.@@@..@@@@@@@@.@@@@@@@@@@.@@@.@.@@.@.@.@@@@@@@@....@@@@.@@@.@@.@@.@@@.@@@@@@...@@@..@....@....@...@@@@.@@.
@@.@@@.@@@.@.@.@..@@.@@@@@.@@@.@.......@..@@@@.@@@...@.@....@@@@..@.@@@@.@@@.@@@@.@@@@@....@@.@.@.@.@@@..@@.@..@@@@@.@.@@@@@@.@@@...@@.@
.@@.@@.@@....@@@@..@@@@@@@.......@..@....@@@@@@.@.@@@.@@...@..@@@@@.@.@@@..@.@@.@@@.@..@.@@.@@@@.@.@@@.@@@....@@..@.@@@@..@...@@..@..@..
@@@@.@@...@@@@@@@@.@@@@.@..@..@@.@@@.@.@@.@@@..@@@..@.@@@.@@@.@@.......@.@.@..@@@@@.@@.@@@.@@@..@.@@...@...@.@.@@@@@@@.@@@@@@@@@.@..@..@
@@@.@.@@.@@@@.@@@@..@@@@@@....@@@.@@.@@.@..@@@.@@@.@@@@..@@@@@.@@.@@...@.@@.@@.@@@.@@.@...@@@@@@@.@@@.@@@@.@.....@@@@.@@@@@@@@@@@.@@@.@.
.@..@@@@@@.@.@.@@.@.@....@@.@@.@@@@.@@....@@@@@..@@@@.@.@.@@@@@.@@@@@@@@@@..@@...@..@@@@..@@@@.@@@@..@@@@@@@..@@.@@.@@@@@@...@.@@@.....@
.@@@@@..@@@@.@@@@.@@@@@@.@.@.@@...@@...@..@.@.@@.@.@.@@@.@@..@.@@@@@@@.@@@@@@@.@@@@..@@.@..@.@@.@@@.@.@@.@@..@@@.@@.@@@.@@@@.@@@..@@@@..
..@@@@@@.@@.@@@.@@@.@.@@@@@@@@@@@@@@@.@@@@@@..@@.@@@@@@@@@@...@@@...@@@@..@.@@@.@@.@@@@.@@@.@.@.@@@@@@@.@.@@@@..@@@..@.@..@..@@@@@.@@.@@
@@@.@.@@@.@@@.@.@.@.@@@.@@@@@@@@@..@@@@.@@@.@@@..@@@@@.@@.@@@@..@@@@@@.@@@.@.@@.@@...@.@@.@@.@@@@@@@@.@@@.@.@@@@@..@@..@@@.@.....@@@.@.@
@@@@..@@@@....@@..@@..@.@.@.@@@@@@@@@@@.@@@@...@@.@@@@@@@@.@@.@@@@@.@.@.@@@@@.@@@.@.@@@.@@@@@@.@..@@..@.@@@.@@@@.@@.@@@@@@@@@.@@@.@@@.@@
.@@..@.@@@@.@@.@@@@.@.@@.@.....@..@..@@.@@@.@@@.@.@.@@@@..@@@@@.@@@..@@@..@....@....@@.....@.@@@@@@@@@...@@.@@@...@@@@.@@@....@.@.@..@.@
@@.@.@.@..@@@.@@.@.@@@@@@@@@@@.@@...@@@@@@.@@@@@.@@.@@@.@.@@.@@..@@.@@@.@@@@@.@..@.@@....@@..@@@.@.@@..@.@.@@@.@..@@.@@@@.@@@@.@@@@.@.@@
.@@@.@@.@.@@@.@@@@.@.@.@@@.@.@@@...@.@.@@@.@.@@.@@@.@..@.@.@@.@@@@@.@.@.@@@.@@@..@@...@@@@@@..@.@@@@@@@@@@@.@..@@.@@.@.@.@.@.@.@.@@@@@.@
@@....@@@.@@@@@@@...@@.@.@@.@.@@.@.@@.@@@@.@@@@@@.@@@@@..@.@@.@@.@.@@.@@@.@@@@@@...@.@.@@.@@..@.@.@@@@.@@@.@@@@@@....@@@@.@@@@@@@@@@.@@@
@..@.@@.@@@@..@@@@@@@..@.@@@@@@@@@.@@@...@@..@.@@@.@..@.@@.@@@@.@.@@@@@@@.@@@.@@@@@@@@..@@@@@@@@.@@.@@..@@..@@.@..@..@.@@.@...@@@.@@@@..
@@.@.@@@@@.@.@@.@@@@@.@@@@..@@@@@@@@@@@.@.@@@...@...@.@@..@@@@@.@@..@@@@@@@@@@@@@@@@@@....@@@.@.@@.@..@..@@@@@@@@@@@.@.@.@.@@.@@....@@.@
..@.@.@@@@@@@.@@@@@.@@@.@@@@@@@@@..@@..@.@.@@@@@@@..@.@.@.@@@@@@@@.@@@...@@.@@.@...@.@@@..@@@@@@@@..@@.@@..@@@@@.@@@...@@@@@@@@...@@.@@@
@.@@.@@@@@@@@@@@.@.@@@@@@.@@@@.@@@@...@@.@@@.@@@.@@..@@@@@@@.@@@.@@@@@@@@@......@.@@@@.@@.@@@.@@@@@...@.@@.@.@.@.@.@.@@@.@.@@@@@.@.@@.@@
.@@.@@@..@@..@@@@@..@@.@@..@@@..@@@.@@.@@@@@..@@@@@@@@.@@@@@..@.@@@@@@@@@.@@.@.@.@@.@.@@@.@@@@@@.@@.@.@@..@@@@@@@...@..@.@@..@@.@..@.@@.
@..@@.@@@@@@@@@.@@@.@@@.@..@.@.@@@@@@..@@@@@..@@.@@.@@.@@@@@.@..@@..@.@@.@@@@@.@@@@@@..@@....@.@@.@@@..@..@@@.@...@..@..@...@.@@.@...@@@
@.@@@@..@@.@@@.@.@@..@@..@...@..@@@@.@@@@@@@@@@.@.@@@@.@.@.@@@@@@@.@@@@...@.@@..@@.@.@.@.@.@@@@@.@@@@.@@.@@.@@..@@.@.@@@@@@@..@@@.@@.@..
@@.@@@@@@@@@@.@....@@@.@..@@.@.@@@.@.@@@@@@..@@@@.@@@@@..@@@.@@@@@@@@@@@@..@@@.@@@@@@@.@@..@@.@..@@..@@@@.@@@@.@@@@.@@@.@...@..@..@@@..@
@.@@@@@.@@@@@.@.@@@@.@..@@@@.@@.@@@@.@@@@@..@@.@.@@@@@@.@@.@@@@@@..@@@@.@@@@@@.@.@...@.@..@@@@.@..@@.@@..@@@@.@.@.@.@@@@@.@.@@@@@@@.@.@.
@@@@@.@@@@@@@@@@..@@.....@@.@@@@@@.@@@.@@@..@@@..@.@.@...@.@.@..@@@@@.@@..@@@...@@@@..@.@@@@@@@@@@@.@..@@......@@@..@.@@@@@@@.@@@...@..@
@@@@..@@@@@.@@.@..@.@.@.@@@.@.@@@.@@@@@.@@@@@.@@@@.@@@@@.@@@...@@..@@.@.@@@.@@@@.@.@@@.@@@@@..@@@@...@@@@@@@.@.@@....@.@..@..@@..@..@@@@
@@.@@.@@@@@...@@..@.@@..@...@@@@.@@..@..@@@.@.@@.@.@@@@@@..@@@..@@@.@@@.@@@@@@@@@@.@..@@@.@..@@@.@..@@.@.@@@@@.@@@@.@@@...@@@.@..@@.....
@.@@@@.@..@@@@.@.@@@.@@@@.@@@@...@..@@.@@..@.@@@.....@@.@@@@@@...@@.@@@...@@@@@.@.@@...@@@@@@@@...@.@@.@..@@.@@.@@@.@.@@.@@@@@..@.@.@@@@
@@@@.@@@@@@@.@.@@@@..@.@...@...@@..@.@@@...@...@@@@@@@@.@@.@@@.@@@@@@@...@@.@.@@..@@@.@@@@@.@.@@.@.@.@@.@@@..@..@@@.@@.@@.@@.@@@@@@@..@@
@@@.@@@.@.@....@.@.@@@...@.@@@@@@@..@.@...@@@@@@@@@.@@@@@@.@@@.@@.@@@@..@@@@@....@@@.@@.@@.@@@.@@@@@@@@@.@.@.......@..@..@..@@@@@.@@@.@@
@.@.@@@@@@@@.@@.@@..@.@@@..@@@@.@@.@@.@@@@@@..@@@@@.@@@..@.@..@@@....@..@@@@@@@@.@@@.@@..@@..@@@.@@..@@@.@@.@@@@.@@@.@@@@@@@@@@.@.@..@@.
.@.@@@.@@.@.@.@@.@@..@.@@@@@@@@@..@.@.@@@@@@....@@..@@@@@@@@@.@@@@@@.@..@.@.@@@@@@@@..@.@@@@@@.@...@@@@@@@.@.@.@@@@@@..@@.@@@.@.@.@@@...
@@.@@@@@@.@@.@@@...@@@@........@.@@@.@@@@@@.@@.@@..@..@..@@@..@@@..@.@@@@@.@.@.@..@@.@@@@@.@@@.@.@.@@.@.@.@@@@.@@.@@@.@@...@@.@..@@.@@..
@.@.@@.@...@.@@@@@.@@.@@@@@@@@@..@@@@@..@.@@..@..@@@@.@@..@.@..@@.@@.@.@@@.@@.@.@@.@.@@@@@@...@.@@@@..@@@@.@@@@@@@.@.@.@..@.@@@@@@@@@@.@
.@@@@.@@@@@@@.@@..@@@@@@@@.@@@@@..@@@@@@.@@@.@@..@@@@@@@.@@..@...@@@@@@@.@@.@@.@@.@@.@@@.@@.@.@@@@@@.@@@@..@...@@@.@@@...@@@@.@.@@.@@@@@
@.@@@@..@@@@@@.@.@@...@@@....@.@.@@@@@.@.@@..@.@.@@..@..@@@@.@@..@.@..@.@@@.@@.@.@@@.@@.@..@@@@@....@@@....@@..@@@...@@.@.@@@@@.@@@@@@@@
@@@...@.@@.@.@@@@@@@.@@@@@@.@.@.@@.@@@.@@.@@...@..@@@@@@.@@.@@@@.@@@@@@@..@@.@@@@@@.@@..@@@.@.@@@@@@@@@.@@@.@..@@@...@@...@@@@@@.....@@.
@@@@.@.@@@.@.@.@.@@.@..@@.@@.@@.@@@@@.@.@@@@...@@@.@@@@@.@@.@@@.@@@.@@@@@.@.@@@.@@.@@@@@@@@@@@@.@@@@....@.@@@.@@..@....@..@@@@@@@.@@@@.@
@@.@.@@@@@@.@@@..@.@@@@@@@@.@.@@@@@...@@@..@@.@@.@@.@@@.@..@..@@@.@...@.@@@.@@.@@@..@.@@@.@@...@@@@@.@@@...@@@.@..@@@@@.@.@@@.@.@@@@@@@@
@@@..@@@.@@@..@@@.@..@@.@.@@@@@@@@@@@@@@@@@.@@.@.@@@..@..@@.@@@@@@@.@@@.@..@@@@.@@.@.@@@@..@@@@.@.@.@@...@@@@@@@@.@@@..@@@@@@@.@.@@...@@
..@@@@@@@..@..@@.@..@@.@.@@@.@....@..@@.@@.@@@@.@@@@@.@@@@@@@@@@@@@...@@@@@@@.@.@@@@@..@.@@.@@.@.@.@@@.@@.@@..@.@@.@@...@@@@@@.@@@@@@.@.
..@@.@@@.@..@@@.@@@.@..@.@@@@@@.@@@@@@.@@@@..@@@@@@...@@@...@@@@@.@@@.@@..@@@@@.@..@@.@....@..@.@.@@...@@@.@@..@.@@@...@.@@@@@@@@@..@...
.@@.@@...@..@@@.@@@@.@@@@.@.@@@@@..@@@@@@.@@@@.@..@@@@@@@@...@@@@@.@.@@.@@.@@@@....@.@..@@@@.@@@..@@@.@.@.@..@@@@.@@@@@@@@...@@.@@@@@@@.
.@@.@@@@@@.@@@@@@.@@@.@@@.@@@..@....@@@@@.@@.@@...@@@.@@@@@@@@...@..@@@.@.@@@@@@..@@@..@@@@@@@@@..@@.@@@....@.@@@@@@.@@@.@..@.@@@..@..@@
@@.@.@.@@@.@.@@...@.@@@.@@@@@@@@..@@..@@@@@.@@.@.@.@@@@@.@@...@@@@@@@@@@@@..@@.@@@.@@@.@@@@.@@@@@@.@@@@.@..@@@.@@.@..@@@@@.@.@...@@@@@@@
.@.@@.@@@.@..@@@@..@@.@@@..@.@.@.@.@@.@@.@.@@@@@@@@.@.@.@.@@@.@.@.@...@@@@@@@@.@.@@@..@@@@@@@@@@@@@@@@..@@@...@@...@@@@@@@@@@@@@@@@....@
.@..@@.@@@.@@.@@@.@@@@@@.@@.@@@@..@.@@@.@@.@.@@@@.@@.@@@@..@...@@@@..@@...@@.@@@..@@@@.@@@@.@@@@.@.@@@.@@.@@@..@..@..@@@@.@.@.@.@@@..@@@
@@@@@@@@@.@@@@@.@@..@@@@@..@@@@@@@..@.@@@@.@.@@.@@.@...@.@.@@.@@.@@.@....@.@@@.@@....@@..@.@@@@@@@.@.@@@@@...@@..@@@.@@@.@.@@@@@@@@@@@..
@@.@@..@@@@.@@@@@.@@@@.@.@.@...@@@.@@.@@.@..@@.@.@..@@.@@@.@@@@.@...@.@...@@.@.@@@@@@@@@.@.@@.@@.@@@@@.@@@@...@..@.@@.@..@.@@@@..@.@..@@
..@@.@@.@@@@@@@@@@.@@@@@..@.@.@@@....@@.@@@@.@@.....@..@..@@..@.@@@@@@@@@....@@@@.@.@@.@@@@@@.@@@.@@.@@@@.@.@.@@.@@@@...@@...@.@.@@@.@@.
...@@@@@@@@.@...@@@.@..@@@@@@.@@@@@@...@.@@@@...@@@.@@@@...@@.@.@@.@@.@@@@@@@@@@@..@@@@.@@@@@..@..@@..@@@..@@@@@..@@@@.@....@@.@@.......
.@.....@....@@@@.@@..@@@@@@.@@.@..@.@@@.@@...@@@@@..@@@@..@@.@@@....@@@@@@@@@@@..@@@@...@@.@@.@@@@.@@@..@@@@@@@.@.@...@.@.@@@@.@@..@@@.@
..@@..@@@@@@.@.@@@.@@@@@...@@@@@@.@@.@@.@@@@@.@@.@@.@@..@..@.@.@@..@@..@@.@@@@.@@@@@@@.@@@@@@@..@@@@@@.@......@.@@.@.@@@@..@...@@@@.@@@@
.@..@@...@@@...@@@@@..@.@@.@@..@@...@@@.@@.@..@.@@.@.@@@.@@@..@.@@@.@@.@.@@@@@.@@@.@....@@@..@@.@@@@.@.@@.@@..@.@@@@@@.@....@@@..@@@@@@@
.@..@@.@@@@..@@.@.@.@@.....@@@.@@@@.@@@.@@@....@@@..@@..@...@@@@.@@@..@@@.@@@@..@@@.@.@@@@@@@@@.@.@@@@.@@.@.@@.@.@@@@@@.@.@@@.@..@.@@.@.
.@@@..@@@@@@@.@..@@...@@@.@.@@@@.@@.@@@@.@.@.@..@@..@.@@.@....@.@..@@@......@.@@.@@.@.@@.@@@@@@@.@@.@@@.@@@.@.@@.....@@..@.@@..@@...@.@.
@@@@.@.@.@....@.@..@@.@@.@@@@@.@.@@@@.@@@@@........@@@.@@..@@.@@@@@.@.@@@.@@.@@@@@..@@@...@...@@@@@@@@.@@@@@.@@..@@@@@@...@@.@@@.@@@@.@@
@@.@@@@@.@@...@@.@.@@..@.@@.@@@@@.@.@@@@..@@@@@@@..@@.@..@..@@.@.....@@@@..@@@@@..@@@@..@.@.@@@@@@@@@@@@@@@@@@@@@...@..@@@@@.@@@@.@@@@@@
@@.....@@@..@.@@.@@@@.@@@@.@@.@.@..@.....@@@.@@@..@@...@..@@@@@@...@.@@@.@@@@.@@@@@@@...@@@.@.@.@@@@@@@@@@..@..@@.@@@@@.@@@..@...@.@@.@@
.@@.@@.@@@@@@@@@@@@@@@@@@@....@.@.@@@..@..@@.@@.@@..@.@@@.@@@.@@@@...@@@@....@..@@@..@@..@@@@.@@@@@@@@@@@.@@.@..@@.@..@@.@@@@@.@@@.@@.@@
@@@@@@.@@@@@@@@.@...@@@.@.@.@@...@.@.@.@@.....@.@.@@@.@...@.@...@@.@@@@@.@@@@.@@@.@..@.@.@@@@.@@@@@.@@@@...@@.@.@@@@.@...@.@@.@@@@.@@@@@
@.@@..@@@@.@@@.@.@@@..@..@@@@@@.@@@@.@.@.@@..@@@..@@..@@@@@@@...@...@@@@.@@@@@..@@@@.@@@.@@@..@@@@.@.@@@@@.@@@@@@@.@@@.@@..@@@@.@@.@...@
@@..@..@.@.@..@@@@.@.@@.@@@@@.@@.@......@..@@@.@@@@...@.@.@.@@@@@@@@@@@@@..@.@...@@@@@.@@.@@@@@.@@@@@@.@@@@@.@.@@@.@@..@@@@@.@@@@.@.@@..
@.@..@.@.@...@@.@@.@@.@.@.@@...@@.@@@.@@@.@@.@@.@@@@.@.@..@@@@..@@@@.@@@@.@.@@@@@.@@.@@.@@@.@@.@@.@.@.@@.@@@@@.@...@@..@@..@@.@...@@.@@.
..@@@..@.@@@@@@@@@.@@@@@@@@@...@@@.@@@@@.@@..@...@.@@@@..@..@@.@@.@@@.@@@.@.@.@.@@.@@.@@.@@@@..@@.@@@@@.@@...@.@@..@..@...@..@@@@..@@@@@
..@@.@..@.@@@..@..@@@@@@.@.@@@@@@@@@@..@@@..@@@.@@@@.@.@@.@@@..@.@.@.@@@.@@@.@@@@@@..@@.@@..@.@@@@@...@@.@..@.@@@@@.@@@@.@@@@.@.@@.@.@.@
.@.@..@@.@.@@@@@@@.@@.....@@..@..@@@@@@@..@@.@@.@@...@@@@.@@@@.@@@@@.@.@@.@.@..@.@@..@@.@@.@...@@@@@.@@@@@@.@@@@@@@@....@@@.@@@.@@@.@.@.
@.@.@..@@.@@..@@...@.@...@.@@..@@@@.@@@.@@@@@.@..@@@@@..@@@.@..@@@..@@@@@@@@.@@@@@@@.@.@@@@@@.@@.@@....@.@..@.@@.@.@@@..@@@@..@.@..@@@@@
@@@@@@...@@.@..@@@@@@@@@.@@.@.@@@.@@.@@@@@.@@..@@.@@@@.@.@.@@..@.@@@@@....@@.@@.@@.@@.@..@@@@@.@@@..@..@@@.@@@@@@..@@.@@.@.@@@@@@@.@..@.
@@@@..@@.@@@@@.@@@@.@..@@@.@@@@@@.@..@@@@@@@.@@@@@@@@..@.@@@@@..@@@.@@@@@@.@@@.@.@@@..@..@@.@@.@@.@...@.@@@@@.@.@.@..@@@@.@@.@.@@@@@@@..
File diff suppressed because it is too large Load Diff
+5
View File
@@ -0,0 +1,5 @@
966 185 147 2533 13 79 2119 55 68 63 18 114 39 89 15 1871 869 3 66 4 92 544 387 8 2 555 986 579 42 682 5648 39 625 525 95 48 42 37 42 27 97 19 97 74 279 9373 77 46 412 4 6 5 564 7564 654 23 22 747 188 952 94 28 87 5 2 195 375 7 24 782 359 373 4829 2 34 69 8 25 5 12 84 2 22 2 81 88 83 7 73 6 31 52 85 56 94 72 78 835 5 4 47 967 115 819 92 93 88 7 25 8 83 31 396 752 7958 21 84 7 4 632 4 68 2 57 894 71 1739 22 55 826 9 8 38 74 61 424 943 14 94 55 922 69 41 2523 18 8 28 4 13 6 1 1246 54 411 4296 96 2 72 2822 7379 172 18 23 8 93 578 958 4722 1 8 4 9 987 76 3476 4 336 6 9645 299 53 852 1 111 75 52 61 9 92 93 943 68 31 8455 93 748 96 75 1 7 83 987 3 633 54 8 7111 54 818 64 25 19 4 17 85 88 5 25 6 9215 44 1 6 2 79 133 345 268 71 769 226 281 5217 1319 5 29 75 261 43 8 562 489 95 4 386 11 655 79 913 747 75 61 622 348 9 643 64 87 9466 919 59 93 695 2 49 18 217 94 34 64 9 2 18 7891 956 4 939 8 88 591 68 9 365 6 3 9536 73 384 762 546 789 429 35 29 538 585 828 3927 87 316 76 21 533 5925 917 24 91 22 468 7 4 4 1 27 51 4998 8512 482 773 17 44 25 434 79 58 71 3 1 75 713 968 6426 31 1 8 9 364 4273 51 619 7 62 2 387 83 8 774 3424 7 26 22 37 89 92 873 378 747 3776 32 965 39 9 91 97 26 295 749 13 9 892 41 871 94 5 1 715 3893 667 364 571 22 526 137 33 7922 9 988 91 39 7 698 83 99 22 872 2 1 468 469 45 8 98 6996 42 923 261 338 46 41 15 64 7 936 31 9 933 85 49 287 121 5 1 56 5 2914 2 43 831 22 65 862 869 14 6318 17 38 42 26 52 55 548 94 47 9 5 2 29 26 178 63 1 477 92 9557 98 841 8 66 142 83 57 74 6 2 346 242 495 92 6 42 376 6859 31 8 9142 35 262 714 71 51 551 82 8 8271 682 414 82 37 75 6 99 799 728 52 32 76 8 22 9 334 2 765 5462 73 4 31 835 7 22 58 51 569 272 181 8 72 64 976 649 41 945 7 14 934 11 7 8 38 556 649 56 25 7 817 9823 93 55 54 95 8487 77 6 221 9426 67 2 6 96 57 4 139 86 2 9 934 419 49 44 8 26 527 763 6556 826 58 49 3 8 91 51 562 9 834 589 2 99 8 7 66 918 13 667 48 53 7 8692 38 7955 996 73 76 91 67 951 14 83 293 97 68 11 718 81 69 54 79 93 81 186 92 8 644 616 7 53 22 6552 775 93 6 342 84 654 39 23 989 393 45 922 7699 34 683 8853 718 64 471 32 46 375 29 27 31 6985 526 716 85 1166 82 49 26 26 418 586 49 68 6 36 2286 723 85 5 5781 83 961 82 14 476 36 61 693 33 2 78 81 71 158 16 366 7 73 13 53 934 26 24 1 147 2 5 59 4 886 96 99 13 1971 14 35 896 7 582 1 461 72 42 2 23 1755 79 76 681 561 34 43 1 5 48 115 162 339 58 22 5 36 699 96 912 291 319 867 129 9 4136 89 24 44 29 3198 23 1733 635 8361 21 763 92 2 8 7 21 48 74 275 79 68 543 718 497 826 224 9 381 16 345 75 7134 95 4489 52 62 26 1 22 68 77 5637 38 5533 1 825 83 159 42 85 3 479 5 8 5339 4 719 945 49 81 9339 229 35 578 8683 4 3 47 1119 486 819 7 959 4956 7 282 32 15 257 372 967 2 125 258 63 168 593 14 49 6 8 847 131 3715 5 3 9274 94 78 66 795 56 46 7 29 138 6 786 38 23 3 99 64 981 537 246 44 3 1 252 2 7763 83 857 49 65 4 84 49 6 57 328 141 49 38 446 5 76 32 1796 56 16 22 9227 73 215 17 883 226 122 9 85 47 9316 254 359 99 32 2 59 5 8 278 51 57 3 22 855 958 45 11 7576 82 88 18 316 277 73 6 984 779 84 1 1 534 1823 5465 6 74 36 99 1 632 7 7693 54 69 4189 36 77 517 41 34 55 772 982 38 5191 27 298 48 235 44 2 35 6954 6 9 82 43 42 4 42 934 97 35 195 946 678 7 8 669 5764 4 72 91 22 5 123 9 4 6 4 795 568 73 78 79 71 1845 69 1 918 75 9 13 944 26 58 545 15 71 2 26 7 77 79 777
513 247 496 9374 65 12 5266 38 32 56 2485 825 73 19 328 1643 728 4 871 72 79 791 796 8 961 515 341 831 49 229 115 25 385 998 142 67 49 28 21 42 23 21 14 72 427 2237 97 11 441 37 12 48 131 9866 456 44 7287 649 138 251 78 81 18 6 27 392 981 38 44 918 514 646 7211 2 95 91 1 448 37 27 81 5 58 618 472 53 97 6 74 23 44 584 14 59 69 89 13 628 72 92 93 249 955 324 42 56 58 1 29 88 13 68 8491 36 7758 22 87 23 86 778 1 75 65 57 716 27 9135 75 21 915 7 568 77 87 73 154 989 58 257 414 631 75 77 7689 12 78 963 12 52 2 54 5312 952 399 5225 529 178 69 6495 632 919 6732 43 1 931 555 193 9596 57 8 67 1 248 16 1575 57 133 2 4976 435 1265 811 3 483 89 28 396 673 458 57 156 84 46 865 48 535 227 95 8 75 18 788 8 536 76 1 9752 96 816 68 15 59 839 51 95 37 19 647 34 6911 44 9 3 1 5 575 664 311 975 281 621 866 9624 9617 119 48 11 697 17 31 168 967 23 36 723 38 826 48 788 222 249 869 238 28 8 33 88 21 8312 79 751 22 119 43 62 36 7993 52 52 26 9 2 12 2392 252 73 489 88 31 628 285 22 198 3 86 226 5 979 241 222 392 422 58 37 599 779 988 7848 48 849 61 71 617 2139 5183 182 78 14 1312 572 594 739 55 333 15 1915 1754 677 793 74 91 938 681 17 49 54 47 41 8 552 74 6326 23 3 129 3 813 6485 22 47 22 22 6 239 13 535 297 2695 392 37 52 26 42 17 731 138 411 2614 733 6867 21 37 21 1 512 876 777 43 6 139 73 425 96 8 239 283 1659 511 527 776 575 546 299 46 922 9 978 68 32 36 382 656 26 32 665 19 63 8817 721 58 341 34 617 24 779 717 765 72 81 227 53 99 4512 59 38 698 793 995 688 547 17 9 54 595 8742 36 59 766 94 43 814 68 48 1539 361 382 62 68 34 66 35 13 61 9 8 813 346 18 735 74 155 718 44 4492 71 36 817 861 416 2 572 7 1 8 266 734 682 55 49 82 883 2638 19 76 1743 43 556 517 56 124 739 89 29 344 7699 763 351 41 16 245 715 491 974 21 849 73 94 44 3 579 588 36 5199 88 8 69 624 97 18 43 656 169 737 9667 1 79 31 123 235 27 137 57 76 958 22 8 8 86 315 954 88 12 7 181 2773 37 25 92 96 6712 58 2 628 9699 24 61 51 62 64 618 686 93 6 57 328 39 185 52 985 32 324 37 851 366 37 42 5 68 77 37 648 69 746 951 7 12 47 5 5479 633 74 529 796 41 7 1848 25 7915 245 3 49 17 13 441 67 66 458 75 59 684 161 65 18 16 47 61 696 37 719 9 662 671 5 53 82 3976 896 82 11 522 89 527 24 63 843 614 56 797 5198 6572 69 4613 545 373 921 89 55 844 43 22 47 7364 284 376 86 638 32 26 73 533 515 651 44 79 98 83 528 426 42 4 7855 97 766 45 17 669 5 41 112 978 3 32 61 38 95 54 879 218 79 52 16 236 22 61 49 8752 1 8 61 4 115 93 37 63 919 28 32 454 717 788 7 548 23 17 84 67 8775 39 76 475 252 51 99 21 37 39 127 972 531 84 94 6 91 455 98 697 513 287 714 685 3 7351 38 22 2265 927 9985 26 2461 38 589 98 824 24 13 9 9 69 48 85 859 31 85 831 461 862 512 969 48 663 573 357 18 7521 72 9965 91 766 63 37 22 119 56 5726 324 2672 6 858 8 697 36 1 1 864 84 6 2591 254 276 971 66 2739 824 886 81 378 2465 4 9 62 5738 138 343 25 56 9347 9444 1547 17 21 174 283 762 6323 263 14 2 333 484 17 94 93 337 212 542 9266 7 2 5118 47 56 22 8183 63 21 718 619 752 93 274 35 68 52 51 54 861 677 7266 27 158 69 925 22 6455 81 281 71 4955 63 24 66 4 32 743 238 71 82 845 4 87 79 1269 76 96 37 159 29 583 43 95 738 455 8 34 14 235 529 575 546 4141 85 29 83 3 895 59 255 53 76 288 4 91 64 7657 67 17 46 791 962 43 6 9316 3 48 163 25 886 1366 4577 79 35 19 16 7 343 52 2763 83 97 6568 71 91 826 98 77 363 753 879 59 966 58 255 12 758 167 69 753 1887 8 84 73 77 73 9 62 377 64 47 914 18 565 49 855 393 2429 92 499 65 92 9 944 566 3 882 82 894 113 35 64 333 94 495 16 866 862 771 8 98 372 94 36 734 72 86 11 87 87 2 36 674
72 656 21 499 94 23 4 82 85 79 2586 156 65 76 653 18 936 23 484 33 34 571 719 8 451 734 988 141 99 475 11 298 352 12 4717 95 72 11 62 22 193 17 57 3 748 7798 53 955 739 92 646 13 984 8421 336 8 8793 376 988 85 73 89 95 6 94 69 726 5918 92 326 962 139 431 819 23 55 61 4929 29 12 65 57 98 321 456 5 37 14 453 94 16 9874 489 12 78 86 17 998 62 49 65 182 558 584 889 44 91 95 57 655 41 67 4236 75 8533 31 58 48 47 825 1 75 84 78 92 73 76 62 92 72 5 1868 83 63 475 8 412 1 132 454 29 92 717 9144 44 93 273 47 39 95 81 855 883 622 953 774 877 791 5752 74 7432 6343 37 6 642 14 147 5315 52 43 435 61 1383 85 6585 96 97 39 82 254 7346 665 32 498 93 17 391 2588 864 311 183 38 92 163 35 939 182 28 71 584 25 587 773 673 647 96 4941 96 96 14 98 85 321 87 48 18 297 3738 12 121 918 7 86 12 9 17 7638 21 364 773 138 133 946 694 518 99 72 9 98 12 39 4394 46 6526 497 571 31 62 62 736 2695 953 352 63 19 5 36 71 6354 78 544 84 216 783 69 13 6425 68 82 23 1 413 12 4856 795 18 479 316 6 213 836 19 186 39 63 55 2 36 621 269 533 534 12 43 926 464 923 433 6 649 59 38 111 6668 1539 572 35 52 5151 231 518 499 21 879 37 598 38 58 711 69 59 3953 556 29 24 37 98 78 2 33 89 69 734 34 444 8 76 4566 91 2 14 87 79 973 49 679 556 5491 193 44 48 88 4 45 227 838 558 7582 625 6879 14 56 922 4 855 817 937 65 932 916 75 598 47 25 413 41 6741 172 32 648 785 97 21 243 95 28 224 19 633 99 195 2448 88 4 264 58 212 2247 293 33 727 61 84 83 988 159 47 13 69 388 69 12 3825 9 29 573 198 827 42 588 95 9 55 1653 552 791 35 215 61 3 489 86 55 4773 572 4593 24 3 17 13 62 6 7 2 7 694 571 819 868 87 377 75 65 94 16 59 385 9577 226 1 1673 5 42 1 178 8713 654 42 8228 76 75 7731 1 984 4846 95 64 784 56 556 695 91 3124 51 5893 172 146 34 85 227 268 9584 52 13 736 17 19 199 18 377 448 59 581 31 717 55 782 98 84 72 216 78 732 2311 32 24 6 816 556 54 165 11 47 637 45 485 19 524 97 935 37 16 927 12 8747 6 75 35 53 4836 92 9 37 2284 92 94 23 53 583 615 89 63 17 97 365 74 997 76 575 84 345 76 344 459 366 91 94 65 38 29 149 42 191 939 393 64 43 4 1824 17 1967 841 575 73 13 875 57 164 982 4 51 14 779 725 34 7 9372 43 97 125 323 2 84 459 67 363 219 19 251 62 233 2967 98 45 19 965 236 44 14 4864 5 588 53 313 5125 966 38 88 966 9248 72 619 556 132 484 377 75 849 76 71 42 4697 516 892 29 54 361 54 82 638 135 152 54 145 77 88 971 682 752 54 96 92 324 46 72 127 8 91 889 619 2 35 43 7 18 2 995 4849 46 16 33 622 81 5 739 2638 84 75 38 96 532 82 53 4 566 94 62 922 522 113 26 651 54 7 99 35 7412 7 75 468 45 34 25 84 17 343 33 486 254 19 26 77 893 73 21 884 69 434 484 775 333 433 65 58 6743 658 1623 22 1931 36 225 923 98 58 738 92 582 62 66 54 31 76 65 726 1 226 416 37 92 757 916 93 84 3197 29 94 11 481 7 663 453 886 538 5679 1898 35 19 255 5 893 24 2 97 184 75 7 7499 4883 86 16 4 1889 27 64 16 526 477 55 145 41 272 425 92 773 18 1366 6983 2612 85 27 188 448 8349 4274 147 39 1 923 653 62 51 59 4192 339 43 1315 76 26 7329 16 89 73 9125 31 15 942 7553 222 64 14 67 8 913 95 41 7224 392 5166 53 6643 16 2569 61 282 23 491 68 2187 38 439 723 5 39 8 322 47 37 58 23 256 92 547 19 14 87 234 6 849 33 55 987 658 883 57 65 289 957 788 299 2589 35 33 54 752 129 469 8645 666 87 98 2 34 7 339 1 93 58 158 549 37 24 5668 8 44 251 2464 123 723 4976 28 42 33 22 19 34 51 4497 32 42 669 6 998 999 56 99 5853 35 49 16 953 251 481 1 72 532 49 6562 976 65 38 92 71 98 52 16 291 91 52 599 95 564 74 477 8318 8664 689 654 2 76 61 317 111 1 747 22 356 253 57 75 347 87 49 6 471 619 649 518 42 155 73 33 63 71 331 587 45 28 5 27 811
1 914 15 398 72 47 1 68 58 1 2752 99 23 7 296 41 236 87 268 84 85 1 853 87 4677 522 218 286 16 9 89 882 653 9 7456 78 77 5 53 77 761 2 39 8 9 5214 89 724 312 28 161 87 862 478 3 9 7721 5 99 62 65 3 2 96 51 37 8 9772 85 738 88 153 58 854 692 81 74 2587 35 89 28 18 4 438 566 6 339 699 822 263 25 2252 874 68 19 47 47 73 25 93 9 69 813 437 784 4 13 79 33 163 79 46 9282 1 257 24 98 69 17 376 31 12 47 44 42 23 85 31 65 1 96 5258 24 3 323 4 7652 6 773 765 74 4 666 436 1 83 653 43 36 22 16 5 411 23 488 441 459 175 8252 53 8642 1244 42 88 574 7 23 9478 74 66 898 34 4879 49 938 59 1 519 5 938 8894 238 17 987 12 631 151 3571 649 759 63 68 7 3 22 227 286 8 43 117 92 9 437 62 443 71 4345 79 32 12 11 78 388 96 27 97 161 7241 33 36 621 67 37 72 8 4 7229 63 619 63 5 29 85 94 939 66 8 2 49 92 3 2988 32 8515 442 411 27 8 78 3 4114 819 648 5 96 7 4 12 465 75 612 478 33 3558 5 588 2936 13 39 15 46 671 57 758 136 58 63 571 5 499 157 94 81 438 73 6 4 36 148 962 591 19 55 11 59 98 631 73 3 76 83 19 83 539 9139 769 48 39 4757 229 8166 637 87 795 96 14 95 89 19 2 57 4589 264 23 33 81 788 772 6 92 2 76 233 51 157 73 6 147 224 9 613 82 65 64 95 893 4 9453 136 66 58 23 4 99 1 55 826 2596 635 6437 12 711 669 8 399 32 51 6 198 5 32 8 28 11 518 26 549 396 78 826 817 7 47 547 39 14 96 41 184 92 383 3315 35 1 274 17 484 9114 772 51 541 14 4 89 64 416 46 41 66 663 1 72 3777 4 14 941 596 419 54 897 52 14 46 4444 165 499 383 19 6 5 528 4 83 342 214 8194 79 3 65 17 1 4 4 733 15 711 966 199 393 3 248 15 4 59 96 5 821 1394 582 6 6171 6 69 49 7 7544 798 14 7727 8 29 823 9 525 8213 52 88 39 51 383 843 12 7832 5 6292 727 528 86 1 848 337 1966 7 45 585 45 19 811 79 899 8845 35 96 85 796 21 943 37 14 56 337 21 89 9438 18 76 9 17 7 7516 83 58 48 62 83 896 253 917 96 9887 68 7 699 63 5 9 22 48 4 59 36 77 95 42 38 29 52 64 714 937 58 58 79 75 145 88 379 31 867 22 9 66 49 6 886 41 26 49 1 15 872 74 734 691 988 17 26 379 5711 4 7934 799 848 98 58 75 5 71 351 2 313 43 7999 523 9 5 8372 13 97 632 787 1 8 141 7 994 844 13 666 92 91 2183 36 63 6 984 868 63 14 2472 6 733 49 289 7473 643 7 52 556 1935 52 666 44 368 922 255 36 478 86 528 3 935 11 6 7 8 837 85 37 9275 784 6 823 642 86 6 531 248 841 916 8 8 283 7 78 747 7 39 154 758 39 85 96 9 7 8 555 7217 61 35 8 84 16 4 376 3535 28 23 41 14 32 89 92 6 6 5 78 147 967 782 56 499 65 7 19 95 74 5 51 31 59 15 4 38 25 216 91 86 86 72 1 39 287 55 39 59 9 35 971 585 125 21 8 11 9232 947 1 51 45 71 6 264 5 15 576 93 697 45 9 5 33 4 92 728 9 472 234 44 56 751 733 31 77 215 29 5 81 164 6 943 826 385 415 368 8679 3 21 764 2 72 2 8 265 24 82 45 63 4347 9 2 7 7364 19 6 98 989 64 65 934 1 44 9 3 511 29 476 9632 2662 87 3 83 13 6262 3284 8 32 5 131 61 2 78 28 5921 8 5 7172 26 382 437 68 68 6 1263 95 32 362 2536 79 95 7 15 5 567 84 79 9836 643 4998 73 4171 14 8679 839 7 3 4 85 7951 99 861 343 74 66 5 86 7 17 44 98 228 42 87 84 32 22 55 7 325 39 73 336 272 292 45 1 523 273 35 224 7432 53 19 54 214 7 414 7159 569 29 41 8 51 8 966 4 26 78 664 716 52 858 5638 6 44 7329 4517 695 377 7971 75 7 88 94 76 89 87 167 43 6 484 5 445 467 22 77 9934 2 65 82 7 448 9 8 9 343 61 2631 914 944 1231 4 1 26 18 4 757 17 9 8 3 42 39 896 4142 8491 481 789 6 56 35 466 682 47 896 13 246 847 839 99 718 61 63 6 524 6 588 643 66 1 55 67 7 45 944 659 21 25 3 29 5
* * + + + + + + * * + * + + * + * + * * + + * + + + * * + * + + * * + * * * + * * + * * * + * * * * + * * + * * + + * * * + * + + * + + * * + * + * + * * + + * * + * * * * * * + + * + + * + * * + * + * * * * * * * + * * * + + * + + + * * * + * + * + * + * + * + + * * * + + * * + * * * + * * * * * * + + * * + + * * + + + + + * + + + + * + * + + + + * * + + + + * * + * * * + * * + * * + + + + + + * + + * * * + + * + * + * * + * * + + + + * + + + * + + + + + * + + + + * * + + * * + + + * * + * * + + * + * * * * * + + * * + + + * + * + * * * + + + + + * * * * + + * + + + + * * + * * * * * * + * + * * * + + * * * + * + + + + * + + * + * + + * * + + + * * * * + + * * + * + + * * * + * * + + + * * * + + * + * + + * + * * * * + + * * * * * * + * + + + * * * + + * + + + * + * * * + + * + * * + + * + * + + * * * * * * * * + * + + + * * * * * * + + + * * + * + * + + * + + + * * + + * * * + * + + * * * + + * * + + * * + * * + + + * * + * * + + * + * * + * + * + + + + * * * + * * + + * * + + * * * + * + * * * + * + + + * * + + * + * * + * * * * + * * * + + + * + * + + * + + + * + + + + * + * * + + + * + * + * + + * * + + * + + + * * * * + * + * * * * + * + * * * * + * + * * * + + + + * + * * + * + + * * * + * * * + + * + * + + * * + + + + * + + * + + + * + * * * * * * + * + + * + * + + * * + + + * + + * + + + * + + + + + + * + + + * + * + + * * + * + + * * + * + * * + + * + + + + + + * * + + * * * + + + + * * * + + * * + * * + * * * + * * * * * + * + + * * + * + * + * + + * * + * + * * + * + + + * * + + + + * * * + + + + * * * + + * + + + + * * + * * + + + + + + + * + + + + * * + + * * + * * + * + + + + * * + + + * * * * * + * * + + + + * + + * * * + + * * + * * * * + + * + + + + * + + + * + + + * + + * + * + + * * * * * * * + * + + + * + * * * * * + * + * * * + + + + * + * + * + * + + + + * + * * + + * + + + + + + + + + + + + * * + + + * + + * * * + + * * + + * * * + * * + + + + * * * * * * + * * + * + * + + + * * * * * + * + * * * + * + * + * * + * + * * * * * * * * + + + + +
+29
View File
@@ -0,0 +1,29 @@
"""Day X: Advent of Code 2025."""
import time
from aoc import read_lines, read_input, read_grid, read_ints
def part1(data):
"""Solve part 1."""
pass
def part2(data):
"""Solve part 2."""
pass
if __name__ == "__main__":
DAY = 0 # <- ändra till rätt dag
data = read_lines(DAY)
t0 = time.perf_counter()
p1 = part1(data)
t1 = time.perf_counter()
print(f"Part 1: {p1} ({(t1-t0)*1000:.2f} ms)")
t0 = time.perf_counter()
p2 = part2(data)
t1 = time.perf_counter()
print(f"Part 2: {p2} ({(t1-t0)*1000:.2f} ms)")