Compare commits

..

208 Commits

Author SHA1 Message Date
68d1803e8f feat: solve part two 2025-12-21 09:26:50 +01:00
a39f261ba9 test: add unit test for part two 2025-12-21 09:13:08 +01:00
0c77a62ab4 feat: solve part one 2025-12-21 09:12:16 +01:00
60ee8c0307 test: add unit test for part one 2025-12-21 09:05:19 +01:00
dfe08db759 chore: add 2022D4 dataset 2025-12-21 09:04:00 +01:00
081f4ea295 feat: register fourth day 2025-12-21 09:03:50 +01:00
34be9e0847 feat: solve part two using exhaustive search 2025-12-20 09:25:03 +01:00
6ea67eac0c test: add unit test for part two 2025-12-20 09:18:32 +01:00
bb366fbe17 refactor: extract reactPolymer to reuse it in PartTwo 2025-12-20 09:18:17 +01:00
681b7bae16 feat: solve part one 2025-12-20 09:15:52 +01:00
c8ded5c42d test: add unit test for part one 2025-12-20 09:12:51 +01:00
b37f1ec366 chore: add 20218D5 dataset 2025-12-20 09:08:46 +01:00
40e2e329e0 feat: register fifth day 2025-12-20 09:08:34 +01:00
fa5bf2e85b feat: refactor some code and solve part two 2025-12-14 10:14:18 +01:00
ea1b57b17e test: add unit test for part two 2025-12-14 10:10:30 +01:00
174671e6f5 feat: use min() and get rid of Reindeer struct 2025-12-14 10:02:57 +01:00
40bcf3052f test: add unit test for part one 2025-12-14 10:00:17 +01:00
1e634b7ee9 feat: implement partone in CalculateMaxDistance to make the test relevant 2025-12-14 10:00:11 +01:00
6e625dcf06 feat: register fourteenth day 2025-12-14 09:52:39 +01:00
141216920d chore: add 2015D14 dataset 2025-12-14 09:52:25 +01:00
b685e81c58 feat: solve part two 2025-12-12 18:35:11 +01:00
1adc10ea88 test: add test for part two 2025-12-12 18:35:05 +01:00
db7c31cb39 feat: solve part one using direct byte comparaison and efficient hex extraction 2025-12-12 18:30:25 +01:00
1ad1da1309 chore: add 2016D5 dataset 2025-12-12 18:30:07 +01:00
228392fe83 feat: register fifth day 2025-12-12 18:29:50 +01:00
4837cbf290 test: add unit test for part one 2025-12-12 18:29:20 +01:00
8503cee52b test: add unit test for part two 2025-12-10 18:41:25 +01:00
b16b052115 feat: solve part one using brute-force 2025-12-10 16:51:57 +01:00
bc76283458 test: add unit test for part one 2025-12-10 06:11:04 +01:00
9d2a087801 feat: register tenth day 2025-12-10 06:10:57 +01:00
0bd3b6dc69 chore: add 2025D10 dataset 2025-12-10 06:10:50 +01:00
da81f67b7f feat: solve part two 2025-12-09 20:59:57 +01:00
caa7da5a7d test: add reverse unit test for part two 2025-12-09 20:59:46 +01:00
eebe707ef9 feat: solve part one 2025-12-09 20:40:59 +01:00
8960dcb072 test: add unit test for part one 2025-12-09 20:14:22 +01:00
99eb0fbaa8 chore: 2016D4 dataset 2025-12-09 20:14:16 +01:00
a739425209 feat: register fourth day 2025-12-09 20:14:11 +01:00
af306eb73c feat: solve part two 2025-12-09 19:24:30 +01:00
cdbc3f3b16 feat: solve part one 2025-12-09 19:22:12 +01:00
ed445a8be7 test: add unit test for both parts 2025-12-09 19:21:59 +01:00
8bbf6662b1 chore: add 2016D3 input 2025-12-09 19:21:51 +01:00
b60c971d50 feat: register third day 2025-12-09 19:21:44 +01:00
5dab84eeb3 feat: solve part two 2025-12-09 14:40:37 +01:00
2283b62503 clean: oneliner for compute and check 2025-12-09 07:10:30 +01:00
ccf50c12c9 test: add unit test for part two 2025-12-09 06:45:39 +01:00
f25d7511aa feat: solve part one 2025-12-09 06:33:16 +01:00
243ccf3da9 test: unit test for part one 2025-12-09 06:14:02 +01:00
aedf9cd06d chore: day 9 input 2025-12-09 06:05:48 +01:00
c053c905ad feat: register ninth day 2025-12-09 06:05:42 +01:00
7dff40745c feat: solve part two using keypad with 10+ for letter and 0 for inexisting keys 2025-12-08 22:52:28 +01:00
0e8563b216 test: add printing unit test for part two (as it returns string) 2025-12-08 22:39:11 +01:00
6720bbabc1 feat: solve part one building the code digit by digit 2025-12-08 22:34:59 +01:00
6035989da4 test: add unit test for part one 2025-12-08 22:26:25 +01:00
dc16893777 chore: add 2016D2 dataset 2025-12-08 22:26:15 +01:00
fdfad57cee feat: register second day 2025-12-08 22:26:01 +01:00
9cf00b290f feat: solve part two using same logic and injecting me :) 2025-12-08 22:17:11 +01:00
47072a4982 feat: extract shared functions and solve part two 2025-12-08 22:01:31 +01:00
62748990cb test: unit test for part two 2025-12-08 21:55:29 +01:00
42c69d44e5 feat: solve part one 2025-12-08 21:51:40 +01:00
c6eb51a395 comment: no test for part two 2025-12-08 21:45:42 +01:00
6777696df6 test: add unit test for part one 2025-12-08 21:45:27 +01:00
a8e244f9ab feat: register third day 2025-12-08 21:43:39 +01:00
911f9bfe7b chore: add 2022D3 dataset 2025-12-08 21:43:15 +01:00
24a65d3752 feat: solve part one using brute-force permutation search 2025-12-08 21:26:06 +01:00
0bd0ec5f1e test: add unit test for part one 2025-12-08 21:24:58 +01:00
0ad418ed1f feat: register d13 2025-12-08 17:39:35 +01:00
ec48231aae chore: add D13 dataset 2025-12-08 17:39:07 +01:00
5631822e73 feat: tiny refactor for part two which we're solving using Kruskal's algorithm 2025-12-08 15:21:42 +01:00
630d32ba11 test: add unit test for part two 2025-12-08 12:30:10 +01:00
22500b7076 feat: solve part one 2025-12-08 12:26:37 +01:00
9d2d27b257 refactor: rename parameter to standardize 2025-12-08 11:42:12 +01:00
879509c7ba refactor: rename parameter 2025-12-08 11:40:08 +01:00
a0805111b4 test: add unit test for part one 2025-12-08 06:08:56 +01:00
b0cd4f37b1 feat: register day 8 2025-12-08 06:01:48 +01:00
8999f45aad chore: day8 dataset 2025-12-08 06:01:39 +01:00
838803c53e feat: solve part two 2025-12-07 22:01:36 +01:00
c4063b5390 test: unit test for part two 2025-12-07 21:59:04 +01:00
1c5bd1e448 feat: solve part one 2025-12-07 21:55:26 +01:00
6d9b2092bd test: add unit test for part one 2025-12-07 21:51:57 +01:00
9b218d763d feat: start 2016 2025-12-07 21:51:41 +01:00
10c5b0fbc6 feat: register day one 2025-12-07 21:39:52 +01:00
503eec14c6 chore: add 2016D1 dataset 2025-12-07 21:39:07 +01:00
deac7f97bb refactor: format imports 2025-12-07 13:34:14 +01:00
a3fb7ac353 feat: solve part two using recursive dfs + memoization 2025-12-07 12:24:40 +01:00
8f4e11215f test: add unit test for part two 2025-12-07 09:55:03 +01:00
78b0032578 feat: solve PartOne using DFS algorithm 2025-12-07 09:54:53 +01:00
536f6f52ff refactor: return directly 2025-12-07 09:35:20 +01:00
96ca1afb9b test: add unit test for PartOne 2025-12-07 09:30:18 +01:00
780263e78b feat: register day seven 2025-12-07 09:27:51 +01:00
49ff399f97 chore: D7 dataset (and it rhymes (in french only)) 2025-12-07 09:26:42 +01:00
27d14b1711 feat: solve part two 2025-12-07 00:00:16 +01:00
89b2ec90f2 test: add unit test for part two 2025-12-06 23:57:23 +01:00
f8a2e839b9 feat: solve part one using maps and regex 2025-12-06 23:55:34 +01:00
94ecbd27bf test: add unit test for part one 2025-12-06 23:45:52 +01:00
b44a592808 chore: D4 dataset 2025-12-06 23:44:13 +01:00
b00d2f13a3 feat: register day four 2025-12-06 23:44:01 +01:00
b26f1531f5 feat: solve part two 2025-12-06 23:43:01 +01:00
7de5fa7794 fix: update parsing to avoid doing split in both functions 2025-12-06 23:40:20 +01:00
66e91e05a4 test: update input to be a []string 2025-12-06 23:40:02 +01:00
a20bb8ab09 test: add unit test for part two 2025-12-06 23:36:12 +01:00
c5fcc8b353 feat: solve part one 2025-12-06 23:34:48 +01:00
0357f263cc test: add unit test for part one 2025-12-06 23:13:21 +01:00
8488debc25 feat: register day four 2025-12-06 23:11:46 +01:00
00dd40428b chore: 2021D4 dataset 2025-12-06 23:11:09 +01:00
3d35a57723 feat: solve part two using right-to-left processing 2025-12-06 12:08:57 +01:00
0d40e32a39 test: add unit test for part two 2025-12-06 11:48:22 +01:00
fd34db28cb feat: solve part one using grid transposition 2025-12-06 11:46:50 +01:00
65edd3258e test: unit test for part one 2025-12-06 11:07:39 +01:00
e914bc6492 feat: register day six 2025-12-06 11:04:13 +01:00
0eed8089b6 chpre: 2025D6 dataset 2025-12-06 11:03:34 +01:00
1048d20cef docs: update requirements 2025-12-05 09:26:46 +01:00
00ccbaf0d0 feat: solve part two using merged ranges 2025-12-05 09:08:10 +01:00
51f733127c test: add unit test for part two 2025-12-05 08:46:10 +01:00
d96febeae3 feat: solve part one using binary search on sorted range 2025-12-05 08:41:39 +01:00
79b31dad19 test: add unit test for part one 2025-12-05 08:03:50 +01:00
d5146e7e3e feat: include day five 2025-12-05 08:01:50 +01:00
d2d6f280b3 chore: 2025D5 dataset 2025-12-05 08:01:40 +01:00
79d9f8d7cc feat: solve part two using json and recursive approach 2025-12-04 21:10:42 +01:00
bcc4fc3432 test: add unit testing for part two 2025-12-04 21:00:19 +01:00
cc2d7d1a3d feat: solve part one using basic regex parsing 2025-12-04 20:59:09 +01:00
83f6db5e33 test: unit tests case for p1 2025-12-04 20:54:43 +01:00
12b54d51d2 feat: include D12 2025-12-04 20:44:48 +01:00
89c154de37 chore: add 2015D12 dataset 2025-12-04 20:44:17 +01:00
ea037debed fix: silence golangci-lint 2025-12-04 17:35:49 +01:00
a0a0c43690 feat: simplified input parsing by appending all lines directly 2025-12-04 17:32:36 +01:00
bce49d51f7 feat: applied De Morgan simplification 2025-12-04 17:32:18 +01:00
77a352aa2e feat: solve part two using the same logic, twice 2025-12-04 16:53:15 +01:00
fd6db0cc65 refactor: add code in helpers for part two 2025-12-04 16:52:28 +01:00
2b548fa1ef feat: solve part one with pruned bruteforce 2025-12-04 16:49:43 +01:00
e0465b9b8d clean: no test cases for this day 2025-12-04 16:32:43 +01:00
0523610080 chore: 2015D11 dataset 2025-12-04 16:24:24 +01:00
e341c12763 feat: include D11 2025-12-04 16:24:14 +01:00
6cff0b7931 feat: solve part two with iterative process 2025-12-04 07:05:56 +01:00
f5bfe1e578 test: unit test for part two 2025-12-04 06:48:41 +01:00
0fbe2956c3 refactor: didn't press :w it seems 2025-12-04 06:46:28 +01:00
9280430285 feat: solve part one using prebuilt map for rolls 2025-12-04 06:45:40 +01:00
b91e34bc8e test: add unit test for part one 2025-12-04 06:32:20 +01:00
9f10576a0c feat: include 2025D4 2025-12-04 06:30:23 +01:00
8a9f4cb506 chore: add 2025D4 dataset 2025-12-04 06:29:55 +01:00
d3098c0d9c cleaning: input.txt is either downloaded or created empty 2025-12-03 15:17:24 +01:00
8be18b6b38 refactor: better explain scaffolding 2025-12-03 15:16:25 +01:00
b39b8c885b feat: solve part two, still with greedy algorithm 2025-12-03 10:36:14 +01:00
56901ca553 test: add unit test for part two 2025-12-03 10:10:45 +01:00
e3c9da9621 feat: solve part one using a prebuild list to reduce comparisons 2025-12-03 10:09:13 +01:00
070bd8be9a fix: modify test, we're parsing [][]int instead of []string for this day 2025-12-03 09:57:12 +01:00
c1ba2ca02b test: add unit test for part one 2025-12-03 09:28:42 +01:00
146b63706a feat: include 2025D3 2025-12-03 09:26:32 +01:00
1421062a75 chore: 2025D3 dataset 2025-12-03 09:26:19 +01:00
b9928789df feat: solve day10 using traditionnal look and say 2025-12-02 23:12:11 +01:00
b7aafeec52 test: no test 2025-12-02 23:11:09 +01:00
a935e35d82 feat: include 2015D10 2025-12-02 23:08:47 +01:00
e2c2d0df71 chore: 2015D10 dataset 2025-12-02 22:56:27 +01:00
e3a47b0e16 feat: solve part two 2025-12-02 22:13:31 +01:00
86370f27c8 refactor: create functions that we gonna use for part two 2025-12-02 22:10:12 +01:00
c61e573e14 test: add unit test for part two 2025-12-02 21:57:27 +01:00
d16f70cf00 feat: solve part one with brute-force and permutation enumeration 2025-12-02 21:56:06 +01:00
6f7561213e test: add unit test for part one 2025-12-02 21:52:56 +01:00
94b15548cf feat: include 2015D9 2025-12-02 21:23:49 +01:00
4e9e2b399c chore: add 2015D9 dataset 2025-12-02 21:23:24 +01:00
035e56bf53 feat: solve part two 2025-12-02 21:21:49 +01:00
61cf84aa8a test: add unit test for part two 2025-12-02 20:39:54 +01:00
5513ae8386 feat: solve part one using basic parsing 2025-12-02 20:38:20 +01:00
f1730c30cb feat: register D8 and parse input 2025-12-02 20:14:37 +01:00
ce7d42621f test: add unit test for part one 2025-12-02 20:13:01 +01:00
8eafb1f7c5 feat: include 2015D8 2025-12-02 19:55:26 +01:00
81be03e8ee chore: add 2015D8 dataset 2025-12-02 19:54:54 +01:00
d662f693b8 feat: don't bruteforce every number, use recursion to generate patterns to look for 2025-12-02 18:09:45 +01:00
b0d16b1bac git: add .test files to ignore 2025-12-02 11:51:21 +01:00
3eb9120dc3 clean: remove test file 2025-12-02 11:50:40 +01:00
85ae14acbf docs: update readme 2025-12-02 09:58:52 +01:00
b7a98033c6 refactor: use package aggregators 2025-12-02 09:51:34 +01:00
8f265eae05 feat: add per-year aggregator packages so main.go remains readable 2025-12-02 09:51:21 +01:00
fe20a0b654 feat: solve part two using a bit of bruteforce 2025-12-02 07:48:48 +01:00
aa80e4eb8e revert: remove useless helper as PartOne and PartTwo will have a different behavior 2025-12-02 07:35:50 +01:00
0d029f2861 feat: unify invalid checks with exactTwo boolean parameter 2025-12-02 07:19:57 +01:00
edf94432f4 test: add unit test for part two 2025-12-02 06:53:45 +01:00
33552358f8 feat: solve p1 2025-12-02 06:52:30 +01:00
45d3e93a93 test: add unit test for p1 2025-12-02 06:46:42 +01:00
707f34e706 feat: include 2025D2 2025-12-02 06:36:56 +01:00
a05450c73a chore: add 2025D2 dataset 2025-12-02 06:27:22 +01:00
6b95f5ced0 test: add an almost arbitrary test for p2 2025-12-01 23:20:37 +01:00
9caee546f0 feat: solve part two by overriding wire b and re-evaluating circuit 2025-12-01 23:11:41 +01:00
8e831d85fe fix: replace Split with SplitSeq as it's a loop (thanks lsp) 2025-12-01 23:09:30 +01:00
b8ab5fae7b test: updateInput to simulate new ParseInput output 2025-12-01 23:08:22 +01:00
3262d1cbb8 refactor: build instruction in ParseInput and add evaluateWire helper 2025-12-01 23:07:29 +01:00
766ee97dd3 feat: solve part one using recursion and memoization 2025-12-01 22:59:28 +01:00
c41c96e628 test: add unit test for p1, based on manual calculations 2025-12-01 22:59:05 +01:00
fb46fceb75 refactor: just moving code here and there 2025-12-01 22:48:56 +01:00
c9fe217e4b feat: include 2015D7 2025-12-01 22:44:45 +01:00
d88d64edd4 chore: 2015D7 dataset 2025-12-01 22:43:24 +01:00
e81194721c refactoring: just better naming 2025-12-01 21:53:50 +01:00
a680e0ba48 refactor: create parseInstruction and instruction{} to use it in both parts 2025-12-01 21:31:51 +01:00
345defec4d feat: solve p2 2025-12-01 21:28:27 +01:00
3756279dab test: add unit test for p2 2025-12-01 20:52:57 +01:00
70189f4295 feat: solve part one 2025-12-01 20:47:02 +01:00
cdacf7ae06 test: add unit test for p1 from paper calculation 2025-12-01 20:46:55 +01:00
074c762960 feat: add 2015D6 dataset 2025-12-01 20:35:08 +01:00
6babf31a20 feat: include 2015D6 2025-12-01 20:35:00 +01:00
cdefd68320 feat: add 2018D3 dataset 2025-12-01 20:09:37 +01:00
f28611a7bf test: add unit tests for p1/p2 2025-12-01 20:09:29 +01:00
f98034b00c feat: solve both parts 2025-12-01 20:09:20 +01:00
375b756718 feat: include 2018D3 2025-12-01 20:09:12 +01:00
6668e8ae1b fix: remove empty branch 2025-12-01 19:37:28 +01:00
e58959778a docs: update readme 2025-12-01 19:36:25 +01:00
eb72fe9ebd build: get rid of "new" target 2025-12-01 19:35:01 +01:00
e355423675 feat: automatically download each day input 2025-12-01 19:32:01 +01:00
b1be29c21c feat: solve part two using modular arithmetic 2025-12-01 12:35:20 +01:00
b04dcc5aea test: add P2 unit test 2025-12-01 12:20:11 +01:00
101 changed files with 15392 additions and 96 deletions

1
.gitignore vendored
View File

@@ -1 +1,2 @@
bin/aoc bin/aoc
*.test

View File

@@ -1,7 +1,7 @@
GO = go GO = go
BIN = bin/aoc BIN = bin/aoc
.PHONY: build test clean new .PHONY: build test clean
build: build:
@mkdir -p $(dir $(BIN)) @mkdir -p $(dir $(BIN))
@@ -13,12 +13,9 @@ test:
clean: clean:
@rm -f $(BIN) @rm -f $(BIN)
new: %:
@if [ -z "$(filter-out $@,$(MAKECMDGOALS))" ]; then \ @DAY_ARG=$@; \
echo "Usage: make new 2020D9"; \ if echo $$DAY_ARG | grep -qE '^[0-9]{4}D[0-9]+$$'; then \
exit 1; \
fi
@DAY_ARG=$$(echo $(filter-out $@,$(MAKECMDGOALS)) | awk '{print $$1}'); \
YEAR=$$(echo $$DAY_ARG | sed 's/D.*//'); \ YEAR=$$(echo $$DAY_ARG | sed 's/D.*//'); \
DAY_NUM=$$(echo $$DAY_ARG | sed 's/.*D//'); \ DAY_NUM=$$(echo $$DAY_ARG | sed 's/.*D//'); \
DAY_NAME=$$(case $$DAY_NUM in \ DAY_NAME=$$(case $$DAY_NUM in \
@@ -53,8 +50,12 @@ new:
mkdir -p internal/data/$$YEAR/Day$$DAY_NAME; \ mkdir -p internal/data/$$YEAR/Day$$DAY_NAME; \
touch internal/$$YEAR/Day$$DAY_NAME/code.go; \ touch internal/$$YEAR/Day$$DAY_NAME/code.go; \
touch internal/$$YEAR/Day$$DAY_NAME/code_test.go; \ touch internal/$$YEAR/Day$$DAY_NAME/code_test.go; \
if [ -n "$$ADVENTOFCODE_SESSION" ]; then \
curl -s -H "Cookie: session=$$ADVENTOFCODE_SESSION" \
https://adventofcode.com/$$YEAR/day/$$DAY_NUM/input \
| perl -pe 'chomp if eof' > internal/data/$$YEAR/Day$$DAY_NAME/input.txt; \
else \
touch internal/data/$$YEAR/Day$$DAY_NAME/input.txt; \ touch internal/data/$$YEAR/Day$$DAY_NAME/input.txt; \
echo "Created files for $$DAY_ARG" fi; \
echo "$$DAY_ARG ready to be solved."; \
%: fi
@:

View File

@@ -13,38 +13,54 @@ Ultimately, my goal is to complete all the years of Advent of Code here.
## Requirements ## Requirements
- Go 1.25 - Go 1.25
- Puzzle input - Puzzle input (or your session cookie to have it downloaded automatically)
## Repository Structure ## Repository Structure
``` ```
├── cmd/ ├── cmd/
│ └── aoc/ │ └── aoc/
│ └── main.go # CLI entry point that runs solutions │ └── main.go # CLI entry point for running puzzles
└── internal/ └── internal/
├── 2020/ ├── 2020/
│ ├── register.go # Aggregates import for main.go
│ ├── DayOne/ │ ├── DayOne/
│ │ ├── code.go # Go solution for Day 1 (2020) │ │ ├── code.go # Day 1 solution for 2020
│ │ └── code_test.go # Unit tests for Day 1 │ │ └── code_test.go # Unit tests for Day 1 solution
│ └── ... │ └── ... # Other days for 2020
├── 2021/ ├── 2021/
│ └── ... # Additional years and days │ └── ... # 2021 days code and tests
├── registry/ ├── registry/
│ └── registry.go # Central registry for day runners │ └── registry.go # Central map/registry for finding and running days
└── data/ └── data/
├── 2020/ ├── 2020/
│ ├── DayOne/ │ ├── DayOne/
│ │ └── input.txt # Puzzle input for Day 1 (2020) │ │ └── input.txt # Puzzle input for Day 1 (2020)
│ └── ... │ └── ... # Inputs for other days
└── ... └── ... # Inputs for other years
``` ```
Each day's solution is organized into its own folder, named according to the day number (e.g., `DayOne`, `DayTwo`). Inside each folder, you'll find a `code.go` file with the Go implementation of the solution and a `code_test.go` file containing corresponding tests. The input data for each puzzle is located in the `internal/data` directory, mirroring the code structure for easy access. Each day's solution is organized into its own folder, named according to the day number (e.g., `DayOne`, `DayTwo`). Inside each folder, you'll find a `code.go` file with the Go implementation of the solution and a `code_test.go` file containing corresponding tests. The input data for each puzzle is located in the `internal/data` directory, mirroring the code structure for easy access.
To connect each solution to the CLI, the repository uses a central registry located in `internal/registry/registry.go`. This registry is essentially a map linking a day key (combining year and day number) to assign a "day runner" which is a struct that specifies the `ParseInput`, `PartOne` and `PartTwo` functions of the day's problem. Each year has its own `register.go` file to aggregate imports. To connect each solution to the CLI, the repository uses a central registry located in `internal/registry/registry.go`. This registry is essentially a map linking a day key (combining year and day number) to assign a "day runner" which is a struct that specifies the `ParseInput`, `PartOne` and `PartTwo` functions of the day's problem.
When running a solution, the CLI (`cmd/aoc/main.go`) looks up the appropriate runner from the registry based on your command-line input, uses the parsing function to load the input data, and then runs the desired part (or both parts) using the registered solution functions. When running a solution, the CLI (`cmd/aoc/main.go`) looks up the appropriate runner from the registry based on your command-line input, uses the parsing function to load the input data, and then runs the desired part (or both parts) using the registered solution functions.
### Starting a new day
```bash
make 2020D1
```
If the `ADVENTOFCODE_SESSION` environment variable is set with your Advent of Code session cookie, the input will be downloaded from the AOC website right into the corresponding `internal/data` directory, else it will create an empty `input.txt` file.
Then, it will create the following files:
```bash
internal/2020/DayOne/code.go
internal/2020/DayOne/code_test.go
```
### Handling string answers ### Handling string answers
Occasionally, a puzzle requires a string as the answer. However, my solution framework expects PartOne/PartTwo functions to return integers. Occasionally, a puzzle requires a string as the answer. However, my solution framework expects PartOne/PartTwo functions to return integers.

View File

@@ -1,44 +1,21 @@
package main package main
import ( import (
"advent-of-code/internal/registry"
"fmt" "fmt"
"log" "log"
"os" "os"
"path/filepath" "path/filepath"
"regexp" "regexp"
// 2015 "advent-of-code/internal/registry"
_ "advent-of-code/internal/2015/DayFive"
_ "advent-of-code/internal/2015/DayFour"
_ "advent-of-code/internal/2015/DayOne"
_ "advent-of-code/internal/2015/DayThree"
_ "advent-of-code/internal/2015/DayTwo"
// 2018 _ "advent-of-code/internal/2015"
_ "advent-of-code/internal/2018/DayOne" _ "advent-of-code/internal/2016"
_ "advent-of-code/internal/2018/DayTwo" _ "advent-of-code/internal/2018"
_ "advent-of-code/internal/2020"
// 2020 _ "advent-of-code/internal/2021"
_ "advent-of-code/internal/2020/DayEight" _ "advent-of-code/internal/2022"
_ "advent-of-code/internal/2020/DayFour" _ "advent-of-code/internal/2025"
_ "advent-of-code/internal/2020/DayOne"
_ "advent-of-code/internal/2020/DaySeven"
_ "advent-of-code/internal/2020/DaySix"
_ "advent-of-code/internal/2020/DayThree"
_ "advent-of-code/internal/2020/DayTwo"
// 2021
_ "advent-of-code/internal/2021/DayOne"
_ "advent-of-code/internal/2021/DayThree"
_ "advent-of-code/internal/2021/DayTwo"
// 2022
_ "advent-of-code/internal/2022/DayOne"
_ "advent-of-code/internal/2022/DayTwo"
// 2025
_ "advent-of-code/internal/2025/DayOne"
) )
func capitalize(day string) string { func capitalize(day string) string {

View File

@@ -0,0 +1,61 @@
package dayeight
import (
"os"
"strings"
"advent-of-code/internal/registry"
)
func init() {
registry.Register("2015D8", ParseInput, PartOne, PartTwo)
}
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(string(content), "\n")
}
func PartOne(data []string) int {
result := 0
for _, line := range data {
codeLength := len(line)
memoryLength := 0
for idx := 1; idx < len(line)-1; idx++ {
if line[idx] == '\\' && idx+1 < len(line)-1 {
switch line[idx+1] {
case '\\', '"':
memoryLength++
idx++
case 'x':
if idx+3 < len(line)-1 {
memoryLength++
idx += 3
}
}
} else {
memoryLength++
}
}
result += codeLength - memoryLength
}
return result
}
func PartTwo(data []string) int {
result := 0
for _, line := range data {
originalLength := len(line)
encodedLength := 2
for _, char := range line {
switch char {
case '\\', '"':
encodedLength += 2
default:
encodedLength++
}
}
result += encodedLength - originalLength
}
return result
}

View File

@@ -0,0 +1,26 @@
package dayeight
import "testing"
var testInput = []string{
`""`,
`"abc"`,
`"aaa\"aaa"`,
`"\x27"`,
}
func TestPartOne(t *testing.T) {
expected := 12
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := 19
got := PartTwo(testInput)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, expected)
}
}

View File

@@ -0,0 +1,97 @@
package dayeleven
import (
"os"
"advent-of-code/internal/registry"
)
func init() {
registry.Register("2015D11", ParseInput, PartOne, PartTwo)
}
func ParseInput(filepath string) string {
content, _ := os.ReadFile(filepath)
return string(content)
}
func findNextValidPassword(data string) string {
bytes := []byte(data)
increment := func() {
for idx := len(bytes) - 1; idx >= 0; idx-- {
if bytes[idx] == 'z' {
bytes[idx] = 'a'
} else {
bytes[idx]++
if bytes[idx] == 'i' || bytes[idx] == 'o' || bytes[idx] == 'l' {
bytes[idx]++
}
for j := idx + 1; j < len(bytes); j++ {
bytes[j] = 'a'
}
return
}
}
}
increment()
for {
forbiddenPosition := -1
for idx := range bytes {
if bytes[idx] == 'i' || bytes[idx] == 'o' || bytes[idx] == 'l' {
forbiddenPosition = idx
break
}
}
if forbiddenPosition != -1 {
bytes[forbiddenPosition]++
if bytes[forbiddenPosition] == 'i' || bytes[forbiddenPosition] == 'o' || bytes[forbiddenPosition] == 'l' {
bytes[forbiddenPosition]++
}
for j := forbiddenPosition + 1; j < len(bytes); j++ {
bytes[j] = 'a'
}
continue
}
hasStraight := false
for idx := 0; idx < len(bytes)-2; idx++ {
if bytes[idx+1] == bytes[idx]+1 && bytes[idx+2] == bytes[idx]+2 {
hasStraight = true
break
}
}
pairChars := make(map[byte]bool)
for idx := 0; idx < len(bytes)-1; idx++ {
if bytes[idx] == bytes[idx+1] {
pairChars[bytes[idx]] = true
idx++
}
}
if hasStraight && len(pairChars) >= 2 {
break
}
increment()
}
return string(bytes)
}
func PartOne(data string) int {
result := findNextValidPassword(data)
println(result)
return 0
}
func PartTwo(data string) int {
firstPassword := findNextValidPassword(data)
secondPassword := findNextValidPassword(firstPassword)
println(secondPassword)
return 0
}

View File

@@ -0,0 +1,108 @@
package dayfourteen
import (
"advent-of-code/internal/registry"
"os"
"regexp"
"strconv"
"strings"
)
var reindeerPattern = regexp.MustCompile(`\w+ can fly (\d+) km/s for (\d+) seconds, but then must rest for (\d+) seconds\.`)
const raceTime = 2503
type Reindeer struct {
Speed int
FlyTime int
RestTime int
Points int
}
func init() {
registry.Register("2015D14", ParseInput, PartOne, PartTwo)
}
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(string(content), "\n")
}
func parseReindeer(line string) Reindeer {
matches := reindeerPattern.FindStringSubmatch(line)
speed, _ := strconv.Atoi(matches[1])
flyTime, _ := strconv.Atoi(matches[2])
restTime, _ := strconv.Atoi(matches[3])
return Reindeer{Speed: speed, FlyTime: flyTime, RestTime: restTime}
}
func parseReindeers(data []string) []Reindeer {
reindeers := make([]Reindeer, 0, len(data))
for _, line := range data {
reindeers = append(reindeers, parseReindeer(line))
}
return reindeers
}
func (reindeer Reindeer) distanceAtTime(time int) int {
cycleTime := reindeer.FlyTime + reindeer.RestTime
fullCycles := time / cycleTime
distance := fullCycles * reindeer.Speed * reindeer.FlyTime
remainingTime := time % cycleTime
distance += reindeer.Speed * min(remainingTime, reindeer.FlyTime)
return distance
}
func calculateMaxDistance(data []string, time int) int {
reindeers := parseReindeers(data)
maxDistance := 0
for _, reindeer := range reindeers {
distance := reindeer.distanceAtTime(time)
if distance > maxDistance {
maxDistance = distance
}
}
return maxDistance
}
func calculateMaxPoints(data []string, time int) int {
reindeers := parseReindeers(data)
for second := 1; second <= time; second++ {
maxDistance := 0
distances := make([]int, len(reindeers))
for idx := range reindeers {
distance := reindeers[idx].distanceAtTime(second)
distances[idx] = distance
if distance > maxDistance {
maxDistance = distance
}
}
for idx := range reindeers {
if distances[idx] == maxDistance {
reindeers[idx].Points++
}
}
}
maxPoints := 0
for idx := range reindeers {
if reindeers[idx].Points > maxPoints {
maxPoints = reindeers[idx].Points
}
}
return maxPoints
}
func PartOne(data []string) int {
return calculateMaxDistance(data, raceTime)
}
func PartTwo(data []string) int {
return calculateMaxPoints(data, raceTime)
}

View File

@@ -0,0 +1,24 @@
package dayfourteen
import "testing"
var testInput = []string{
"Comet can fly 14 km/s for 10 seconds, but then must rest for 127 seconds.",
"Dancer can fly 16 km/s for 11 seconds, but then must rest for 162 seconds.",
}
func TestPartOne(t *testing.T) {
expected := 1120
got := calculateMaxDistance(testInput, 1000)
if got != expected {
t.Errorf("calculateMaxDistance(testInput, 1000) = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := 689
got := calculateMaxPoints(testInput, 1000)
if got != expected {
t.Errorf("calculateMaxPoints(testInput, 1000) = %d, want %d", got, expected)
}
}

View File

@@ -0,0 +1,106 @@
package daynine
import (
"os"
"strconv"
"strings"
"advent-of-code/internal/registry"
)
func init() {
registry.Register("2015D9", ParseInput, PartOne, PartTwo)
}
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(string(content), "\n")
}
func buildDistanceMap(data []string) map[string]map[string]int {
distances := make(map[string]map[string]int)
for _, line := range data {
parts := strings.Split(line, " = ")
distance, _ := strconv.Atoi(parts[1])
route := strings.Split(parts[0], " to ")
from, to := route[0], route[1]
if distances[from] == nil {
distances[from] = make(map[string]int)
}
if distances[to] == nil {
distances[to] = make(map[string]int)
}
distances[from][to] = distance
distances[to][from] = distance
}
return distances
}
func getCities(distances map[string]map[string]int) []string {
cities := make([]string, 0, len(distances))
for city := range distances {
cities = append(cities, city)
}
return cities
}
func generatePermutations(cities []string) [][]string {
if len(cities) == 0 {
return [][]string{{}}
}
var result [][]string
for idx, city := range cities {
remaining := make([]string, len(cities)-1)
copy(remaining[:idx], cities[:idx])
copy(remaining[idx:], cities[idx+1:])
for _, permutations := range generatePermutations(remaining) {
result = append(result, append([]string{city}, permutations...))
}
}
return result
}
func calculateRouteDistance(route []string, distances map[string]map[string]int) int {
total := 0
for idx := 0; idx < len(route)-1; idx++ {
total += distances[route[idx]][route[idx+1]]
}
return total
}
func PartOne(data []string) int {
distances := buildDistanceMap(data)
cities := getCities(distances)
permutations := generatePermutations(cities)
minimalDistance := int(^uint(0) >> 1)
for _, route := range permutations {
total := calculateRouteDistance(route, distances)
if total < minimalDistance {
minimalDistance = total
}
}
return minimalDistance
}
func PartTwo(data []string) int {
distances := buildDistanceMap(data)
cities := getCities(distances)
permutations := generatePermutations(cities)
maximalDistance := 0
for _, route := range permutations {
total := calculateRouteDistance(route, distances)
if total > maximalDistance {
maximalDistance = total
}
}
return maximalDistance
}

View File

@@ -0,0 +1,25 @@
package daynine
import "testing"
var testInput = []string{
"London to Dublin = 464",
"London to Belfast = 518",
"Dublin to Belfast = 141",
}
func TestPartOne(t *testing.T) {
expected := 605
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := 982
got := PartTwo(testInput)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, expected)
}
}

View File

@@ -0,0 +1,77 @@
package dayseven
import (
"maps"
"os"
"strconv"
"strings"
"advent-of-code/internal/registry"
)
func init() {
registry.Register("2015D7", ParseInput, PartOne, PartTwo)
}
func ParseInput(filepath string) map[string]string {
content, _ := os.ReadFile(filepath)
instructions := make(map[string]string)
for line := range strings.SplitSeq(string(content), "\n") {
if parts := strings.Split(line, " -> "); len(parts) == 2 {
instructions[parts[1]] = parts[0]
}
}
return instructions
}
func evaluateWire(wire string, instructions map[string]string) uint16 {
cache := make(map[string]uint16)
var evaluate func(string) uint16
evaluate = func(wire string) uint16 {
if value, ok := cache[wire]; ok {
return value
}
if num, err := strconv.Atoi(wire); err == nil {
return uint16(num)
}
expression, exists := instructions[wire]
if !exists {
return 0
}
parts := strings.Fields(expression)
var result uint16
switch {
case len(parts) == 1:
result = evaluate(parts[0])
case parts[0] == "NOT":
result = ^evaluate(parts[1])
default:
left, right := evaluate(parts[0]), evaluate(parts[2])
switch parts[1] {
case "AND":
result = left & right
case "OR":
result = left | right
case "LSHIFT":
result = left << right
case "RSHIFT":
result = left >> right
}
}
cache[wire] = result
return result
}
return evaluate(wire)
}
func PartOne(data map[string]string) int {
return int(evaluateWire("a", data))
}
func PartTwo(data map[string]string) int {
signalA := PartOne(data)
instructionsCopy := make(map[string]string, len(data))
maps.Copy(instructionsCopy, data)
instructionsCopy["b"] = strconv.Itoa(signalA)
return int(evaluateWire("a", instructionsCopy))
}

View File

@@ -0,0 +1,50 @@
package dayseven
import (
"testing"
)
var testInput = map[string]string{
"x": "123",
"y": "456",
"d": "x AND y",
"e": "x OR y",
"f": "x LSHIFT 2",
"g": "y RSHIFT 2",
"h": "NOT x",
"i": "NOT y",
"a": "d",
}
func TestPartOne(t *testing.T) {
expected := 72
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
instructions := map[string]string{
"x": "10",
"y": "20",
"z": "x AND y",
"b": "z",
"w": "b LSHIFT 1",
"v": "NOT b",
"u": "w OR v",
"a": "u",
}
partOneResult := PartOne(instructions)
bValue := uint16(partOneResult)
w := bValue << 1
v := ^bValue
u := w | v
expected := int(u)
got := PartTwo(instructions)
if got != expected {
t.Errorf("PartTwo() = %d, want %d (PartOne result: %d)", got, expected, partOneResult)
}
}

View File

@@ -0,0 +1,119 @@
package daysix
import (
"advent-of-code/internal/registry"
"os"
"strconv"
"strings"
)
type instruction struct {
operation string
x1, y1 int
x2, y2 int
}
func init() {
registry.Register("2015D6", ParseInput, PartOne, PartTwo)
}
func parseInstruction(line string) (instruction, bool) {
var op string
var remaining string
switch {
case strings.HasPrefix(line, "turn on "):
op = "on"
remaining = strings.TrimPrefix(line, "turn on ")
case strings.HasPrefix(line, "turn off "):
op = "off"
remaining = strings.TrimPrefix(line, "turn off ")
case strings.HasPrefix(line, "toggle "):
op = "toggle"
remaining = strings.TrimPrefix(line, "toggle ")
default:
return instruction{}, false
}
parts := strings.Split(remaining, " through ")
firstCoordinates := strings.Split(parts[0], ",")
secondCoordinates := strings.Split(parts[1], ",")
x1, _ := strconv.Atoi(firstCoordinates[0])
y1, _ := strconv.Atoi(firstCoordinates[1])
x2, _ := strconv.Atoi(secondCoordinates[0])
y2, _ := strconv.Atoi(secondCoordinates[1])
return instruction{operation: op, x1: x1, y1: y1, x2: x2, y2: y2}, true
}
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(strings.TrimSpace(string(content)), "\n")
}
func PartOne(data []string) int {
grid := make([]bool, 1000*1000)
for _, line := range data {
instruction, ok := parseInstruction(line)
if !ok {
continue
}
for y := instruction.y1; y <= instruction.y2; y++ {
for x := instruction.x1; x <= instruction.x2; x++ {
idx := y*1000 + x
switch instruction.operation {
case "on":
grid[idx] = true
case "off":
grid[idx] = false
case "toggle":
grid[idx] = !grid[idx]
}
}
}
}
count := 0
for _, lit := range grid {
if lit {
count++
}
}
return count
}
func PartTwo(data []string) int {
grid := make([]int, 1000*1000)
for _, line := range data {
instruction, ok := parseInstruction(line)
if !ok {
continue
}
for y := instruction.y1; y <= instruction.y2; y++ {
for x := instruction.x1; x <= instruction.x2; x++ {
idx := y*1000 + x
switch instruction.operation {
case "on":
grid[idx]++
case "off":
if grid[idx] > 0 {
grid[idx]--
}
case "toggle":
grid[idx] += 2
}
}
}
}
total := 0
for _, brightness := range grid {
total += brightness
}
return total
}

View File

@@ -0,0 +1,25 @@
package daysix
import "testing"
var testInput = []string{
"turn on 0,0 through 999,999",
"toggle 0,0 through 999,0",
"turn off 499,499 through 500,500",
}
func TestPartOne(t *testing.T) {
expected := 998996
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := 1001996
got := PartTwo(testInput)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, expected)
}
}

View File

@@ -0,0 +1,45 @@
package dayten
import (
"os"
"strconv"
"strings"
"advent-of-code/internal/registry"
)
func init() {
registry.Register("2015D10", ParseInput, PartOne, PartTwo)
}
func ParseInput(filepath string) string {
content, _ := os.ReadFile(filepath)
return string(content)
}
func applyLookAndSay(data string, iterations int) int {
for range iterations {
var result strings.Builder
idx := 0
for idx < len(data) {
digit := data[idx]
count := 1
for idx+count < len(data) && data[idx+count] == digit {
count++
}
result.WriteString(strconv.Itoa(count))
result.WriteByte(digit)
idx += count
}
data = result.String()
}
return len(data)
}
func PartOne(data string) int {
return applyLookAndSay(data, 40)
}
func PartTwo(data string) int {
return applyLookAndSay(data, 50)
}

View File

@@ -0,0 +1,141 @@
package daythirteen
import (
"advent-of-code/internal/registry"
"math"
"os"
"regexp"
"strconv"
"strings"
)
var inputPattern = regexp.MustCompile(`(\w+) would (gain|lose) (\d+) happiness units by sitting next to (\w+)\.?`)
func init() {
registry.Register("2015D13", ParseInput, PartOne, PartTwo)
}
func buildHappinessMap(data []string) map[string]map[string]int {
happinessMap := make(map[string]map[string]int)
for _, line := range data {
matches := inputPattern.FindStringSubmatch(line)
person := matches[1]
operation := matches[2]
value, _ := strconv.Atoi(matches[3])
neighbor := matches[4]
if happinessMap[person] == nil {
happinessMap[person] = make(map[string]int)
}
if operation == "gain" {
happinessMap[person][neighbor] = value
} else {
happinessMap[person][neighbor] = -value
}
}
return happinessMap
}
func getAllPeople(happinessMap map[string]map[string]int) []string {
people := make([]string, 0, len(happinessMap))
for person := range happinessMap {
people = append(people, person)
}
return people
}
func generatePermutations(items []string) [][]string {
if len(items) == 0 {
return [][]string{{}}
}
var result [][]string
for idx, item := range items {
remaining := make([]string, len(items)-1)
copy(remaining[:idx], items[:idx])
copy(remaining[idx:], items[idx+1:])
for _, permutation := range generatePermutations(remaining) {
result = append(result, append([]string{item}, permutation...))
}
}
return result
}
func calculateTotalHappiness(arrangement []string, happinessMap map[string]map[string]int) int {
totalHappiness := 0
arrangementLength := len(arrangement)
for idx := range arrangementLength {
currentPerson := arrangement[idx]
leftNeighbor := arrangement[(idx-1+arrangementLength)%arrangementLength]
rightNeighbor := arrangement[(idx+1)%arrangementLength]
totalHappiness += happinessMap[currentPerson][leftNeighbor]
totalHappiness += happinessMap[currentPerson][rightNeighbor]
}
return totalHappiness
}
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(string(content), "\n")
}
func PartOne(data []string) int {
happinessMap := buildHappinessMap(data)
allPeople := getAllPeople(happinessMap)
fixedPerson := allPeople[0]
remainingPeople := allPeople[1:]
permutations := generatePermutations(remainingPeople)
maxHappiness := math.MinInt
arrangement := make([]string, len(allPeople))
arrangement[0] = fixedPerson
for _, perm := range permutations {
copy(arrangement[1:], perm)
totalHappiness := calculateTotalHappiness(arrangement, happinessMap)
if totalHappiness > maxHappiness {
maxHappiness = totalHappiness
}
}
return maxHappiness
}
func PartTwo(data []string) int {
happinessMap := buildHappinessMap(data)
allPeople := getAllPeople(happinessMap)
me := "Me"
happinessMap[me] = make(map[string]int)
for _, person := range allPeople {
happinessMap[person][me] = 0
happinessMap[me][person] = 0
}
allPeople = append(allPeople, me)
fixedPerson := allPeople[0]
remainingPeople := allPeople[1:]
permutations := generatePermutations(remainingPeople)
maxTotalChange := math.MinInt
arrangement := make([]string, len(allPeople))
arrangement[0] = fixedPerson
for _, permutation := range permutations {
copy(arrangement[1:], permutation)
totalHappiness := calculateTotalHappiness(arrangement, happinessMap)
if totalHappiness > maxTotalChange {
maxTotalChange = totalHappiness
}
}
return maxTotalChange
}

View File

@@ -0,0 +1,28 @@
package daythirteen
import "testing"
var testInput = []string{
"Alice would gain 54 happiness units by sitting next to Bob",
"Alice would lose 79 happiness units by sitting next to Carol",
"Alice would lose 2 happiness units by sitting next to David",
"Bob would gain 83 happiness units by sitting next to Alice",
"Bob would lose 7 happiness units by sitting next to Carol",
"Bob would lose 63 happiness units by sitting next to David",
"Carol would lose 62 happiness units by sitting next to Alice",
"Carol would gain 60 happiness units by sitting next to Bob",
"Carol would gain 55 happiness units by sitting next to David",
"David would gain 46 happiness units by sitting next to Alice",
"David would lose 7 happiness units by sitting next to Bob",
"David would gain 41 happiness units by sitting next to Carol",
}
func TestPartOne(t *testing.T) {
expected := 330
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
// no test for part two

View File

@@ -0,0 +1,68 @@
package daytwelve
import (
"encoding/json"
"os"
"regexp"
"strconv"
"strings"
"advent-of-code/internal/registry"
)
func init() {
registry.Register("2015D12", ParseInput, PartOne, PartTwo)
}
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(string(content), "\n")
}
func PartOne(data []string) int {
re := regexp.MustCompile(`-?\d+`)
sum := 0
for _, line := range data {
matches := re.FindAllString(line, -1)
for _, match := range matches {
number, _ := strconv.Atoi(match)
sum += number
}
}
return sum
}
func PartTwo(data []string) int {
var sumNumbers func(any) int
sumNumbers = func(v any) int {
switch value := v.(type) {
case float64:
return int(value)
case []any:
sum := 0
for _, item := range value {
sum += sumNumbers(item)
}
return sum
case map[string]any:
sum := 0
for _, item := range value {
if str, ok := item.(string); ok && str == "red" {
return 0
}
sum += sumNumbers(item)
}
return sum
default:
return 0
}
}
sum := 0
for _, line := range data {
var value any
_ = json.Unmarshal([]byte(line), &value)
sum += sumNumbers(value)
}
return sum
}

View File

@@ -0,0 +1,51 @@
package daytwelve
import "testing"
func TestPartOne(t *testing.T) {
tests := []struct {
name string
input string
expected int
}{
{"[1,2,3]", "[1,2,3]", 6},
{"{\"a\":2,\"b\":4}", "{\"a\":2,\"b\":4}", 6},
{"[[[3]]]", "[[[3]]]", 3},
{"{\"a\":{\"b\":4},\"c\":-1}", "{\"a\":{\"b\":4},\"c\":-1}", 3},
{"{\"a\":[-1,1]}", "{\"a\":[-1,1]}", 0},
{"[-1,{\"a\":1}]", "[-1,{\"a\":1}]", 0},
{"[]", "[]", 0},
{"{}", "{}", 0},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := PartOne([]string{tt.input})
if got != tt.expected {
t.Errorf("PartOne() = %d, want %d", got, tt.expected)
}
})
}
}
func TestPartTwo(t *testing.T) {
tests := []struct {
name string
input string
expected int
}{
{"[1,2,3]", "[1,2,3]", 6},
{"[1,{\"c\":\"red\",\"b\":2},3]", "[1,{\"c\":\"red\",\"b\":2},3]", 4},
{"{\"d\":\"red\",\"e\":[1,2,3,4],\"f\":5}", "{\"d\":\"red\",\"e\":[1,2,3,4],\"f\":5}", 0},
{"[1,\"red\",5]", "[1,\"red\",5]", 6},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := PartTwo([]string{tt.input})
if got != tt.expected {
t.Errorf("PartTwo() = %d, want %d", got, tt.expected)
}
})
}
}

18
internal/2015/register.go Normal file
View File

@@ -0,0 +1,18 @@
package year2015
import (
_ "advent-of-code/internal/2015/DayEight"
_ "advent-of-code/internal/2015/DayEleven"
_ "advent-of-code/internal/2015/DayFive"
_ "advent-of-code/internal/2015/DayFour"
_ "advent-of-code/internal/2015/DayFourteen"
_ "advent-of-code/internal/2015/DayNine"
_ "advent-of-code/internal/2015/DayOne"
_ "advent-of-code/internal/2015/DaySeven"
_ "advent-of-code/internal/2015/DaySix"
_ "advent-of-code/internal/2015/DayTen"
_ "advent-of-code/internal/2015/DayThirteen"
_ "advent-of-code/internal/2015/DayThree"
_ "advent-of-code/internal/2015/DayTwelve"
_ "advent-of-code/internal/2015/DayTwo"
)

View File

@@ -0,0 +1,73 @@
package dayfive
import (
"advent-of-code/internal/registry"
"crypto/md5"
"fmt"
"os"
"strconv"
)
func init() {
registry.Register("2016D5", ParseInput, PartOne, PartTwo)
}
func ParseInput(filepath string) string {
content, _ := os.ReadFile(filepath)
return string(content)
}
func PartOne(data string) int {
doorIDBytes := []byte(data)
doorIDLen := len(doorIDBytes)
input := make([]byte, doorIDLen, doorIDLen+20)
copy(input, doorIDBytes)
password := make([]byte, 0, 8)
index := 0
hexChars := "0123456789abcdef"
for len(password) < 8 {
indexBytes := strconv.AppendInt(input[:doorIDLen], int64(index), 10)
hash := md5.Sum(indexBytes)
if hash[0] == 0 && hash[1] == 0 && hash[2] < 16 {
char := hexChars[hash[2]&0x0F]
password = append(password, char)
}
index++
}
fmt.Println(string(password))
return 0
}
func PartTwo(data string) int {
doorIDBytes := []byte(data)
doorIDLen := len(doorIDBytes)
input := make([]byte, doorIDLen, doorIDLen+20)
copy(input, doorIDBytes)
password := make([]byte, 8)
filled := make([]bool, 8)
filledCount := 0
index := 0
hexChars := "0123456789abcdef"
for filledCount < 8 {
indexBytes := strconv.AppendInt(input[:doorIDLen], int64(index), 10)
hash := md5.Sum(indexBytes)
if hash[0] == 0 && hash[1] == 0 && hash[2] < 16 {
position := int(hash[2] & 0x0F)
if position < 8 && !filled[position] {
char := hexChars[hash[3]>>4]
password[position] = char
filled[position] = true
filledCount++
}
}
index++
}
fmt.Println(string(password))
return 0
}

View File

@@ -0,0 +1,58 @@
package dayfive
import (
"bytes"
"os"
"strings"
"testing"
)
var testInput = "abc"
func TestPartOne(t *testing.T) {
expected := "18f47a30"
oldStdout := os.Stdout
r, w, err := os.Pipe()
if err != nil {
t.Fatalf("Failed to create pipe: %v", err)
}
os.Stdout = w
PartOne(testInput)
_ = w.Close()
os.Stdout = oldStdout
var buffer bytes.Buffer
_, _ = buffer.ReadFrom(r)
got := strings.TrimSpace(buffer.String())
if got != expected {
t.Errorf("PartOne() printed %q, want %q", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := "05ace8e3"
oldStdout := os.Stdout
r, w, err := os.Pipe()
if err != nil {
t.Fatalf("Failed to create pipe: %v", err)
}
os.Stdout = w
PartTwo(testInput)
_ = w.Close()
os.Stdout = oldStdout
var buffer bytes.Buffer
_, _ = buffer.ReadFrom(r)
got := strings.TrimSpace(buffer.String())
if got != expected {
t.Errorf("PartTwo() printed %q, want %q", got, expected)
}
}

View File

@@ -0,0 +1,119 @@
package dayfour
import (
"advent-of-code/internal/registry"
"os"
"regexp"
"sort"
"strconv"
"strings"
)
func init() {
registry.Register("2016D4", ParseInput, PartOne, PartTwo)
}
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(string(content), "\n")
}
func isValidRoom(encryptedName string, expectedChecksum string) bool {
letterFrequency := [26]int{}
for _, character := range encryptedName {
if character >= 'a' && character <= 'z' {
letterFrequency[character-'a']++
}
}
type letterFrequencyPair struct {
letter rune
count int
}
letterFrequencyPairs := make([]letterFrequencyPair, 0, 26)
for index, frequency := range letterFrequency {
if frequency > 0 {
letterFrequencyPairs = append(letterFrequencyPairs, letterFrequencyPair{
letter: rune('a' + index),
count: frequency,
})
}
}
sort.Slice(letterFrequencyPairs, func(i, j int) bool {
if letterFrequencyPairs[i].count != letterFrequencyPairs[j].count {
return letterFrequencyPairs[i].count > letterFrequencyPairs[j].count
}
return letterFrequencyPairs[i].letter < letterFrequencyPairs[j].letter
})
if len(letterFrequencyPairs) < 5 {
return false
}
for index := range 5 {
if letterFrequencyPairs[index].letter != rune(expectedChecksum[index]) {
return false
}
}
return true
}
func decryptRoomName(encryptedName string, sectorID int) string {
result := strings.Builder{}
result.Grow(len(encryptedName))
shift := sectorID % 26
for _, char := range encryptedName {
if char == '-' {
result.WriteByte(' ')
} else if char >= 'a' && char <= 'z' {
shifted := ((int(char-'a') + shift) % 26) + 'a'
result.WriteByte(byte(shifted))
}
}
return result.String()
}
var roomPattern = regexp.MustCompile(`^(.+)-(\d+)(?:\[([a-z]{5})\])?$`)
func PartOne(data []string) int {
sum := 0
for _, line := range data {
if line == "" {
continue
}
matches := roomPattern.FindStringSubmatch(line)
if len(matches) < 4 || matches[3] == "" {
continue
}
encryptedName := matches[1]
sectorIdentifier, _ := strconv.Atoi(matches[2])
actualChecksum := matches[3]
if isValidRoom(encryptedName, actualChecksum) {
sum += sectorIdentifier
}
}
return sum
}
func PartTwo(data []string) int {
for _, line := range data {
matches := roomPattern.FindStringSubmatch(line)
encryptedName := matches[1]
sectorIdentifier, _ := strconv.Atoi(matches[2])
checksum := matches[3]
if !isValidRoom(encryptedName, checksum) {
continue
}
decrypted := decryptRoomName(encryptedName, sectorIdentifier)
if strings.Contains(decrypted, "northpole") {
return sectorIdentifier
}
}
return 0
}

View File

@@ -0,0 +1,29 @@
package dayfour
import (
"testing"
)
var testInput = []string{
"aaaaa-bbb-z-y-x-123[abxyz]",
"a-b-c-d-e-f-g-h-987[abcde]",
"not-a-real-room-404[oarel]",
"totally-real-room-200[decoy]",
"ijmockjgz-storage-5[gjoac]",
}
func TestPartOne(t *testing.T) {
expected := 1519
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := 5
got := PartTwo(testInput)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, expected)
}
}

View File

@@ -0,0 +1,91 @@
package dayone
import (
"os"
"strconv"
"strings"
"advent-of-code/internal/registry"
)
func init() {
registry.Register("2016D1", ParseInput, PartOne, PartTwo)
}
type position struct {
x, y int
}
func abs(n int) int {
if n < 0 {
return -n
}
return n
}
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
parts := strings.Split(string(content), ",")
for i, p := range parts {
parts[i] = strings.TrimSpace(p)
}
return parts
}
func PartOne(data []string) int {
x, y := 0, 0
directions := [][]int{{0, 1}, {1, 0}, {0, -1}, {-1, 0}}
currentDirection := 0
for _, instruction := range data {
turn := instruction[0]
distance, _ := strconv.Atoi(instruction[1:])
switch turn {
case 'R':
currentDirection = (currentDirection + 1) % 4
case 'L':
currentDirection = (currentDirection + 3) % 4
}
x += directions[currentDirection][0] * distance
y += directions[currentDirection][1] * distance
}
return abs(x) + abs(y)
}
func PartTwo(data []string) int {
x, y := 0, 0
directions := [][]int{{0, 1}, {1, 0}, {0, -1}, {-1, 0}}
currentDirection := 0
visited := make(map[position]bool)
visited[position{0, 0}] = true
for _, instruction := range data {
turn := instruction[0]
distance, _ := strconv.Atoi(instruction[1:])
switch turn {
case 'R':
currentDirection = (currentDirection + 1) % 4
case 'L':
currentDirection = (currentDirection + 3) % 4
}
directionX := directions[currentDirection][0]
directionY := directions[currentDirection][1]
for range distance {
x += directionX
y += directionY
pos := position{x, y}
if visited[pos] {
return abs(x) + abs(y)
}
visited[pos] = true
}
}
return 0
}

View File

@@ -0,0 +1,47 @@
package dayone
import (
"testing"
)
func TestPartOne(t *testing.T) {
tests := []struct {
name string
input []string
expected int
}{
{
name: "Example 1",
input: []string{"R2", "L3"},
expected: 5,
},
{
name: "Example 2",
input: []string{"R2", "R2", "R2"},
expected: 2,
},
{
name: "Example 3",
input: []string{"R5", "L5", "R5", "R3"},
expected: 12,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := PartOne(tt.input)
if got != tt.expected {
t.Errorf("PartOne() = %d, want %d", got, tt.expected)
}
})
}
}
func TestPartTwo(t *testing.T) {
input := []string{"R8", "R4", "R4", "R8"}
expected := 4
got := PartTwo(input)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, 4)
}
}

View File

@@ -0,0 +1,49 @@
package daythree
import (
"advent-of-code/internal/registry"
"fmt"
"os"
"strings"
)
func init() {
registry.Register("2016D3", ParseInput, PartOne, PartTwo)
}
func ParseInput(filepath string) [][3]int {
content, _ := os.ReadFile(filepath)
lines := strings.Split(string(content), "\n")
var result [][3]int
for _, line := range lines {
var a, b, c int
fmt.Sscanf(line, "%d %d %d", &a, &b, &c)
result = append(result, [3]int{a, b, c})
}
return result
}
func PartOne(data [][3]int) int {
count := 0
for _, triangle := range data {
a, b, c := triangle[0], triangle[1], triangle[2]
if a+b > c && a+c > b && b+c > a {
count++
}
}
return count
}
func PartTwo(data [][3]int) int {
count := 0
for idx := 0; idx < len(data)-2; idx += 3 {
for column := range 3 {
a, b, c := data[idx][column], data[idx+1][column], data[idx+2][column]
if a+b > c && a+c > b && b+c > a {
count++
}
}
}
return count
}

View File

@@ -0,0 +1,28 @@
package daythree
import "testing"
func TestPartOne(t *testing.T) {
input := [][3]int{{5, 10, 25}}
expected := 0
got := PartOne(input)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
input := [][3]int{
{101, 301, 501},
{102, 302, 502},
{103, 303, 503},
{201, 401, 601},
{202, 402, 602},
{203, 403, 603},
}
expected := 6
got := PartTwo(input)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, expected)
}
}

View File

@@ -0,0 +1,101 @@
package daytwo
import (
"advent-of-code/internal/registry"
"fmt"
"os"
"strings"
)
func init() {
registry.Register("2016D2", ParseInput, PartOne, PartTwo)
}
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(string(content), "\n")
}
func PartOne(instructions []string) int {
row, column := 1, 1
keypad := [3][3]int{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
}
code := 0
for _, line := range instructions {
for _, move := range line {
switch move {
case 'U':
if row > 0 {
row--
}
case 'D':
if row < 2 {
row++
}
case 'L':
if column > 0 {
column--
}
case 'R':
if column < 2 {
column++
}
}
}
code = code*10 + keypad[row][column]
}
return code
}
func PartTwo(instructions []string) int {
row, column := 2, 0
keypad := [5][5]int{
{0, 0, 1, 0, 0},
{0, 2, 3, 4, 0},
{5, 6, 7, 8, 9},
{0, 10, 11, 12, 0},
{0, 0, 13, 0, 0},
}
isValidPosition := func(r, c int) bool {
return r >= 0 && r < 5 && c >= 0 && c < 5 && keypad[r][c] != 0
}
var codeBuilder strings.Builder
for _, line := range instructions {
for _, move := range line {
newRow, newColumn := row, column
switch move {
case 'U':
newRow--
case 'D':
newRow++
case 'L':
newColumn--
case 'R':
newColumn++
}
if isValidPosition(newRow, newColumn) {
row, column = newRow, newColumn
}
}
value := keypad[row][column]
if value < 10 {
codeBuilder.WriteByte(byte('0' + value))
} else {
codeBuilder.WriteByte(byte('A' + value - 10))
}
}
code := codeBuilder.String()
fmt.Println(code)
return 0
}

View File

@@ -0,0 +1,42 @@
package daytwo
import (
"bytes"
"os"
"strings"
"testing"
)
var testInput = []string{"ULL", "RRDDD", "LURDL", "UUUUD"}
func TestPartOne(t *testing.T) {
expected := 1985
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := "5DB3"
oldStdout := os.Stdout
r, w, err := os.Pipe()
if err != nil {
t.Fatalf("Failed to create pipe: %v", err)
}
os.Stdout = w
PartTwo(testInput)
_ = w.Close()
os.Stdout = oldStdout
var buffer bytes.Buffer
_, _ = buffer.ReadFrom(r)
got := strings.TrimSpace(buffer.String())
if got != expected {
t.Errorf("PartTwo() printed %q, want %q", got, expected)
}
}

View File

@@ -0,0 +1,9 @@
package year2016
import (
_ "advent-of-code/internal/2016/DayFive"
_ "advent-of-code/internal/2016/DayFour"
_ "advent-of-code/internal/2016/DayOne"
_ "advent-of-code/internal/2016/DayThree"
_ "advent-of-code/internal/2016/DayTwo"
)

View File

@@ -0,0 +1,64 @@
package dayfive
import (
"advent-of-code/internal/registry"
"os"
"unicode"
)
func init() {
registry.Register("2018D5", ParseInput, PartOne, PartTwo)
}
func ParseInput(filepath string) string {
content, _ := os.ReadFile(filepath)
return string(content)
}
func reactPolymer(data string) int {
stack := []rune{}
for _, char := range data {
if len(stack) == 0 {
stack = append(stack, char)
continue
}
top := stack[len(stack)-1]
if unicode.ToLower(top) == unicode.ToLower(char) && top != char {
stack = stack[:len(stack)-1]
} else {
stack = append(stack, char)
}
}
return len(stack)
}
func PartOne(data string) int {
return reactPolymer(data)
}
func PartTwo(data string) int {
unitTypes := make(map[rune]bool)
for _, char := range data {
unitTypes[unicode.ToLower(char)] = true
}
shortestPolymerLength := len(data)
for unitType := range unitTypes {
filtered := make([]rune, 0, len(data))
for _, char := range data {
if unicode.ToLower(char) != unitType {
filtered = append(filtered, char)
}
}
length := reactPolymer(string(filtered))
if length < shortestPolymerLength {
shortestPolymerLength = length
}
}
return shortestPolymerLength
}

View File

@@ -0,0 +1,21 @@
package dayfive
import "testing"
var testInput = "dabAcCaCBAcCcaDA"
func TestPartOne(t *testing.T) {
expected := 10
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := 4
got := PartTwo(testInput)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, expected)
}
}

View File

@@ -0,0 +1,133 @@
package dayfour
import (
"os"
"regexp"
"slices"
"strconv"
"strings"
"time"
"advent-of-code/internal/registry"
)
var (
guardRegex = regexp.MustCompile(`Guard #(\d+) begins shift`)
timeLayout = "2006-01-02 15:04"
)
func init() {
registry.Register("2018D4", ParseInput, PartOne, PartTwo)
}
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(string(content), "\n")
}
type record struct {
timestamp time.Time
action string
guardID int
}
func PartOne(data []string) int {
records := make([]record, 0, len(data))
for _, line := range data {
timeStr, action, _ := strings.Cut(line[1:], "] ")
timestamp, _ := time.Parse(timeLayout, timeStr)
guardID := -1
if matches := guardRegex.FindStringSubmatch(action); matches != nil {
guardID, _ = strconv.Atoi(matches[1])
}
records = append(records, record{timestamp, action, guardID})
}
slices.SortFunc(records, func(a, b record) int {
return a.timestamp.Compare(b.timestamp)
})
guardSleepMinutes := make(map[int]int)
guardMinuteCount := make(map[int]map[int]int)
currentGuard := -1
for i := range records {
if records[i].guardID != -1 {
currentGuard = records[i].guardID
if guardMinuteCount[currentGuard] == nil {
guardMinuteCount[currentGuard] = make(map[int]int)
}
}
if records[i].action == "falls asleep" && i+1 < len(records) {
start, end := records[i].timestamp.Minute(), records[i+1].timestamp.Minute()
guardSleepMinutes[currentGuard] += end - start
for m := start; m < end; m++ {
guardMinuteCount[currentGuard][m]++
}
}
}
maxGuard, maxMinutes := -1, 0
for id, minutes := range guardSleepMinutes {
if minutes > maxMinutes {
maxGuard, maxMinutes = id, minutes
}
}
maxMinute, maxCount := -1, 0
for m, count := range guardMinuteCount[maxGuard] {
if count > maxCount {
maxMinute, maxCount = m, count
}
}
return maxGuard * maxMinute
}
func PartTwo(data []string) int {
records := make([]record, 0, len(data))
for _, line := range data {
timeStr, action, _ := strings.Cut(line[1:], "] ")
timestamp, _ := time.Parse(timeLayout, timeStr)
guardID := -1
if matches := guardRegex.FindStringSubmatch(action); matches != nil {
guardID, _ = strconv.Atoi(matches[1])
}
records = append(records, record{timestamp, action, guardID})
}
slices.SortFunc(records, func(a, b record) int {
return a.timestamp.Compare(b.timestamp)
})
guardMinuteCount := make(map[int]map[int]int)
currentGuard := -1
for idx := range records {
if records[idx].guardID != -1 {
currentGuard = records[idx].guardID
if guardMinuteCount[currentGuard] == nil {
guardMinuteCount[currentGuard] = make(map[int]int)
}
}
if records[idx].action == "falls asleep" && idx+1 < len(records) {
start, end := records[idx].timestamp.Minute(), records[idx+1].timestamp.Minute()
for m := start; m < end; m++ {
guardMinuteCount[currentGuard][m]++
}
}
}
maxGuard, maxMinute, maxCount := -1, -1, 0
for guardID, minuteCounts := range guardMinuteCount {
for minute, count := range minuteCounts {
if count > maxCount {
maxGuard, maxMinute, maxCount = guardID, minute, count
}
}
}
return maxGuard * maxMinute
}

View File

@@ -0,0 +1,39 @@
package dayfour
import "testing"
var testInput = []string{
"[1518-11-01 00:00] Guard #10 begins shift",
"[1518-11-01 00:05] falls asleep",
"[1518-11-01 00:25] wakes up",
"[1518-11-01 00:30] falls asleep",
"[1518-11-01 00:55] wakes up",
"[1518-11-01 23:58] Guard #99 begins shift",
"[1518-11-02 00:40] falls asleep",
"[1518-11-02 00:50] wakes up",
"[1518-11-03 00:05] Guard #10 begins shift",
"[1518-11-03 00:24] falls asleep",
"[1518-11-03 00:29] wakes up",
"[1518-11-04 00:02] Guard #99 begins shift",
"[1518-11-04 00:36] falls asleep",
"[1518-11-04 00:46] wakes up",
"[1518-11-05 00:03] Guard #99 begins shift",
"[1518-11-05 00:45] falls asleep",
"[1518-11-05 00:55] wakes up",
}
func TestPartOne(t *testing.T) {
expected := 240
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := 4455
got := PartTwo(testInput)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, expected)
}
}

View File

@@ -0,0 +1,101 @@
package daythree
import (
"advent-of-code/internal/registry"
"fmt"
"os"
"regexp"
"strconv"
"strings"
)
func init() {
registry.Register("2018D3", ParseInput, PartOne, PartTwo)
}
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(string(content), "\n")
}
func PartOne(data []string) int {
coverage := make(map[string]int)
re := regexp.MustCompile(`#\d+ @ (\d+),(\d+): (\d+)x(\d+)`)
for _, line := range data {
matches := re.FindStringSubmatch(line)
left, _ := strconv.Atoi(matches[1])
top, _ := strconv.Atoi(matches[2])
width, _ := strconv.Atoi(matches[3])
height, _ := strconv.Atoi(matches[4])
for x := left; x < left+width; x++ {
for y := top; y < top+height; y++ {
key := fmt.Sprintf("%d,%d", x, y)
coverage[key]++
}
}
}
overlapCount := 0
for _, count := range coverage {
if count >= 2 {
overlapCount++
}
}
return overlapCount
}
func PartTwo(data []string) int {
coverage := make(map[string]int)
re := regexp.MustCompile(`#\d+ @ (\d+),(\d+): (\d+)x(\d+)`)
for _, line := range data {
matches := re.FindStringSubmatch(line)
left, _ := strconv.Atoi(matches[1])
top, _ := strconv.Atoi(matches[2])
width, _ := strconv.Atoi(matches[3])
height, _ := strconv.Atoi(matches[4])
for x := left; x < left+width; x++ {
for y := top; y < top+height; y++ {
key := fmt.Sprintf("%d,%d", x, y)
coverage[key]++
}
}
}
reWithID := regexp.MustCompile(`#(\d+) @ (\d+),(\d+): (\d+)x(\d+)`)
for _, line := range data {
matches := reWithID.FindStringSubmatch(line)
if len(matches) != 6 {
continue
}
id, _ := strconv.Atoi(matches[1])
left, _ := strconv.Atoi(matches[2])
top, _ := strconv.Atoi(matches[3])
width, _ := strconv.Atoi(matches[4])
height, _ := strconv.Atoi(matches[5])
overlaps := false
for x := left; x < left+width && !overlaps; x++ {
for y := top; y < top+height; y++ {
key := fmt.Sprintf("%d,%d", x, y)
if coverage[key] > 1 {
overlaps = true
break
}
}
}
if !overlaps {
return id
}
}
return 0
}

View File

@@ -0,0 +1,25 @@
package daythree
import "testing"
var testInput = []string{
"#1 @ 1,3: 4x4",
"#2 @ 3,1: 4x4",
"#3 @ 5,5: 2x2",
}
func TestPartOne(t *testing.T) {
expected := 4
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := 3
got := PartTwo(testInput)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, expected)
}
}

View File

@@ -45,11 +45,11 @@ func TestPartTwo(t *testing.T) {
PartTwo(input) PartTwo(input)
w.Close() _ = w.Close()
os.Stdout = oldStdout os.Stdout = oldStdout
var buffer bytes.Buffer var buffer bytes.Buffer
buffer.ReadFrom(r) _, _ = buffer.ReadFrom(r)
got := strings.TrimSpace(buffer.String()) got := strings.TrimSpace(buffer.String())
if got != expected { if got != expected {

View File

@@ -0,0 +1,9 @@
package year2018
import (
_ "advent-of-code/internal/2018/DayFive"
_ "advent-of-code/internal/2018/DayFour"
_ "advent-of-code/internal/2018/DayOne"
_ "advent-of-code/internal/2018/DayThree"
_ "advent-of-code/internal/2018/DayTwo"
)

View File

@@ -91,7 +91,7 @@ func PartTwo(data []string) int {
return false return false
} }
for _, c := range value[1:] { for _, c := range value[1:] {
if !((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f')) { if (c < '0' || c > '9') && (c < 'a' || c > 'f') {
return false return false
} }
} }

View File

@@ -14,11 +14,8 @@ func init() {
func ParseInput(filepath string) []string { func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath) content, _ := os.ReadFile(filepath)
lines := strings.Split(string(content), "\n") lines := strings.Split(string(content), "\n")
var data []string data := make([]string, 0, len(lines))
for _, line := range lines { return append(data, lines...)
data = append(data, line)
}
return data
} }
func PartOne(data []string) int { func PartOne(data []string) int {

12
internal/2020/register.go Normal file
View File

@@ -0,0 +1,12 @@
package year2020
import (
_ "advent-of-code/internal/2020/DayEight"
_ "advent-of-code/internal/2020/DayFive"
_ "advent-of-code/internal/2020/DayFour"
_ "advent-of-code/internal/2020/DayOne"
_ "advent-of-code/internal/2020/DaySeven"
_ "advent-of-code/internal/2020/DaySix"
_ "advent-of-code/internal/2020/DayThree"
_ "advent-of-code/internal/2020/DayTwo"
)

View File

@@ -0,0 +1,155 @@
package dayfour
import (
"os"
"strconv"
"strings"
"advent-of-code/internal/registry"
)
const boardSize = 5
func init() {
registry.Register("2021D4", ParseInput, PartOne, PartTwo)
}
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(strings.TrimSpace(string(content)), "\n")
}
type board struct {
numbers [boardSize][boardSize]int
positionMap map[int][2]int
rowCounts [boardSize]int
columnCounts [boardSize]int
marked map[int]bool
won bool
}
func newBoard() board {
return board{
positionMap: make(map[int][2]int, boardSize*boardSize),
marked: make(map[int]bool),
}
}
func parseBoards(lines []string) []board {
var boards []board
current := newBoard()
row := 0
for _, line := range lines {
line = strings.TrimSpace(line)
if line == "" {
if row == boardSize {
boards = append(boards, current)
current = newBoard()
row = 0
}
continue
}
fields := strings.Fields(line)
for column, field := range fields {
number, _ := strconv.Atoi(field)
current.numbers[row][column] = number
current.positionMap[number] = [2]int{row, column}
}
row++
}
if row == boardSize {
boards = append(boards, current)
}
return boards
}
func (b *board) mark(number int) bool {
if b.won {
return false
}
position, exists := b.positionMap[number]
if !exists {
return false
}
b.marked[number] = true
row, column := position[0], position[1]
b.rowCounts[row]++
b.columnCounts[column]++
if b.rowCounts[row] == boardSize || b.columnCounts[column] == boardSize {
b.won = true
return true
}
return false
}
func (b *board) sumUnmarked() int {
sum := 0
for row := range boardSize {
for column := range boardSize {
number := b.numbers[row][column]
if !b.marked[number] {
sum += number
}
}
}
return sum
}
func parseNumbers(line string) []int {
numbersStr := strings.Split(line, ",")
numbers := make([]int, 0, len(numbersStr))
for _, numStr := range numbersStr {
num, _ := strconv.Atoi(numStr)
numbers = append(numbers, num)
}
return numbers
}
func PartOne(data []string) int {
numbers := parseNumbers(data[0])
boards := parseBoards(data[1:])
for _, number := range numbers {
for idx := range boards {
if boards[idx].mark(number) {
return boards[idx].sumUnmarked() * number
}
}
}
return 0
}
func PartTwo(data []string) int {
numbers := parseNumbers(data[0])
boards := parseBoards(data[1:])
wonCount := 0
totalBoards := len(boards)
var lastWinner *board
var lastNumber int
for _, number := range numbers {
for idx := range boards {
if boards[idx].mark(number) {
wonCount++
lastWinner = &boards[idx]
lastNumber = number
if wonCount == totalBoards {
return lastWinner.sumUnmarked() * lastNumber
}
}
}
}
return 0
}

View File

@@ -0,0 +1,41 @@
package dayfour
import "testing"
var testInput = []string{
"7,4,9,5,11,17,23,2,0,14,21,24,10,16,13,6,15,25,12,22,18,20,8,19,3,26,1",
"",
"22 13 17 11 0",
" 8 2 23 4 24",
"21 9 14 16 7",
" 6 10 3 18 5",
" 1 12 20 15 19",
"",
" 3 15 0 2 22",
" 9 18 13 17 5",
"19 8 7 25 23",
"20 11 10 24 4",
"14 21 16 12 6",
"",
"14 21 17 24 4",
"10 16 15 9 19",
"18 8 23 26 20",
"22 11 13 6 5",
" 2 0 12 3 7",
}
func TestPartOne(t *testing.T) {
expected := 4512
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := 1924
got := PartTwo(testInput)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, expected)
}
}

View File

@@ -0,0 +1,8 @@
package year2021
import (
_ "advent-of-code/internal/2021/DayFour"
_ "advent-of-code/internal/2021/DayOne"
_ "advent-of-code/internal/2021/DayThree"
_ "advent-of-code/internal/2021/DayTwo"
)

View File

@@ -0,0 +1,54 @@
package dayfour
import (
"advent-of-code/internal/registry"
"fmt"
"os"
"strings"
)
func init() {
registry.Register("2022D4", ParseInput, PartOne, PartTwo)
}
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(string(content), "\n")
}
func PartOne(data []string) int {
count := 0
for _, line := range data {
parts := strings.Split(line, ",")
var firstRangeStart, firstRangeEnd, secondRangeStart, secondRangeEnd int
fmt.Sscanf(parts[0], "%d-%d", &firstRangeStart, &firstRangeEnd)
fmt.Sscanf(parts[1], "%d-%d", &secondRangeStart, &secondRangeEnd)
minStart := min(firstRangeStart, secondRangeStart)
maxEnd := max(firstRangeEnd, secondRangeEnd)
if (minStart == firstRangeStart && maxEnd == firstRangeEnd) || (minStart == secondRangeStart && maxEnd == secondRangeEnd) {
count++
}
}
return count
}
func PartTwo(data []string) int {
count := 0
for _, line := range data {
parts := strings.Split(line, ",")
var firstRangeStart, firstRangeEnd, secondRangeStart, secondRangeEnd int
fmt.Sscanf(parts[0], "%d-%d", &firstRangeStart, &firstRangeEnd)
fmt.Sscanf(parts[1], "%d-%d", &secondRangeStart, &secondRangeEnd)
if firstRangeStart <= secondRangeEnd && secondRangeStart <= firstRangeEnd {
count++
}
}
return count
}

View File

@@ -0,0 +1,28 @@
package dayfour
import "testing"
var testInput = []string{
"2-4,6-8",
"2-3,4-5",
"5-7,7-9",
"2-8,3-7",
"6-6,4-6",
"2-6,4-8",
}
func TestPartOne(t *testing.T) {
expected := 2
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := 4
got := PartTwo(testInput)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, expected)
}
}

View File

@@ -0,0 +1,87 @@
package daythree
import (
"advent-of-code/internal/registry"
"os"
"strings"
)
func init() {
registry.Register("2022D3", ParseInput, PartOne, PartTwo)
}
func buildItemSet(items string) map[rune]bool {
itemSet := make(map[rune]bool)
for _, item := range items {
itemSet[item] = true
}
return itemSet
}
func findCommonItem(itemSet map[rune]bool, items string) rune {
for _, item := range items {
if itemSet[item] {
return item
}
}
return 0
}
func findIntersection(itemSet map[rune]bool, items string) map[rune]bool {
intersection := make(map[rune]bool)
for _, item := range items {
if itemSet[item] {
intersection[item] = true
}
}
return intersection
}
func getItemPriority(item rune) int {
if item >= 'a' && item <= 'z' {
return int(item - 'a' + 1)
}
if item >= 'A' && item <= 'Z' {
return int(item - 'A' + 27)
}
return 0
}
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(string(content), "\n")
}
func PartOne(data []string) int {
totalPriority := 0
for _, rucksack := range data {
compartmentSize := len(rucksack) / 2
firstCompartment := rucksack[:compartmentSize]
secondCompartment := rucksack[compartmentSize:]
firstCompartmentItems := buildItemSet(firstCompartment)
commonItem := findCommonItem(firstCompartmentItems, secondCompartment)
totalPriority += getItemPriority(commonItem)
}
return totalPriority
}
func PartTwo(data []string) int {
totalPriority := 0
for i := 0; i < len(data); i += 3 {
if i+2 >= len(data) {
break
}
firstRucksack := data[i]
secondRucksack := data[i+1]
thirdRucksack := data[i+2]
firstRucksackItems := buildItemSet(firstRucksack)
commonInFirstTwo := findIntersection(firstRucksackItems, secondRucksack)
badge := findCommonItem(commonInFirstTwo, thirdRucksack)
totalPriority += getItemPriority(badge)
}
return totalPriority
}

View File

@@ -0,0 +1,28 @@
package daythree
import "testing"
var testInput = []string{
"vJrwpWtwJgWrhcsFMMfFFhFp",
"jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL",
"PmmdzqPrVvPwwTWBwg",
"wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn",
"ttgJtRGJQctTZtZT",
"CrZsJsPPZsGzwwsLwLmpwMDw",
}
func TestPartOne(t *testing.T) {
expected := 157
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := 70
got := PartTwo(testInput)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, expected)
}
}

View File

@@ -38,5 +38,25 @@ func PartOne(data []string) int {
} }
func PartTwo(data []string) int { func PartTwo(data []string) int {
return 0 totalScore := 0
for _, line := range data {
opponent := line[0]
outcome := line[2]
var me byte
switch outcome {
case 'Y':
me = 'X' + (opponent - 'A')
case 'Z':
me = 'X' + ((opponent-'A')+1)%3
default:
me = 'X' + ((opponent-'A')+2)%3
}
shapeScore := int(me - 'X' + 1)
outcomeScore := int(outcome-'X') * 3
totalScore += shapeScore + outcomeScore
}
return totalScore
} }

View File

@@ -15,3 +15,11 @@ func TestPartOne(t *testing.T) {
t.Errorf("PartOne() = %d, want %d", got, expected) t.Errorf("PartOne() = %d, want %d", got, expected)
} }
} }
func TestPartTwo(t *testing.T) {
expected := 12
got := PartTwo(testInput)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, expected)
}
}

View File

@@ -0,0 +1,8 @@
package year2022
import (
_ "advent-of-code/internal/2022/DayFour"
_ "advent-of-code/internal/2022/DayOne"
_ "advent-of-code/internal/2022/DayThree"
_ "advent-of-code/internal/2022/DayTwo"
)

View File

@@ -0,0 +1,210 @@
package dayeight
import (
"cmp"
"container/heap"
"os"
"slices"
"strconv"
"strings"
"advent-of-code/internal/registry"
)
func init() {
registry.Register("2025D8", ParseInput, PartOne, PartTwo)
}
type JunctionBox struct {
X, Y, Z int
}
type UnionFind struct {
parent []int
size []int
}
type Connection struct {
firstJunctionBox, secondJunctionBox int
squaredDistance int
}
type ConnectionHeap []Connection
func (h ConnectionHeap) Len() int { return len(h) }
func (h ConnectionHeap) Less(i, j int) bool { return h[i].squaredDistance > h[j].squaredDistance }
func (h ConnectionHeap) Swap(i, j int) { h[i], h[j] = h[j], h[i] }
func (h *ConnectionHeap) Push(x any) { *h = append(*h, x.(Connection)) }
func (h *ConnectionHeap) Pop() any {
old := *h
n := len(old)
x := old[n-1]
*h = old[0 : n-1]
return x
}
func NewUnionFind(count int) *UnionFind {
parent := make([]int, count)
size := make([]int, count)
for idx := range parent {
parent[idx] = idx
size[idx] = 1
}
return &UnionFind{parent: parent, size: size}
}
func (uf *UnionFind) Find(junctionBox int) int {
if uf.parent[junctionBox] != junctionBox {
uf.parent[junctionBox] = uf.Find(uf.parent[junctionBox])
}
return uf.parent[junctionBox]
}
func (uf *UnionFind) Union(junctionBox1, junctionBox2 int) (bool, int) {
root1 := uf.Find(junctionBox1)
root2 := uf.Find(junctionBox2)
if root1 == root2 {
return false, root1
}
if uf.size[root1] < uf.size[root2] {
root1, root2 = root2, root1
}
uf.parent[root2] = root1
uf.size[root1] += uf.size[root2]
return true, root1
}
func parseJunctionBoxes(data []string) []JunctionBox {
var junctionBoxes []JunctionBox
for _, line := range data {
parts := strings.Split(line, ",")
x, _ := strconv.Atoi(parts[0])
y, _ := strconv.Atoi(parts[1])
z, _ := strconv.Atoi(parts[2])
junctionBoxes = append(junctionBoxes, JunctionBox{X: x, Y: y, Z: z})
}
return junctionBoxes
}
func generateAllConnections(junctionBoxes []JunctionBox) []Connection {
junctionBoxCount := len(junctionBoxes)
connections := make([]Connection, 0, junctionBoxCount*(junctionBoxCount-1)/2)
for i := range junctionBoxCount {
for j := i + 1; j < junctionBoxCount; j++ {
dx := junctionBoxes[i].X - junctionBoxes[j].X
dy := junctionBoxes[i].Y - junctionBoxes[j].Y
dz := junctionBoxes[i].Z - junctionBoxes[j].Z
squaredDistance := dx*dx + dy*dy + dz*dz
connections = append(connections, Connection{
firstJunctionBox: i,
secondJunctionBox: j,
squaredDistance: squaredDistance,
})
}
}
slices.SortFunc(connections, func(a, b Connection) int {
return cmp.Compare(a.squaredDistance, b.squaredDistance)
})
return connections
}
func findKSmallestConnections(junctionBoxes []JunctionBox, k int) []Connection {
junctionBoxCount := len(junctionBoxes)
connectionHeap := make(ConnectionHeap, 0, k)
heap.Init(&connectionHeap)
for i := range junctionBoxCount {
for j := i + 1; j < junctionBoxCount; j++ {
dx := junctionBoxes[i].X - junctionBoxes[j].X
dy := junctionBoxes[i].Y - junctionBoxes[j].Y
dz := junctionBoxes[i].Z - junctionBoxes[j].Z
squaredDistance := dx*dx + dy*dy + dz*dz
connection := Connection{
firstJunctionBox: i,
secondJunctionBox: j,
squaredDistance: squaredDistance,
}
if len(connectionHeap) < k {
heap.Push(&connectionHeap, connection)
} else if connection.squaredDistance < connectionHeap[0].squaredDistance {
heap.Pop(&connectionHeap)
heap.Push(&connectionHeap, connection)
}
}
}
connections := make([]Connection, 0, len(connectionHeap))
for connectionHeap.Len() > 0 {
connections = append(connections, heap.Pop(&connectionHeap).(Connection))
}
slices.SortFunc(connections, func(a, b Connection) int {
return cmp.Compare(a.squaredDistance, b.squaredDistance)
})
return connections
}
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(string(content), "\n")
}
func PartOne(data []string) int {
junctionBoxes := parseJunctionBoxes(data)
junctionBoxCount := len(junctionBoxes)
targetPairs := 1000
if junctionBoxCount <= 20 {
targetPairs = 10
}
connections := findKSmallestConnections(junctionBoxes, targetPairs)
uf := NewUnionFind(junctionBoxCount)
for _, connection := range connections {
uf.Union(connection.firstJunctionBox, connection.secondJunctionBox)
}
circuitSizes := make(map[int]int)
for idx := range junctionBoxes {
root := uf.Find(idx)
circuitSizes[root] = uf.size[root]
}
sizes := make([]int, 0, len(circuitSizes))
for _, size := range circuitSizes {
sizes = append(sizes, size)
}
slices.Sort(sizes)
slices.Reverse(sizes)
return sizes[0] * sizes[1] * sizes[2]
}
func PartTwo(data []string) int {
junctionBoxes := parseJunctionBoxes(data)
connections := generateAllConnections(junctionBoxes)
uf := NewUnionFind(len(junctionBoxes))
var lastConnection Connection
for _, connection := range connections {
merged, root := uf.Union(connection.firstJunctionBox, connection.secondJunctionBox)
if merged {
lastConnection = connection
if uf.size[root] == len(junctionBoxes) {
break
}
}
}
return junctionBoxes[lastConnection.firstJunctionBox].X * junctionBoxes[lastConnection.secondJunctionBox].X
}

View File

@@ -0,0 +1,42 @@
package dayeight
import "testing"
var testInput = []string{
"162,817,812",
"57,618,57",
"906,360,560",
"592,479,940",
"352,342,300",
"466,668,158",
"542,29,236",
"431,825,988",
"739,650,466",
"52,470,668",
"216,146,977",
"819,987,18",
"117,168,530",
"805,96,715",
"346,949,466",
"970,615,88",
"941,993,340",
"862,61,35",
"984,92,344",
"425,690,689",
}
func TestPartOne(t *testing.T) {
expected := 40
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := 25272
got := PartTwo(testInput)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, expected)
}
}

View File

@@ -0,0 +1,125 @@
package dayfive
import (
"os"
"slices"
"sort"
"strconv"
"strings"
"advent-of-code/internal/registry"
)
type freshRange struct {
start int
end int
}
func init() {
registry.Register("2025D5", ParseInput, PartOne, PartTwo)
}
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(string(content), "\n")
}
func PartOne(data []string) int {
var freshRanges []freshRange
var ingredientIDs []int
separatorFound := false
for _, line := range data {
if line == "" {
separatorFound = true
continue
}
if !separatorFound {
startStr, endStr, _ := strings.Cut(line, "-")
start, _ := strconv.Atoi(startStr)
end, _ := strconv.Atoi(endStr)
freshRanges = append(freshRanges, freshRange{start: start, end: end})
} else {
id, _ := strconv.Atoi(line)
ingredientIDs = append(ingredientIDs, id)
}
}
slices.SortFunc(freshRanges, func(a, b freshRange) int {
switch {
case a.start < b.start:
return -1
case a.start > b.start:
return 1
default:
return 0
}
})
freshCount := 0
for _, id := range ingredientIDs {
idx := sort.Search(len(freshRanges), func(idx int) bool {
return freshRanges[idx].start > id
})
for i := idx - 1; i >= 0 && freshRanges[i].start <= id; i-- {
if id <= freshRanges[i].end {
freshCount++
break
}
}
}
return freshCount
}
func PartTwo(data []string) int {
var freshRanges []freshRange
for _, line := range data {
if line == "" {
break
}
startStr, endStr, _ := strings.Cut(line, "-")
start, _ := strconv.Atoi(startStr)
end, _ := strconv.Atoi(endStr)
freshRanges = append(freshRanges, freshRange{start: start, end: end})
}
slices.SortFunc(freshRanges, func(a, b freshRange) int {
switch {
case a.start < b.start:
return -1
case a.start > b.start:
return 1
default:
return 0
}
})
var mergedRanges []freshRange
for _, r := range freshRanges {
if len(mergedRanges) == 0 {
mergedRanges = append(mergedRanges, r)
continue
}
lastRange := &mergedRanges[len(mergedRanges)-1]
if r.start <= lastRange.end+1 {
if r.end > lastRange.end {
lastRange.end = r.end
}
} else {
mergedRanges = append(mergedRanges, r)
}
}
totalFreshIDs := 0
for _, r := range mergedRanges {
totalFreshIDs += r.end - r.start + 1
}
return totalFreshIDs
}

View File

@@ -0,0 +1,33 @@
package dayfive
import "testing"
var testInput = []string{
"3-5",
"10-14",
"16-20",
"12-18",
"",
"1",
"5",
"8",
"11",
"17",
"32",
}
func TestPartOne(t *testing.T) {
expected := 3
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := 14
got := PartTwo(testInput)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, expected)
}
}

View File

@@ -0,0 +1,104 @@
package dayfour
import (
"os"
"strings"
"advent-of-code/internal/registry"
)
type position struct {
row, column int
}
var directions = []position{
{-1, -1},
{-1, 0},
{-1, 1},
{0, -1},
{0, 1},
{1, -1},
{1, 0},
{1, 1},
}
func init() {
registry.Register("2025D4", ParseInput, PartOne, PartTwo)
}
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(string(content), "\n")
}
func PartOne(data []string) int {
isRoll := make(map[position]bool)
for row := range data {
for column := 0; column < len(data[row]); column++ {
if data[row][column] == '@' {
isRoll[position{row, column}] = true
}
}
}
accessibleRolls := 0
for pos := range isRoll {
adjacentRolls := 0
for _, direction := range directions {
neighbor := position{pos.row + direction.row, pos.column + direction.column}
if isRoll[neighbor] {
adjacentRolls++
}
}
if adjacentRolls < 4 {
accessibleRolls++
}
}
return accessibleRolls
}
func PartTwo(data []string) int {
isRoll := make(map[position]bool)
for row := range data {
for column := 0; column < len(data[row]); column++ {
if data[row][column] == '@' {
isRoll[position{row, column}] = true
}
}
}
totalRemoved := 0
for {
accessibleRolls := make(map[position]bool)
for pos := range isRoll {
adjacentRolls := 0
for _, direction := range directions {
neighbor := position{pos.row + direction.row, pos.column + direction.column}
if isRoll[neighbor] {
adjacentRolls++
}
}
if adjacentRolls < 4 {
accessibleRolls[pos] = true
}
}
if len(accessibleRolls) == 0 {
break
}
for pos := range accessibleRolls {
delete(isRoll, pos)
totalRemoved++
}
}
return totalRemoved
}

View File

@@ -0,0 +1,32 @@
package dayfour
import "testing"
var testInput = []string{
"..@@.@@@@.",
"@@@.@.@.@@",
"@@@@@.@.@@",
"@.@@@@..@.",
"@@.@@@@.@@",
".@@@@@@@.@",
".@.@.@.@@@",
"@.@@@.@@@@",
".@@@@@@@@.",
"@.@.@@@.@.",
}
func TestPartOne(t *testing.T) {
expected := 13
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := 43
got := PartTwo(testInput)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, expected)
}
}

View File

@@ -0,0 +1,234 @@
package daynine
import (
"advent-of-code/internal/registry"
"os"
"slices"
"strconv"
"strings"
)
func init() {
registry.Register("2025D9", ParseInput, PartOne, PartTwo)
}
type Point struct {
x, y int
}
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(string(content), "\n")
}
func parsePoints(data []string) []Point {
points := make([]Point, 0, len(data))
for _, line := range data {
parts := strings.Split(line, ",")
x, _ := strconv.Atoi(parts[0])
y, _ := strconv.Atoi(parts[1])
points = append(points, Point{x: x, y: y})
}
return points
}
func abs(x int) int {
if x < 0 {
return -x
}
return x
}
func minMax(a, b int) (int, int) {
if a > b {
return b, a
}
return a, b
}
func compressCoordinates(points []Point) ([]int, []int, map[int]int, map[int]int) {
xs := make(map[int]bool)
ys := make(map[int]bool)
for _, point := range points {
xs[point.x] = true
ys[point.y] = true
}
sortedX := make([]int, 0, len(xs))
sortedY := make([]int, 0, len(ys))
for x := range xs {
sortedX = append(sortedX, x)
}
for y := range ys {
sortedY = append(sortedY, y)
}
slices.Sort(sortedX)
slices.Sort(sortedY)
mapX := make(map[int]int, len(sortedX))
mapY := make(map[int]int, len(sortedY))
for idx, x := range sortedX {
mapX[x] = 2 * idx
}
for idx, y := range sortedY {
mapY[y] = 2 * idx
}
return sortedX, sortedY, mapX, mapY
}
func drawBoundary(grid [][]bool, points []Point, mapX, mapY map[int]int) {
for idx := range points {
current, next := points[idx], points[(idx+1)%len(points)]
cx1, cy1 := mapX[current.x], mapY[current.y]
cx2, cy2 := mapX[next.x], mapY[next.y]
if cx1 == cx2 {
minY, maxY := minMax(cy1, cy2)
for y := minY; y <= maxY; y++ {
grid[cx1][y] = true
}
} else {
minX, maxX := minMax(cx1, cx2)
for x := minX; x <= maxX; x++ {
grid[x][cy1] = true
}
}
}
}
func scanLineFill(grid [][]bool, points []Point, mapX, mapY map[int]int, _, height int) {
type edge struct {
x, yMin, yMax int
}
edges := make([]edge, 0, len(points))
for idx := range points {
current, next := points[idx], points[(idx+1)%len(points)]
if current.x == next.x {
minY, maxY := minMax(mapY[current.y], mapY[next.y])
edges = append(edges, edge{mapX[current.x], minY, maxY})
}
}
for y := range height {
crossings := make([]int, 0, len(edges))
for _, e := range edges {
if e.yMin <= y && y < e.yMax {
crossings = append(crossings, e.x)
}
}
slices.Sort(crossings)
for i := 0; i < len(crossings)-1; i += 2 {
for x := crossings[i]; x <= crossings[i+1]; x++ {
grid[x][y] = true
}
}
}
}
func forceEmptyGaps(grid [][]bool, sortedX, sortedY []int, width, height int) {
for idx := 0; idx < len(sortedX)-1; idx++ {
if sortedX[idx+1] == sortedX[idx]+1 {
cx := 2*idx + 1
for y := range height {
grid[cx][y] = true
}
}
}
for idx := 0; idx < len(sortedY)-1; idx++ {
if sortedY[idx+1] == sortedY[idx]+1 {
cy := 2*idx + 1
for x := range width {
grid[x][cy] = true
}
}
}
}
func buildPrefixSum(grid [][]bool, width, height int) [][]int {
sum := make([][]int, width+1)
for idx := range sum {
sum[idx] = make([]int, height+1)
}
for i := range width {
for j := range height {
value := 0
if grid[i][j] {
value = 1
}
sum[i+1][j+1] = value + sum[i][j+1] + sum[i+1][j] - sum[i][j]
}
}
return sum
}
func getSum(sum [][]int, x1, y1, x2, y2 int) int {
return sum[x2+1][y2+1] - sum[x1][y2+1] - sum[x2+1][y1] + sum[x1][y1]
}
func PartOne(data []string) int {
points := parsePoints(data)
maxArea := 0
for i := range points {
for j := i + 1; j < len(points); j++ {
dx := abs(points[i].x - points[j].x)
dy := abs(points[i].y - points[j].y)
if area := (dx + 1) * (dy + 1); area > maxArea {
maxArea = area
}
}
}
return maxArea
}
func PartTwo(data []string) int {
points := parsePoints(data)
sortedX, sortedY, mapX, mapY := compressCoordinates(points)
width, height := 2*len(sortedX), 2*len(sortedY)
grid := make([][]bool, width)
for idx := range grid {
grid[idx] = make([]bool, height)
}
drawBoundary(grid, points, mapX, mapY)
scanLineFill(grid, points, mapX, mapY, width, height)
forceEmptyGaps(grid, sortedX, sortedY, width, height)
sum := buildPrefixSum(grid, width, height)
compressedPoints := make([]Point, len(points))
for idx, point := range points {
compressedPoints[idx] = Point{mapX[point.x], mapY[point.y]}
}
maxArea := 0
for i := range points {
for j := i + 1; j < len(points); j++ {
p1, p2 := points[i], points[j]
dx := abs(p1.x - p2.x)
dy := abs(p1.y - p2.y)
if dx == 0 || dy == 0 {
continue
}
area := (dx + 1) * (dy + 1)
if area <= maxArea {
continue
}
cx1, cy1 := compressedPoints[i].x, compressedPoints[i].y
cx2, cy2 := compressedPoints[j].x, compressedPoints[j].y
minCX, maxCX := minMax(cx1, cx2)
minCY, maxCY := minMax(cy1, cy2)
totalCells := (maxCX - minCX + 1) * (maxCY - minCY + 1)
if getSum(sum, minCX, minCY, maxCX, maxCY) == totalCells {
maxArea = area
}
}
}
return maxArea
}

View File

@@ -0,0 +1,30 @@
package daynine
import "testing"
var testInput = []string{
"7,1",
"11,1",
"11,7",
"9,7",
"9,5",
"2,5",
"2,3",
"7,3",
}
func TestPartOne(t *testing.T) {
expected := 50
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := 24
got := PartTwo(testInput)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, expected)
}
}

View File

@@ -0,0 +1,106 @@
package dayseven
import (
"os"
"strings"
"advent-of-code/internal/registry"
)
func init() {
registry.Register("2025D7", ParseInput, PartOne, PartTwo)
}
type Position struct {
row int
column int
}
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(string(content), "\n")
}
func findStart(data []string) (int, int) {
for row := range data {
if column := strings.IndexByte(data[row], 'S'); column != -1 {
return row, column
}
}
return -1, -1
}
func PartOne(data []string) int {
rows, columns := len(data), len(data[0])
startRow, startColumn := findStart(data)
queue := []Position{{startRow, startColumn}}
activated := make(map[Position]bool)
splits := 0
for len(queue) > 0 {
current := queue[0]
queue = queue[1:]
row := current.row + 1
column := current.column
for row < rows && data[row][column] != '^' {
row++
}
if row < rows {
splitPosition := Position{row, column}
if !activated[splitPosition] {
activated[splitPosition] = true
splits++
if column > 0 {
queue = append(queue, Position{row, column - 1})
}
if column < columns-1 {
queue = append(queue, Position{row, column + 1})
}
}
}
}
return splits
}
func PartTwo(input []string) int {
rows, columns := len(input), len(input[0])
startRow, startColumn := findStart(input)
cache := make(map[Position]int)
var countTimelines func(row, column int) int
countTimelines = func(row, column int) int {
position := Position{row, column}
if count, exists := cache[position]; exists {
return count
}
r, c := row+1, column
for r < rows && input[r][c] != '^' {
r++
}
if r == rows {
return 1
}
total := 0
if c > 0 {
total += countTimelines(r, c-1)
}
if c < columns-1 {
total += countTimelines(r, c+1)
}
cache[position] = total
return total
}
return countTimelines(startRow, startColumn)
}

View File

@@ -0,0 +1,38 @@
package dayseven
import "testing"
var testInput = []string{
".......S.......",
"...............",
".......^.......",
"...............",
"......^.^......",
"...............",
".....^.^.^.....",
"...............",
"....^.^...^....",
"...............",
"...^.^...^.^...",
"...............",
"..^...^.....^..",
"...............",
".^.^.^.^.^...^.",
"...............",
}
func TestPartOne(t *testing.T) {
expected := 21
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := 40
got := PartTwo(testInput)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, expected)
}
}

View File

@@ -0,0 +1,174 @@
package daysix
import (
"os"
"strconv"
"strings"
"advent-of-code/internal/registry"
)
func init() {
registry.Register("2025D6", ParseInput, PartOne, PartTwo)
}
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(strings.TrimRight(string(content), "\n"), "\n")
}
func transpose(lines []string) []string {
maxWidth := 0
for _, line := range lines {
if len(line) > maxWidth {
maxWidth = len(line)
}
}
transposed := make([]string, maxWidth)
for column := 0; column < maxWidth; column++ {
var builder strings.Builder
for _, line := range lines {
if column < len(line) {
builder.WriteByte(line[column])
} else {
builder.WriteByte(' ')
}
}
transposed[column] = builder.String()
}
return transposed
}
func isSpaceColumn(column string) bool {
return strings.TrimSpace(column) == ""
}
func extractRowFromColumns(transposed []string, row, startColumn, endColumn int) string {
var builder strings.Builder
for column := startColumn; column <= endColumn && column < len(transposed); column++ {
if row < len(transposed[column]) {
builder.WriteByte(transposed[column][row])
} else {
builder.WriteByte(' ')
}
}
return builder.String()
}
func extractNumbers(transposed []string, startColumn, endColumn, operationRow int) []int {
numbers := make([]int, 0)
for row := range operationRow {
rowStr := extractRowFromColumns(transposed, row, startColumn, endColumn)
trimmed := strings.TrimSpace(rowStr)
fields := strings.FieldsSeq(trimmed)
for field := range fields {
if number, err := strconv.Atoi(field); err == nil {
numbers = append(numbers, number)
}
}
}
return numbers
}
func extractNumberFromColumn(column string, operationRow int) (int, bool) {
numberStr := strings.Map(func(r rune) rune {
if r >= '0' && r <= '9' {
return r
}
return -1
}, column[:min(operationRow, len(column))])
number, _ := strconv.Atoi(numberStr)
return number, true
}
func extractOperation(segment string) byte {
if idx := strings.IndexAny(segment, "+*"); idx != -1 {
return segment[idx]
}
return 0
}
func applyOperation(numbers []int, operation byte) int {
result := numbers[0]
if operation == '+' {
for idx := 1; idx < len(numbers); idx++ {
result += numbers[idx]
}
} else {
for idx := 1; idx < len(numbers); idx++ {
result *= numbers[idx]
}
}
return result
}
func PartOne(data []string) int {
operationRow := len(data) - 1
transposed := transpose(data)
total := 0
column := 0
for column < len(transposed) {
if isSpaceColumn(transposed[column]) {
column++
continue
}
startColumn := column
for column < len(transposed) && !isSpaceColumn(transposed[column]) {
column++
}
endColumn := column - 1
numbers := extractNumbers(transposed, startColumn, endColumn, operationRow)
operationRowStr := extractRowFromColumns(transposed, operationRow, startColumn, endColumn)
operation := extractOperation(operationRowStr)
if len(numbers) > 0 && operation != 0 {
result := applyOperation(numbers, operation)
total += result
}
}
return total
}
func PartTwo(data []string) int {
operationRow := len(data) - 1
transposed := transpose(data)
total := 0
column := len(transposed) - 1
for column >= 0 {
if isSpaceColumn(transposed[column]) {
column--
continue
}
endColumn := column
for column >= 0 && !isSpaceColumn(transposed[column]) {
column--
}
startColumn := column + 1
numbers := make([]int, 0)
for column := startColumn; column <= endColumn && column < len(transposed); column++ {
if number, ok := extractNumberFromColumn(transposed[column], operationRow); ok {
numbers = append(numbers, number)
}
}
operationRowStr := extractRowFromColumns(transposed, operationRow, startColumn, endColumn)
operation := extractOperation(operationRowStr)
if len(numbers) > 0 && operation != 0 {
result := applyOperation(numbers, operation)
total += result
}
}
return total
}

View File

@@ -0,0 +1,26 @@
package daysix
import "testing"
var testInput = []string{
"123 328 51 64 ",
" 45 64 387 23 ",
" 6 98 215 314",
"* + * + ",
}
func TestPartOne(t *testing.T) {
expected := 4277556
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := 3263827
got := PartTwo(testInput)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, expected)
}
}

View File

@@ -0,0 +1,91 @@
package dayten
import (
"advent-of-code/internal/registry"
"os"
"regexp"
"strconv"
"strings"
)
func init() {
registry.Register("2025D10", ParseInput, PartOne, PartTwo)
}
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(string(content), "\n")
}
func parseMachine(line string) ([]bool, [][]int) {
bracketRegex := regexp.MustCompile(`\[([.#]+)\]`)
parenthesisRegex := regexp.MustCompile(`\(([^)]+)\)`)
bracketMatch := bracketRegex.FindStringSubmatch(line)
targetString := bracketMatch[1]
target := make([]bool, len(targetString))
for idx, char := range targetString {
target[idx] = char == '#'
}
parenthesisMatches := parenthesisRegex.FindAllStringSubmatch(line, -1)
buttons := make([][]int, 0, len(parenthesisMatches))
for _, match := range parenthesisMatches {
buttonString := match[1]
parts := strings.Split(buttonString, ",")
button := make([]int, 0, len(parts))
for _, part := range parts {
light, _ := strconv.Atoi(part)
button = append(button, light)
}
buttons = append(buttons, button)
}
return target, buttons
}
func PartOne(data []string) int {
total := 0
for _, line := range data {
target, buttons := parseMachine(line)
numberOfLights := len(target)
numberOfButtons := len(buttons)
minimumPresses := numberOfButtons + 1
for mask := 0; mask < (1 << numberOfButtons); mask++ {
lights := make([]bool, numberOfLights)
presses := 0
for buttonIdx := range numberOfButtons {
if mask&(1<<buttonIdx) != 0 {
presses++
for _, light := range buttons[buttonIdx] {
if light < numberOfLights {
lights[light] = !lights[light]
}
}
}
}
matches := true
for idx := range numberOfLights {
if lights[idx] != target[idx] {
matches = false
break
}
}
if matches && presses < minimumPresses {
minimumPresses = presses
}
}
total += minimumPresses
}
return total
}
func PartTwo(data []string) int {
return 0
}

View File

@@ -0,0 +1,25 @@
package dayten
import "testing"
var testInput = []string{
"[.##.] (3) (1,3) (2) (2,3) (0,2) (0,1) {3,5,4,7}",
"[...#.] (0,2,3,4) (2,3) (0,4) (0,1,2) (1,2,3,4) {7,5,12,7,2}",
"[.###.#] (0,1,2,3,4) (0,3,4) (0,1,2,4,5) (1,2) {10,11,11,5,10,5}",
}
func TestPartOne(t *testing.T) {
expected := 7
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := 33
got := PartTwo(testInput)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, expected)
}
}

View File

@@ -0,0 +1,72 @@
package daythree
import (
"os"
"strings"
"advent-of-code/internal/registry"
)
func init() {
registry.Register("2025D3", ParseInput, PartOne, PartTwo)
}
func ParseInput(filepath string) [][]int {
content, _ := os.ReadFile(filepath)
lines := strings.Split(string(content), "\n")
var data [][]int
for _, line := range lines {
var bank []int
for _, char := range line {
bank = append(bank, int(char-'0'))
}
data = append(data, bank)
}
return data
}
func PartOne(data [][]int) int {
total := 0
for _, bank := range data {
maxAfter := make([]int, len(bank))
for idx := len(bank) - 2; idx >= 0; idx-- {
maxAfter[idx] = max(maxAfter[idx+1], bank[idx+1])
}
maxJoltage := 0
for idx := 0; idx < len(bank)-1; idx++ {
joltage := bank[idx]*10 + maxAfter[idx]
maxJoltage = max(maxJoltage, joltage)
}
total += maxJoltage
}
return total
}
func PartTwo(data [][]int) int {
total := 0
for _, bank := range data {
var joltage int
start := 0
for position := range 12 {
remaining := 12 - position - 1
maxIdx := start
maxValue := bank[start]
for idx := start; idx < len(bank)-remaining; idx++ {
if bank[idx] > maxValue {
maxValue = bank[idx]
maxIdx = idx
}
}
joltage = joltage*10 + maxValue
start = maxIdx + 1
}
total += joltage
}
return total
}

View File

@@ -0,0 +1,26 @@
package daythree
import "testing"
var testInput = [][]int{
{9, 8, 7, 6, 5, 4, 3, 2, 1, 1, 1, 1, 1, 1, 1},
{8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9},
{2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 7, 8},
{8, 1, 8, 1, 8, 1, 9, 1, 1, 1, 1, 2, 1, 1, 1},
}
func TestPartOne(t *testing.T) {
expected := 357
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := 3121910778619
got := PartTwo(testInput)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, expected)
}
}

View File

@@ -0,0 +1,87 @@
package daytwo
import (
"os"
"strconv"
"strings"
"advent-of-code/internal/registry"
)
func init() {
registry.Register("2025D2", ParseInput, PartOne, PartTwo)
}
func ParseInput(filepath string) []string {
content, _ := os.ReadFile(filepath)
return strings.Split(strings.TrimSpace(string(content)), "\n")
}
func PartOne(data []string) int {
sum := 0
for _, line := range data {
for newRange := range strings.SplitSeq(line, ",") {
parts := strings.Split(newRange, "-")
start, _ := strconv.Atoi(parts[0])
end, _ := strconv.Atoi(parts[1])
for id := start; id <= end; id++ {
sID := strconv.Itoa(id)
if len(sID)%2 == 0 {
half := len(sID) / 2
if sID[:half] == sID[half:] {
sum += id
}
}
}
}
}
return sum
}
func PartTwo(data []string) int {
totalSum := 0
for _, line := range data {
for rangeSpec := range strings.SplitSeq(line, ",") {
rangeStartStr, rangeEndStr, _ := strings.Cut(rangeSpec, "-")
rangeStart, _ := strconv.Atoi(rangeStartStr)
rangeEnd, _ := strconv.Atoi(rangeEndStr)
seenNumbers := make(map[int]bool)
maxDigits := len(rangeEndStr)
var generatePatterns func(string, int, int)
generatePatterns = func(currentPattern string, targetPatternLength, currentDepth int) {
if currentDepth == targetPatternLength {
repeated := currentPattern + currentPattern
for len(repeated) <= maxDigits {
number, err := strconv.Atoi(repeated)
if err != nil || number > rangeEnd {
break
}
if number >= rangeStart && !seenNumbers[number] {
totalSum += number
seenNumbers[number] = true
}
repeated += currentPattern
}
return
}
minDigit := 0
if currentDepth == 0 {
minDigit = 1
}
for digit := minDigit; digit <= 9; digit++ {
extendedPattern := currentPattern + strconv.Itoa(digit)
generatePatterns(extendedPattern, targetPatternLength, currentDepth+1)
}
}
for patternLength := 1; patternLength <= maxDigits/2; patternLength++ {
generatePatterns("", patternLength, 0)
}
}
}
return totalSum
}

View File

@@ -0,0 +1,33 @@
package daytwo
import "testing"
var testInput = []string{
"11-22",
"95-115",
"998-1012",
"1188511880-1188511890",
"222220-222224",
"1698522-1698528",
"446443-446449",
"38593856-38593862",
"565653-565659",
"824824821-824824827",
"2121212118-2121212124",
}
func TestPartOne(t *testing.T) {
expected := 1227775554
got := PartOne(testInput)
if got != expected {
t.Errorf("PartOne() = %d, want %d", got, expected)
}
}
func TestPartTwo(t *testing.T) {
expected := 4174379265
got := PartTwo(testInput)
if got != expected {
t.Errorf("PartTwo() = %d, want %d", got, expected)
}
}

14
internal/2025/register.go Normal file
View File

@@ -0,0 +1,14 @@
package year2025
import (
_ "advent-of-code/internal/2025/DayEight"
_ "advent-of-code/internal/2025/DayFive"
_ "advent-of-code/internal/2025/DayFour"
_ "advent-of-code/internal/2025/DayNine"
_ "advent-of-code/internal/2025/DayOne"
_ "advent-of-code/internal/2025/DaySeven"
_ "advent-of-code/internal/2025/DaySix"
_ "advent-of-code/internal/2025/DayTen"
_ "advent-of-code/internal/2025/DayThree"
_ "advent-of-code/internal/2025/DayTwo"
)

View File

@@ -0,0 +1,300 @@
"\xa8br\x8bjr\""
"nq"
"zjrfcpbktjmrzgsz\xcaqsc\x03n\"huqab"
"daz\\zyyxddpwk"
"draes\xa2n\\g\x27ek\"lj\"\\viqych"
"nnx\\krnrfomdnt\x2flbl\xd2xpo\"cp\"k"
"kwdaapalq"
"u\"ptk"
"ckhorczuiudfjmmcc\\u\"wozqxibsfjma"
"ydctdrxat\"pd\"lwi\"bjesevfw\xe8"
"v\"\xa8rrzep\"\"r"
"nbydghkfvmq\\\xe0\"lfsrsvlsj\"i\x61liif"
"jsas\"u"
"odipikxlo"
"\"rnubsgwltqkbsu\"pcpcs"
"eitk\\f\\mhcqqoym\\ji"
"vnedc"
"\"lhcaurdqzyjyu"
"haxzsa\"zcn\"y\"foclgtjfcnv\"m\x68krc"
"\"eoeggg\"tmiydvcay\"vfavc"
"snqvyqoncwxcvwbdktoywch"
"rnfgjsyr\xd5wacy"
"ik\"hebrpvsts"
"txw"
"\x15pxtdkogd\"urbm\"gevhh\"nxr\x3erxtk"
"cetqtcy"
"inleep\\mgl"
"uflwbxvww\x2cxzezqnaply\"yh\"qlllzk"
"eepak\"xqtedzt"
"na\x61qzfieafvyrsnwkssznohjmc"
"yceaonylz\xc1\\jrlbbkzwsidfi"
"ybqafngkcqpbp"
"\xaft"
"yidjpaobqydso"
"ju\\ldxig\\lrdrhjcmm\x77rc"
"tylacqeslnwj\x48ds\"tjxa"
"efbfm"
"\\fxkgoprgdcjgyajykg\\dtbrz"
"eujvva"
"h\x7acwfpikme\\vwthyvrqdnx\""
"rbpbrxm\\\"\"\"voxx"
"ykiw\"tkb\\lforu\"rsf\\tf\"x\"rqti"
"e\\wh\x77aqeugiq\\ihhfqfuaij"
"g\"t\\o"
"nxzo\"hf\\xp"
"dxiaqfo\xea"
"kali\\zczhiqkqzybjj\"fgdjnik"
"zdkgrqmdv"
"bimxim\xb6lrwsaj\"ui\"a"
"\"rrznitibgx\\olpsjmjqzctxaubdifsq"
"zb\"khzixaacmhuzmlymoformipdzml"
"qfwi"
"hjwsxfpphttjy\"\"zixais\xbblgnqfto"
"puj\\qmyu\"nqgaqfthbwjokbmrpbhpi"
"cyxdpkh\\\""
"q"
"m"
"tbxdzzllarlo"
"gbtys"
"gytilk\\vlqxvcuutjunrqc"
"uugkvcuzan\\eyhb"
"yaxr\"genlbgw\"\\uc"
"nrgecjeip\\sjdvgqaqxwsqactopu"
"pu\"r\"txpyrkfny\\zmwfneyvwmnkkdipv"
"jm\xa3bhwvq"
"qxojmnml\"w\x9airr"
"xbzsuihs\x4dcedy\xaclrhgii\\\""
"drgjirusrekrwmvxllwdm"
"\x28hfxnfpycmpnkku\"csuf\xaarxlqyg\"x"
"\"zvz\\rmg\"\\sxxoifffyqfyn\"iq\"ps"
"\"z"
"zbwkmk\"sgzos\x93gtc\""
"bvm\x28aa\\\\\"pywuhaniox\\z\\hbp\xd7mold"
"aszgvsyna"
"qf\"vdwuss"
"lnohni\"qwiacjsjegstlbfq\\kyjhyd"
"c\\naawulxlqplnacvytspry\xf5ytxxqq"
"razwqmsqgbaaxcd\\f"
"radggyrjrg\"zx"
"\"pu\x11t\\ajcjuieinlkvya"
"veggiskh"
"eglfhjxiet\"kouqfskwsy\"hpthsldel"
"mv\xc1b\"f\\shrssnjwcpmurepdxdlcj"
"dlayjd\"suvzotgdtc"
"\xa9pvxeopn"
"lpplsaxy\"oiwaq"
"hqwh\\lusv"
"hykykwlx\"\xa5atkgh\\d\x63dff"
"vfktanpjy\"xxetc"
"dnhwkgjnsmsswfuelvihvjl\"jtf"
"x\"dwvzra\"nbbsewftehczgbvfzd\"rau"
"csfi\"mzejnjqkqupwadrgti\"von"
"xckf\xf7xsm\\pgvlpetjndpyblais\\z"
"yecy\x6fuj\x58bwpgeuiw\"mdu"
"fgb"
"c\\lx\x3efthet\xfdelgvwvpem"
"kgyrmarvfwjinlowt"
"yzte"
"vc\"z"
"sxevqfzmmdwsuu\""
"fxbaercmcy\xb6md"
"f"
"m\x44gqbcppho\\b"
"gtafr\x57m\x11jy\"\"erwmmpiwjkbckuw"
"ufdjt\"kssprzxqixzxmq\x58q"
"yzbyo\"lfdbyaxexyfbnyv\\\xe8xmre"
"u\x43ntr\\\\byyfjr\"iveujvnwsqbnpuvrta"
"us\xf6bai"
"c\\edh"
"tzckolphexfq\\\x23\xfbdqv\\\"m"
"yjafhbvhhj\x1b\"bplb"
"\"o"
"rubahvmp\""
"qmkukrnrmqumh"
"wdpxyvyidhwjf\\nabbijwhr\xc5bksvy\"p"
"u\"prlpg\""
"nsvcquyxbwilsxxemf\xd9leq"
"y\xcetxuafl"
"it"
"kwdlysf\\xjpelae"
"viwh\x58wpjjlnvryuti\x2chngrx\\nhtkui"
"vhn\x9ehre\xc3ncsqbozms\"nl"
"ytc\xa3mgeeogjcqavmmmd"
"xzlexlitseozoxtpzzutfq"
"cish\x07lmovj"
"ekbflwqzaiivdr\"pq\\azrfbntqwkn"
"uc\"xdbegmlmhksofzohavtrnxf"
"xfdnrdqdrcjzbe"
"ndg\"ckgrpisib\"rg\"p\\lmpfzlssnvk"
"witfjwpbyyzlop"
"zonlww\"emrbcsgdtrg\"rjzy\x64zqntlw"
"dvgb\"zn\\vrbzema\"ckmd"
"\\vdlmxhlvldk\"pmzazeip"
"\"\"r"
"rsntinv"
"iy"
"lr\x20efh"
"csgexlb\"zqdavlxxhtdbh\"\"\x0fkpvhiphm"
"ouwhp\"ogbft"
"cm\\ckltng\"dw\x8brf\xf0eppgckd"
"zmnlsgalhpkejsizfsbtnfliu\"nhc"
"pnrkaayqvwpdjbhcrbb\"yfeq\"aq"
"ozh\\hoxow\x2csrtr\\r\""
"bqxabj\"u\\s"
"cpsjti\"gy"
"aa\"p\\nki\\ajijkqev"
"q\"\"lfdentjgd\\"
"bmokvpoebutfki"
"pielvcbne\xf6efvzxn"
"kx"
"zlgmqagcrbhrwtwtmmg"
"aiyhmntcqjbpv\xb5hhswxbryoedvos"
"tdpaxrb"
"fu\"\x7dttkyvhrlwko"
"oirc\\\"cqlnqffjqt\\k"
"edxlia\\tcyby"
"jpeybgwfayerfrfbvfog\"ol"
"ysr"
"bzwzilgwfugjk"
"tlcc\x75nukvwjgftetjcs\xaecwc"
"dsqssa\"vzrf\"sewbp\\ahhlmhbeihlh"
"qtgmjck\"n\"guki\"gmdivwqxismqj"
"\"f"
"wuorvlovucngbzdszqpikyk"
"dfrdsacoukmgvhbq\"\"iwto"
"\"ey\"ch\\wcgioe\\\"ouvligmsw"
"ciqlszzgs"
"\\tzyrkaoi\"sopjaq"
"lmtnv"
"ar\"fqoroigiertjjlm\"ymgi\\kkjewsxd"
"wehcimlvudpxtamdn\"rwy"
"hr\"zvrwthr\"vruzqfrldn\"b"
"sggekodkiwvym\"mhsco"
"ltlkfbrrdvk\\"
"uut\"sfjnz\"\\ef"
"hxilg\\"
"zsredsiwlzrpedibn"
"vtfi"
"\\h"
"qekfrc\xf6wduodbwrguqcng\\n"
"\"lljlfdrxftwidn\\pkv\xd9ij"
"mrvgqynpehkliuijlpp"
"gikjph"
"yoxcdrdt\"wbaurnyhoyxoihu"
"onmomwuxuammbzxe"
"rnrr\\twviz\x61gqaljr\x0dmtw"
"r\"vupaoi"
"l"
"sei"
"jwxtdtbkd\\kxd"
"\x22v\\"
"ahd"
"j\"bjqxs"
"\\i\x24gglxub\\nzsajokt"
"lviwpu\"uxdlh\\zuy\"xqy\"ytdzlx\"r"
"kptfmys"
"fwxzikfhczkjwyjszqdbkepaeellc"
"nlqpsvbrbd\\ns"
"qryuwkjiodw\"\"vaqyq\"dmyifm"
"tw\x15kdmaudjl\\zorhp\"alwh"
"aatrvczesykekkjfyb\"kb"
"usqcutbqbxxhucwxo\xc1ltb\"j\"bghjcvws"
"ilhsrnzxkz"
"bianqfdfdhvw"
"hqibqs\x7ax\"qoxqoaqtcsz"
"htxtoojbbauztwxuiq\\ngyfy\\obzc"
"rxn\\moxlj"
"mtus\x84erh\"dbe"
"asx\x50huvsitcxadt"
"\"bugggtnrc\"\"kl\"hmpu\x83hqrvhpo"
"ewisbp\"\"vuzf\\w\x5fvalszdhl"
"scusplpwxfnxu\x57\"zynpn\x99xerc\\ri"
"m\\kinmkke\x0cl"
"xhuzit\x7fd"
"kfbo\x04\x50ruqirn"
"t\"\"xpbdscmdoug"
"punvpsgnbgyxe\"sptmpz"
"bxukkazijr"
"nxyrcdaoo\"rjkk\"wntehcvcip\"vrd"
"rdpvqskmihqaw"
"p\\gwdhtqnpgthod"
"nwnuf\"\"yebycearom\"nqym\"\xd4sii\xccle"
"alda\"ptspo\"wkkv\"zoi\"hkb\"vnntyd"
"ixpgpfzbqv"
"znui\"\\fzn\x03qozabh\"rva\"pv\x67"
"e\"zswmwuk"
"hcccygwfa"
"ngmace\\rtyllolr\"\x68bw"
"\\c\"jyufbry\"ryo\"xpo\x26ecninfeckh\\s"
"hdnpngtuc\"dzbvvosn\x31fwtpzbrt"
"hesbpd\xd4"
"dsdbstuzrdfmrnyntufs\"dmv"
"d\xeeibcwhcvkt"
"fvzwrsfjdqdmy\"\"v"
"ns\"dqafz\\lkyoflnazv\"mn\x37\"o\"yj\"e"
"dypilgbwzccayxa\"bnmuernx"
"q\xa9ztqrhreb\"\"kxfeyodqb"
"iz\xa5qjxqulaawuwz\"rqmpcj\\yel"
"z\"\\pq\"\"y\x67zpjtn"
"ifxqvivp\"kiiftdoe"
"jxzebj\"\x35\"qr\"ecglcutuoyywqumcs\"kk"
"q"
"yob\x85qmpuwexptczbkrl"
"cjiavv\"uudpozvibyycnmxhxpxmpjoz"
"xro\\uiqyrcid"
"nod\\k"
"d\"neiec"
"tqyrqvwyvmz\\pzgzzcqsqsrgbqbtapoz"
"r\"xvocpeuxfxslgueb\x05kzyyie\"aoec"
"\"du\\uirlhcbgv\\cjqhfreqnvn"
"zp\x04\x15\"pbjwhrjtmiba"
"\\cv\""
"k\"rwnb\\hiu\"rqd\"rc\\nyakrhly"
"klrmafjzandiddodgz"
"xipzhqzhvlpykzcuppx"
"zdvrvn\xd0mtfvpylbn\\\\sxcznrzugwznl"
"ody\\pvm\"kpjiudzhxazirgxzvumeat\"o"
"kllvhdp\"prjikzrrc\"adgpegc\\\"gk"
"sqtpug\xbcaauxaamw"
"wegxxrrxdvpivrqievfeokmnojsk"
"\\bo"
"gijhz"
"ylowluvabwrigssdgtxdwsiorxev\xdd"
"\""
"ghnsrnsqtxpygikahkrl"
"\"rcfqkbjf\"sgxg\"vnd\\rotn"
"ap\"smgsuexjrbuqs\"mpbstogj\"x"
"koaunz\\sgt\"opv"
"yialiuzwix"
"yp\"ndxgwzml\"bt"
"lpcjxmggfsy\\szbxccarjkqzasqkb\xcfd\x0c"
"x"
"mgakc"
"vjieunoh\x73fjwx"
"erbvv\"qulsd"
"mimycrbfhqkarmz"
"tihfbgcszuej\"c\xfbvoqskkhbgpaddioo"
"mziavkwrmekriqghw"
"izk\\tnjd\\ed\\emokvjoc"
"c\"nhbqzndro\\g"
"usfngdo"
"aypljdftvptt"
"ym\"afvq\xbcc"
"zabi\"wjpvugwhl"
"ebvptcjqjhc\"n\"p\"dxrphegr\\"
"mzlqqxokhye\xd9\\rffhnzs"
"hnipqknwpsjakanuewe"
"rqgbfcjdrmiz\"h"
"kzzp\\z\\txmkwaouxictybwx"
"yzmspjkqrteiydswlvb"
"gjpxklgpzv\"txri\\hotpuiukzzzd"
"p\"rxergtbsxmjmkeeqwvoagnki\""
"santipvuiq"
"\"ihjqlhtwbuy\"hdkiv\"mtiqacnf\\"
"oliaggtqyyx"
"fwwnpmbb"
"yrtdrieazfxyyneo"
"nywbv\\"
"twc\\ehfqxhgomgrgwpxyzmnkioj"
"qludrkkvljljd\\xvdeum\x4e"

View File

@@ -0,0 +1 @@
hxbxwxba

View File

@@ -0,0 +1,9 @@
Vixen can fly 19 km/s for 7 seconds, but then must rest for 124 seconds.
Rudolph can fly 3 km/s for 15 seconds, but then must rest for 28 seconds.
Donner can fly 19 km/s for 9 seconds, but then must rest for 164 seconds.
Blitzen can fly 19 km/s for 9 seconds, but then must rest for 158 seconds.
Comet can fly 13 km/s for 7 seconds, but then must rest for 82 seconds.
Cupid can fly 25 km/s for 6 seconds, but then must rest for 145 seconds.
Dasher can fly 14 km/s for 3 seconds, but then must rest for 38 seconds.
Dancer can fly 3 km/s for 16 seconds, but then must rest for 37 seconds.
Prancer can fly 25 km/s for 6 seconds, but then must rest for 143 seconds.

View File

@@ -0,0 +1,28 @@
Tristram to AlphaCentauri = 34
Tristram to Snowdin = 100
Tristram to Tambi = 63
Tristram to Faerun = 108
Tristram to Norrath = 111
Tristram to Straylight = 89
Tristram to Arbre = 132
AlphaCentauri to Snowdin = 4
AlphaCentauri to Tambi = 79
AlphaCentauri to Faerun = 44
AlphaCentauri to Norrath = 147
AlphaCentauri to Straylight = 133
AlphaCentauri to Arbre = 74
Snowdin to Tambi = 105
Snowdin to Faerun = 95
Snowdin to Norrath = 48
Snowdin to Straylight = 88
Snowdin to Arbre = 7
Tambi to Faerun = 68
Tambi to Norrath = 134
Tambi to Straylight = 107
Tambi to Arbre = 40
Faerun to Norrath = 11
Faerun to Straylight = 66
Faerun to Arbre = 144
Norrath to Straylight = 115
Norrath to Arbre = 135
Straylight to Arbre = 127

View File

@@ -0,0 +1,339 @@
af AND ah -> ai
NOT lk -> ll
hz RSHIFT 1 -> is
NOT go -> gp
du OR dt -> dv
x RSHIFT 5 -> aa
at OR az -> ba
eo LSHIFT 15 -> es
ci OR ct -> cu
b RSHIFT 5 -> f
fm OR fn -> fo
NOT ag -> ah
v OR w -> x
g AND i -> j
an LSHIFT 15 -> ar
1 AND cx -> cy
jq AND jw -> jy
iu RSHIFT 5 -> ix
gl AND gm -> go
NOT bw -> bx
jp RSHIFT 3 -> jr
hg AND hh -> hj
bv AND bx -> by
er OR es -> et
kl OR kr -> ks
et RSHIFT 1 -> fm
e AND f -> h
u LSHIFT 1 -> ao
he RSHIFT 1 -> hx
eg AND ei -> ej
bo AND bu -> bw
dz OR ef -> eg
dy RSHIFT 3 -> ea
gl OR gm -> gn
da LSHIFT 1 -> du
au OR av -> aw
gj OR gu -> gv
eu OR fa -> fb
lg OR lm -> ln
e OR f -> g
NOT dm -> dn
NOT l -> m
aq OR ar -> as
gj RSHIFT 5 -> gm
hm AND ho -> hp
ge LSHIFT 15 -> gi
jp RSHIFT 1 -> ki
hg OR hh -> hi
lc LSHIFT 1 -> lw
km OR kn -> ko
eq LSHIFT 1 -> fk
1 AND am -> an
gj RSHIFT 1 -> hc
aj AND al -> am
gj AND gu -> gw
ko AND kq -> kr
ha OR gz -> hb
bn OR by -> bz
iv OR jb -> jc
NOT ac -> ad
bo OR bu -> bv
d AND j -> l
bk LSHIFT 1 -> ce
de OR dk -> dl
dd RSHIFT 1 -> dw
hz AND ik -> im
NOT jd -> je
fo RSHIFT 2 -> fp
hb LSHIFT 1 -> hv
lf RSHIFT 2 -> lg
gj RSHIFT 3 -> gl
ki OR kj -> kk
NOT ak -> al
ld OR le -> lf
ci RSHIFT 3 -> ck
1 AND cc -> cd
NOT kx -> ky
fp OR fv -> fw
ev AND ew -> ey
dt LSHIFT 15 -> dx
NOT ax -> ay
bp AND bq -> bs
NOT ii -> ij
ci AND ct -> cv
iq OR ip -> ir
x RSHIFT 2 -> y
fq OR fr -> fs
bn RSHIFT 5 -> bq
0 -> c
14146 -> b
d OR j -> k
z OR aa -> ab
gf OR ge -> gg
df OR dg -> dh
NOT hj -> hk
NOT di -> dj
fj LSHIFT 15 -> fn
lf RSHIFT 1 -> ly
b AND n -> p
jq OR jw -> jx
gn AND gp -> gq
x RSHIFT 1 -> aq
ex AND ez -> fa
NOT fc -> fd
bj OR bi -> bk
as RSHIFT 5 -> av
hu LSHIFT 15 -> hy
NOT gs -> gt
fs AND fu -> fv
dh AND dj -> dk
bz AND cb -> cc
dy RSHIFT 1 -> er
hc OR hd -> he
fo OR fz -> ga
t OR s -> u
b RSHIFT 2 -> d
NOT jy -> jz
hz RSHIFT 2 -> ia
kk AND kv -> kx
ga AND gc -> gd
fl LSHIFT 1 -> gf
bn AND by -> ca
NOT hr -> hs
NOT bs -> bt
lf RSHIFT 3 -> lh
au AND av -> ax
1 AND gd -> ge
jr OR js -> jt
fw AND fy -> fz
NOT iz -> ja
c LSHIFT 1 -> t
dy RSHIFT 5 -> eb
bp OR bq -> br
NOT h -> i
1 AND ds -> dt
ab AND ad -> ae
ap LSHIFT 1 -> bj
br AND bt -> bu
NOT ca -> cb
NOT el -> em
s LSHIFT 15 -> w
gk OR gq -> gr
ff AND fh -> fi
kf LSHIFT 15 -> kj
fp AND fv -> fx
lh OR li -> lj
bn RSHIFT 3 -> bp
jp OR ka -> kb
lw OR lv -> lx
iy AND ja -> jb
dy OR ej -> ek
1 AND bh -> bi
NOT kt -> ku
ao OR an -> ap
ia AND ig -> ii
NOT ey -> ez
bn RSHIFT 1 -> cg
fk OR fj -> fl
ce OR cd -> cf
eu AND fa -> fc
kg OR kf -> kh
jr AND js -> ju
iu RSHIFT 3 -> iw
df AND dg -> di
dl AND dn -> do
la LSHIFT 15 -> le
fo RSHIFT 1 -> gh
NOT gw -> gx
NOT gb -> gc
ir LSHIFT 1 -> jl
x AND ai -> ak
he RSHIFT 5 -> hh
1 AND lu -> lv
NOT ft -> fu
gh OR gi -> gj
lf RSHIFT 5 -> li
x RSHIFT 3 -> z
b RSHIFT 3 -> e
he RSHIFT 2 -> hf
NOT fx -> fy
jt AND jv -> jw
hx OR hy -> hz
jp AND ka -> kc
fb AND fd -> fe
hz OR ik -> il
ci RSHIFT 1 -> db
fo AND fz -> gb
fq AND fr -> ft
gj RSHIFT 2 -> gk
cg OR ch -> ci
cd LSHIFT 15 -> ch
jm LSHIFT 1 -> kg
ih AND ij -> ik
fo RSHIFT 3 -> fq
fo RSHIFT 5 -> fr
1 AND fi -> fj
1 AND kz -> la
iu AND jf -> jh
cq AND cs -> ct
dv LSHIFT 1 -> ep
hf OR hl -> hm
km AND kn -> kp
de AND dk -> dm
dd RSHIFT 5 -> dg
NOT lo -> lp
NOT ju -> jv
NOT fg -> fh
cm AND co -> cp
ea AND eb -> ed
dd RSHIFT 3 -> df
gr AND gt -> gu
ep OR eo -> eq
cj AND cp -> cr
lf OR lq -> lr
gg LSHIFT 1 -> ha
et RSHIFT 2 -> eu
NOT jh -> ji
ek AND em -> en
jk LSHIFT 15 -> jo
ia OR ig -> ih
gv AND gx -> gy
et AND fe -> fg
lh AND li -> lk
1 AND io -> ip
kb AND kd -> ke
kk RSHIFT 5 -> kn
id AND if -> ig
NOT ls -> lt
dw OR dx -> dy
dd AND do -> dq
lf AND lq -> ls
NOT kc -> kd
dy AND ej -> el
1 AND ke -> kf
et OR fe -> ff
hz RSHIFT 5 -> ic
dd OR do -> dp
cj OR cp -> cq
NOT dq -> dr
kk RSHIFT 1 -> ld
jg AND ji -> jj
he OR hp -> hq
hi AND hk -> hl
dp AND dr -> ds
dz AND ef -> eh
hz RSHIFT 3 -> ib
db OR dc -> dd
hw LSHIFT 1 -> iq
he AND hp -> hr
NOT cr -> cs
lg AND lm -> lo
hv OR hu -> hw
il AND in -> io
NOT eh -> ei
gz LSHIFT 15 -> hd
gk AND gq -> gs
1 AND en -> eo
NOT kp -> kq
et RSHIFT 5 -> ew
lj AND ll -> lm
he RSHIFT 3 -> hg
et RSHIFT 3 -> ev
as AND bd -> bf
cu AND cw -> cx
jx AND jz -> ka
b OR n -> o
be AND bg -> bh
1 AND ht -> hu
1 AND gy -> gz
NOT hn -> ho
ck OR cl -> cm
ec AND ee -> ef
lv LSHIFT 15 -> lz
ks AND ku -> kv
NOT ie -> if
hf AND hl -> hn
1 AND r -> s
ib AND ic -> ie
hq AND hs -> ht
y AND ae -> ag
NOT ed -> ee
bi LSHIFT 15 -> bm
dy RSHIFT 2 -> dz
ci RSHIFT 2 -> cj
NOT bf -> bg
NOT im -> in
ev OR ew -> ex
ib OR ic -> id
bn RSHIFT 2 -> bo
dd RSHIFT 2 -> de
bl OR bm -> bn
as RSHIFT 1 -> bl
ea OR eb -> ec
ln AND lp -> lq
kk RSHIFT 3 -> km
is OR it -> iu
iu RSHIFT 2 -> iv
as OR bd -> be
ip LSHIFT 15 -> it
iw OR ix -> iy
kk RSHIFT 2 -> kl
NOT bb -> bc
ci RSHIFT 5 -> cl
ly OR lz -> ma
z AND aa -> ac
iu RSHIFT 1 -> jn
cy LSHIFT 15 -> dc
cf LSHIFT 1 -> cz
as RSHIFT 3 -> au
cz OR cy -> da
kw AND ky -> kz
lx -> a
iw AND ix -> iz
lr AND lt -> lu
jp RSHIFT 5 -> js
aw AND ay -> az
jc AND je -> jf
lb OR la -> lc
NOT cn -> co
kh LSHIFT 1 -> lb
1 AND jj -> jk
y OR ae -> af
ck AND cl -> cn
kk OR kv -> kw
NOT cv -> cw
kl AND kr -> kt
iu OR jf -> jg
at AND az -> bb
jp RSHIFT 2 -> jq
iv AND jb -> jd
jn OR jo -> jp
x OR ai -> aj
ba AND bc -> bd
jl OR jk -> jm
b RSHIFT 1 -> v
o AND q -> r
NOT p -> q
k AND m -> n
as RSHIFT 2 -> at

View File

@@ -0,0 +1,300 @@
turn on 489,959 through 759,964
turn off 820,516 through 871,914
turn off 427,423 through 929,502
turn on 774,14 through 977,877
turn on 410,146 through 864,337
turn on 931,331 through 939,812
turn off 756,53 through 923,339
turn off 313,787 through 545,979
turn off 12,823 through 102,934
toggle 756,965 through 812,992
turn off 743,684 through 789,958
toggle 120,314 through 745,489
toggle 692,845 through 866,994
turn off 587,176 through 850,273
turn off 674,321 through 793,388
toggle 749,672 through 973,965
turn on 943,30 through 990,907
turn on 296,50 through 729,664
turn on 212,957 through 490,987
toggle 171,31 through 688,88
turn off 991,989 through 994,998
turn off 913,943 through 958,953
turn off 278,258 through 367,386
toggle 275,796 through 493,971
turn off 70,873 through 798,923
toggle 258,985 through 663,998
turn on 601,259 through 831,486
turn off 914,94 through 941,102
turn off 558,161 through 994,647
turn on 119,662 through 760,838
toggle 378,775 through 526,852
turn off 384,670 through 674,972
turn off 249,41 through 270,936
turn on 614,742 through 769,780
turn on 427,70 through 575,441
turn on 410,478 through 985,753
turn off 619,46 through 931,342
turn on 284,55 through 768,922
turn off 40,592 through 728,685
turn on 825,291 through 956,950
turn on 147,843 through 592,909
turn off 218,675 through 972,911
toggle 249,291 through 350,960
turn off 556,80 through 967,675
toggle 609,148 through 968,279
toggle 217,605 through 961,862
toggle 407,177 through 548,910
toggle 400,936 through 599,938
turn off 721,101 through 925,455
turn on 268,631 through 735,814
toggle 549,969 through 612,991
toggle 553,268 through 689,432
turn off 817,668 through 889,897
toggle 801,544 through 858,556
toggle 615,729 through 832,951
turn off 427,477 through 958,948
turn on 164,49 through 852,946
turn on 542,449 through 774,776
turn off 923,196 through 980,446
toggle 90,310 through 718,846
turn off 657,215 through 744,252
turn off 800,239 through 811,712
turn on 502,90 through 619,760
toggle 649,512 through 862,844
turn off 334,903 through 823,935
turn off 630,233 through 839,445
turn on 713,67 through 839,865
turn on 932,50 through 982,411
turn off 480,729 through 984,910
turn on 100,219 through 796,395
turn on 758,108 through 850,950
turn off 427,276 through 439,938
turn on 178,284 through 670,536
toggle 540,27 through 625,102
turn off 906,722 through 936,948
toggle 345,418 through 859,627
toggle 175,775 through 580,781
toggle 863,28 through 929,735
turn off 824,858 through 905,973
toggle 752,312 through 863,425
turn on 985,716 through 988,852
turn off 68,504 through 763,745
toggle 76,209 through 810,720
turn off 657,607 through 676,664
toggle 596,869 through 896,921
turn off 915,411 through 968,945
turn off 368,39 through 902,986
turn on 11,549 through 393,597
turn off 842,893 through 976,911
toggle 274,106 through 581,329
toggle 406,403 through 780,950
toggle 408,988 through 500,994
toggle 217,73 through 826,951
turn on 917,872 through 961,911
toggle 394,34 through 510,572
toggle 424,603 through 583,626
toggle 106,159 through 755,738
turn off 244,610 through 472,709
turn on 350,265 through 884,690
turn on 688,184 through 928,280
toggle 279,443 through 720,797
turn off 615,493 through 888,610
toggle 118,413 through 736,632
turn on 798,782 through 829,813
turn off 250,934 through 442,972
turn on 68,503 through 400,949
toggle 297,482 through 313,871
toggle 710,3 through 839,859
turn on 125,300 through 546,888
toggle 482,39 through 584,159
turn off 536,89 through 765,962
turn on 530,518 through 843,676
turn on 994,467 through 994,676
turn on 623,628 through 744,927
toggle 704,912 through 837,983
turn on 154,364 through 517,412
toggle 344,409 through 780,524
turn off 578,740 through 725,879
turn on 251,933 through 632,957
turn on 827,705 through 971,789
toggle 191,282 through 470,929
toggle 324,525 through 446,867
toggle 534,343 through 874,971
toggle 550,650 through 633,980
toggle 837,404 through 881,915
toggle 338,881 through 845,905
turn on 469,462 through 750,696
turn on 741,703 through 892,870
turn off 570,215 through 733,562
turn on 445,576 through 870,775
turn on 466,747 through 554,878
turn off 820,453 through 868,712
turn off 892,706 through 938,792
turn off 300,238 through 894,746
turn off 306,44 through 457,444
turn off 912,569 through 967,963
toggle 109,756 through 297,867
turn on 37,546 through 41,951
turn on 321,637 through 790,910
toggle 66,50 through 579,301
toggle 933,221 through 933,791
turn on 486,676 through 878,797
turn on 417,231 through 556,317
toggle 904,468 through 981,873
turn on 417,675 through 749,712
turn on 692,371 through 821,842
toggle 324,73 through 830,543
turn on 912,490 through 977,757
turn off 634,872 through 902,949
toggle 266,779 through 870,798
turn on 772,982 through 990,996
turn off 607,46 through 798,559
turn on 295,602 through 963,987
turn on 657,86 through 944,742
turn off 334,639 through 456,821
turn off 997,667 through 997,670
turn off 725,832 through 951,945
turn off 30,120 through 952,984
turn on 860,965 through 917,976
toggle 471,997 through 840,998
turn off 319,307 through 928,504
toggle 823,631 through 940,908
toggle 969,984 through 981,993
turn off 691,319 through 865,954
toggle 911,926 through 938,929
turn on 953,937 through 968,991
toggle 914,643 through 975,840
turn on 266,982 through 436,996
turn off 101,896 through 321,932
turn off 193,852 through 751,885
turn off 576,532 through 863,684
turn on 761,456 through 940,783
turn on 20,290 through 398,933
turn off 435,335 through 644,652
turn on 830,569 through 905,770
turn off 630,517 through 905,654
turn on 664,53 through 886,976
toggle 275,416 through 408,719
turn on 370,621 through 515,793
turn on 483,373 through 654,749
turn on 656,786 through 847,928
turn off 532,752 through 945,974
toggle 301,150 through 880,792
turn off 951,488 through 958,952
turn on 207,729 through 882,828
toggle 694,532 through 973,961
toggle 676,639 through 891,802
turn off 653,6 through 905,519
toggle 391,109 through 418,312
turn on 877,423 through 957,932
turn on 340,145 through 563,522
turn off 978,467 through 988,895
turn off 396,418 through 420,885
turn off 31,308 through 816,316
turn on 107,675 through 758,824
turn on 61,82 through 789,876
turn on 750,743 through 754,760
toggle 88,733 through 736,968
turn off 754,349 through 849,897
toggle 157,50 through 975,781
turn off 230,231 through 865,842
turn off 516,317 through 630,329
turn off 697,820 through 829,903
turn on 218,250 through 271,732
toggle 56,167 through 404,431
toggle 626,891 through 680,927
toggle 370,207 through 791,514
toggle 860,74 through 949,888
turn on 416,527 through 616,541
turn off 745,449 through 786,908
turn on 485,554 through 689,689
turn on 586,62 through 693,141
toggle 506,759 through 768,829
turn on 473,109 through 929,166
turn on 760,617 through 773,789
toggle 595,683 through 618,789
turn off 210,775 through 825,972
toggle 12,426 through 179,982
turn on 774,539 through 778,786
turn on 102,498 through 121,807
turn off 706,897 through 834,965
turn off 678,529 through 824,627
turn on 7,765 through 615,870
turn off 730,872 through 974,943
turn off 595,626 through 836,711
turn off 215,424 through 841,959
toggle 341,780 through 861,813
toggle 507,503 through 568,822
turn on 252,603 through 349,655
toggle 93,521 through 154,834
turn on 565,682 through 951,954
turn on 544,318 through 703,418
toggle 756,953 through 891,964
turn on 531,123 through 856,991
turn on 148,315 through 776,559
turn off 925,835 through 963,971
turn on 895,944 through 967,964
turn off 102,527 through 650,747
toggle 626,105 through 738,720
turn off 160,75 through 384,922
toggle 813,724 through 903,941
turn on 207,107 through 982,849
toggle 750,505 through 961,697
toggle 105,410 through 885,819
turn on 226,104 through 298,283
turn off 224,604 through 508,762
turn on 477,368 through 523,506
turn off 477,901 through 627,936
turn off 887,131 through 889,670
turn on 896,994 through 938,999
toggle 401,580 through 493,728
toggle 987,184 through 991,205
turn on 821,643 through 882,674
toggle 784,940 through 968,959
turn off 251,293 through 274,632
turn off 339,840 through 341,844
turn off 675,351 through 675,836
toggle 918,857 through 944,886
toggle 70,253 through 918,736
turn off 612,604 through 772,680
turn off 277,40 through 828,348
toggle 692,139 through 698,880
toggle 124,446 through 883,453
toggle 969,932 through 990,945
toggle 855,692 through 993,693
toggle 722,472 through 887,899
toggle 978,149 through 985,442
toggle 837,540 through 916,889
turn off 612,2 through 835,82
toggle 560,767 through 878,856
turn on 461,734 through 524,991
toggle 206,824 through 976,912
turn on 826,610 through 879,892
turn on 577,699 through 956,933
turn off 9,250 through 50,529
turn off 77,657 through 817,677
turn on 68,419 through 86,426
turn on 991,720 through 992,784
turn on 668,20 through 935,470
turn off 133,418 through 613,458
turn off 487,286 through 540,328
toggle 247,874 through 840,955
toggle 301,808 through 754,970
turn off 34,194 through 578,203
turn off 451,49 through 492,921
turn on 907,256 through 912,737
turn off 479,305 through 702,587
turn on 545,583 through 732,749
toggle 11,16 through 725,868
turn on 965,343 through 986,908
turn on 674,953 through 820,965
toggle 398,147 through 504,583
turn off 778,194 through 898,298
turn on 179,140 through 350,852
turn off 241,118 through 530,832
turn off 41,447 through 932,737
turn off 820,663 through 832,982
turn on 550,460 through 964,782
turn on 31,760 through 655,892
toggle 628,958 through 811,992

View File

@@ -0,0 +1 @@
1113122113

View File

@@ -0,0 +1,56 @@
Alice would lose 57 happiness units by sitting next to Bob.
Alice would lose 62 happiness units by sitting next to Carol.
Alice would lose 75 happiness units by sitting next to David.
Alice would gain 71 happiness units by sitting next to Eric.
Alice would lose 22 happiness units by sitting next to Frank.
Alice would lose 23 happiness units by sitting next to George.
Alice would lose 76 happiness units by sitting next to Mallory.
Bob would lose 14 happiness units by sitting next to Alice.
Bob would gain 48 happiness units by sitting next to Carol.
Bob would gain 89 happiness units by sitting next to David.
Bob would gain 86 happiness units by sitting next to Eric.
Bob would lose 2 happiness units by sitting next to Frank.
Bob would gain 27 happiness units by sitting next to George.
Bob would gain 19 happiness units by sitting next to Mallory.
Carol would gain 37 happiness units by sitting next to Alice.
Carol would gain 45 happiness units by sitting next to Bob.
Carol would gain 24 happiness units by sitting next to David.
Carol would gain 5 happiness units by sitting next to Eric.
Carol would lose 68 happiness units by sitting next to Frank.
Carol would lose 25 happiness units by sitting next to George.
Carol would gain 30 happiness units by sitting next to Mallory.
David would lose 51 happiness units by sitting next to Alice.
David would gain 34 happiness units by sitting next to Bob.
David would gain 99 happiness units by sitting next to Carol.
David would gain 91 happiness units by sitting next to Eric.
David would lose 38 happiness units by sitting next to Frank.
David would gain 60 happiness units by sitting next to George.
David would lose 63 happiness units by sitting next to Mallory.
Eric would gain 23 happiness units by sitting next to Alice.
Eric would lose 69 happiness units by sitting next to Bob.
Eric would lose 33 happiness units by sitting next to Carol.
Eric would lose 47 happiness units by sitting next to David.
Eric would gain 75 happiness units by sitting next to Frank.
Eric would gain 82 happiness units by sitting next to George.
Eric would gain 13 happiness units by sitting next to Mallory.
Frank would gain 77 happiness units by sitting next to Alice.
Frank would gain 27 happiness units by sitting next to Bob.
Frank would lose 87 happiness units by sitting next to Carol.
Frank would gain 74 happiness units by sitting next to David.
Frank would lose 41 happiness units by sitting next to Eric.
Frank would lose 99 happiness units by sitting next to George.
Frank would gain 26 happiness units by sitting next to Mallory.
George would lose 63 happiness units by sitting next to Alice.
George would lose 51 happiness units by sitting next to Bob.
George would lose 60 happiness units by sitting next to Carol.
George would gain 30 happiness units by sitting next to David.
George would lose 100 happiness units by sitting next to Eric.
George would lose 63 happiness units by sitting next to Frank.
George would gain 57 happiness units by sitting next to Mallory.
Mallory would lose 71 happiness units by sitting next to Alice.
Mallory would lose 28 happiness units by sitting next to Bob.
Mallory would lose 10 happiness units by sitting next to Carol.
Mallory would gain 44 happiness units by sitting next to David.
Mallory would gain 22 happiness units by sitting next to Eric.
Mallory would gain 79 happiness units by sitting next to Frank.
Mallory would lose 16 happiness units by sitting next to George.

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
reyedfim

View File

@@ -0,0 +1,953 @@
hqcfqwydw-fbqijys-whqii-huiuqhsx-660[qhiwf]
oxjmxdfkd-pzxsbkdbo-erkq-ixyloxqlov-913[xodkb]
bpvctixr-eaphixr-vgphh-gthtpgrw-947[smrkl]
iwcjapey-lhwopey-cnwoo-wymqeoepekj-992[eowpy]
mvhkvbdib-agjrzm-zibdizzmdib-317[bizdm]
excdklvo-lkcuod-dbksxsxq-146[ztwya]
ocipgvke-ejqeqncvg-octmgvkpi-908[prmku]
ktwbhtvmbox-vetllbybxw-vtgwr-vhtmbgz-tvjnblbmbhg-579[uvnyc]
dpmpsgvm-tdbwfohfs-ivou-tijqqjoh-389[emdac]
forwcoqhwjs-pibbm-igsf-hsghwbu-532[bhswf]
uzfqdzmfuazmx-nmewqf-ogefayqd-eqdhuoq-664[qfdem]
fnjyxwrinm-yujbcrl-pajbb-uxprbcrlb-277[brjcl]
aoubshwq-dzoghwq-ufogg-fsoqeiwgwhwcb-714[nkrmy]
pbeebfvir-rtt-fnyrf-975[frbet]
bnknqetk-qzaahs-trdq-sdrshmf-235[mtcqz]
odiih-ljwmh-lxjcrwp-orwjwlrwp-927[wjlrh]
sxdobxkdsyxkv-bkllsd-cobfsmoc-302[sbdko]
gzefmnxq-omzpk-ymzmsqyqzf-352[saomt]
tvsnigxmpi-gerhc-gsexmrk-qerekiqirx-854[eirgx]
ktfitzbgz-vtgwr-ftgtzxfxgm-267[tgfzx]
lxuxaodu-npp-orwjwlrwp-563[pwlor]
oazegyqd-sdmpq-pkq-xmnadmfadk-352[damqk]
wfruflnsl-gzssd-hzxytrjw-xjwanhj-177[bgxsp]
pbybeshy-qlr-qrfvta-455[tmios]
xmrrq-udskkaxawv-vqw-esfsywewfl-918[fdqsb]
vhehkyne-vahvhetmx-ltexl-917[uvhmy]
molgbzqfib-ciltbo-obzbfsfkd-393[htayl]
veqtekmrk-jpsaiv-wlmttmrk-256[ewyhq]
cvabijtm-lgm-apqxxqvo-512[dinjm]
oaxadrgx-nmewqf-qzsuzqqduzs-456[oevtg]
vehmsegxmzi-veffmx-wepiw-880[emfiv]
fruurvlyh-fubrjhqlf-fdqgb-frdwlqj-ghvljq-413[cgkzy]
otzkxtgzoutgr-inuiurgzk-sgxqkzotm-774[gtzko]
hwbba-eqpuwogt-itcfg-tcddkv-ujkrrkpi-154[ktbcd]
pynffvsvrq-cynfgvp-tenff-ynobengbel-377[fnevy]
aoubshwq-qcbgiasf-ufors-qvcqczohs-hsqvbczcum-558[hypcz]
kzeed-xhfajsljw-mzsy-knsfshnsl-281[nsmtd]
hwdtljsnh-hfsid-htfynsl-ijufwyrjsy-177[hsfjy]
excdklvo-zvkcdsm-qbkcc-psxkxmsxq-900[yznml]
diozmivodjivg-xviyt-pnzm-oznodib-239[iodvz]
nzcczdtgp-clmmte-lnbftdtetzy-743[tczde]
ejpanjwpekjwh-bhksan-iwngapejc-264[mgyfj]
ubhatstkwhnl-vhehkyne-xzz-wxiehrfxgm-917[hexkn]
vhkkhlbox-vtgwr-vhtmbgz-vnlmhfxk-lxkobvx-163[vhkxb]
irdgrxzex-tyftfcrkv-rthlzjzkzfe-373[rzfte]
cvabijtm-rmttgjmiv-lmdmtwxumvb-564[mtvbi]
hqfxxnknji-gfxpjy-xmnuunsl-151[brtjg]
odkasqzuo-dmnnuf-xasuefuoe-690[zyejx]
ixeumktoi-pkrrehkgt-sgtgmksktz-384[ktgei]
atyzghrk-igtje-iugzotm-uvkxgzouty-358[rmnqz]
ktwbhtvmbox-xzz-phkdlahi-865[nmsjb]
nzydfxpc-rclop-ojp-lylwjdtd-951[dlpcj]
vxupkizork-kmm-sgtgmksktz-280[yublv]
cvabijtm-kivlg-kwibqvo-twoqabqka-408[pgush]
hqcfqwydw-fbqijys-whqii-mehaixef-218[vzaur]
bpvctixr-rpcsn-rdpixcv-ldgzhwde-271[cifnu]
fnjyxwrinm-kjbtnc-lxwcjrwvnwc-199[nwcjr]
kzeed-idj-xmnuunsl-593[uazmr]
dsxxw-zyqicr-bcqgel-236[cqxbd]
gpewwmjmih-jpsaiv-wivzmgiw-230[iwmgj]
amjmpdsj-afmamjyrc-bcqgel-470[mszht]
eqpuwogt-itcfg-tcorcikpi-hnqygt-ujkrrkpi-596[nywzt]
pelbtravp-pnaql-erprvivat-533[parve]
yhwooebeaz-bhksan-wymqeoepekj-758[eoabh]
iruzfrtkzmv-upv-kirzezex-529[zpysg]
lxaaxbren-lqxlxujcn-mnenuxyvnwc-953[nxlac]
clxalrtyr-prr-nfdezxpc-dpcgtnp-457[prcdl]
sorozgxe-mxgjk-kmm-vaxingyotm-228[ugkxd]
vdzonmhydc-eknvdq-otqbgzrhmf-469[jnsrl]
gsvvswmzi-gspsvjyp-nippcfier-hizipstqirx-802[mvkcd]
xgvnndadzy-xviyt-xjvodib-yzkgjthzio-707[ncejo]
emixwvqhml-akidmvomz-pcvb-uizsmbqvo-538[mvibo]
dpotvnfs-hsbef-cbtlfu-usbjojoh-597[mnkij]
amjmpdsj-pyzzgr-jyzmpyrmpw-522[rxsqz]
fkqbokxqflkxi-yxphbq-ixyloxqlov-861[xjeyz]
vehmsegxmzi-tpewxmg-kveww-xvemrmrk-256[emvwx]
aietsrmdih-ikk-viwievgl-750[iekva]
zekvierkzferc-gcrjkzt-xirjj-nfibjyfg-763[jlbrc]
krxqjijamxdb-lqxlxujcn-lxwcjrwvnwc-537[opuqe]
dsxxw-zsllw-jyzmpyrmpw-652[hgyae]
mbiyqoxsm-mkxni-mykdsxq-kmaescsdsyx-770[otslp]
oqnidbshkd-vdzonmhydc-idkkxadzm-qdzbpthrhshnm-573[dhkmn]
jqwpihizlwca-moo-apqxxqvo-174[oqaip]
ahngzyzqcntr-azrjds-qdrdzqbg-573[zdqra]
bhksan-lqnydwoejc-472[gutvo]
jvsvymbs-zjhclunly-obua-zlycpjlz-175[ljyzb]
wrs-vhfuhw-hjj-ilqdqflqj-205[hjqfl]
egdytrixat-eaphixr-vgphh-ldgzhwde-661[duchs]
oxmeeuruqp-eomhqzsqd-tgzf-mocgueufuaz-196[uemoq]
ahngzyzqcntr-cxd-ehmzmbhmf-677[dqulm]
gspsvjyp-tpewxmg-kveww-wivzmgiw-568[ghntx]
pualyuhapvuhs-jvuzbtly-nyhkl-wshzapj-nyhzz-thyrlapun-149[kibhn]
nzcczdtgp-mfyyj-pyrtyppctyr-171[ypctr]
guahyncw-nij-mywlyn-vohhs-jolwbumcha-760[hnwya]
bgmxkgtmbhgte-xzz-vhgmtbgfxgm-397[gmbtx]
zixppfcfba-gbiivybxk-zrpqljbo-pbosfzb-653[psocz]
votubcmf-sbccju-nbslfujoh-935[bcufj]
gsrwyqiv-kvehi-nippcfier-irkmriivmrk-204[irkve]
jsvagsulanw-hdsklau-yjskk-ksdwk-632[ltnxs]
irdgrxzex-srjbvk-uvgcfpdvek-503[rvdeg]
krxqjijamxdb-ljwmh-bcxajpn-849[jxabm]
ajmrxjlcren-ljwmh-vjwjpnvnwc-407[yemcd]
ahngzyzqcntr-rbzudmfdq-gtms-btrsnldq-rdquhbd-755[dqrbn]
rzvkjiduzy-ezggtwzvi-hvmfzodib-291[yuzaf]
bwx-amkzmb-ntwemz-aitma-408[mabtw]
wihmogyl-aluxy-vumeyn-mufym-812[wymtu]
xjmmjndqz-nxvqzibzm-cpio-yzkgjthzio-889[mtsyf]
xmtjbzidx-ytz-nojmvbz-525[hyzbw]
bnmrtldq-fqzcd-tmrszakd-qzaahs-cdrhfm-131[wmcrn]
ftzgxmbv-wrx-kxtvjnblbmbhg-293[bxgmt]
gsvvswmzi-gerhc-wepiw-230[wegis]
pdjqhwlf-fdqgb-uhfhlylqj-699[fhlqd]
zsxyfgqj-kzeed-uqfxynh-lwfxx-ijuqtdrjsy-957[xfjqy]
rnqnyfwd-lwfij-uqfxynh-lwfxx-knsfshnsl-359[zbtyx]
wrs-vhfuhw-gbh-whfkqrorjb-231[hrwbf]
iuxxuyobk-hatte-rumoyzoiy-280[ouyit]
oqnidbshkd-bgnbnkzsd-nodqzshnmr-287[xnmzi]
atyzghrk-jek-jkyomt-540[anzom]
ibghopzs-pogysh-rsdofhasbh-818[hsobg]
wbhsfbohwcboz-foppwh-rsjszcdasbh-532[njpay]
excdklvo-mrymyvkdo-ecob-docdsxq-484[docek]
xgsvgmotm-yigbktmkx-natz-yzuxgmk-722[zwckh]
ajyqqgdgcb-afmamjyrc-qfgnngle-964[pzowt]
ugdgjxmd-jsttal-kzahhafy-138[cyirg]
irgyyolokj-iuxxuyobk-inuiurgzk-rumoyzoiy-982[sgadc]
qcbgiasf-ufors-gqojsbusf-vibh-qcbhowbasbh-870[njidq]
bkwzkqsxq-mrymyvkdo-wkxkqowoxd-146[hfdmy]
mybbycsfo-mrymyvkdo-bokmaescsdsyx-120[mlnky]
zuv-ykixkz-jek-ktmotkkxotm-852[mebdc]
dkqjcbctfqwu-lgnnadgcp-fgrctvogpv-648[cgdfn]
vehmsegxmzi-ikk-xvemrmrk-724[byndz]
upq-tfdsfu-cvooz-nbobhfnfou-155[xyskn]
gpewwmjmih-wgezirkiv-lyrx-hitevxqirx-360[ierwx]
rdggdhxkt-ytaanqtpc-bpcpvtbtci-817[mnjpk]
xlrypetn-clmmte-zapcletzyd-405[eltcm]
oxjmxdfkd-oxyyfq-abmxoqjbkq-861[nmhlv]
xjinphzm-bmvyz-kgvnodx-bmvnn-gjbdnodxn-395[nbdmv]
tpspahyf-nyhkl-jhukf-zopwwpun-799[phfkn]
jsvagsulanw-usfvq-mkwj-lwklafy-684[alswf]
ipvohghykvbz-kfl-ylhjxbpzpapvu-877[vmizu]
fydelmwp-awldetn-rcldd-afcnsldtyr-405[dlace]
gpbepvxcv-tvv-steadnbtci-609[vtbce]
tipfxvezt-upv-rthlzjzkzfe-581[ztefp]
bknsykmdsfo-oqq-vyqscdsmc-796[sqcdk]
ejpanjwpekjwh-zua-odellejc-914[ejalp]
ytu-xjhwjy-uqfxynh-lwfxx-jslnsjjwnsl-775[jxlns]
tinnm-aoubshwq-tzcksf-zopcfohcfm-376[cfohm]
xjgjmapg-ezggtwzvi-xpnojhzm-nzmqdxz-811[zgjmx]
tvsnigxmpi-fewoix-hiwmkr-386[tpuvk]
udglrdfwlyh-udeelw-vhuylfhv-829[ldhue]
luxciuwncpy-wbiwifuny-mniluay-786[iunwy]
ftzgxmbv-ktuubm-inkvatlbgz-865[btgkm]
xzwrmkbqtm-zijjqb-twoqabqka-486[erqyp]
diozmivodjivg-zbb-ncdkkdib-499[dibko]
kwvacumz-ozilm-kivlg-lmxizbumvb-980[milvz]
hwbba-dwppa-tgugctej-648[abgpt]
myxcewob-qbkno-bkllsd-cdybkqo-120[atghd]
zekvierkzferc-irsszk-uvjzxe-477[snqzi]
wlsiayhcw-dyffsvyuh-guleyncha-526[yhacf]
clotzlnetgp-ojp-opdtry-249[optlc]
dmybmsuzs-vqxxknqmz-eqdhuoqe-560[qmdes]
mtzslklcozfd-clmmte-dstaatyr-275[rtnyq]
cxy-bnlanc-lqxlxujcn-vjwjpnvnwc-823[ncjlx]
jshzzpmplk-zjhclunly-obua-bzly-alzapun-929[vcuxs]
yuxufmdk-sdmpq-ngzzk-oazfmuzyqzf-508[kghlv]
otzkxtgzoutgr-kmm-sgtgmksktz-722[tgkmz]
xgvnndadzy-xviyt-hvmfzodib-941[qbwmr]
qekrixmg-fyrrc-ywiv-xiwxmrk-230[ikjwl]
dpssptjwf-dpmpsgvm-qmbtujd-hsbtt-bobmztjt-337[tbmps]
tcfkqcevkxg-rncuvke-itcuu-ujkrrkpi-388[tabmn]
hjgbwuladw-tskcwl-xafsfuafy-528[afwls]
ygcrqpkbgf-ecpfa-gpikpggtkpi-154[gpkcf]
hqcfqwydw-sxesebqju-qdqboiyi-608[qbdei]
iehepwnu-cnwza-ydkykhwpa-iwngapejc-706[waenp]
jchipqat-ytaanqtpc-htgkxrth-115[mfnly]
pinovwgz-ezggtwzvi-xpnojhzm-nzmqdxz-967[yzosw]
yhwooebeaz-oywrajcan-dqjp-owhao-628[oaweh]
fhezusjybu-tou-skijecuh-iuhlysu-270[uhsei]
tcrjjzwzvu-upv-kirzezex-659[bdnty]
npmhcargjc-aylbw-amyrgle-qcptgacq-626[tkmzs]
ejpanjwpekjwh-ywjzu-ykwpejc-pnwejejc-160[lnqkc]
cybyjqho-whqtu-ryexqpqhteki-uww-tuiywd-946[qwyht]
cqwdujys-uww-bewyijysi-218[wyijs]
xekdwvwnzkqo-acc-pnwejejc-342[cewjk]
encuukhkgf-uecxgpigt-jwpv-ugtxkegu-440[kwmxr]
mbiyqoxsm-tovvilokx-cobfsmoc-224[doavb]
jvuzbtly-nyhkl-jhukf-zlycpjlz-591[jwxzi]
ncjzrpytn-clmmte-lylwjdtd-691[ltcdj]
enqvbnpgvir-enoovg-erprvivat-117[venrg]
gzefmnxq-ngzzk-ymdwqfuzs-612[zfgmn]
gokzyxsjon-cmkfoxqob-rexd-psxkxmsxq-302[zylnb]
aflwjfslagfsd-xdgowj-xafsfuafy-554[rgqmz]
ugdgjxmd-ujqgywfau-hdsklau-yjskk-kzahhafy-294[daelo]
mvkccspson-mrymyvkdo-nozkbdwoxd-718[odkmc]
egdytrixat-rwdrdapit-stepgibtci-817[ampoz]
qfmcusbwq-pogysh-fsgsofqv-194[gcthj]
wifilzof-qyujihctyx-luvvcn-qilembij-344[ilcfj]
gpbepvxcv-snt-apqdgpidgn-323[dnmyh]
kpvgtpcvkqpcn-gii-gpikpggtkpi-180[vyxnb]
ziuxioqvo-moo-mvoqvmmzqvo-512[omvqi]
fbebmtkr-zktwx-vtgwr-vhtmbgz-wxitkmfxgm-631[zilsp]
wihmogyl-aluxy-luvvcn-wihnuchgyhn-240[hlnuy]
eqnqthwn-lgnnadgcp-rwtejcukpi-726[jwvun]
hdgdovmt-bmvyz-ytz-yzqzgjkhzio-369[zydgh]
aflwjfslagfsd-usfvq-ugslafy-hmjuzskafy-138[vjmnt]
froruixo-iorzhu-uhdftxlvlwlrq-205[eslfx]
xekdwvwnzkqo-zua-skngodkl-368[kdnow]
xtwtelcj-rclop-clmmte-dpcgtnpd-353[jowtx]
lhkhszqx-fqzcd-cxd-nodqzshnmr-911[dhqzc]
fodvvlilhg-fdqgb-xvhu-whvwlqj-725[syfpw]
mtzslklcozfd-dnlgpyrpc-sfye-cpdplcns-873[zngtm]
rwcnawjcrxwju-yujbcrl-pajbb-jwjuhbrb-459[jbrwc]
hcd-gsqfsh-awzwhofm-ufors-suu-twbobqwbu-948[reunt]
pwcvonofrcig-pibbm-obozmgwg-688[zgthm]
vhehkyne-lvtoxgzxk-angm-wxiehrfxgm-345[xeghk]
ucynmlgxcb-njyqrga-epyqq-qrmpyec-938[mgnpj]
fruurvlyh-fdqgb-frdwlqj-uhvhdufk-699[fudhr]
hqfxxnknji-gzssd-yjhmstqtld-697[sdhjn]
qzoggwtwsr-rms-rsdofhasbh-402[gtlom]
gzefmnxq-ngzzk-dqeqmdot-638[yatsz]
rmn-qcapcr-njyqrga-epyqq-pcqcypaf-834[mpqie]
yknnkoera-ywjzu-zarahkliajp-186[yozsd]
clxalrtyr-eza-dpncpe-mldvpe-epnsyzwzrj-483[eplrz]
vkrhzxgbv-cxeeruxtg-vhgmtbgfxgm-137[fsxoz]
ymszqfuo-bxmefuo-sdmee-mzmxkeue-898[ndgcf]
dmbttjgjfe-sbccju-bdrvjtjujpo-649[vkijs]
wifilzof-wbiwifuny-guleyncha-136[ifwln]
oxmeeuruqp-vqxxknqmz-abqdmfuaze-196[baztd]
tinnm-qfmcusbwq-pogysh-gvwddwbu-636[aryhp]
lxaaxbren-ouxfna-bnaerlnb-693[anbxe]
nglmtuex-xzz-mktbgbgz-397[zqyrt]
xlrypetn-mfyyj-pyrtyppctyr-223[yprtc]
fodvvlilhg-fdqgb-vklsslqj-127[lvdfg]
ikhcxvmbex-lvtoxgzxk-angm-ehzblmbvl-761[xblmv]
fkqbokxqflkxi-ciltbo-qoxfkfkd-211[kfoqx]
lujbbrornm-bljenwpna-qdwc-fxatbqxy-589[bnajl]
eqpuwogt-itcfg-tcddkv-vgejpqnqia-258[besga]
lnkfaypeha-ydkykhwpa-zaoecj-108[zamyw]
lhkhszqx-fqzcd-atmmx-lzqjdshmf-859[hmqzd]
aflwjfslagfsd-tskcwl-vwhsjlewfl-190[xevmq]
pbafhzre-tenqr-wryylorna-fuvccvat-507[racef]
jvsvymbs-ibuuf-yljlpcpun-773[ubjlp]
fab-eqodqf-rxaiqd-etubbuzs-612[bqade]
cxy-bnlanc-ljwmh-nwprwnnarwp-251[nwacl]
hdgdovmt-bmvyz-pinovwgz-ytz-omvdidib-239[qfmcj]
wsvsdkbi-qbkno-mkxni-mykdsxq-bokmaescsdsyx-328[skbdm]
njmjubsz-hsbef-gmpxfs-tijqqjoh-727[ykelf]
foadouwbu-qobrm-oqeiwgwhwcb-142[owbqu]
cvabijtm-kivlg-ewzsapwx-538[posuz]
xgsvgmotm-igtje-gtgreyoy-696[gtemo]
oaddaeuhq-ngzzk-efadmsq-612[adeqz]
zgmfyxypbmsq-pyzzgr-yaosgqgrgml-470[efsgy]
wihmogyl-aluxy-vumeyn-zchuhwcha-110[eisnw]
hafgnoyr-fpniratre-uhag-phfgbzre-freivpr-663[rfaeg]
jqwpihizlwca-zijjqb-ewzsapwx-174[ognyv]
uwtojhynqj-hfsid-htfynsl-ijajqturjsy-619[jhsty]
hqfxxnknji-kqtbjw-wjhjnansl-177[ctzqd]
upq-tfdsfu-dboez-dpbujoh-mphjtujdt-103[dujpt]
tfiifjzmv-jtrmvexvi-ylek-wzeretzex-919[kuzli]
ugjjgkanw-hdsklau-yjskk-vwkayf-840[omzwl]
ugdgjxmd-kusnwfywj-zmfl-ogjckzgh-840[gjdfk]
vehmsegxmzi-fewoix-hitevxqirx-308[eixhm]
yflexwxoalrp-bdd-absbilmjbkq-419[esuky]
kwzzwaqdm-rmttgjmiv-lmxizbumvb-330[mzbit]
htqtwkzq-hfsid-yjhmstqtld-593[thqds]
tinnm-qobrm-qcohwbu-difqvogwbu-740[boqim]
tipfxvezt-jtrmvexvi-ylek-nfibjyfg-659[fqnis]
lzfmdshb-atmmx-qdzbpthrhshnm-859[hmbds]
nij-mywlyn-mwupyhayl-bohn-qilembij-292[vwady]
jchipqat-hrpktcvtg-wjci-gthtpgrw-999[tcghp]
dyz-combod-oqq-mecdywob-cobfsmo-250[obcdm]
dkqjcbctfqwu-ecpfa-vgejpqnqia-310[crelp]
gsrwyqiv-kvehi-gerhc-stivexmsrw-646[slxzf]
hmsdqmzshnmzk-bgnbnkzsd-cdozqsldms-261[sdmzn]
tfejldvi-xiruv-srjbvk-uvmvcfgdvek-217[kfcmn]
wrs-vhfuhw-exqqb-dqdobvlv-751[qvbdh]
willimcpy-jfumncw-alumm-mufym-682[dsbwk]
etaqigpke-lgnnadgcp-ceswkukvkqp-856[fnltm]
diozmivodjivg-nxvqzibzm-cpio-gvwjmvojmt-603[vywzn]
oxjmxdfkd-oxyyfq-absbilmjbkq-809[bxdfj]
uqtqbizg-ozilm-moo-wxmzibqwva-564[indml]
rdchjbtg-vgpst-uadltg-gtprfjxhxixdc-323[czknl]
pybgmyargtc-amjmpdsj-njyqrga-epyqq-mncpyrgmlq-808[rzoqv]
sbqiiyvyut-sxesebqju-huiuqhsx-582[suiqb]
clxalrtyr-dnlgpyrpc-sfye-epnsyzwzrj-873[rylpc]
amlqskcp-epybc-cee-bcqgel-756[ceblp]
jrncbavmrq-pnaql-pbngvat-qrirybczrag-377[rabnq]
cebwrpgvyr-onfxrg-qrcnegzrag-221[rgcen]
forwcoqhwjs-tzcksf-rsjszcdasbh-792[scfhj]
ckgvutofkj-pkrrehkgt-jkvgxzsktz-696[wxbfz]
kzeed-uqfxynh-lwfxx-qtlnxynhx-255[xnefh]
vhkkhlbox-vtgwr-hixktmbhgl-683[hkbgl]
mrxivrexmsrep-hci-viwievgl-464[msqei]
nsyjwsfyntsfq-idj-htsyfnsrjsy-931[syfjn]
awzwhofm-ufors-qobrm-qcohwbu-aofyshwbu-272[owbfh]
ahngzyzqcntr-bzmcx-cdoknxldms-651[cnzdm]
nsyjwsfyntsfq-hfsid-wjfhvznxnynts-671[dqrws]
krxqjijamxdb-npp-uxprbcrlb-589[vutpy]
ahngzyzqcntr-azrjds-knfhrshbr-209[qnogp]
pejji-bkllsd-crszzsxq-458[xlhso]
qcffcgwjs-gqojsbusf-vibh-zcuwghwqg-480[njzmp]
ziuxioqvo-moo-amzdqkma-174[zeuba]
ujqgywfau-aflwjfslagfsd-vqw-kwjnauwk-398[wafju]
elrkdcdugrxv-fdqgb-orjlvwlfv-101[mhsyz]
kpvgtpcvkqpcn-tcddkv-qrgtcvkqpu-700[ptqjs]
jfifqxov-doxab-avb-xkxivpfp-107[xfvab]
lsyrkjkbnyec-mkxni-mykdsxq-kmaescsdsyx-978[mbynk]
ocipgvke-lgnnadgcp-wugt-vguvkpi-206[hugza]
hcd-gsqfsh-qvcqczohs-rsgwub-142[dhpmf]
lsyrkjkbnyec-oqq-ckvoc-822[ckoqy]
vhkkhlbox-utldxm-vnlmhfxk-lxkobvx-787[xklhv]
vkppo-cqwdujys-vbemuh-qdqboiyi-504[qbdio]
qjopwxha-ywjzu-zaoecj-654[jaowz]
njmjubsz-hsbef-dipdpmbuf-efqbsunfou-311[bfusd]
ktiaaqnqml-jiasmb-lmdmtwxumvb-694[yxlgt]
vrurcjah-pajmn-lqxlxujcn-fxatbqxy-511[ztgdk]
vagreangvbany-qlr-znexrgvat-325[yblnw]
lgh-kwujwl-wyy-jwsuimakalagf-996[gsubl]
apuut-xgvnndadzy-ezggtwzvi-zibdizzmdib-343[qlykv]
pxtihgbsxw-utldxm-kxlxtkva-787[xtkla]
mfklstdw-esyfwlau-usfvq-vwkayf-762[kljiy]
eqpuwogt-itcfg-hwbba-fag-fgrnqaogpv-232[gafbo]
qzoggwtwsr-rms-rsdzcmasbh-688[srgmw]
yhkpvhjapcl-ibuuf-jbzavtly-zlycpjl-955[skwvb]
gpewwmjmih-hci-gywxsqiv-wivzmgi-620[txcfj]
lahxpnwrl-npp-vjatncrwp-537[aisyo]
ckgvutofkj-hatte-aykx-zkyzotm-436[ntzbr]
iehepwnu-cnwza-lhwopey-cnwoo-ykjpwejiajp-628[wepjn]
fkqbokxqflkxi-yxphbq-obpbxoze-471[napmi]
etyyx-cxd-lzqjdshmf-261[inzys]
ftzgxmbv-utldxm-ftkdxmbgz-267[wqkjm]
jyfvnlupj-jhukf-jvhapun-klwsvftlua-903[yrgnq]
zsxyfgqj-jll-qfgtwfytwd-489[sazdc]
oxjmxdfkd-zxkav-zlxqfkd-rpbo-qbpqfkd-263[vauwt]
dsxxw-cee-bcnyprkclr-470[ghzni]
enzcntvat-fpniratre-uhag-jbexfubc-533[aentb]
froruixo-mhoobehdq-dqdobvlv-803[odbhq]
raphhxuxts-qphzti-bpcpvtbtci-115[pthbc]
jvsvymbs-jhukf-jvhapun-shivyhavyf-955[yabwx]
ykhknbqh-ywjzu-odellejc-498[ehjkl]
avw-zljyla-ihzrla-zlycpjlz-201[uvdxz]
wdjcvuvmyjpn-nxvqzibzm-cpio-hvivbzhzio-967[vizbc]
xgjougizobk-pkrrehkgt-ktmotkkxotm-150[gnkzc]
kyelcrga-aylbw-rcaflmjmew-808[wsmtg]
laffe-atyzghrk-igtje-jkyomt-462[taefg]
hqtyeqsjylu-uww-ijehqwu-608[quweh]
kzgwomvqk-kivlg-kcabwumz-amzdqkm-200[cdavq]
avw-zljyla-jhukf-shivyhavyf-305[ahvyf]
guahyncw-vumeyn-xypyfijgyhn-370[ynghu]
kwtwznct-jiasmb-zmikycqaqbqwv-564[wbjnt]
sorozgxe-mxgjk-hatte-vaxingyotm-228[enmvq]
hqtyeqsjylu-sxesebqju-bqrehqjeho-348[nxucm]
qzoggwtwsr-awzwhofm-ufors-tzcksf-rsdofhasbh-948[sfowh]
jfifqxov-doxab-mixpqfz-doxpp-qbzeklildv-185[rydoa]
gsvvswmzi-vehmsegxmzi-fyrrc-irkmriivmrk-204[imrvs]
dlhwvupglk-qlssfilhu-ylzlhyjo-721[lhsuy]
crwwv-zxkav-absbilmjbkq-679[bakvw]
xzwrmkbqtm-lgm-zmkmqdqvo-720[mqkzb]
eqnqthwn-ecpfa-eqcvkpi-qrgtcvkqpu-570[qcepk]
ftzgxmbv-utldxm-nlxk-mxlmbgz-891[mxlbg]
xqvwdeoh-gbh-ghyhorsphqw-387[hgoqw]
rdchjbtg-vgpst-uadltg-pcpanhxh-141[mtvxn]
sebehvkb-vbemuh-udwyduuhydw-140[ubdeh]
gpsxdprixkt-qphzti-stktadebtci-921[tipdk]
nij-mywlyn-dyffsvyuh-omyl-nymncha-214[obtqu]
rdggdhxkt-rpcsn-rdpixcv-bpgztixcv-843[cdgpr]
pdjqhwlf-iorzhu-uhdftxlvlwlrq-803[rtwsz]
tinnm-dzoghwq-ufogg-twbobqwbu-428[bgown]
etyyx-qzaahs-lzmzfdldms-781[cmnek]
willimcpy-dyffsvyuh-fuvilunils-448[sjytb]
dpotvnfs-hsbef-qmbtujd-hsbtt-ufdiopmphz-831[zmvga]
hdgdovmt-bmvyz-ytz-xpnojhzm-nzmqdxz-109[hzpfs]
ksodcbwnsr-qobrm-aobousasbh-324[bosar]
myvybpev-tovvilokx-kmaescsdsyx-380[vsyek]
nbhofujd-cbtlfu-tbmft-571[mkltr]
sedikcuh-whqtu-uww-jusxdebewo-764[uwedh]
jvsvymbs-jhukf-klclsvwtlua-825[jxhaq]
crwwv-mixpqfz-doxpp-jxohbqfkd-575[serbn]
fmsledevhsyw-hci-xiglrspskc-646[scehi]
xekdwvwnzkqo-ywjzu-oanreyao-576[dwrqm]
gzefmnxq-vqxxknqmz-pqbmdfyqzf-352[xuyzs]
bqvvu-zua-hkceopeyo-706[eouva]
ytu-xjhwjy-gfxpjy-btwpxmtu-151[bynhm]
npmhcargjc-hcjjwzcyl-bctcjmnkclr-886[cjhlm]
xlrypetn-dnlgpyrpc-sfye-dlwpd-119[znfjd]
ejpanjwpekjwh-ydkykhwpa-hkceopeyo-758[patzv]
lhkhszqx-fqzcd-eknvdq-rsnqzfd-287[qdzfh]
froruixo-fdqgb-orjlvwlfv-179[optcg]
jvsvymbs-jovjvshal-jbzavtly-zlycpjl-253[zcnfy]
avw-zljyla-ibuuf-ylzlhyjo-149[xtcfz]
bnmrtldq-fqzcd-bzmcx-bnzshmf-cdudknoldms-157[whdus]
sno-rdbqds-idkkxadzm-rsnqzfd-703[dsknq]
vkppo-sxesebqju-tuiywd-504[epsub]
ryexqpqhteki-zubboruqd-husuylydw-790[nimls]
vetllbybxw-lvtoxgzxk-angm-kxvxbobgz-995[xbglv]
rdchjbtg-vgpst-qphzti-gtrtxkxcv-817[mayne]
dzczkrip-xiruv-irdgrxzex-vxx-rthlzjzkzfe-503[xwhmg]
qcbgiasf-ufors-pogysh-sbuwbssfwbu-454[nshbt]
qcbgiasf-ufors-qobrm-qcohwbu-igsf-hsghwbu-142[bsfgh]
zgmfyxypbmsq-pyzzgr-amlryglkclr-392[yglmr]
myxcewob-qbkno-cmkfoxqob-rexd-vklybkdybi-146[wxnuy]
amlqskcp-epybc-afmamjyrc-pcacgtgle-418[campe]
muqfedyput-isqludwuh-xkdj-huqsgkyiyjyed-660[nbtda]
vkppo-sqdto-vydqdsydw-114[pzbiy]
ziuxioqvo-jcvvg-lmxtwgumvb-668[fnbjv]
rdchjbtg-vgpst-rwdrdapit-stepgibtci-271[tdgip]
zbytomdsvo-zvkcdsm-qbkcc-zebmrkcsxq-614[nwmol]
sbnqbhjoh-fhh-efqbsunfou-103[hjxvu]
vagreangvbany-ohaal-nanylfvf-273[zfytn]
wihmogyl-aluxy-dyffsvyuh-lyuwkocmcncih-760[efwrt]
irgyyolokj-inuiurgzk-ykxboiky-332[ikyog]
gntmfefwitzx-xhfajsljw-mzsy-fhvznxnynts-437[mkuja]
tpspahyf-nyhkl-yhiipa-zhslz-539[yzmib]
encuukhkgf-rncuvke-itcuu-nqikuvkeu-700[ukcen]
mybbycsfo-mkxni-oxqsxoobsxq-198[oxbsm]
kyelcrga-zsllw-kypicrgle-730[nvjmt]
rdggdhxkt-uadltg-stktadebtci-713[btson]
dpssptjwf-qmbtujd-hsbtt-usbjojoh-623[miqos]
tcfkqcevkxg-dcumgv-vgejpqnqia-336[cgqve]
fodvvlilhg-gbh-orjlvwlfv-699[eykml]
bxaxipgn-vgpst-eaphixr-vgphh-ejgrwphxcv-817[rsizj]
pualyuhapvuhs-ibuuf-jvuahputlua-305[hlzmu]
qekrixmg-nippcfier-gsrxemrqirx-646[xhnfm]
pdjqhwlf-plolwdub-judgh-fdqgb-ghsorbphqw-543[aiewf]
fruurvlyh-vfdyhqjhu-kxqw-fxvwrphu-vhuylfh-647[hufvr]
ftzgxmbv-utldxm-ftgtzxfxgm-891[txfgm]
htsxzrjw-lwfij-gfxpjy-btwpxmtu-359[jtwxf]
gpewwmjmih-jyddc-hci-vigimzmrk-932[imcdg]
yuxufmdk-sdmpq-qss-oazfmuzyqzf-378[fmqsu]
oxmeeuruqp-eomhqzsqd-tgzf-efadmsq-508[oxhfu]
qzoggwtwsr-xszzmpsob-hsqvbczcum-610[scyrz]
avw-zljyla-ibuuf-ayhpupun-981[ualpy]
zloolpfsb-oxyyfq-bkdfkbbofkd-471[untjs]
tvsnigxmpi-jpsaiv-erepcwmw-308[nwfcx]
jvuzbtly-nyhkl-qlssfilhu-mpuhujpun-929[ulhjn]
yknnkoera-ydkykhwpa-pnwejejc-290[setqd]
tcrjjzwzvu-gcrjkzt-xirjj-ljvi-kvjkzex-659[jzkrv]
gntmfefwitzx-hmthtqfyj-xytwflj-307[tsebr]
gspsvjyp-wgezirkiv-lyrx-pefsvexsvc-412[svepg]
ugfkmewj-yjsvw-xdgowj-jwuwanafy-944[hysdk]
sbnqbhjoh-qmbtujd-hsbtt-tijqqjoh-597[bzawy]
vetllbybxw-unggr-tgterlbl-631[mfwxo]
tipfxvezt-avccpsvre-tljkfdvi-jvimztv-139[vtice]
hvbizodx-wpiit-yzkvmohzio-603[ytsvn]
sno-rdbqds-eknvdq-nodqzshnmr-209[dnqso]
rtqlgevkng-dcumgv-rwtejcukpi-960[yhfsz]
ugjjgkanw-tmffq-ksdwk-606[bqdtn]
jyfvnlupj-jhukf-jvhapun-ylhjxbpzpapvu-981[ygxts]
kzeed-gzssd-ijufwyrjsy-203[sdejy]
chnylhuncihuf-jfumncw-alumm-uwkocmcncih-864[btkms]
qfmcusbwq-suu-ghcfous-922[btras]
bgmxkgtmbhgte-ietlmbv-zktll-xgzbgxxkbgz-215[isyml]
pwcvonofrcig-xszzmpsob-zopcfohcfm-506[avfiu]
iruzfrtkzmv-dzczkrip-xiruv-treup-tfrkzex-fgvirkzfej-633[rzfik]
mrxivrexmsrep-nippcfier-qerekiqirx-776[ombwt]
iwcjapey-ywjzu-ykwpejc-ykjpwejiajp-420[ztgqm]
joufsobujpobm-qmbtujd-hsbtt-sfbdrvjtjujpo-467[jbotu]
xst-wigvix-yrwxefpi-gerhc-hiwmkr-230[mylsd]
ytu-xjhwjy-ojqqdgjfs-xmnuunsl-931[mvbrl]
zovldbkfz-avb-jxkxdbjbkq-159[bkdjv]
qvbmzvibqwvit-ntwemz-amzdqkma-226[mqvza]
eadalsjq-yjsvw-xdgowj-ljsafafy-840[nqijl]
dszphfojd-tdbwfohfs-ivou-bdrvjtjujpo-233[ximod]
gsvvswmzi-tpewxmg-kveww-erepcwmw-308[wizmq]
ktwbhtvmbox-ktuubm-hixktmbhgl-657[hynsw]
iuruxlar-vrgyzoi-mxgyy-sgtgmksktz-488[ufytd]
nzydfxpc-rclop-awldetn-rcldd-nzyeltyxpye-379[pusht]
iehepwnu-cnwza-ynukcajey-lhwopey-cnwoo-pnwejejc-212[enwcj]
vcibutulxiom-jfumncw-alumm-ijyluncihm-214[muicl]
pyknyegle-aylbw-qyjcq-392[hzumy]
atyzghrk-xghhoz-cuxqynuv-436[cmdsl]
vcibutulxiom-jfumncw-alumm-jolwbumcha-682[dgfeu]
cybyjqho-whqtu-isqludwuh-xkdj-cqdqwucudj-946[qudch]
lejkrscv-jtrmvexvi-ylek-uvgrikdvek-893[vekri]
nvrgfezqvu-upv-jkfirxv-789[vfrue]
fnjyxwrinm-ljwmh-lxjcrwp-bjunb-173[ljyap]
gsrwyqiv-kvehi-qekrixmg-fyrrc-wepiw-360[tnixb]
gsvvswmzi-fyrrc-hitevxqirx-308[irvsx]
nglmtuex-ynssr-vahvhetmx-wxlbzg-267[xeghl]
qjopwxha-acc-ykjpwejiajp-524[gjqhn]
wrs-vhfuhw-mhoobehdq-dqdobvlv-803[pdlvm]
otzkxtgzoutgr-inuiurgzk-uvkxgzouty-878[modya]
gvcskirmg-fyrrc-xvemrmrk-568[rmcgk]
xqvwdeoh-hjj-ghsduwphqw-231[hwdjq]
sbejpbdujwf-cvooz-nbslfujoh-441[nwsha]
zixppfcfba-oxyyfq-ixyloxqlov-315[xfoyi]
bdavqofuxq-rxaiqd-pqhqxabyqzf-846[yzpfi]
vhglnfxk-zktwx-vetllbybxw-ktuubm-hixktmbhgl-501[bkltx]
tinnm-qobrm-qcohwbu-zcuwghwqg-584[ejnps]
rmn-qcapcr-kyelcrga-cee-bcqgel-730[cerag]
apwmeclga-djmucp-ylyjwqgq-756[acgjl]
pybgmyargtc-amlqskcp-epybc-zsllw-pcacgtgle-392[cglpa]
jxdkbqfz-avb-tlohpelm-783[blade]
npmhcargjc-bwc-pcqcypaf-808[phjds]
rdchjbtg-vgpst-qphzti-itrwcdadvn-843[zueyn]
votubcmf-qmbtujd-hsbtt-sfdfjwjoh-259[tbfjd]
ujoon-gpqqxi-advxhixrh-661[mlyen]
ykjoqian-cnwza-lhwopey-cnwoo-iwjwcaiajp-576[waoci]
gpewwmjmih-wgezirkiv-lyrx-xvemrmrk-386[mreiw]
gzefmnxq-ngzzk-pqhqxabyqzf-352[drqzm]
nwilwcejc-nwxxep-oanreyao-394[lqxwm]
hdgdovmt-bmvyz-zbb-gjbdnodxn-785[bdgmn]
gsrwyqiv-kvehi-aietsrmdih-gerhc-gsexmrk-viwievgl-672[bsytl]
rdchjbtg-vgpst-tvv-rdcipxcbtci-999[ctvbd]
joufsobujpobm-fhh-tbmft-389[mnyql]
fnjyxwrinm-mhn-anbnjalq-147[nmbzl]
wfummczcyx-yaa-guhuaygyhn-578[yaucg]
qfkkj-mfyyj-dpcgtnpd-457[dfjkp]
ncjzrpytn-mfyyj-wzrtdetnd-509[qnwdl]
sno-rdbqds-bnknqetk-idkkxadzm-bnmszhmldms-365[dkmns]
wkqxodsm-cmkfoxqob-rexd-vyqscdsmc-380[cdmoq]
dpssptjwf-tdbwfohfs-ivou-tbmft-233[lbdah]
dpssptjwf-dipdpmbuf-xpsltipq-285[pdsfi]
qyujihctyx-wuhxs-wiuncha-jolwbumcha-214[zlbuy]
oxmeeuruqp-pkq-iadwetab-716[eapqu]
wfummczcyx-ohmnuvfy-xsy-womnigyl-mylpcwy-214[ymcwf]
xmtjbzidx-ytz-ncdkkdib-525[wmfvr]
qekrixmg-jpsaiv-xiglrspskc-204[dwvst]
kwtwznct-zijjqb-mvoqvmmzqvo-356[qmnjk]
ltpedcxots-ytaanqtpc-rdcipxcbtci-999[lkmsv]
zovldbkfz-yrkkv-abmxoqjbkq-913[kboqv]
yhkpvhjapcl-wshzapj-nyhzz-jvuahputlua-279[cnmzy]
pdjqhwlf-edvnhw-whfkqrorjb-257[unmsk]
rgllk-bdavqofuxq-rxaiqd-iadwetab-664[mkeil]
wdjcvuvmyjpn-nxvqzibzm-cpio-nzmqdxzn-343[nzmvc]
xzwrmkbqtm-kpwkwtibm-nqvivkqvo-486[dcwog]
rdchjbtg-vgpst-rpcsn-rdpixcv-hidgpvt-765[stnfw]
buzahisl-lnn-thuhnltlua-955[oschg]
enzcntvat-ohaal-bcrengvbaf-793[anbce]
eqpuwogt-itcfg-uecxgpigt-jwpv-hkpcpekpi-362[pgcei]
avw-zljyla-qlssfilhu-dvyrzovw-175[lvasw]
iuruxlar-xgsvgmotm-inuiurgzk-zxgototm-982[mlnut]
tyepcyletzylw-prr-opalcexpye-925[boymz]
hqcfqwydw-rqiauj-huiuqhsx-556[abndo]
tcrjjzwzvu-vxx-kirzezex-841[zxejr]
qspkfdujmf-sbccju-sfdfjwjoh-285[ktqja]
vcibutulxiom-wbiwifuny-guleyncha-682[uzxms]
ejpanjwpekjwh-bqvvu-ywjzu-nayaerejc-628[jeawn]
kwvacumz-ozilm-kivlg-lmdmtwxumvb-330[mlvik]
kzgwomvqk-kwvacumz-ozilm-zijjqb-bziqvqvo-460[zqvik]
wfintfhynaj-wfggny-qfgtwfytwd-775[fwgnt]
tcfkqcevkxg-hnqygt-vgejpqnqia-622[qgcek]
yrwxefpi-nippcfier-wepiw-386[ipewf]
xjinphzm-bmvyz-zbb-omvdidib-109[bimzd]
qlm-pbzobq-ciltbo-abmilvjbkq-107[jvsxc]
tfcfiwlc-gcrjkzt-xirjj-tfekrzedvek-295[wjhqa]
nchhg-moo-lmdmtwxumvb-382[mhobc]
bknsykmdsfo-lkcuod-myxdksxwoxd-692[azknp]
jxdkbqfz-yrkkv-qoxfkfkd-211[kfdqx]
jlidywncfy-dyffsvyuh-lyuwkocmcncih-344[ycfdh]
iuruxlar-igtje-iugzotm-lotgtiotm-358[tigou]
foadouwbu-gqojsbusf-vibh-qighcasf-gsfjwqs-116[sfbgo]
ucynmlgxcb-aylbw-nspafyqgle-288[fswap]
amppmqgtc-aylbw-qfgnngle-808[galmn]
kfg-jvtivk-irsszk-jrcvj-659[jkvir]
xjinphzm-bmvyz-ytz-yzqzgjkhzio-681[ubzyj]
plolwdub-judgh-fdqgb-ilqdqflqj-491[dlqbf]
crwwv-yrkkv-bkdfkbbofkd-783[inhxy]
nuatmlmdpage-otaoaxmfq-pqhqxabyqzf-612[qvdxy]
pualyuhapvuhs-ibuuf-jbzavtly-zlycpjl-435[znegj]
eza-dpncpe-clmmte-lylwjdtd-509[delcm]
tfejldvi-xiruv-irsszk-uvgcfpdvek-659[rvaql]
pybgmyargtc-aylbw-qcptgacq-600[oscut]
kdijqrbu-vbemuh-qdqboiyi-972[biqdu]
irgyyolokj-vrgyzoi-mxgyy-jkvruesktz-644[ygkor]
rgllk-uzfqdzmfuazmx-otaoaxmfq-oazfmuzyqzf-560[zfamo]
iqmbazulqp-eomhqzsqd-tgzf-fqotzaxask-378[qmsxo]
oqnidbshkd-atmmx-kzanqzsnqx-703[vztcl]
vjpwncrl-lqxlxujcn-mnyjacvnwc-615[cnjlv]
bkzrrhehdc-cxd-bnmszhmldms-807[dhmbc]
kgjgrypw-epybc-zyqicr-bcnyprkclr-704[mzsty]
apuut-ezggtwzvi-yzqzgjkhzio-265[pmlri]
rflsjynh-hfsid-htfynsl-qtlnxynhx-567[cqbst]
zilqwikbqdm-lgm-nqvivkqvo-330[wmxzv]
lahxpnwrl-ouxfna-anlnrerwp-355[nzkvm]
veqtekmrk-ikk-tyvglewmrk-386[kemrt]
sgmtkzoi-pkrrehkgt-rumoyzoiy-514[zytsw]
yflexwxoalrp-oxyyfq-mrozexpfkd-341[xfoye]
bwx-amkzmb-kivlg-kwibqvo-xczkpiaqvo-434[lkqrz]
clxalrtyr-nsznzwlep-opdtry-145[nczlj]
bjfutsneji-jll-wjhjnansl-125[szrni]
bcfhvdczs-cpxsqh-ghcfous-324[chsfb]
aflwjfslagfsd-kusnwfywj-zmfl-ugflsafewfl-216[flswa]
gcfcnuls-aluxy-wuhxs-jolwbumcha-578[uclah]
pyknyegle-pybgmyargtc-aylbw-qfgnngle-470[gyeln]
oazegyqd-sdmpq-gzefmnxq-qss-geqd-fqefuzs-508[qesdf]
xjmmjndqz-mvwwdo-yzkvmohzio-551[ypzog]
zekvierkzferc-treup-uvgcfpdvek-789[stzno]
ejpanjwpekjwh-xqjju-odellejc-576[enmtc]
ltpedcxots-tvv-sthxvc-115[skptq]
jshzzpmplk-yhiipa-zavyhnl-981[tluns]
mvhkvbdib-agjrzm-yzqzgjkhzio-629[wcyms]
yhwooebeaz-acc-paydjkhkcu-316[acehk]
gzefmnxq-otaoaxmfq-emxqe-326[emqxa]
frqvxphu-judgh-udeelw-pdqdjhphqw-335[orhsy]
frqvxphu-judgh-gbh-uhfhlylqj-153[hufgj]
cjpibabsepvt-cvooz-fohjoffsjoh-623[emnjh]
yflexwxoalrp-zxkav-zlxqfkd-xkxivpfp-783[xfklp]
froruixo-hjj-zrunvkrs-777[synml]
jvuzbtly-nyhkl-jhukf-jvhapun-jvuahputlua-929[ndjmy]
kwzzwaqdm-kivlg-kwibqvo-nqvivkqvo-460[yzmsr]
ktiaaqnqml-zijjqb-apqxxqvo-798[qaijx]
hqfxxnknji-hfsid-wjhjnansl-931[nhjfi]
xjmmjndqz-wpiit-vxlpdndodji-941[dijmn]
ksodcbwnsr-rms-cdsfohwcbg-896[xvuol]
eza-dpncpe-tyepcyletzylw-nsznzwlep-nzyeltyxpye-847[xydvf]
emixwvqhml-jiasmb-ivitgaqa-928[iamqv]
etyyx-idkkxadzm-ehmzmbhmf-313[josnm]
lhkhszqx-fqzcd-bgnbnkzsd-qdzbpthrhshnm-911[bqzra]
dzczkrip-xiruv-upv-wzeretzex-945[icynm]
wihmogyl-aluxy-mwupyhayl-bohn-lymyulwb-266[nuraz]
kmjezxodgz-xcjxjgvoz-zibdizzmdib-239[yzkgs]
hqfxxnknji-wfggny-hzxytrjw-xjwanhj-593[jnxhw]
oknkvcta-itcfg-eqpuwogt-itcfg-ecpfa-eqcvkpi-ucngu-986[cgtef]
ykhknbqh-oywrajcan-dqjp-qoan-paopejc-810[ondma]
nwilwcejc-ywjzu-ykwpejc-naoawnyd-238[zjwsh]
dzczkrip-xiruv-sleep-rercpjzj-451[wykfr]
gpewwmjmih-nippcfier-qerekiqirx-178[ieprm]
bqvvu-oywrajcan-dqjp-wjwhuoeo-420[jowaq]
kzgwomvqk-xtiabqk-oziaa-bziqvqvo-148[qaiko]
fab-eqodqf-eomhqzsqd-tgzf-fdmuzuzs-820[fqzde]
lzfmdshb-dff-sqzhmhmf-755[fhmds]
bpvctixr-gpqqxi-sthxvc-297[xcipq]
xjgjmapg-kmjezxodgz-xcjxjgvoz-vivgtndn-915[jhigl]
pbybeshy-qlr-bcrengvbaf-715[jwrxz]
uqtqbizg-ozilm-kivlg-tijwzibwzg-902[lrepd]
excdklvo-zbytomdsvo-zvkcdsm-qbkcc-crszzsxq-614[rpnqm]
ucynmlgxcb-njyqrga-epyqq-kylyeckclr-418[yclqe]
hqtyeqsjylu-sxesebqju-mehaixef-556[eqshj]
chnylhuncihuf-wifilzof-jfumncw-alumm-uwkocmcncih-734[cufhi]
wyvqljapsl-ihzrla-zhslz-669[ncmjb]
jlidywncfy-wifilzof-vohhs-omyl-nymncha-578[yfhil]
jfifqxov-doxab-bdd-abpfdk-913[dbfao]
xjgjmapg-wpiit-gjbdnodxn-551[zvmhq]
dkqjcbctfqwu-tcfkqcevkxg-ecpfa-eqcvkpi-tgegkxkpi-414[ckeqf]
tmrszakd-idkkxadzm-lzmzfdldms-365[hwgsv]
nglmtuex-vtgwr-vhtmbgz-mxvaghehzr-215[tsfmz]
uiovmbqk-rmttgjmiv-bziqvqvo-252[vimqb]
iehepwnu-cnwza-fahhuxawj-oanreyao-680[mavot]
tvsnigxmpi-glsgspexi-gsrxemrqirx-100[xwqld]
qcbgiasf-ufors-rms-aobousasbh-818[sabof]
sgmtkzoi-hatte-xkykgxin-722[ktgix]
nglmtuex-xzz-tvjnblbmbhg-787[kopjm]
ikhcxvmbex-vtgwr-xgzbgxxkbgz-683[ncalt]
tbxmlkfwba-molgbzqfib-zxkav-pbosfzbp-419[bfzak]
gspsvjyp-fmsledevhsyw-tpewxmg-kveww-eguymwmxmsr-568[nihyt]
gvcskirmg-gerhc-jmrergmrk-672[lrzta]
xmrrq-uzgugdslw-jwsuimakalagf-502[agulm]
shoewudys-hqrryj-tulubefcudj-530[ixkdy]
mrxivrexmsrep-hci-wxsveki-230[miwqn]
tmrszakd-bgnbnkzsd-otqbgzrhmf-599[qjfny]
rwcnawjcrxwju-kdwwh-fxatbqxy-355[jezwy]
hjgbwuladw-tmffq-ogjckzgh-528[gnlzr]
lxuxaodu-lxwbdvna-pajmn-ajkkrc-dbna-cnbcrwp-511[umnsy]
nsyjwsfyntsfq-idj-jslnsjjwnsl-619[ywpco]
ubhatstkwhnl-ktuubm-mktbgbgz-761[btkug]
lhkhszqx-fqzcd-bgnbnkzsd-dmfhmddqhmf-781[bdnsk]
vehmsegxmzi-ikk-vieguymwmxmsr-854[pnkle]
udskkaxawv-jsttal-esfsywewfl-528[sawef]
jxdkbqfz-avb-cfkxkzfkd-887[kfbdx]
jyddc-jpsaiv-gsrxemrqirx-386[rdijs]
tagzsrsjvgmk-wyy-umklgewj-kwjnauw-606[wgjka]
wyvqljapsl-ihzrla-huhsfzpz-409[znhcm]
jvuzbtly-nyhkl-zjhclunly-obua-jbzavtly-zlycpjl-331[lyjzb]
gvaaz-sbejpbdujwf-gmpxfs-vtfs-uftujoh-467[tsogk]
aczupnetwp-nsznzwlep-cplnbftdtetzy-535[nptze]
gifavtkzcv-vxx-jrcvj-815[vcjxa]
ytu-xjhwjy-uqfxynh-lwfxx-uzwhmfxnsl-255[yzalu]
eqttqukxg-ecpfa-eqcvkpi-cpcnauku-440[zotsy]
ncjzrpytn-nlyoj-nzletyr-nzyeltyxpye-639[zhytj]
bgmxkgtmbhgte-lvtoxgzxk-angm-phkdlahi-605[nyzfq]
ytu-xjhwjy-xhfajsljw-mzsy-qfgtwfytwd-801[rewpl]
gpsxdprixkt-rwdrdapit-prfjxhxixdc-349[qrskt]
ojk-nzxmzo-kgvnodx-bmvnn-hvivbzhzio-629[cvkyu]
ktwbhtvmbox-unggr-ybgtgvbgz-267[nbjvs]
wdjcvuvmyjpn-nxvqzibzm-cpio-kpmxcvndib-109[tndsr]
froruixo-gbh-zrunvkrs-439[roubf]
oazegyqd-sdmpq-otaoaxmfq-fdmuzuzs-352[admoq]
fruurvlyh-fdqgb-sxufkdvlqj-699[mynfj]
votubcmf-qmbtujd-hsbtt-efqmpznfou-441[wznfd]
emixwvqhml-akidmvomz-pcvb-abwziom-928[gwxum]
qcbgiasf-ufors-foppwh-sbuwbssfwbu-506[sbfuw]
mrxivrexmsrep-fyrrc-pskmwxmgw-100[pmxwc]
nsyjwsfyntsfq-uqfxynh-lwfxx-uzwhmfxnsl-125[bwtze]
kwtwznct-kpwkwtibm-nqvivkqvo-928[kwtvi]
lahxpnwrl-ouxfna-vjwjpnvnwc-953[nwajl]
ydjuhdqjyedqb-hqrryj-ixyffydw-114[cwzyi]
rgndvtcxr-snt-igpxcxcv-661[uqvtr]
bgmxkgtmbhgte-pxtihgbsxw-vahvhetmx-tvjnblbmbhg-371[bghtm]
pwcvonofrcig-tzcksf-fsoqeiwgwhwcb-428[swzyd]
yaxsnlcrun-ajkkrc-bqryyrwp-641[ycnxl]
jef-iushuj-hqrryj-bqrehqjeho-738[zaytn]
bdavqofuxq-bxmefuo-sdmee-xmnadmfadk-352[dmaef]
qcffcgwjs-qobrm-rsdzcmasbh-350[mezyn]
jxdkbqfz-yxphbq-tlohpelm-289[wfvbo]
hdgdovmt-bmvyz-wvnfzo-yzndbi-915[dvzbm]
hqcfqwydw-sxesebqju-vydqdsydw-712[smhbn]
qfmcusbwq-qobrm-qcohwbu-zcuwghwqg-636[qwbcu]
jvsvymbs-msvdly-jvuahputlua-955[vsuaj]
hqcfqwydw-rkddo-huiuqhsx-218[dhquw]
shoewudys-uww-jhqydydw-816[jysaf]
dyz-combod-zvkcdsm-qbkcc-dbksxsxq-562[cdbks]
tcrjjzwzvu-treup-tfrkzex-rercpjzj-217[fewxh]
pynffvsvrq-cynfgvp-tenff-grpuabybtl-481[fnpvy]
yhtwhnpun-jyfvnlupj-wshzapj-nyhzz-huhsfzpz-773[zyogh]
bnqqnrhud-bzmcx-lzqjdshmf-443[jmvdf]
yrwxefpi-glsgspexi-hitevxqirx-282[bzvyj]
iuxxuyobk-hgyqkz-zkinturume-540[ukixy]
gpsxdprixkt-rpcsn-prfjxhxixdc-271[ewstq]
vrurcjah-pajmn-ouxfna-anlnrerwp-615[qsfhg]
mrxivrexmsrep-tpewxmg-kveww-hiwmkr-854[votlz]
irgyyolokj-ixeumktoi-jek-rghuxgzuxe-904[egiko]
dsxxw-zyqicr-pcacgtgle-912[swjtv]
yhkpvhjapcl-kfl-ylhjxbpzpapvu-955[phlaj]
gsrwyqiv-kvehi-tpewxmg-kveww-hitevxqirx-724[mnsyt]
muqfedyput-rkddo-vydqdsydw-998[mlqhr]
ykhknbqh-ywjzu-iwngapejc-628[hjknw]
uwtojhynqj-gzssd-ywfnsnsl-619[snjwy]
emixwvqhml-kpwkwtibm-zmkmqdqvo-148[mkqwi]
upv-uvjzxe-347[uvejp]
cqwdujys-ryexqpqhteki-rkddo-skijecuh-iuhlysu-738[uyvln]
fydelmwp-nsznzwlep-dezclrp-379[elpzd]
yknnkoera-fahhuxawj-wymqeoepekj-914[kwucf]
hwbba-vqr-ugetgv-lgnnadgcp-ugtxkegu-908[guabe]
xqvwdeoh-ixccb-udeelw-fxvwrphu-vhuylfh-803[heuvw]
xekdwvwnzkqo-acc-iwjwcaiajp-784[mswzt]
rdchjbtg-vgpst-qphzti-jhtg-ithixcv-609[thgic]
cqwdujys-vbemuh-iqbui-608[ubiqc]
htsxzrjw-lwfij-gfxpjy-rfsfljrjsy-489[jfrsl]
rtqlgevkng-dcumgv-wugt-vguvkpi-362[gvukt]
oxaflxzqfsb-mixpqfz-doxpp-zrpqljbo-pbosfzb-185[pbfox]
lqwhuqdwlrqdo-hjj-sxufkdvlqj-569[qdjlh]
wihmogyl-aluxy-wuhxs-wiuncha-nywbhifias-994[ztysn]
hwbba-oknkvcta-itcfg-dwppa-tgugctej-492[tacgb]
mybbycsfo-oqq-wkxkqowoxd-120[oqbkw]
tyepcyletzylw-dnlgpyrpc-sfye-xlcvpetyr-249[xawqz]
hjgbwuladw-tmffq-ugflsafewfl-684[flwag]
sbnqbhjoh-kfmmzcfbo-bobmztjt-493[jnism]
ykjoqian-cnwza-lhwopey-cnwoo-zarahkliajp-602[ihrlb]
pynffvsvrq-fpniratre-uhag-erfrnepu-585[kwurl]
vetllbybxw-utldxm-mxvaghehzr-787[lxbeh]
ktfitzbgz-lvtoxgzxk-angm-nlxk-mxlmbgz-787[gxzkl]
emixwvqhml-rmttgjmiv-tijwzibwzg-876[tszyl]
esyfwlau-udskkaxawv-hdsklau-yjskk-ksdwk-658[ksadu]
jsvagsulanw-tskcwl-jwuwanafy-216[oklsn]
wfummczcyx-mwupyhayl-bohn-xymcah-552[xcazi]
tbxmlkfwba-oxyyfq-xkxivpfp-705[xfbkp]
ytu-xjhwjy-rflsjynh-uqfxynh-lwfxx-ijuqtdrjsy-853[ztoub]
cvabijtm-jiasmb-tijwzibwzg-564[qatln]
jef-iushuj-uww-ixyffydw-816[ptbea]
zntargvp-fpniratre-uhag-svanapvat-715[dnmgz]
mvydjvxodqz-zbb-jkzmvodjin-343[fxmnr]
xlrypetn-nlyoj-dlwpd-873[ldnpy]
jrncbavmrq-pnaql-pbngvat-ybtvfgvpf-117[hgwjo]
guahyncw-dyffsvyuh-uhufsmcm-786[ufhyc]
ide-htrgti-rpcsn-rdpixcv-igpxcxcv-115[ciprx]
nwilwcejc-ydkykhwpa-qoan-paopejc-628[acpwe]
udpsdjlqj-sodvwlf-judvv-oderudwrub-673[dujvl]
xekdwvwnzkqo-lhwopey-cnwoo-zarahkliajp-966[zdklq]
ixccb-iorzhu-xvhu-whvwlqj-803[emzxn]
gpbepvxcv-gpqqxi-prfjxhxixdc-297[utzsx]
zntargvp-wryylorna-fuvccvat-871[dxepl]
jvyyvzpcl-ipvohghykvbz-yhiipa-yljlpcpun-149[aupdo]
lzfmdshb-okzrshb-fqzrr-lzmzfdldms-651[ndpcm]
krxqjijamxdb-bljenwpna-qdwc-mnyuxhvnwc-381[njwxa]
apuut-xviyt-yzkvmohzio-395[iotuv]
rzvkjiduzy-kgvnodx-bmvnn-mzxzdqdib-187[tayqb]
pkl-oaynap-xwogap-owhao-888[zlbay]
ynukcajey-nwxxep-paydjkhkcu-394[kyace]
fnjyxwrinm-ouxfna-mnbrpw-771[nfmrw]
lejkrscv-tfcfiwlc-irsszk-nfibjyfg-399[fcisj]
dwbcjkun-ljwmh-anlnrerwp-589[nwjlr]
hdgdovmt-bmvyz-ojk-nzxmzo-wpiit-omvdidib-291[nmqdz]
nwzekwypera-xwogap-hwxknwpknu-810[wknpa]
htwwtxnaj-ojqqdgjfs-wjxjfwhm-567[jwfhq]
ynukcajey-zua-lqnydwoejc-420[xqrgw]
pelbtravp-cynfgvp-tenff-npdhvfvgvba-559[vfpna]
ibghopzs-foppwh-aobousasbh-142[ranfu]
qxdwpopgsdjh-tvv-rdcipxcbtci-713[wscpi]
vkppo-sbqiiyvyut-vbemuh-husuylydw-452[uyvbh]
lqwhuqdwlrqdo-vfdyhqjhu-kxqw-orjlvwlfv-699[qlwdh]
tcrjjzwzvu-gcrjkzt-xirjj-vexzevvizex-113[gusom]
wsvsdkbi-qbkno-lexxi-kmaescsdsyx-614[mnoyt]
kmjezxodgz-xviyt-xjvodib-jkzmvodjin-681[jdiov]
kgjgrypw-epybc-kyelcrga-njyqrga-epyqq-asqrmkcp-qcptgac-990[cgpqy]
tagzsrsjvgmk-hdsklau-yjskk-xafsfuafy-736[sakfg]
iwcjapey-xqjju-wymqeoepekj-472[wshmz]
ckgvutofkj-xghhoz-zxgototm-618[dapcq]
excdklvo-bkllsd-zebmrkcsxq-692[sdyzv]
ugdgjxmd-jsttal-ogjckzgh-320[nxksp]
dmbttjgjfe-gmpxfs-fohjoffsjoh-675[emswj]
esyfwlau-wyy-kwjnauwk-762[zfkst]
htsxzrjw-lwfij-gzssd-xytwflj-359[jswfl]
bnmrtldq-fqzcd-bzmcx-bnzshmf-cdozqsldms-157[rchap]
enqvbnpgvir-wryylorna-hfre-grfgvat-247[rgnva]
rzvkjiduzy-mvwwdo-hvivbzhzio-629[vzidh]
rgllk-omzpk-ymzmsqyqzf-742[ytshk]
wyvqljapsl-kfl-shivyhavyf-175[lvyaf]
zloolpfsb-molgbzqfib-oxyyfq-absbilmjbkq-731[rdypn]
wlqqp-srjbvk-glityrjzex-399[jlqrb]
foadouwbu-qvcqczohs-hsqvbczcum-402[coqub]
gsrwyqiv-kvehi-wgezirkiv-lyrx-wlmttmrk-334[dxqri]
apwmeclga-afmamjyrc-amlryglkclr-470[dvjwq]
amjmpdsj-aylbw-amyrgle-bcqgel-756[fmsjn]
pbybeshy-sybjre-ynobengbel-507[beyns]
jchipqat-rpcsn-hwxeexcv-505[yozns]
excdklvo-nio-bomosfsxq-458[bhmlt]
oaxadrgx-ngzzk-ymzmsqyqzf-534[eqjfa]
ajyqqgdgcb-zsllw-umpiqfmn-262[sdmlk]
wkqxodsm-lexxi-cobfsmoc-510[tpnbi]
tcfkqcevkxg-ecpfa-eqcvkpi-octmgvkpi-986[ckepv]
pbybeshy-onfxrg-qrcyblzrag-845[bryga]
rdggdhxkt-hrpktcvtg-wjci-gtrtxkxcv-479[tgckr]
willimcpy-jfumncw-alumm-lywycpcha-500[utskn]
qyujihctyx-luxciuwncpy-yaa-mbcjjcha-942[tzusp]
pelbtravp-pnaql-fgbentr-585[pabel]
jef-iushuj-vbemuh-tuiywd-140[jvndh]
rwcnawjcrxwju-kjbtnc-mnyuxhvnwc-355[cnwjr]
dszphfojd-tdbwfohfs-ivou-ufdiopmphz-285[dfohp]
uqtqbizg-ozilm-kivlg-kwibqvo-ewzsapwx-538[iqwzb]
njmjubsz-hsbef-cbtlfu-bobmztjt-649[dtsjy]
zlilocri-zxkav-zlxqfkd-pefmmfkd-887[zijtp]
iwcjapey-ydkykhwpa-oanreyao-576[jfnpy]
pybgmyargtc-zgmfyxypbmsq-zyqicr-mncpyrgmlq-600[gzfir]
houngfgxjuay-yigbktmkx-natz-ygrky-228[gykan]
lnkfaypeha-zua-odellejc-680[gmnlj]
vhglnfxk-zktwx-cxeeruxtg-kxlxtkva-319[xkteg]
wfintfhynaj-gzssd-qfgtwfytwd-541[mztfn]
amlqskcp-epybc-aylbw-nspafyqgle-886[alpyb]
iuruxlar-pkrrehkgt-ygrky-774[tsflj]
xtwtelcj-rclop-clmmte-opgpwzaxpye-145[tskxr]
bqvvu-ywjzu-ykwpejc-hwxknwpknu-862[wkujn]
enqvbnpgvir-zntargvp-cynfgvp-tenff-ybtvfgvpf-585[vfngp]
rzvkjiduzy-xviyt-xjvodib-xjiovdihzio-967[pjzrk]
njmjubsz-hsbef-sbnqbhjoh-cvooz-pqfsbujpot-623[bjosh]
zixppfcfba-mixpqfz-doxpp-zlkqxfkjbkq-653[pfxkq]
hdgdovmt-bmvyz-kgvnodx-bmvnn-rjmfncjk-239[rpovu]
hdgdovmt-bmvyz-xviyt-yzndbi-109[pdslu]
xjinphzm-bmvyz-kgvnodx-bmvnn-vivgtndn-525[nvmbd]
eqnqthwn-eqttqukxg-hnqygt-rwtejcukpi-544[qteng]
zvyvgnel-tenqr-sybjre-grpuabybtl-793[lyfvq]
tcorcikpi-ecpfa-eqcvkpi-ugtxkegu-596[teibn]
nwzekwypera-fahhuxawj-lqnydwoejc-810[mszph]
mhi-lxvkxm-cxeeruxtg-kxvxbobgz-605[palbn]
wfummczcyx-jlidywncfy-vumeyn-mylpcwym-838[ijqrb]
fhezusjybu-zubboruqd-cqdqwucudj-374[ubdqc]
kgjgrypw-epybc-aylbw-amyrgle-qcptgacq-314[mjlic]
tcfkqcevkxg-dwppa-ucngu-362[trzmu]
oazegyqd-sdmpq-gzefmnxq-eomhqzsqd-tgzf-qzsuzqqduzs-560[dmrkq]
jlidywncfy-vohhs-xypyfijgyhn-110[yhfij]
ftzgxmbv-lvtoxgzxk-angm-hixktmbhgl-163[gxmtb]
xgjougizobk-vrgyzoi-mxgyy-cuxqynuv-644[yntxg]
yknnkoera-lhwopey-cnwoo-odellejc-524[qypjt]
eza-dpncpe-upwwjmply-zapcletzyd-769[pezac]
cvabijtm-ntwemz-zmikycqaqbqwv-564[mqabc]
irgyyolokj-kmm-rghuxgzuxe-410[gkmor]
ahngzyzqcntr-idkkxadzm-sdbgmnknfx-807[ndkza]
surmhfwloh-fkrfrodwh-pdqdjhphqw-829[myflz]
elrkdcdugrxv-edvnhw-xvhu-whvwlqj-387[mhtue]
sbejpbdujwf-xfbqpojafe-ezf-mphjtujdt-155[tqslv]
shoewudys-rkddo-tuiywd-686[sntpq]
qcffcgwjs-dzoghwq-ufogg-igsf-hsghwbu-350[psevy]
ibghopzs-qobrm-qcohwbu-zopcfohcfm-740[obchf]
atyzghrk-vrgyzoi-mxgyy-sgtgmksktz-150[tjpiv]
luxciuwncpy-dyffsvyuh-nluchcha-994[cuhyf]
vcibutulxiom-xsy-uwkocmcncih-214[ciumo]
vkppo-rkddo-cqdqwucudj-140[dckop]
ftzgxmbv-vtgwr-kxlxtkva-163[tvxgk]
jlidywncfy-vumeyn-womnigyl-mylpcwy-682[ylmnw]
mtzslklcozfd-nlyoj-nzletyr-qtylyntyr-639[xswlz]
ixccb-fkrfrodwh-fxvwrphu-vhuylfh-283[fhrcu]
ykjoqian-cnwza-oywrajcan-dqjp-qoan-paopejc-212[tsrfk]
yhkpvhjapcl-yhiipa-jbzavtly-zlycpjl-617[ftaes]
qmpmxevc-kvehi-wgezirkiv-lyrx-xvemrmrk-516[emrvi]
fmsledevhsyw-veffmx-wivzmgiw-204[efmvw]
zlkprjbo-doxab-zxkav-zlxqfkd-obxznrfpfqflk-237[rqgnd]
ksodcbwnsr-qobrm-qcohwbu-aobousasbh-142[bosac]
yrwxefpi-glsgspexi-qevoixmrk-828[atyoc]
dlhwvupglk-wshzapj-nyhzz-klzpnu-877[fbewu]
bjfutsneji-idj-hzxytrjw-xjwanhj-359[wyrxt]
zsxyfgqj-bjfutsneji-hfsid-htfynsl-zxjw-yjxynsl-229[jsfyn]
pualyuhapvuhs-ibuuf-klwsvftlua-643[ualfh]
yknnkoera-ydkykhwpa-klanwpekjo-420[kanye]
iehepwnu-cnwza-ydkykhwpa-zaoecj-420[pozyv]
ftzgxmbv-ktuubm-mxvaghehzr-605[mbght]
gntmfefwitzx-xhfajsljw-mzsy-ywfnsnsl-983[woefn]
xmtjbzidx-wpiit-ncdkkdib-863[idbkt]
ktiaaqnqml-uqtqbizg-ozilm-kpwkwtibm-ivitgaqa-850[ywdzl]
dyz-combod-sxdobxkdsyxkv-mkxni-wkxkqowoxd-224[isamh]
nsyjwsfyntsfq-rnqnyfwd-lwfij-kqtbjw-uzwhmfxnsl-151[roxtn]
ykjoqian-cnwza-xqjju-nayaerejc-524[yvwax]
ixccb-iorzhu-ilqdqflqj-569[fcjsy]
ovbunmneqbhf-ohaal-qrfvta-819[abfhn]
glrcplyrgmlyj-zyqicr-pcyaosgqgrgml-626[glryc]
ajyqqgdgcb-bwc-ylyjwqgq-262[qgybc]
fhezusjybu-rkddo-bewyijysi-608[ybdei]
aflwjfslagfsd-kusnwfywj-zmfl-xafsfuafy-632[wltdc]
iuxxuyobk-lruckx-vaxingyotm-644[xuiko]
jyfvnlupj-kfl-thyrlapun-773[lfjnp]
eqpuwogt-itcfg-tcfkqcevkxg-dcumgv-qrgtcvkqpu-934[ionzm]
hqcfqwydw-sqdto-seqjydw-bqrehqjeho-998[qdehw]
xst-wigvix-ikk-wivzmgiw-724[rtszg]
tinnm-pibbm-zcuwghwqg-766[mfgbn]
vkppo-rqiauj-cqdqwucudj-348[qucdj]
bnmrtldq-fqzcd-ahngzyzqcntr-atmmx-dmfhmddqhmf-989[mdqfh]
vkrhzxgbv-unggr-tgterlbl-319[tsrkm]
wihmogyl-aluxy-wuhxs-uhufsmcm-526[uhmls]
nzydfxpc-rclop-awldetn-rcldd-pyrtyppctyr-951[pcdry]
egdytrixat-eaphixr-vgphh-pcpanhxh-921[hpaxe]
nwzekwypera-lhwopey-cnwoo-hkceopeyo-654[eowpy]
zovldbkfz-zlkprjbo-doxab-zxkav-ixyloxqlov-367[olxzb]
lgh-kwujwl-xmrrq-kusnwfywj-zmfl-hmjuzskafy-372[gmait]
ipvohghykvbz-jhukf-ylzlhyjo-357[awkcb]
dmybmsuzs-otaoaxmfq-dqmocgueufuaz-976[muaod]
zbytomdsvo-bkllsd-cdybkqo-796[eufzt]
sbqiiyvyut-fbqijys-whqii-iqbui-998[ebfqa]
qyujihctyx-wbiwifuny-guleyncha-838[ejitg]
ikhcxvmbex-unggr-kxvxbobgz-683[ejuzo]
hafgnoyr-ohaal-jbexfubc-923[bjmzn]
shmml-wryylorna-genvavat-455[almnr]
yknnkoera-xqjju-klanwpekjo-420[empdo]
upq-tfdsfu-kfmmzcfbo-efwfmpqnfou-415[nmfed]
xcitgcpixdcpa-rdchjbtg-vgpst-hrpktcvtg-wjci-stepgibtci-557[ctgip]
fydelmwp-nsznzwlep-opgpwzaxpye-769[pewzl]
glrcplyrgmlyj-cee-pcqcypaf-548[ymzlj]
xmtjbzidx-wpiit-xjiovdihzio-265[ztyda]
rwcnawjcrxwju-ljwmh-mnbrpw-901[wjrcm]
wlqqp-tyftfcrkv-ivtvzmzex-841[tvfqz]
thnulapj-wshzapj-nyhzz-zopwwpun-669[pzhnw]
bpvctixr-rdggdhxkt-hrpktcvtg-wjci-pcpanhxh-401[chptg]
eza-dpncpe-awldetn-rcldd-dlwpd-743[delpa]
pbybeshy-sybjre-npdhvfvgvba-299[bvyeh]
qmpmxevc-kvehi-jpsaiv-viwievgl-802[viemp]
jrncbavmrq-pnaql-pbngvat-qrcyblzrag-715[arbnq]
ugjjgkanw-wyy-kzahhafy-736[clxvm]
mwupyhayl-bohn-nluchcha-682[hacln]
qjopwxha-xwogap-ykjpwejiajp-108[jpawo]
avw-zljyla-jhukf-huhsfzpz-175[hzafj]
lzfmdshb-okzrshb-fqzrr-cdoknxldms-573[olwsf]
cqwdujys-sbqiiyvyut-uww-iuhlysui-426[cwfuy]
yaxsnlcrun-ljwmh-bqryyrwp-901[rylnw]
cebwrpgvyr-pelbtravp-enoovg-znantrzrag-455[raegn]
nbhofujd-qmbtujd-hsbtt-efwfmpqnfou-389[fbtud]
pynffvsvrq-pnaql-pbngvat-ynobengbel-507[nmyvz]
ltpedcxots-gpqqxi-ldgzhwde-739[bkapm]
nglmtuex-vahvhetmx-wxiehrfxgm-527[zwksp]
kgjgrypw-epybc-aylbw-amyrgle-qyjcq-626[ygabc]
yflexwxoalrp-avb-abmilvjbkq-445[siqmz]
jshzzpmplk-kfl-klclsvwtlua-331[lkpsz]
ujoon-eaphixr-vgphh-prfjxhxixdc-193[hyzjx]
dfcxsqhwzs-qobrm-zcuwghwqg-168[qwcgh]
bqvvu-ydkykhwpa-klanwpekjo-966[kapvw]
aoubshwq-pibbm-kcfygvcd-740[wnucy]

View File

@@ -0,0 +1 @@
L2, L3, L3, L4, R1, R2, L3, R3, R3, L1, L3, R2, R3, L3, R4, R3, R3, L1, L4, R4, L2, R5, R1, L5, R1, R3, L5, R2, L2, R2, R1, L1, L3, L3, R4, R5, R4, L1, L189, L2, R2, L5, R5, R45, L3, R4, R77, L1, R1, R194, R2, L5, L3, L2, L1, R5, L3, L3, L5, L5, L5, R2, L1, L2, L3, R2, R5, R4, L2, R3, R5, L2, L2, R3, L3, L2, L1, L3, R5, R4, R3, R2, L1, R2, L5, R4, L5, L4, R4, L2, R5, L3, L2, R4, L1, L2, R2, R3, L2, L5, R1, R1, R3, R4, R1, R2, R4, R5, L3, L5, L3, L3, R5, R4, R1, L3, R1, L3, R3, R3, R3, L1, R3, R4, L5, L3, L1, L5, L4, R4, R1, L4, R3, R3, R5, R4, R3, R3, L1, L2, R1, L4, L4, L3, L4, L3, L5, R2, R4, L2

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,5 @@
UDRLRRRUULUUDULRULUDRDRURLLDUUDURLUUUDRRRLUUDRUUDDDRRRLRURLLLDDDRDDRUDDULUULDDUDRUUUDLRLLRLDUDUUUUDLDULLLDRLRLRULDDDDDLULURUDURDDLLRDLUDRRULDURDDLUDLLRRUDRUDDDLLURULRDDDRDRRLLUUDDLLLLRLRUULRDRURRRLLLLDULDDLRRRRUDRDULLLDDRRRDLRLRRRLDRULDUDDLDLUULRDDULRDRURRURLDULRUUDUUURDRLDDDURLDURLDUDURRLLLLRDDLDRUURURRRRDRRDLUULLURRDLLLDLDUUUDRDRULULRULUUDDULDUURRLRLRRDULDULDRUUDLLUDLLLLUDDULDLLDLLURLLLRUDRDLRUDLULDLLLUDRLRLUDLDRDURDDULDURLLRRRDUUDLRDDRUUDLUURLDRRRRRLDDUUDRURUDLLLRRULLRLDRUURRRRRLRLLUDDRLUDRRDUDUUUDRUDULRRULRDRRRDDRLUUUDRLLURURRLLDUDRUURDLRURLLRDUDUUDLLLUULLRULRLDLRDDDU
DRRRDRUDRLDUUDLLLRLULLLUURLLRLDRLURDRDRDRLDUUULDRDDLDDDURURUDRUUURDRDURLRLUDRRRDURDRRRDULLRDRRLUUUURLRUULRRDUDDDDUURLDULUDLLLRULUDUURRDUULRRDDURLURRUDRDRLDLRLLULULURLRDLRRRUUURDDUUURDRDRUURUDLULDRDDULLLLLRLRLLUDDLULLUDDLRLRDLDULURDUDULRDDRLUDUUDUDRLLDRRLLDULLRLDURUDRLRRRDULUUUULRRLUDDDLDUUDULLUUURDRLLULRLDLLUUDLLUULUULUDLRRDDRLUUULDDRULDRLURUURDLURDDRULLLLDUDULUDURRDRLDDRRLRURLLRLLLLDURDLUULDLDDLULLLRDRRRDLLLUUDDDLDRRLUUUUUULDRULLLDUDLDLURLDUDULRRRULDLRRDRUUUUUURRDRUURLDDURDUURURULULLURLLLLUURDUDRRLRRLRLRRRRRULLDLLLRURRDULLDLLULLRDUULDUDUDULDURLRDLDRUUURLLDLLUUDURURUD
UDUUUUURUDLLLRRRDRDRUDDRLLDRRLDRLLUURRULUULULRLLRUDDRLDRLUURDUDLURUULLLULLRRRULRLURRDDULLULULRUDDDUURDRLUDUURRRRUUULLRULLLDLURUDLDDLLRRRULDLLUURDRRRDRDURURLRUDLDLURDDRLLLUUDRUULLDLLLLUUDRRURLDDUDULUDLDURDLURUURDUUUURDLLLRUUURDUUUDLDUDDLUDDUDUDUDLDUDUUULDULUURDDLRRRULLUDRRDLUDULDURUURULLLLUDDDLURURLRLRDLRULRLULURRLLRDUDUDRULLRULRUDLURUDLLDUDLRDRLRDURURRULLDDLRLDDRLRDRRDLRDDLLLLDUURRULLRLLDDLDLURLRLLDULRURRRRDULRLRURURRULULDUURRDLURRDDLDLLLRULRLLURLRLLDDLRUDDDULDLDLRLURRULRRLULUDLDUDUDDLLUURDDDLULURRULDRRDDDUUURLLDRDURUDRUDLLDRUD
ULRDULURRDDLULLDDLDDDRLDUURDLLDRRRDLLURDRUDDLDURUDRULRULRULULUULLLLDRLRLDRLLLLLRLRRLRLRRRDDULRRLUDLURLLRLLURDDRRDRUUUDLDLDRRRUDLRUDDRURRDUUUDUUULRLDDRDRDRULRLLDLDDLLRLUDLLLLUURLDLRUDRLRDRDRLRULRDDURRLRUDLRLRLDRUDURLRDLDULLUUULDRLRDDRDUDLLRUDDUDURRRRDLDURRUURDUULLDLRDUDDLUDDDRRRULRLULDRLDDRUURURLRRRURDURDRULLUUDURUDRDRLDLURDDDUDDURUDLRULULURRUULDRLDULRRRRDUULLRRRRLUDLRDDRLRUDLURRRDRDRLLLULLUULRDULRDLDUURRDULLRULRLRRURDDLDLLRUUDLRLDLRUUDLDDLLULDLUURRRLRDULRLRLDRLDUDURRRLLRUUDLUURRDLDDULDLULUUUUDRRULLLLLLUULDRULDLRUDDDRDRDDURUURLURRDLDDRUURULLULUUUDDLRDULDDLULDUDRU
LRLRLRLLLRRLUULDDUUUURDULLLRURLDLDRURRRUUDDDULURDRRDURLRLUDLLULDRULLRRRDUUDDRDRULLDDULLLUURDLRLRUURRRLRDLDUDLLRLLURLRLLLDDDULUDUDRDLRRLUDDLRDDURRDRDUUULLUURURLRRDUURLRDLLUDURLRDRLURUURDRLULLUUUURRDDULDDDRULURUULLUDDDDLRURDLLDRURDUDRRLRLDLRRDDRRDDRUDRDLUDDDLUDLUDLRUDDUDRUDLLRURDLRUULRUURULUURLRDULDLDLLRDRDUDDDULRLDDDRDUDDRRRLRRLLRRRUUURRLDLLDRRDLULUUURUDLULDULLLDLULRLRDLDDDDDDDLRDRDUDLDLRLUDRRDRRDRUURDUDLDDLUDDDDDDRUURURUURLURLDULUDDLDDLRUUUULRDRLUDLDDLLLRLLDRRULULRLRDURRRLDDRDDRLU

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,601 @@
10,80,6,69,22,99,63,92,30,67,28,93,0,50,65,87,38,7,91,60,57,40,84,51,27,12,44,88,64,35,39,74,61,55,31,48,81,89,62,37,94,43,29,14,95,8,78,49,90,97,66,70,25,68,75,45,42,23,9,96,56,72,59,32,85,3,71,79,18,24,33,19,15,20,82,26,21,13,4,98,83,34,86,5,2,73,17,54,1,77,52,58,76,36,16,46,41,47,11,53
3 82 18 50 90
16 37 52 67 28
30 54 80 11 10
60 79 7 65 58
76 83 38 51 1
83 63 60 88 98
70 87 5 99 14
85 3 11 16 33
72 69 97 36 49
26 17 58 13 2
30 80 64 53 69
36 0 32 46 70
13 31 22 95 15
12 35 5 84 21
39 60 68 83 47
77 93 26 62 88
87 76 80 10 63
32 7 28 82 44
43 30 31 16 74
33 86 42 45 47
95 86 93 45 67
20 58 63 35 97
84 79 10 54 49
48 66 75 23 61
5 30 6 56 71
75 8 85 12 98
37 51 91 24 23
50 54 81 53 33
72 57 52 25 6
56 40 95 87 22
52 19 53 9 32
23 99 48 26 73
10 8 54 20 79
49 45 34 74 90
27 72 30 13 57
1 60 72 85 64
62 39 56 93 78
90 17 87 48 7
9 13 45 23 69
44 80 86 55 21
86 57 25 98 18
42 75 38 9 66
54 19 99 87 49
33 32 53 8 6
17 68 24 58 95
2 5 80 10 61
27 16 40 67 78
66 13 24 42 75
25 7 35 11 85
93 38 4 31 77
52 81 68 88 95
82 50 46 87 20
3 54 59 75 51
92 93 38 72 4
8 77 61 31 56
45 16 8 44 62
92 23 42 20 74
73 83 65 9 84
55 13 21 70 59
34 2 98 47 37
3 54 85 79 76
42 29 45 12 46
60 59 24 67 80
89 15 99 68 48
40 7 95 44 70
75 31 99 16 32
80 56 43 30 36
66 73 35 20 61
67 28 89 23 54
47 26 69 70 50
35 91 81 13 15
73 1 37 68 28
98 29 9 22 56
12 59 82 67 31
77 47 32 79 52
22 73 39 14 46
99 0 27 34 40
4 5 38 23 18
64 26 89 59 79
71 76 53 49 62
14 37 27 67 94
76 16 79 61 83
8 43 36 28 75
10 4 24 56 44
26 1 88 9 86
14 78 43 10 30
56 29 1 61 9
7 95 39 35 25
33 87 71 97 21
72 0 4 2 24
88 0 72 42 6
53 79 58 80 20
57 84 15 21 64
98 17 43 8 95
2 22 59 63 78
78 21 33 57 72
10 69 85 73 16
92 60 87 39 63
40 15 77 80 56
6 62 99 50 3
38 72 34 41 74
90 29 9 6 91
94 39 56 71 67
53 21 22 32 10
73 48 79 47 85
5 49 73 24 8
75 12 11 47 69
66 70 89 62 48
99 3 29 88 30
10 40 32 33 43
61 93 2 58 84
47 62 51 16 82
80 22 50 31 65
76 85 83 4 40
86 59 68 14 69
52 5 74 9 72
84 69 38 1 27
78 90 46 97 95
57 21 32 93 29
11 66 20 51 48
2 3 58 18 53
11 96 63 33 13
55 47 30 9 46
98 85 79 19 65
87 94 77 27 75
54 97 46 33 90
99 93 22 0 51
83 53 34 29 38
35 65 80 82 9
56 30 19 49 15
43 40 51 67 37
4 30 85 24 21
83 94 69 91 99
13 32 82 86 12
66 9 60 65 97
71 96 55 92 6
83 8 63 56 18
4 0 74 70 34
15 87 44 80 29
68 33 99 14 47
76 86 46 6 8
90 80 77 30 62
97 66 55 59 36
1 43 27 15 57
54 70 38 21 89
75 96 97 54 29
62 43 69 57 88
36 46 73 84 28
18 98 38 63 4
59 35 99 90 58
66 29 60 25 95
91 4 87 76 41
26 19 45 96 74
7 82 3 81 31
17 64 51 93 71
41 51 14 70 26
35 38 50 25 13
95 60 88 36 24
66 94 62 97 83
21 10 37 1 96
38 90 81 96 14
40 82 71 18 83
78 17 65 46 84
7 92 63 79 49
55 21 89 95 72
60 35 26 67 42
59 77 15 6 75
18 16 21 55 4
98 49 38 43 30
0 85 69 96 19
93 22 87 66 94
7 43 98 18 57
29 20 91 60 21
28 51 17 10 14
96 12 15 25 37
12 69 27 41 36
58 11 42 44 9
8 56 33 7 30
70 64 78 17 61
22 28 94 0 99
16 64 88 22 48
65 42 23 7 26
97 12 63 57 45
29 94 91 21 54
95 43 0 85 46
9 50 54 98 35
45 37 84 87 5
40 23 14 17 18
73 43 86 41 59
69 77 78 15 60
79 9 45 59 85
38 56 64 95 60
39 22 14 57 66
98 53 83 76 16
62 94 72 54 82
77 44 6 66 46
9 89 11 84 63
81 94 87 83 21
22 90 1 93 92
24 65 34 45 99
36 93 59 5 43
76 49 51 0 68
71 34 55 7 73
14 10 45 63 95
30 94 79 67 11
93 98 82 96 91
3 79 55 70 24
68 56 87 12 76
19 31 67 1 54
49 62 23 15 10
10 74 98 15 6
14 31 66 38 86
68 84 60 80 26
34 72 87 92 61
81 56 73 12 53
11 69 4 6 23
38 47 16 99 96
7 13 40 41 78
12 5 1 18 88
20 42 10 82 73
66 97 72 55 99
26 59 6 79 53
74 80 98 28 69
25 95 17 29 34
85 64 84 90 42
95 50 58 51 66
48 27 81 94 0
35 82 57 71 16
32 93 70 40 25
31 73 46 12 90
39 94 52 9 88
3 23 59 77 29
2 40 93 85 38
74 97 12 50 1
22 36 68 65 37
70 15 44 90 55
42 20 82 0 78
10 49 62 3 22
91 73 84 40 28
72 13 11 60 19
58 95 66 36 22
91 99 77 94 44
70 14 85 13 52
49 6 2 50 35
47 42 15 98 63
35 1 99 21 68
93 32 30 76 5
79 96 10 85 16
19 69 81 78 70
66 36 26 94 39
78 51 55 4 97
21 36 53 1 26
77 42 20 12 65
17 52 6 40 16
19 85 2 24 23
95 68 76 14 30
19 11 64 99 60
63 55 8 40 65
41 75 62 53 83
26 34 46 72 79
68 6 35 62 77
43 14 88 7 11
40 45 98 86 64
3 53 56 87 30
28 37 48 10 72
13 69 72 93 17
1 46 8 56 37
78 27 49 64 59
81 99 33 76 79
84 98 51 82 31
57 41 45 15 10
65 72 79 17 29
67 0 33 32 69
56 96 92 46 53
88 3 18 87 51
97 52 58 67 17
51 69 43 20 63
1 26 27 47 99
53 23 14 90 86
4 56 13 36 11
88 11 57 73 89
43 34 91 15 58
9 39 18 12 14
1 98 29 77 52
84 97 96 68 10
99 5 69 53 45
10 43 24 60 55
64 57 30 3 0
22 65 68 32 83
52 38 74 97 20
27 25 33 41 67
54 42 3 1 55
66 92 44 98 35
14 82 5 10 39
52 79 69 76 48
64 58 60 91 42
45 55 35 9 72
36 74 99 33 26
67 4 25 50 14
15 2 96 82 11
34 84 90 95 26
8 66 52 43 63
79 98 36 85 41
47 24 33 88 71
86 91 83 40 18
79 68 49 64 35
23 57 27 77 71
95 39 43 19 98
78 62 65 58 60
52 73 82 4 32
22 54 57 45 3
43 85 30 60 94
35 46 28 55 6
82 42 13 83 59
76 70 41 61 1
76 89 34 96 1
95 60 55 23 88
37 13 61 92 62
98 77 32 82 31
33 74 71 58 86
73 91 92 49 44
53 6 29 8 95
4 31 54 20 97
98 57 2 65 75
43 88 1 58 0
49 91 70 1 79
17 90 33 65 54
56 47 63 83 52
8 45 72 84 39
43 37 71 97 59
90 93 20 31 96
98 84 2 87 73
97 16 19 24 38
14 11 94 92 36
4 10 27 44 30
20 77 81 80 28
35 51 93 24 62
54 56 41 68 79
29 67 89 60 12
63 91 18 90 99
28 48 94 50 73
20 27 34 59 43
66 55 35 98 57
40 53 21 99 4
17 74 80 5 12
76 22 6 61 23
70 67 69 33 9
87 2 12 68 27
13 52 82 15 84
24 51 89 53 38
96 23 91 97 10
50 8 68 67 0
65 3 92 4 70
53 77 59 86 66
41 78 44 52 71
62 19 17 63 75
43 88 15 84 13
41 7 47 16 23
12 71 8 83 50
36 31 22 5 79
71 95 17 90 63
64 52 32 3 93
70 13 99 40 5
22 18 83 11 55
47 59 78 45 29
9 98 73 46 79
5 51 84 26 40
64 62 0 66 18
33 83 47 1 63
89 31 99 54 36
98 15 86 9 50
67 7 75 85 17
96 27 64 81 19
80 30 29 54 52
49 25 36 5 90
39 29 40 16 69
38 55 67 71 59
42 72 51 10 45
94 75 21 27 0
84 6 22 33 30
33 64 82 97 39
79 7 62 49 99
26 3 13 66 10
37 98 15 80 47
1 35 30 50 43
56 92 41 82 34
68 79 11 0 65
70 84 26 76 96
1 72 31 80 8
9 38 98 17 7
12 19 6 29 89
96 87 70 75 77
84 74 64 54 13
16 68 44 79 43
61 47 69 26 50
43 20 45 21 87
80 50 83 26 49
64 99 71 75 9
18 96 6 94 88
76 97 51 11 74
85 47 25 72 93
96 36 81 55 27
63 18 57 1 29
9 35 83 88 98
90 21 3 67 82
58 94 55 10 98
2 24 71 93 57
74 34 21 35 73
89 88 6 16 8
76 81 38 28 83
36 53 63 67 18
51 74 60 69 85
32 22 80 58 98
34 92 13 12 26
46 61 31 96 47
90 1 5 10 48
12 76 95 83 17
24 84 65 44 28
81 80 41 79 15
29 61 75 94 40
65 22 40 75 86
93 77 46 35 87
88 5 91 48 74
92 28 66 47 30
69 2 29 67 94
78 38 1 53 68
84 70 26 7 72
92 87 55 47 6
51 82 36 73 28
75 58 35 49 56
61 85 60 19 24
16 23 71 74 33
42 7 57 82 70
14 97 59 99 49
46 30 89 79 41
5 24 92 19 65
0 80 33 78 23
4 37 31 16 41
79 73 88 36 67
86 29 62 61 71
40 51 27 57 85
53 68 31 60 83
48 69 24 17 96
54 89 22 77 64
95 26 21 65 41
48 7 20 68 21
31 22 1 99 96
82 63 78 2 70
18 83 58 92 51
81 64 98 44 89
23 74 99 75 6
81 14 37 8 85
12 36 55 20 47
88 7 90 87 43
3 44 83 15 2
97 15 69 76 95
13 44 31 10 14
40 83 49 11 65
43 98 55 92 89
90 33 73 32 53
25 79 77 83 68
5 10 23 15 19
18 4 92 51 76
17 90 70 49 39
74 63 75 42 67
46 66 18 17 28
75 76 78 72 44
57 39 97 27 99
36 58 62 90 82
14 45 48 64 1
51 90 58 6 37
28 30 57 54 10
45 80 39 4 0
29 17 66 18 55
96 44 36 76 34
94 50 0 71 99
11 67 96 87 64
48 30 31 68 40
89 55 23 92 42
16 62 37 83 33
66 42 91 70 72
28 69 96 17 71
99 5 2 26 19
60 87 51 83 76
77 33 64 61 54
61 93 90 82 88
80 11 25 40 28
60 29 34 39 21
24 13 72 77 2
19 95 47 17 0
86 97 50 42 87
7 18 80 23 30
41 6 96 92 98
36 45 77 71 38
19 40 47 39 53
83 7 80 86 65
37 22 19 84 92
29 17 76 4 33
97 50 1 12 21
15 58 39 38 74

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,300 @@
hqBqJsqHhHvhHHqlBvlfpHQQwLVzVwtVzjzttjQVSjMjwL
gRTRnCRsFNGbTzLjwcSTMmSz
dGgsRWPGdWgZJqBBqhfpPq
HNCNJHCWJRRLqNJWlfrrrwsmlwGmmf
dddvLdLjdDvjvswlmGwlZQtjrt
dvcpbLVcvNJJHNPHSp
QDprSpLQRLQrQDmQcQFZjbbhZwdRsRFbbBss
gWGGPgNvJlgJzDlNGHCGPNZZgFBbsjbFFBwZwfhdZbZB
lHTlGMHlGCPNvClzGzJHvGcrMcVtLqMLcrrQVcVDrqrm
SrBpJFfldlFNslFJBZwsmwgVGGsCCVmZZD
jLtjvzLQMtWjbbQvDZZwGRJGgwggGZgv
MzqqjznQPqnnjznnctnFlSddPfHflhfBJFNdHd
mPNNGVCRngnSbgNw
WqsqlTssgvqvZWZzhsTzWhScdHtfJJnfbtSJwfczdtSS
sqTvhpqQvWZQLmDpDGMDGrgL
DQRcLQVLbbcbrFPcRtTBBBJnTZrrnmZTrMgJ
slGjjjdlhMfvdMQTvg
jlzNhWHhhWjHlwwwGLDSDtPQVtRzRbSzpp
DzDgfvzfDczfHCHSlgHLCmWG
PrpNPJtpPMBssmmVdmSVVr
PSRMwPnMpBNtNBTnnZwDqzQFfwhjZZqfhh
fzfBwhBJFbCwbwwg
strtgtrPgmPgFRsMdRnZRMFn
mrmLPDvGmmtSLDgmSqvHchhcHQzcQQJHBfBh
NsgwPPDgsPHqsTqqmLbLrDRhmrRVrbVW
lFpGFtfFlvSFplGFzptSGSSlhZbhjhfrmWbhLhmLbCZVZjWr
ccplJQSGcSSpVFvNqqsqPNqPQPTwqd
HFhPNNZGqSZrCDBVZBCB
RJTtwczTzCRVQrRHpR
mfgblfltwgwwmlJgcHNnGhSbFNnFsFjFqG
tSRqNRHpHnMSTqpcmrWWfqfmrCQCrW
lhGDtbgVVgDsDbhfldfwrzrfcdzwcr
vtDDhsgFBTNZFBHS
LcNpLLBNgdmHGmsBCrRBQDDwnwRj
hSWfZVhfPJJhfVWbhzbnQqQnRRRqPvCCrjvjwj
ztJSSJhzzSTJrZSbzzJTfzbZmLmggdmNMFNpmtmMGFFGNpmt
TRdFfLbTnLvZVlZvznQV
pgJGprJNhghhNjjPgPNrhNqqlVVlQVVQqQjfzBfQvZzB
rmGmSwJPwJprrNDbsfMRsdTDcDWHfM
QMpZZTtwMBttJMMbVqPpqLqbVlbqqN
rjCFGrdGRwdDHSnqflPVLqqVNllrfl
DHGDRvhvwTZhJWBQ
LcQCCpLQVhrdcFQCJrmmmwDwvDtJJnnw
TsZqqTzMRqZjfsjTTDjsNJnmnStRSHnnSJmnJSNH
sMMZZbDjZFdbVCFphV
FCcdFFGBsdDrbMNSmSdmQR
tVttHVLhvVgfTTtffNSMQRMZSRmMQNmHSb
gngvvwJtVVTvVvvvfwvJThhCzGcnsCjmCDmscPcGCsGsmz
fsnzRNZswZszPRZSLflPpDhlhvgWHmjWvJjh
bVcCqjbdjbcMdBrddrQphvHHmHWlggpWpppqJJ
FBTdFQGrTjLNsNtL
MSWWgMdgdbWbbfdgsPmddgCmSLZvSFvLQvnLrFNZvZFLlLLl
hjpJjGthjRNRptwJJqVBllnvrrlTTQFZqnTZnn
tjDGHwhHHjwjjJGpwjwjjJpwsdgffmbgMsmbDNcMcdmCPdsm
MlDrrgnTDLlCCmCRFgRSCR
HHhbbNQMccQFSNBmmpJNSJ
MwbMbshsswVbHQsbcVMcrtDllTlLqfTGVzLGrTlT
gSFzqQTpmVpQVpLFLrzJJRthlsQBlPsZsBhZst
rwrNDdbHdBhRhZbsjB
vvvMHwHcwGCwwNfMVSrqffWpSfSFzLmT
RNgMgRCCgCfPNfvNgVQmhPVWWjWjLLdLBj
JhJqqqwGDchsBVbdjldmBLmG
schZzDwTJzFTsctHFMtfftgMttpM
GHHWqWFWfWHqbRWsFZFmqZbhNjNDNppNjrjDcQdbpddhjr
wCLCVPfwgVSnPNrQhnDcjcNpDD
TPgLlggJLVwPVVPPwgTwvtSCFmzGGqzGZsGRqWBGfFRFJFRB
LfFLmGTPHBfpHmzBLdZfBfZTbWWttWSDJtWVDJDtSWJzVCCV
RssRRRhrRwQqMQQwnPngQrwvVSjttjJSjSVtWWCWjbVb
hQPnnRnQgNcQqqQQcsZTNTLpdZZfpZFHNpBp
VTCVVnwfFTvFmTCvWwJHdlhHWBJhJBRWNHgh
ZbSMZbctGtScQSZsSpZpPpplhBhtdJDRDJjhdtlRJRjNRj
rLsbBQSMBGspPGcMPQvnqmwzwmCVLmqVmwTF
GVrrQVHHHQGTllQjPHGrlCQpZZpJFWZFzzjBssDJghzhFZ
NSMmWmtqMWqSNbcctdLcdghpgpppssZgbgzpFzJJFs
cfLqLwMRdtNLMlQrvflWTQPffQ
FjtGflGsbNqjsmjGGGbmqQQQBQBTjdpTpJTWvJBddj
CPrVRMnvvLSRHLnBpwdWTRBQwQzBzR
SnZMZPcHMlqchsvGGb
nnJnswzPCtmZDCpmhphD
rSVVLQQQGQjwpdmdNmpS
VvBcQvGcQgGLBgWrwznfJsncltJsJnssPM
dhbwLStzSGmmmzJJvFgJNvnrgvhv
VTsTsRscRsVBMRVTTsjZVPCnDNvfrPfDvNCfBrPNDJ
scHHQTpJZjHwzLSHHtqHSt
MHmFsBDmGpGTBfmCfWCffhzgvf
wcjwnRLPZRVbtCjtNttGCh
ZLGVJRrnPPPwQwPppqDHFpBFTpqFDr
GzMgVfGRdRVngDjhqcjctrtrzzzs
QbQSHwHSLbWwJJFwJPLPSWTQjrhqtjflThccsclCcscCCmmj
JFbNSbLvHHLQFLvwQJFWSBVgMNGdBBnBMVfddpGngB
sZHNJwMsvHswwvMWqBzhChWPMBzd
bHQQQRDHRcRcDljttBldlPBdggBCqB
QjnDbDjjjncRjbQnfZpvssZNHnppFNpvvp
NdmfPNMHMdNMHcffHBCwwsvsRRllvwlcqjwscw
VLhVGLpLShgvrjwFhjqfls
pppnnQtVpGZVWtzGgVzgSSfnCCDmdPBMDbmmDMmdNMBmWNmm
rrfgCrrMllfnBhBrdCFfWLFmmVFVWQvWwtwV
TmSGSqNzvwwTFVvj
NSGSmNbDzpmSpbHmSJqqlMgdMndcgdccdpgllRRh
bbPtLnLcLJzTjcJbbTcttLcSgwmvWfVvfVvBgfmWVJMJMJMW
ZsDNNGDRsrHzpNRwMlgRlgmMWvffWM
FGzQpZGGLFjnSFbF
DQZVDdWWNBtgWnJCnL
SSHSmbHRFqGrmqJrbbGzjmzCwrvgvwnBwnCvprwvpwwPvv
qFFFSmsRRzzFjcFsSsjmzJzflhlZTTThdhVflZlVDDhMcN
cdvrFddqDtDvqgCDtFtrvvvFSmShPShJVJmMJSJbVBgTlmbM
GzjpHzGHHfQNfJSlPQbJBSTJBM
HWpspsWjNsGRHfpwNszzLfGqnCnZtdvvcZvwqFCcZqMZCv
rhHhDhhDrRNwDRhNRLRqNPHjHSpVpVlljSSMnlHnjS
sVVBsFBJBtBSPSjtjPPZZS
JmddVTzsffcGNwzCqNqR
nQfqFtZWFZnFJWfpGqhDsGLLPLVbrPhr
CzjwMTgBgTNSGLVVDPbjbS
wMCmgNNdgvzGdRQcFGFdfJ
CbqCDnwFpDpCVfBPmPffPfRfpB
svcsjlGJGnlnvjvzgQQgGzsZPhBRcRPhWfBZBhPhWRRhPN
sJngnjSGGTGzgJGrrbCqLHrCLwSFqV
hnRnJrwMHnQRRRwMhRrnJRBLZtBPdPSdtZZjjstsLHBP
pBBzzcbTbzCcFzTvlSCZLCtSvvttdZ
FWmNzBFNDnRqNRDM
lvzlSPRDSpDJmNwNGgFpfsFN
WBHrtrLBbhWHtdrFwFFsjzwfFjsdsF
HWnrHnTWhWTCTzTBnRZqDDDCqZcclRvSJR
qcdVbpcMFQcdMGcMFjjpbCnCGmCnJHDHDGJChzCJCJ
wWwlSfBRgRNBDPJnCgCrgzms
tBTfTRwlwRLNwTRmWtNwQFZtqcjcdcqpbdQMqMdd
jJRzwDdwFdJddcjjFCFvQLvNlBhSBhCC
gMMpbHpmnHpWfnlCSBQCPmPllQSs
nHWHVfTGdTSjZzDT
sCVTsBPltgDSbLvRMMDT
WNrjNmWZwmZwfVLvLRbRNvMp
mrHGrmnjqVzjGqdmCltlhFFllgsHBPCg
wbglgTFRblnMRltJBNrDDWQbtdbN
dqCpcjPLGfHZQBJNGGvQDZ
SPssjVSqPCLpScfCgFRVmTlRwndlRwTR
hWMWMhTTDgWMzGMszQShGWJPCQmPVCNPffPfVJftqNQC
nbnHHwLrnswwPVCPZV
nsRvFHLsvplvrcsSWDDDddjjDlMTjT
HRCnhWZhCddgwRcwhdWZHHQLJzSLsSzjJwSjztsmtzsmLF
VlVVNNVqTlMVbTVVMqvqvrDTjQfFtjstJmzftfzsSbtStJQb
pQvvPpBqNBccPWWhcWWc
glJTndVWCTDDVFvnVndVlCvwmBmqBBwQmwPwmMPggGsPGm
NhcSrhNZHhZzRtHcNRrSMSMSFBMGmsQQGLMPPF
hcpRzbcHjRhRbZRzZRztzRpJVdCdnfCnlFvdDTnJCVDjWd
dqWvjjBdWWqMjdvvMJjWWjMGgcfchhzrhwbrwShwgzSqNb
mmmmsVTlVlsLQmnpsNcfgfwNLgczhcGhzw
RslpsnGGGlWdCZFMMRWR
pfSpZSrdSMVDVVLMMDDZpdgRWMPGqqPGqmqqGGhGHNRN
wwQBwtjvvJlvsnbTbvBRHgPmlqhlqWWHqZZgNm
JnQwJvjTtzTZwJnbzzfCrfLCfdfdddfD
PZcnljZFTVmQdlQh
JCLLqBBCSNCCqzJNzStBpStBmsdhVTdmVWsWmdhfLhWVdfrR
BpMzzqSzppMMqpJqqgzPFcjZjnTjgcjbPjPDPZ
HLHWmqBHHqWbMHFtbgWcdhspPcPchndPpn
ZRVSQZRfVZGRgnfsdhLgLndL
jzJRwJRSJJvSlZQGRVwlSGZDMqmmCCCmtNbCmtCMzFNLbF
fDhlBhhZmQRRfHwLdjHFFWQQjQ
ZMTssVVzvbCqJddsLwwH
TzgTbgGGzztMbbvzvVbGvSPBrlShRrfnNrnBDlNcRDZRZB
bjfqGfvFfcHvRwGFRHjbgQtddlQljWpWnQgdWWll
TSPVVSVwSzSDTDlntDndnlWddt
hTrrNCBCVrCrrVshThHHbZvFGscwbfFGRJcZ
jNhMjcgvMNgWggvttcFtchvPFFzdPPrQrrGGQQszRPQrRG
wSCqCmmppbTwPnGHrQdrGCCD
LlqwGmGScLcVthVt
dGGrWWDqmCnwCCQMQrMbFHbMHsPFgPVZbgFPgg
tLRTBwfvTBJcZFNFZRHSHPVN
zjJLTvjcwDzqqhGD
DzrWszFFrtBBhnhNCClHlnHbSbmlSn
ZLwLcVVZcLVpvRwLgMLpLJgPmmQSNSTNbtTvQmCHQCClCHCt
cfgZJwwVLJZPPVpRwzhzrrfGGBrGtDrBsf
BTsdCQsQnwwdcCqqdCnsFvGFpFBvGzrLLmmzpvfG
pjZjgPVlJVMVtgJSWLPvfFFFbNNmNbvbmL
ggVplgJtHSSggdCHsscChhdnnR
JddZcSlvvGFJNWVWFgQgVtFWhg
nDqsHqCszwjCCPMnfhfBhtdWggfg
bqppHqqHHbPLjLCppbwDdRNvdmcTmlNZGGbTTcNv
lcZDSvztcHHcMSZVHVvMZBqBNNFNhBNTTmssBqBcFB
bbGJQdQPpGfQJQdJfLFhmznhzLLNTFhNhf
JGpWpPJddbPpPwpjbtZSzltDgWDSgvtrVv
lJcNlNjPcmtFzHtHBJFg
VPZdwGGWVrsdPWhWwhzzCzzFppDFMBtttFCr
wshsLVfWTnGswdhwcmRjRmScqTcjlPNq
BsBshRZQQsVdsZQZSdsPDwJDHNNHBztNNFMGGwMF
nSTpLjcvHppzwwNt
jcqncjjvfmgrCfvqrnZbmdmSsdbVWlsmhRdW
FjjqRZjZFZWFqPvNvvPQpmbPDCmt
GSnHSnrScncHhrtncGshVbmTmbpVvppCmpCTmTCmCC
rHfnddwdfctlzFFgwqlj
wBwlBmmhwRVThVBmFHnvHMnfsmFfHq
jzwGSGJNZCCssHfsCPfv
GJbzbZdbwJdtdQphRVWQ
ztFZccVHFWHHLSDBpSBPhhZw
fmjsCmqnNTJnvbTvLRPDlCpBSPBpRShl
JqsGTSNJGqvqvNvttGQQGdFrQctrrF
mNZqjTFrZqrTNTTGSSSbrhrhRFRHcnLCzcCdHcLBdccHLzRC
JDDfJswJDWsvgVgwpWnRBlBzGCnlCLBlcCDl
vVGpfQWJpsPQMVgvppVwgWPJrqSZTrZqhTQTrhjbjqSSjZqt
fMSDzDHzpDDVsStdDgwwFZFrrMPCNngCZP
WmLnbWmvvWTTLWWQWRGQvLvrPFZJcgJFCZNrCgGCFCPNPF
QLhlqhljWvRQbbqlqnfStnHdBqVVfzpq
qWZtSQTSvJJvBfJVBBVFNDNHbbdRVPdpNFRF
fGcwwmCgsLhgwLchbpHdrrrphdPRPh
gMjllmcjwsLMgcwlMnSWzSqjSZJqZqZfjQWv
cdRHPjRFRdFVHGcFfFTHQTHVLSQBsbsqSCLqllBJqqbSqLJC
WwWppWgtNrnzzWDmrrmNvWJClJSSbqLJJCGbsCgJbLLg
MnvWpmwvWnvtGPjVRcHRRHMj
dLMDhdHGrcLTvvvstB
nPqgGGNPqRgRSjgmlWjbbTTPPBvpvpTcswwsTF
NRGmgjRnWgnZJqllmSqjnqSDhQzVrdQHDfDrDJQDMHDJzM
RgmcPmGNQwwNmSRwPPgfmrBlCDlGbvFFvtrCsvlrBB
nfdVnjHdMWnTqflFtbjrllrlsCDl
TZJVMhnfMnVMHnpRRNRzgJRzSzgwPR
nTbsblzlnGllmsNnbDwbcWQWwWBFJBQcWQvPWFJM
HRZRdSRdCdLdRftrHHZfSQBMWJMgMzQPFWMJCFWgvQ
HVzrLrrjRjLGnlTnlDlsjj
RQdTdZhWqlZhTdWTqblhNmTMVnnrQsnnpvgMVMHMgHMrgP
fjSSfjcCzGNBjCjsnpMVpnpzvpzsHp
GGwLGSccwjwLwBcGLGSqZWmmdLZLWThmRNZmWR
ncmBrmfdfcVcfGnQdVWRBRvgqNvDvWqzLRqg
PlpPbSbLFPLpFstsbqRqZMqWZqMWSDRzvq
sjtjHCwJwlHfdfjccmmLLQ
tGMtLHQGWzLHFVQtVfQtMWtbgrZNbdfSbccggrcTjTrfbm
swRChnwqhBCCCmSjcNSdcd
vnlnqDRlsRnJJqswJvGMFVMMdWtpVJFMQQFL
ffcHLzGmfvqqfWfF
rJrrRSPCPMCrPRQMNNWJQjJCnqFVVVTStqVnSBdqppBVtpqd
jNQQPjQMCRQwwQbRQbjMgwbNhwWZHHmzmlchlHHHDcLmWzhD
JzvrRHHJvCRZFPFnPgsQVVQNzQTQDttVsB
GSMjpqdbGNppBtDhPN
MbmqMwGbZPmPHJmv
ggVSVWzCNbbNCbRM
DfVhVsVQcQDmpmQTTQLjPjMjbDGNlbRMlNGG
sftTFJJccnphcfncTsfBvwZvrzgzZzZvBrVnzq
qqlClBNSCNSRQMvdrwFvnBrr
GDfhDtszhhsThpTDzsfpprMrFvQvrnnfvQrwHFbfFH
VtggWhpsmGVTGJWMjWjNjPWjLL
NSnShnjsswSsRPNsrnwcwMHfFwGqbvqCbFfg
LDJtzzmgVVlvqGbzvFfzff
mlJmQQpmJpZpBJJdjBNhrnnRdTTgNN
RtRRvbhDFPHHlhtPhRvPRtqjmzqzzwLjHQHLLLQVmVjq
WNNBBZfgfWnqVQwNqzmQcm
MZGfzSrTTnWrrWsTWnfSGbGllPCbGlJRvlPllCtt
phgcNfqgfpZsjjpdsS
brHHnWPbDPDbTPlDJJvJJPrMVVzRSdFzwdZZzFnsdzzVdVZs
SbStvJMDQgNmmtgg
lzDMDhfFRlfMFTfMGPMbFTlMpBHrmpjjCFjmBmrqBjtCmjjq
VvVswLLHZnJJwdndNsSSNBpCpjqjmNgrmCNtmmqm
nHcZWcSVsScTDlPPlTPb
DFMQSlMDpSpFDtDFccHvmqzvbHZjJmvzmmQH
CSgffrPssdgqRbqzzRqZ
dsdsfGsrBPsTVcMctMVNNhtStW
MDWRDWpgDvWpNptvNMnJCHJHMwHCndJfZn
blcrqTFmmcbhLTTTmlBZbjBJdBfBnCbQBdfn
TzlnhcnzTmhLRvSDsRzDPzWR
nwmmPnnPDjclhhjfFzzzwqbFFNHwVqVq
vSQrbpWCvMWQQWQMLgFJVHqzBzJVNqzBFL
CvCvQtWWQmcbtntPcb
qzvtzCCtLsLLzmQCHqpSsHSmfrnNrTrNWWMNGnWZTMZGBvWn
PglVFJwPhbcghVTBpBnWWhWnTMhB
FgjcJccVpwDcwFgVDsqzddqLqSDSCQQL
PLHsSVGGPvSLTffjMJWJJBjfBL
gNhwgTqDcqwpDqNhFpDFhFWfnndjcMJjMWzzBtntJBnW
DFhhQRRwbCbwRQChppmTHCVGTlslrsvrrSVZ
hHnRfSMmsSVrFvQqrmDPgr
jjcBzjZLpWccJLczBjZjWGwCnNzDvrgPCgQvFggvqrQFnr
jtZGpLwjWBpBWcfMTttfbHRnHTbT
swSHffFTVrJlHFSWrTpMZMPhMNBqBhTvhhqZ
bQbLQGGjQLdRCcQjGZBzpzBZqMBBBVdBqh
RjQDQGmgmVVbVcjjmjgcnWtJfrwsfrtHlwswnfHSFw
bVHbbMFDcbDbcmbbHVRbMRFgzSmdzSSTBtTjBdQTzlSldQjT
nqpqCMwJffqQSzTBQlqd
wvJhnnfrfsJrCNffvspRrPPFMbPMRRPPMZgZHR
FnJZnssHvMdJWJpW
mlDlllGrSGmttwlGvZgrzZNWgggzTzdT
bCltZCthtRcbcFbjFL
JGmHrJwGzzpllRZdzZLRcW
htbPSbVtFbbgjhffgPSfTVSDcHDDDLWscRdsZjdZcRssWc
vhfFbFvVHbtTVgFPhmJBCvBNrqBBrGCqQB
BcNQcvcBchSQNccLLvhTqbJZTrHrrrzzqTZMZMFZ
tpHDsnDRslllCCHtwnpsfjRgrJrVMfMmMrFrzVJFzrVZbZrr
tnDpjCwPLNSPdhPH
qnjvvBwBhSSFPgDQLVVDqgLr
WbszTbHTbsbHJWHLLMVZmJPQDrvmZL
ctlRbtCWWtvlSfjljjhBnBNB
TsnvssDDQlRbzMzjDMqHwq
tSGjZCfFZtCFLtVGWGZFbcqwHbhWdbzbwHbdwbdw
ZGBFJFZVBLjStZPBBZLRvlmsPTvsgrrnrTllvs
PgQdNsQFsdNwWqQBsQrTrTLpbrnTpGngnbTG
hCzzMJVDmfzmBDMCfSfhTMGcnpnTcjGrpjbMGjbL
CVVfvCflSHNHvPdBHW
DwlMjMNjStgmthMghg
PTlpHnJJTcZvTTbHZWZTvpqdHhmLgrgdfrhLLsmshmsLts
vncqTbPqcpCnbCPvccZbDBCGzzNBwjDlVVGFjjVR
QsdGGCztZVRddPgndf
DrNNBbwNHNwlbjFbbCNjNwDWWDPPVfDMgfmVMfnMWmmP
rvJBbbBNcLCtJZQL
NfLlqLhbNPddLPqLhpgHwFFwFHHTwRHWwPFTrT
MSMSCnjBnBjCscjVDVljTvHmmWnrwTrwFTrvTWTT
JCMMBzDMJcZZCjDzSBDNJgdfdQlqlLNdhgGLhp

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,139 @@
@@@@@@@@@@.@@@@@@@@@.@@..@..@.@.@@@@@@@@.....@@@@@@@@.@@@@..@@@@@@@@@@@@@@@.@...@.@....@@@..@..@@.@.@@@..@@@@@@@@@.@@@..@.@@....@@@@@@.@@.@
..@@.@..@@@@@@@@...@@@.@@.@@@..@....@.@...@.@..@.@@.@.@@...@@@@@@....@@@.@@@@@.@@.@@@.@@.@@@.@@@@.@..@.@@@@@@....@@.@@@.@.@@...@@@..@@@.@.@
@...@.@.@@.@@......@@@@@...@@@..@@.@@@.@@..@..@@@.@@@@.@.@.@@@..@@@@@.@@@@@@@...@.@@.@.@.@@.@@.@@@@.@@@@@..@@.@@@@@.@@.@@@.@@.@@@.@@@@@....
@.@.@..@@..@.@@@@@.@@@@@@@@.@.@@..@@.@@@..@..@.@...@@@.@@..@.@@@@..@@@@@@@.@@@@@.@@...@@@..@@@@@@..@.@..@@@@.@@.@@.@....@@@.@....@.@@.@.@.@
@.@.@.@@@@@@@.@@.@@@@@@@@.@..@@@@@.@@@@@@@@@.@@@@@@@@.@@@@@@@@@@@@@@@@@@@.@@@@@@.@@@.@@@.@@@@@@@@.@@@.@.@@@@@@@@@@@.@..@@@..@.@@..@@@@..@@.
.@.@.@.@@@.@.@@@.@@@@@@.@.@@@@@@.@...@@@..@@@@@.@@@.@@@@@@.@@@@@@.@@@@.@@.@.@@@.@@@@.@..@@..@@.@@@..@..@@.@@.@.@@@@.@@...@..@@..@@@@@@.@@.@
@@.@@.@@...@@@..@@@.@@@@.@@@.@@@@@.@.@@@@@.@@....@@@.@@@@@.@..@..@@..@...@.@@@@@.@@@@.@@.@.@.@..@.@.@@@@.@@@.@.@@@@.....@@@@@@.@@@.@.@@@@@.
@@.@@@..@@...@...@..@.@.@@@..@@@@@......@@@@@@@@@.@@@@@@.@@@..@@@@.@@@..@@@@@@@@..@@@@.@@@.@....@..@@@..@...@.@.@@@.@@@...@@@.@.@@@@@..@@@@
......@@@.@@@@.@@@.@@@.@.@@@@@@.@@@.@...@@@@@..@@@@.@@@@@.@.@@@..@@@@@..@@.@@..@..@@.@@@.@@@@@@..@@...@@@@@.@@@..@@@.@.@.@.@..@@@@@.@.@.@@.
@@@@@.@@@.@@@.@@..@@@.@..@@@@@@.@@.@..@@@@@@@@@@@@.@@@..@@@@..@@@@...@@@@@@@@@@@@.@@@@.@@@@...@...@@@@@@.@.@@@@@.@@...@.@@@.@@.@@.@..@@@@@.
@@@@@@@..@@@.@.@@@@.@@@@@@@.@@.@.@@@@@..@.@@@..@@@@@.@.@@@@@@@..@@.@@@@@@@@.@@@@..@.@@.@@@@.@@@.@@@@.@.@.@@.@@@@@..@@@.@@@@@@.@@@@..@..@.@.
@...@.@..@.@@..@..@@@@@@.@@@@.@@.@...@..@@...@..@@@..@.@@@@.@.@@..@@@...@@@.@@.@@@@@@@..@@....@@...@@@@@@@@@.@.@@@@@@@@.@@..@@@@@..@@.@...@
@@@@@@@.@@@@@@@.@..@@@..@.@.@@@@.....@@@.@@@@@.@@@@@..@@@.@@.@..@.....@@@...@@.@@@.@@@@@.@@...@@@@@@...@.@@@@@.@@@@@@@@@@@@@.....@.@@@..@.@
@@..@.@@.@@..@@@@...@.@@.@.@@@@..@@@@@@@.@.@@@@@@@@@.@@@@@..@..@@.@.@@@.@@@.@.@.@.@@@@.@@.@@.@@@@@.@.@@...@@.@.@@@@@@@@@.@@@...@.@@@.@@@@.@
@.@@.@.@.@.@@@@....@@@.@@@@@.@@.@.@..@@@@.@@@@@@@@@@.@@.@.@.@@@@@..@@.@@@.....@..@@@@...@@.....@@..@@@.@.@@@@..@..@.@.@@@.@@@@..@..@@.....@
@.@@@..@.@@..@.@..@@@..@...@@@.@@@.@@@.@.@@@.@@@.@.@@.@@.@.@@.@.@.@.@@@@@@@@@...@@@.@.@.@@@@@.@..@@@@@@.@@@@@@@@@.@@@..@..@.@.@@...@@@@@.@@
@.@.@@@.@.@.@...@@..@.@@@.@@@@@@.@.@@..@@@.@@.@..@@@@@@@@@@@@@@.@.@@..@.@.@@@@@.@@.@@@@@.@@@.@@@...@@@@..@@@@...@@..@@.@.@@@@.@.@@.@.@@..@@
@@@@@.@@@@@@.@.@@@.@.@@@@.@@@..@.@@@@@.@.@@@..@@@@@@@.@@@@@@@@@....@@@@@@@.@@.@@@@@@.@.@.....@.@@@@...@@...@.@@.@@...@@@@@@.@@@@@@@@...@.@@
.@@@@@@..@@@@...@...@@@...@@@@@@@@.@@@@@.@@@@.@@@@@.@@@@@.@@@@@@@.@@.@@@@@@@@.@..@..@..@@.@@@@@@..@.......@@.@@@...@..@@.@...@@@@@@@.@.@@@@
.@.@@@@@..@@@@@@.....@@.@@@@...@@@..@@@@@@..@@..@@@@@@@@..@@.@@.@@.@.@.@@@@...@..@@@@@@....@@@@.@@@@@@.@.@@@@@..@@.@@..@@...@.@...@@@@.@@@@
@@@.@@@....@@..@..@@@@.@.@@@@.@.@@@@@@@@..@@@@..@@@@@.@@@@.@.@@@@@@@@@..@@@..@@...@@.@.@.....@@.@@..@@@@@..@@@.@@.@.@@.@..@@@@.@@@@@.@@.@.@
.@@@@@..@.@@.@..@...@@.@..@@@..@@...@@@..@@@@@.@@@....@@@@@@..@@.@@@..@.@@@@.@@@...@@@@@@@.@@@@@..@@.@@@@.@.@@.@@.@.@@.@@@.@@@....@.@@.@...
@@@@...@.@@@@@.@..@...@.@@.@@@.@@@@.@.@@....@.@.@@@@@.@@@@@.@@@...@@@@@@@...@.@@@@..@@@@@.@@@@@@.@@@@@..@.@@@.@@@@.@@@@.@@.@@.@@@@@@@..@@@.
@@..@@@@@@@..@.@.@.....@@@@@@@@@@@@@@@@..@@@@.@..@..@@@@@...@@@@@@@.@@@@@@@.@@@@.@.@@@@@@@...@@.@@@@@@@@@@@.@..@@@@@@.@.@..@.@..@@..@@.@@.@
@.@.@@.@@@@..@.@.@@@.@@@.@@@@@@@@.@@.@..@...@@....@@.@@.@.@@.@.@..@@.@.@@@.@@@.@.@...@@@@@.@@..@@@@@.@.@@@.@.@....@..@.@.@@.@..@...@@.@@@@@
@..@.@.@@@.@@@@.@@@.@@@@.@.@.@.@@@@@@..@@.@@..@@.@..@.@@@@..@@@.@@@@@.@@@@.@@@@@@.@.@@@.@@..@@.@@@@......@@@@@@@@..@@.@...@@@@..@@@.@@@@@@@
.@@......@...@...@.@@@@@.@@@.@@@@@.@.@.@@@.@@..@@...@@@.@...@.@@..@@.@@@...@@@@@@@@@@@.@...@@@@@..@@@@.@@@.@@@@@@@@@@.@@@.@..@.@@@@.@..@@@@
..@@..@@.@@.@..@@@.@@@..@@@@@@@@@@@@@@@.@@.@@@@.@.@@.@@@@@@.@@@@.@@.@@@@@@@.@@@@.@@@@@.@@@@@@.@@@@@@.@@.@..@.@@@@...@.@.@@@@@.@@@.@@@@@@..@
.@.@@@@@@@.@@@@@....@@.@@@.@..@..@@.@...@@@@.@@@@.@.@.@.@@.@@.@..@@.@@.@...@@..@@@.@....@@..@@@@@@@.@.@@@@@.@.@@@@.@@@.@.@@@@@@@@@..@@@.@@@
@.@@@.@@@.@@@...@..@.@.@..@@@@@.@@..@@@@@.@@.@@.@@..@..@@@@@.@@.@@@@.@..@.@@@@@@.@@@@@@..@.@@@@@@.@@@@.....@.@@@.@.@.@@@@@@.@@@@@.@@.@@@..@
@@@@@@@.@@@.@@@@@..@.@.@@@@.@@...@@@..@@@@@@@@@.@@.@@@@@@.@@@..@@.@.@.@....@@.@@@.@@@.@@@@@.....@.@.@@..@.@.@.@...@@@@@.@..@@@.@.@..@.@@@@.
@.@@.@@@@@@@@@.@@@@@.@@..@@@@@.@...@...@@@@.@@@@@.@@@@@.@.@@.@..@@@@@@@@.@@.@@@@@@.@.@@@...@@@@.@@.@@.@@...@@@@@@..@@@.@@@.@@@@.@..@@@@@@@.
.@@@@.@@.@..@@.@...@@..@@.@.......@.@@@..@..@.@@.@@...@..@@...@.@@@@@@@@..@@...@.@.@.@@@@@.@@@@.@@.@@@@.@.@@@@@.@@.@@@@..@@@@.@@@@.@@..@@@@
@.@@..@..@@..@@@@.@.@@@@@@.@@@@@@@..@@.@@.@@.@@...@@..@@@@@@.@@.@.@.@.@.@@@@@..@.@@..@@....@.@@@...@@@.@@.@@.@@.@..@.....@@@@@.@.@..@.@@@@@
@@@.@@..@@@.@@@.@..@....@....@@@.@@.@@@.@@@@@@.@@.@.@@@..@...@.@@@.@..@.@@@@@..@.@@@.@.@.@@.@.@@@@..@@..@@@@..@@@@.@.@@@....@.@@@@.@.@...@@
@.@@...@.@.@@@@...@@.@..@.@@@@@@@@..@@@.@@...@..@@@@@@@@@@@.@.@..@@.@@.@.@@..@@..@@@@@.@@@...@@@@@.@...@@@@@@@@.@@@@.@@.@@@.@.@.@.@.@@.@..@
.@@.@.@.@@@.@@@@.@@@@@..@@@...@@@..@@@.@.@@@@@.@@@@@...@@.@@@@@@@.@@......@.@@@@.@.@@.@..@@@@@@@@..@.@@@@@@@@@@..@@@@@@.@@.@@@@.@..@.@@..@@
..@@.@..@.@@...@@@@@...@@@....@...@.@@@@@..@@@@@@.@...@..@@@@@@.@@@@@.@@.@.@@@@..@@@.@@@@....@@@.@.@...@@@@.@...@@@@@@...@.@@@@@@@@@@@@.@@.
.@@@@@@...@@@@@@.@@.@..@@@@@@.@@..@@@.@@@@@....@@@@.@@.@@.@.@@@@@.@.@@.@.@..@@.@@@@.@@@@@..@.@@.@.@@@@.@@@.@@@@@..@@..@@@@..@.@@.@@.@@@..@.
@@@.@..@@@.@...@.@.@.@.@@..@@.@..@@@@@@..@@.@@@..@@@.@@@@.@.@..@@@..@@@.@@@.@@.@..@.@@..@..@@@.@@@..@.@@@@.@@@..@..@@@@.@.....@.@@.@.@@@@@.
.@@@@@.@@.@.@.@@@.@@@.@@@@@...@@@@..@@.@...@@@@@.@@.@.@@@@@.@.@.@.@..@@.@@@@........@@.@@..@@@@.@.@.@..@.@@@@@@@@.@@@@@@....@@@@@@.@.@@.@@@
@@@.@.@..@@@..@@@@...@@@@.@@@.@@@@.@.@@..@..@@.@@...@@@@@@@.@.@@.@@@.@.@@...@.@@@@.@.@.@..@.@.@@@@@@@@...@..@.@.@.@@.@@.@.@.@@.@@.@.@..@@@.
@@.@.@@..@.@@.@@..@@@.@.....@@.@@@.@@@@.@@.@..@..@.@.@@@@.@@.@..@@.@@@@@.@@@..@@@@@.@@@@@@@@@@@@@@@.@@@@.@.@@..@....@@@.@@@@@@...@.@@@@@@@.
.@.@...@@@.@@..@.@.@@@....@@@@@@@@@@.@@@..@..@@...@@.@@@@@@@@..@@.@@@@@@.@@@@...@@..@.@.@@......@@@@@.@...@@@@.@@.@@..@.@.@.@@@..@..@.@.@@.
@..@...@..@@@.@@@@@.@@@.@..@@.@@@@@@.@.@@@.@.@@@.@@.@@@@@.@.@.@@@..@.@.@@@@.@.@@.@@@.@.@..@.@@...@@.@.@.@.@@@.@@..@@@@.@..@...@@@@....@@@.@
@@@@@@.@@@.@.@@@@@..@@@...@.@@@@.@@.@.@@.@@@@...@.@.@@@@.@.@@@@..@@@@.@@@@.@...@@@@@@.@@@@@@@@@@.@@@@@.@.@...@@.@@@@..@..@.@@.@.@.@@.@..@@@
@@@..@@.@@..@@@..@..@@@@@@@@@@@.@.@@@@@@..@@@@@@.@.@@.@@@@..@@@@@@.@@@@@.@.@..@.@@.@.@.@..@@..@.@..@.@..@...@@.@@.@.@.@.@@@.@@@@@@@@@@..@@@
.@@...@@.@@@.@@@@@@.@..@.@..@@.@@@@@@@.@@@@@..@@@@.@@..@.@@@@@@.@@.@.@@@@@@.@.@@@@@@@..@@@..@@@@@@@.@@.@@@.@.@@.@.@@.@.@.@@@@.@.@@..@@.@@..
.@@@@.@@@.@..@@@@.....@@@@.........@..@.@@@@@@@@@.@@.@@@@..@...@..@@..@@@@.@.@@.@@@@@@..@..@@.@@@@@.@@@@@@@@@@.@.@@@@....@@@@@..@@@@.@@@.@@
@..@@@@@@...@@@@@@@.@.@.@.@@.@@@.@.@@......@@.@.@@.@.@.@@@.@@@@.@..@@@..@@@.@..@@.@.@.@...@@.@@@@.@..@@.@..@.@@.@@.@@@.@@@.@@@@...@@@@.@.@.
@@@@@@@@...@@.@.@@@@@..@@@.@@@.@.@@@.@@@.@.@@@@@@..@.@@@@@.@@..@..@..@@@@.@@@.@@..@...@@.@@...@@.@@@...@@@@@.@..@.@.@.@.@@.@.@@@@@.@@@@@@@@
@@@@@.@.@@@@.@.@@@@@@.@@@..@@@@@.@@@.@@....@...@@@@@@...@...@@@@@.@@@@.@@@@@@@.@.@@@@.@...@@@@....@@.@@.@@@@.@@.@.@@@@@@@.@@..@@@..@.@@.@..
@.@@..@@.@@..@@@@@@@@@@.@..@..@@@.@@@@.@@@@.@.@@@@..@@..@@.@...@.@.@.@@@.@...@@@@@@@.@.@@.@@@...@@@@.@.@.@@@@@.@@@@@@@.@.@@@.@..@@.@..@@@@@
@.@@@@@@.....@@.@.@.@@..@@@@@...@.@.@.@@@@.@@.@.@.@@@@.@@.@@.@@.@@.@@@.@@@@@.@@@@@.@@@@.@..@...@@.@...@.@.@@@@@@@@@@...@@@@.@..@..@@.@@@..@
@@.@@.@@.@.@@@@@@.@@@.@@@@..@..@.@@@@.@.@@@..@@@@....@.@.@@@@@.@@@.@@@@@....@@.@@@@.@.@.....@.@..@@.@@.@..@.@@@@...@@@@@.@.@@@@@@.@.@.@@@@.
@...@@@.@.@..@@@@@.@@@@@@@.@@@.@@@...@.@@@@@@@@@.@@@@..@@..@@.@.@.@@.@@@@.@@.@@..@..@@@.@@@..@@@@@.@.....@@...@.@@.@@@@@@@@@@@@@@.@@@@@...@
@@@......@.@@.@@@@@..@@.@@..@@..@@@.@.@.@...@...@@.@@.@.@.@..@.@@@@.@@@@@.@@@@@@..@@@@....@..@.@@@...@@@.@@@@@.@@@@@.@@@....@.@..@@@@..@@.@
@@@.@..@@@@@@@@@@...@@...@@.@.@@.@.@@@.@@@@@@@@@@@@@@..@@@@@.@.@@.@.@@@.@@@..@..@@..@@.....@@@@.@@.@@.@@@@@@.@@....@@@@@@.@@@@...@@@@@.@..@
@@@@@@@@@@@@@.@@@.@.@@@@@..@@.@..@@@@@@@@.@@@.@@@@@@@.@@.@...@@@...@@@@@.@@@.@.@@@@@....@.@.@@.@...@...@@...@@@@.@@@@..@@@@@@@.@@...@@@@@@.
@@@@.@.@@@@@.@@@@.@@.@...@@@..@@@.@@@.@.@..@.@@@@@.@@@@.@@.@.@.@@@.@.@@..@@@@.@@..@@@..@..@@@.@@@@.@.@@@@@@@@.@@@@.@@@....@@.@...@.@.@.@@@.
@@.@@@@@..@@@@@@@@..@@.@@@.@....@..@@@@.@..@@..@.@@.@@@.@@@@@@@.@@@@@...@.@.@..@.@@@.@@@@@@@@.@@@@..@@...@@@@@@@@@.@@.@.@@.@..@..@.@@.@..@@
@@@@@@.@@@@..@@@@@@.@@.@@....@@@@.@.@@@@@@.@@@@@@@@.@@.@@@@@@@@@@@@@...@@@..@@@@@@@.@.@.@..@.@..@.@@.@@@@@@@@@....@@.@@@@...@.@@@@.@@@...@.
..@@@@@@@@@@@@...@@@.@@.@@..@@..@..@.@.@@.@@@..@.@..@.@@@@..@@.@.@@@@@...@@@@...@@@@@@.@@..@@@@@@@@..@@@@.@..@@.@@@@.@...@..@.@.@@@.@...@@.
@@.@@@@@@@.@@..@@@.@...@@@.@@@@@@@@@.@.@@@@@@@.@.@.@.@@@@@@@@@@...@.@@@.@.@.@@@...@@@.@@@.@@@@@@.@@@@.@..@.@.@@@..@@@.@@@@@.@@@@.@@@@.@@.@.
@.@..@@.@@@@@..@@@.@@@@@.@@.@@@.@@...@@@@@..@@..@@.@.@@.@@@.@@@@..@@..@@@..@...@@.@@.@..@@.@.@@@@@@..@@@..@@@.@@@@......@..@@.@@@.@@@.@@@..
@.@@@@..@@@@@..@.@@.@.@@.@@@@@.@@@@@@@@.@.@...@@.@@@@.@.@.@.@@@@@@.@.@.@@@@.@.@@..@..@@.@.@@@.@..@@@...@@.@.@...@@@@@.@..@@...@.@.@@@@@@@@.
@@.@.@@@@@@@..@.......@@..@@.@@@.@@@@.@..@@..@@@@@@@@.@@@@.@@@.@.@@@@@@@....@@@@@.@@@@@@.@.@@.@@@.@@@@@..@@@@.@.@@@@@.@.@@@@@.@@.@@@@@.@..@
@.@@.@@.@@@@@@..@..@@@.@@@....@@@.@@....@.@.@@@..@@.@..@@@@@.@@@@@@@@@@@@.@..@@@@..@@@@@@.@..@@@@.@.@.@@@@@@@@@@.@..@@@@.@@@@@.@.@...@.@@@@
@..@.@...@@.@@@@.@@.@@@..@@@.@@...@@@@..@@..@@.@@@@@.@...@@@.@@@@..@@@@@.@.@@@@.@@.@@.@.@..@.@.@@@.@.@...@@.@@@...@@@..@@@@@@@@@@.@@@.@.@.@
@@.@.@@@.@..@@@.@..@@@@.@@@..@.@@.@..@@@....@@@@..@.@.@..@@@@..@.@@@..@@.@....@@@.@@@.@...@.@@.@@@@@.@@.@@@@@.@.@...@@@@@@@@@@.@.@@@@@@@@..
@@.@@.@..@@@@@@.@@@.@.@..@@.@.@.@..@..@@@@@..@...@.@@@@@@@@@@@.@..@.@@.@.@@@@@@@.@.@@..@..@@.@@@.@@.@@@@@.@@@@.@@@@@@.@@@.@.@@..@..@@......
.@@....@@@@@@...@@@.@.@@@@@@@.@@@.@@@@@@@.@@@@....@@@@@@@@.@@@@@.@..@@@@.@.@.@@...@@@@@@.@@@.@@@@@@@@.@.@@@@@@@.@@@@@.@.@@@.@..@@@..@@@@@@@
@.@@@.@@@@@@.@@.@@@@.@@.@....@@@@@.@@.@@.....@@...@@@@.@@@.@.@..@.@..@@....@@@@...@.@.@@@@...@@@.@...@@.@@.@@@@..@.@@.@@....@@@@@@@@@@@@.@@
@.@@.....@@.@..@@......@@@@@@@@@.@@@@@@@@@@.@..@@.@@..@@.@@@.@.@@..@.@..@..@@..@...@@@.@@@.@@@@@@@@@.@@@.@@.@@@@.@@@@@@.@...@@..@@.@.@@@@@.
@@@@@.@@.@@@@@@.@.@@@.@@.@@@@.@.@@@@..@@@@@@.@@.@.@@@@...@..@@.@@@@@.@.@..@@..@@@...@@@@.@.@@@@@@@@.@...@.@.@@.@@@@..@@@@@@.@@.@@@@@@@@@.@@
@.@@.@.@@@@..@..@.@@.@@@@..@.@@.@@@@@@.@@@@@@@@@@@@..@@@@@@...@.@..@@.@.@@.@.@@@@@..@@@@...@.@...@@.@@@@.@@@.@@..@@..@.@@..@@.@.@@..@@@@..@
@@@..@.@@.@@.@@.@@@@@..@..@@..@.@@@.@@@.@.@..@.@.@.@@@..@@@@@@..@@@@@@@@..@.@.@.@@@@@@.@@@@@@@.@@@.@@@@..@...@@.@@@@@@.@.@@@@.@..@....@@...
@@....@@....@@@@@.@.@@@@..@...@..@@@.@...@@@.@@@@@.@@..@@@@@..@@@@@@@@.@..@..@.@..@...@@@@@@.@@@@@@.@..@.@@.@@..@.@@@@@@.@@@@..@@..@@@.@@@@
@@.@@@@.@@@@@@@@@.@@...@.@@@@@.@@@@@@@@.@.@.@.@@...@@@@@.@..@@@@..@..@.@@@@@@@@..@.@@@.@@.@@@@.@.@.@...@@.@...@@.@@.@@.@@@..@@.@@@.@@@@@@@.
@.@.@.@@.@.@@@@@.@@@@..@@@...@@.@@@..@@@@@@..@..@@.@.@@.@@@@.@@....@.@@@@@@@@@.@@@.@.@@.@@@@.@.@@@@@@@.@.@@.@@.@.@..@.@@@..@@..@@@@.@@@..@@
@@..@.@@@@@@@@@..@@@..@..@@@@..@.@@@@...@@@.@@@@@@..@@@...@.@.@@@@@@@...@..@@@.@@@@@@@.@@@.@@..@.@...@@@.@@@...@.@@.@@@.@@@@@.@.@@@@.@@@@@@
..@.@@...@@.@..@..@.@.@@..@.@..@.@@@@@@@.@@@@..@.@.....@..@@@.@@@...@@@....@.@@..@@.@@@.@....@@..@@@.@@.@....@.@@..@@@@.@@@.@.@@..@@@...@@.
@..@@@.@.@@@@@@...@@.@..@.@@@@@@.@..@....@.@...@@....@@@@.@@@.@.@..@@.@@@@.@..@@@.@@@..@@@@@@@.@@.@@@....@.@@@@@@@@@@...@@..@@@.@@@@@.@.@@.
@.@@..@....@@..@@@@.@@@@@@.@@.@@..@....@@@@@@@.@.@@@...@@@@.@.@@@.@.@@@@@.@@@@...@@@@@..@.@....@@@.@@@@@@@.@@@..@@@@@@@..@@@.@.@.@@.@.@.@@@
@@@@@@@@.@.@@@@..@@@@@.@@@@@.@@.@@@...@@.@@@@@@@.@@@@@@@@.@@.@@@.@.@@.@..@@@.@.@@@@@@@..@@@@@@...@.@@..@..@...@@@@...@@@@@.@.@.@@.@@.@.@@@@
@.@.@@@.@@@.@@@.@.@@.@@@@@@.@..@..@.@@.@@@.@...@@@@.@@@....@..@...@@@@.@@@@@..@..@....@@@@.@@@@..@@@.@@@@@.@@@@@.@...@@@@..@@@@@.@..@@.@.@@
@@@@@@.@@@.@@.@@@.@.@@@.@@..@.@.@@@@@.@@@..@@@@.@@.@..@.@@..@@@@@@.@@@@@..@@@..@@@@@.@@@.@@@@@.@@@@@..@@@@@.....@@@..@@.@@@@@..@@@@@.@@@@.@
@@.@@@@@@@@@@@..@@.@@.@.@..@@...@.@@.@@@@.@@..@@@@@.@.@..@@.@...@@@@.@@..@...@@@.@@..@@...@@..@@@..@.@..@@@@@@@@...@..@@@...@..@@...@.@..@.
@@@@.@.@@@.@.@@@.@.@@@@@@@@@.@.@.@.@@@@@...@@@.@.@@@@@@@@@@.@.....@..@..@@@.@.@@.@@.@@.@@.@.@@@...@@..@@@@@@@@@@@@@@@@..@@.@@@.@@.....@.@@@
@@@@..@@.@..@@@@@.@.@.@@.@@@@@@@@@@@@@@.@@@@@@.@...@@.@@@@@.@.@@@@.@.@...@@@@@.@@.@@@..@@.@@@...@@@.@.@@@..@.@@.@@@@@@.@.@@..@@@@@@@@.@..@@
..@@.@@.@@@..@@@@@@@@@@@.@.@@..@@.@@.@.@@@.@..@@.@.@@@@@@.@..@.@@.@.@@@@@.....@@.@..@@@@@@..@@@.@..@.@@@@.@.@.@..@@@@@.@@@@@.@@@.@@@@.@@@.@
@.@@.@@@@@@..@@@@@@@@@@@@@@...@.@@.@..@@@@@..@@.@..@.@..@@@.@.@@@.@....@@@@@@@@@.@..@@...@@..@.@.@@.@.@@.@.@@@.@.@......@@.@...@@@..@@.@@@@
@@@@..@@@.@@@@@@.@@..@.@.@@@@@@@@@@@.@.@@@@@.@@@@@@@.@.@@@...@.@.@@@..@@.@@@@@...@@@.@@@@.@@.@@@@@@.@@@@@@.@@@@@..@...@@.@...@@@@@@@..@@@.@
@@@@@.@@@@@..@@.@@@@@@.@.@@@@@.@..@@@@@.@@.@@@..@@...@...@@@.@.@@.@.@.@..@..@.@@@..@@@@@@@.@@..@....@@@.@@@@@@@.@@@@@@.@@..@@@@.@@@.@.@..@.
@@@@.@@@@@@...@.@@@@.@@@.@@..@.@..@@@@@@@...@.@.@.@@@......@.@..@..@@.@..@.@@@@@@@@@.@.@.@@@.@.@.@.@@.@@.@@@@@.@.....@..@@@@..@.@@.@.@@@@.@
@@@@@@@...@@@@@@@@..@@@@@..@@@@@@..@@.@.@.@@@...@@@@@@@@@@@@@@@@@@@.@@@.@@@@@@@.@@..@.@.@@.@@.@@@.@@@.@@@.@.@@@@@@.@.@..@@@@.@@.@@@..@@@@@@
@.@@@@@@@@..@@@@@.@.@@..@@.@.@.@@.@@@.@.@@@.@.@.@@@@...@@..@@@@@.@@@..@@@@@@@@.@...@.@@@@..@@@...@@@@..@.@.@.@@@@@@.@@.@@..@.@...@@@.@@@@..
.@@@@.@.@@@@..@@@@..@@@@@@@@@@.@@.@@@@@@@@@.@@@.@.@.@@@@@.@.@@....@@@@@@@...@@@@.@@..@@@@@@@@@..@@.@@@.@@@..@..@.@@.@@.@.@@@.@.@.@@@.@.@@.@
.@...@@@@@@.@.@.@@.@@@@@@@..@@.....@@..@.@@@.@@@@@.@@@...@@@@.@@.@@.@@@...@.@@...@@@..@@@@@@.@@...@.@.@@.@.@@@.@@@@@@@..@@...@.@.@@.@@@@@.@
@@@.@@@.@@@@.@@@@@.@.@@@@@....@@@.@@@@@.....@@.@..@...@@@@...@@@@.@.@.@.@@@.@.@.@@@.@...@@..@@.@..@@..@@..@@.@...@.@@@..@.@@@..@...@@.@@@@.
@@@@@.@@@@@@@@@.@.@@@@@@@@..@@.@.@@.@@@..@@@.@.@.@@.@@@..@@@@@..@.@.@@@@.@@.@@@@@.@.@@@@.@@..@@@.@@.@@@.@@@.@.@@.@@@@..@.@@@..@@.@@@@.@@..@
@@@.@@@@@@@@.@@.@.@.@...@@..@@..@@@@@.@@@@@@@@@@@.@.@@@@.@@.@.@.@@@...@@@.@@@@@@.@@.@@...@@@...@@@@@@@.@@.@@.@.@@@.@@@.@@@..@.@@.@@@@@@.@@.
@@.@@@@@@@@@@@@@.@.@@@@.@.@.@@@@.@@@.@.@....@@@@.@@.@@@.@@...@.@@@@@@.@.@@@@@@.@@...@@@@@@.@..@.@@@..@.@@.@@@@@@@@..@@@@@@@@.@@@@@@@@..@@@@
@@@@.@.@@...@@@.@.@..@@..@.@@@@@..@@@@.@.@@@@@@@@.@@.@.@@.@..@..@@@.@.@@@@.@..@@@.@@@@@@@.@@.@...@@.@@@@@.@@@@@.@@@.@@@@@.@@@@@@.@@..@..@@@
@@...@@@@@@.@@....@@.@..@@@@@@@@.@.@@@..@@..@@.@..@@.@..@.@@@@..@..@@.@@@.@@@@.@.@......@..@@.@@@@...@...@@...@@@.@@@.@@.@@..@.@@@@@@.@@@@@
.@.@......@@.@@.@..@@.@@..@@.@@.@@.@.@.@@@@@@.@.@@@@@.@@.@.@@@.@@@@..@@..@@@.@@.@..@.@@..@@@@@...@@@.@@..@@@@@@@@@@@@@@.@.@@.@.@.@@@@.@@.@.
@@@@@.@@@@@.@@@.@...@@.@.@@@@@@.@@@@@.@@@.@@@.@@...@@@.@@@@.@@.@.@@..@....@@...@@@.@@@@@.@.@.@@@@@@@.@@@@@@.@@@@..@.@@..@@...@@@..@@@@.@@@.
@@@.@@.@.@@@@@@@@..@...@@@@.@@@.@@.@..@.@@@...@@@@@.@.@..@..@....@@@..@@@.@.@.@@@@@.@.@@@@.@.@@@.@.@@..@@@@..@@.@@.@@@@@@@@@@@@@@@@.@@@@@@@
@@@@@@@.@@@@..@....@@@@@.@@@@.@.@@.@@@@@..@@@.@.@.@@..@.@@@@@@..@@..@.@...@@@@@@....@@@@.@@@@..@@.@@@.@@@...@@.@.@@@.@.@@@@@@@@@..@@@@...@@
@@@@@@.@@@@@@.@@@..@@@@@.@@@@....@...@@@@.@@@@.@...@@@@.@@.@.@@@@@.@@.@.@@.@@....@@.@@.@@@.@.@@@@@@@@@@..@@@@@@@@..@.@@..@@@@@@@...@@@@.@@@
@@@@@.@@@.@@....@@@.@@.@.@@@..@@..@@@@....@@.@.@@@@@@...@..@@@@@@@@@@.@...@.@@@.@@@@.@@@.@@..@@@.@..@@.@.@@@@.@@@@.@@@.@@..@.@@@.@..@@..@.@
@@.@..@.@...@@@@@..@.@@@@...@@@@.@.@.@@@@@@@@@@@@@@@@.@@.@@@@..@@@@@.@@.@@..@.@@@.@.@@@.@.@@.@@@@..@.@@@@@@@..@@@....@.@@@@.@..@@@@@.@@@@.@
.@@.@@@@@...@@@.@@..@@@@@@@@.@.@..@@@@.@@@@@@.@@.@.@@.@@@@@@.@@@.@@@...@@@@@@@..@..@@..@@@@@.@.@.@@..@@@..@@.@@..@@@@@@..@@.@@@@@@...@@@@@.
@@@.@.@@@@@..@.@@@@@.@@@.@@@@.@..@.@.@@@@.@.@@.@@@@@@@@@@@@.@..@@.@.@.@@..@@.@.@@@@@..@.@...@.@@@@@.@.@.@@@.@@@@@@@@@..@@@..@@@.@@@@@..@@.@
@@@@...@@@...@@@.....@@.@...@@@@.@@@@@@@@@.@@@@@@@..@.@@@@@@.@@@@@.@.@@@@@@.@.@.@@@@@@@@.@.@@@@..@..@@...@@..@.@.@@@@@@@@.@.@.@@.@@..@@..@@
@@@@...@@@@@.@@@@.@..@@@@.@.@.@.@@....@@@....@.@.@@@..@...@@@@@@@@@..@@.@@@@@@@.@@@@.@@@.@@.@..@@@@@.@..@@.@..@@@.@@@.@..@@@@@@@@@@...@..@@
@@@@@@@..@@@.@@..@.@@@@@@@.@.@@@@.@@@..@@@..@..@@@....@@@@.@.@@.@.@..@.@@@@.@@@.@@@@@.@.@@.@.@@.@@.@@@@@.@@.@@.@@@...@..@.@....@..@@@@@@@@@
@@.@@@@@.@.@@@.....@.@...@@.@@.@.@.@....@@@..@@@@..@.@@@@@@.@@.@@@@@@.@@.@@.@@.@@@@.@@.@.@...@.@@@.@..@@@@...@@@@.@@@@..@@@@@@..@@.@.@@@@.@
@.@.@@@@.@.@@.@@@.@.@..@@...@@@@@@.....@@@.@@.@@@.@@.@@@@@..@@@...@.@@@@.@@@@@@@...@@@@@@@@@@@@.@@@.@@@@..@@...@..@@@..@@@@.@@@@@..@@@@@@@@
..@@@@..@.@.@@@@@.@@@.@...@@.@@@@.@@.@@@@@@@.@@.@..@@@@@.@@...@@@@@@..@@@.@@.@.@@@@.@..@.@@@@@@..@@@@@.@..@..@.@@@@...@@..@@...@.@@@@..@@@@
@@@..@@@@@@@.@@.@@.....@.@.@.@.@@@@.@@@@@@.@@@@@.@@@@.@@@@@.@.@@@@@@@.@.@@.@@@@.@...@@@...@.@...@@.@.@@@.@...@.@@.@.@@....@@.@...@@@@..@.@.
@.@@@@@@@@.@@.@@@@...@@....@.@@@.@@.@@@@@.@@@@...@...@@@@..@@@.@@@@@.@..@@...@@..@..@..@@.@.@@@@@@..@@@@...@@@@..@.@..@@.@@@@@..@@@@.@.@@@@
@..@@.@@@@..@@@@@@@@@...@.@@.@...@@@@@@@@..@..@...@@.@.@@.@....@@.@@.@@.@.@@@..@@@@@..@.@@@..@@@.@@..@@@@@@...@@@@@@@@@.@@@.@.@@@@.@@@@@@@@
@@.@.@.@@@@@@@@.@@.@@..@.@@@.@....@@.@@@...@@@@@@@.@@@.@@@@@@@@.@@@@.@@..@@.@@@@@..@@....@@@@@@..@@.@.@@.@.@@@.@@..@.@@@@@.@@.@@@.@.@@@@.@@
@@.@@@@@@@@@@@@.@@.@..@@..@...@.@.@.@...@@@@@@.@@..@..@@@@@@@@@@@@@@@.@.@@..@@.@@@@@...@....@.@@@@@@@@@.@@@@@@@@..@..@@@.@.@@@@.@@.@@@.@@.@
@.@@@@@@@@.@@@.@..@@@@@@@.@@..@@@@.@...@@.@.@@.@....@.@@@@@@@..@...@@@.@@@.@@@@@@@@.@@.@.@.@@@.@@@@.@@@@.@..@..@@.@@@..@@@@@.@@.....@..@.@@
@@@@@.@@@@@.@@@.@..@@@@..@..@.@@@@..@@@.@@@..@.@@.@@@@@@@@@.....@@..@@@.....@.@@@@...@@@@@@@.@.@@.@.@@@@@@.@@@..@@.@@@.@@@@...@..@@@@.@.@.@
@.@@@..@@@@@@.@@.@@@.@@.@@.@.@@@@@@..@@@@..@.@@@@@@.@@.@@.@@@@@@..@.@@@.@@..@@@@@.@@@@.@.@@.@@@..@.@@.@.@@@@@@.@@.@@@.@@..@@@@@@@.@@@@@@..@
@.@@@..@..@@.@@.@@.@.@@.@@@.@.@@@@@@.@@@@@@@@@@....@@@..@.@@..@@@@..@...@..@@...@.@@@@..@.@.@@....@.@.@@@.@@...@.@@@.@@.@..@@@.@@@@@@@.@..@
@@@@@@@@..@.@@.@@.....@@@.@.@@@..@.@@@@@@@.@@..@@..@.@@@..@..@@@@@@.@@@@@.@@@@..@@@@.@@@......@@.@.@@.@..@.@@@.@@.@@@@.@@.@@@.@@@@@.@@@@@@@
..@@@....@@.@.@@@@.@.@@.@.@@@@@@.@@@@@@@@@..@...@@@@@@..@@@@.@@..@@@....@@@.@@@.@...@@@@@@...@@@@.@@@@@@@.....@..@@@.@@..@@...@.@@@@@..@@@@
@@.@@@@@.@@@@.@@@@@@@@@@@@.@..@@@.....@@...@@.@.@@@.@@.@@.@@.@@@@@@.@.@@.@@@@@@.@@@@@@@.@.@@.@@..@@@.@.@@.@@@..@@..@.@@@.@@..@@@.@@@@@@@@@@
.@@@.@.@@.@.@@@@..@.@@@@@@@@@@@@.@@@@.@@@@@...@....@@@@@.@.@@@.@@@.@@@...@@.@@.@@@.@@..@@@@@..@@@@@@@@.....@@@@.@@@.@.@@.@@@@@.@..@@@@@.@@.
.@@@@@@...@@..@@.@@@@@@.@@@@..@@@...@@@@.@@...@@.@@..@@@@@@@.@..@@@@.@...@@@@@.@@@.@@@@...@@.@.@@@@@.@@..@@.@@@@.@@@@@@.@@.@@....@@....@@@.
@.@@@.@@..@@@@@@@@@@@..@.@@@.@@@..@@@@@@@@@@@@.@.@@@.@.@@.@@@@@@.@@@@@.@@@@@@..@@.@..@@@@@@@.@@@@@@@.@@..@..@@..@.@@..@@@@@@@@@@@@.@@@@....
@.@@.@@@@..@@@@@@.@@.@.@@@..@@@.@@.@@@@@.@.@@..@@.@@@@@@.@@..@@...@@@....@@..@@@.@@...@.@...@@@@@@@@@.@@@@@@@@.@@.@.@..@@@.@..@@..@@@@@@.@@
..@...@@@@.@....@@.....@.@@@@.@@..@@@@@@@@@@...@.@@@@@@@@@@@@.@@.......@@@@@@.@.@@@@@.....@@@@...@@@@..@@.@.@@@@@@@@@@@@@@.@@@.@@.@@@@@@.@.
@.@@@@@@..@@@@@@@.@@@@.@.@@@@@.@@@@@@@.@@.@.@@@@.@@.@@@..@....@.@@..@.@@..@@@.@.@..@@..@.@@@.@@@@.@@@@@@@@..@@@@@@..@.@.@@..@@@@@@.@@.....@
@.@@@@@@@@.@...@@@@@@.@.@@@@..@@@.@@@.@@@@...@@..@..@@@@@@@@@@@@@@@..@@.@@@...@@@@@.@@@.@@.@@@@..@....@...@@@.@.....@@.@@@@@@@@@.@.@@@@@.@.

View File

@@ -0,0 +1,496 @@
97652,50353
97652,51578
98177,51578
98177,52782
97848,52782
97848,54028
98180,54028
98180,55220
97818,55220
97818,56391
97377,56391
97377,57573
97103,57573
97103,58738
96759,58738
96759,59924
96540,59924
96540,61136
96426,61136
96426,62265
95966,62265
95966,63548
96058,63548
96058,64735
95776,64735
95776,65881
95363,65881
95363,67069
95062,67069
95062,68316
94887,68316
94887,69336
94154,69336
94154,70373
93489,70373
93489,71299
92620,71299
92620,72393
92107,72393
92107,73844
92218,73844
92218,74552
91010,74552
91010,75746
90632,75746
90632,76770
89971,76770
89971,77508
88904,77508
88904,78805
88625,78805
88625,79864
87996,79864
87996,80347
86660,80347
86660,81783
86473,81783
86473,82435
85370,82435
85370,83144
84354,83144
84354,84268
83764,84268
83764,84688
82487,84688
82487,86007
82050,86007
82050,86384
80770,86384
80770,87439
80068,87439
80068,88568
79399,88568
79399,89172
78320,89172
78320,89820
77280,89820
77280,90654
76363,90654
76363,91139
75221,91139
75221,91388
73952,91388
73952,91921
72863,91921
72863,92719
71913,92719
71913,93621
70997,93621
70997,93862
69761,93862
69761,93895
68452,93895
68452,94308
67319,94308
67319,94922
66259,94922
66259,95857
65296,95857
65296,95455
63892,95455
63892,96596
62960,96596
62960,96344
61633,96344
61633,97187
60582,97187
60582,97323
59360,97323
59360,97241
58106,97241
58106,97077
56855,97077
56855,97914
55741,97914
55741,97491
54474,97491
54474,98186
53310,98186
53310,98313
52091,98313
52091,97963
50859,97963
50859,97993
49644,97993
49644,98131
48423,98131
48423,97674
47227,97674
47227,97818
46001,97818
46001,97541
44809,97541
44809,97674
43568,97674
43568,97153
42418,97153
42418,97018
41212,97018
41212,96839
40011,96839
40011,96908
38747,96908
38747,96211
37669,96211
37669,95612
36582,95612
36582,95958
35205,95958
35205,95395
34106,95395
34106,94919
32984,94919
32984,94904
31675,94904
31675,93591
30909,93591
30909,93627
29561,93627
29561,93181
28420,93181
28420,92249
27530,92249
27530,91650
26476,91650
26476,91293
25278,91293
25278,90408
24395,90408
24395,89733
23389,89733
23389,89410
22133,89410
22133,88221
21495,88221
21495,88098
20055,88098
20055,86954
19408,86954
19408,86000
18627,86000
18627,85174
17744,85174
17744,84290
16917,84290
16917,83949
15543,83949
15543,82524
15272,82524
15272,82014
14033,82014
14033,81229
13071,81229
13071,80009
12633,80009
12633,79298
11563,79298
11563,77911
11393,77911
11393,77034
10537,77034
10537,76109
9737,76109
9737,75227
8849,75227
8849,74191
8199,74191
8199,72849
8104,72849
8104,71723
7650,71723
7650,70806
6775,70806
6775,69808
6032,69808
6032,68422
6177,68422
6177,67599
4974,67599
4974,66360
4800,66360
4800,65212
4392,65212
4392,63906
4498,63906
4498,62834
3855,62834
3855,61672
3502,61672
3502,60414
3559,60414
3559,59362
2664,59362
2664,58173
2368,58173
2368,56862
2875,56862
2875,55672
2668,55672
2668,54503
2191,54503
2191,53257
2581,53257
2581,52087
1778,52087
1778,50859
2032,50859
2032,50331
94803,50331
94803,48426
1962,48426
1962,47196
1792,47196
1792,46022
2423,46022
2423,44825
2604,44825
2604,43540
2118,43540
2118,42384
2636,42384
2636,41104
2401,41104
2401,39959
2912,39959
2912,38754
3117,38754
3117,37500
3158,37500
3158,36316
3485,36316
3485,35167
3921,35167
3921,34151
4732,34151
4732,33078
5330,33078
5330,32041
5990,32041
5990,30813
6188,30813
6188,29525
6294,29525
6294,28756
7492,28756
7492,27549
7785,27549
7785,26435
8276,26435
8276,25150
8492,25150
8492,24090
9110,24090
9110,23448
10355,23448
10355,22560
11193,22560
11193,21191
11371,21191
11371,20292
12203,20292
12203,19636
13320,19636
13320,18789
14184,18789
14184,17567
14633,17567
14633,16387
15159,16387
15159,15698
16203,15698
16203,15120
17332,15120
17332,14042
17994,14042
17994,13241
18913,13241
18913,12731
20068,12731
20068,12034
21059,12034
21059,10932
21755,10932
21755,10488
22931,10488
22931,9468
23716,9468
23716,9203
24989,9203
24989,8064
25730,8064
25730,8168
27185,8168
27185,7292
28092,7292
28092,6335
28981,6335
28981,5999
30176,5999
30176,5479
31284,5479
31284,5717
32690,5717
32690,5150
33766,5150
33766,4409
34793,4409
34793,4363
36052,4363
36052,3890
37175,3890
37175,3302
38277,3302
38277,2760
39406,2760
39406,3329
40768,3329
40768,2470
41844,2470
41844,2397
43068,2397
43068,1912
44237,1912
44237,2403
45515,2403
45515,1733
46683,1733
46683,2489
47943,2489
47943,2215
49143,2215
49143,1549
50359,1549
50359,2310
51562,2310
51562,2412
52767,2412
52767,1685
54039,1685
54039,1939
55247,1939
55247,2436
56416,2436
56416,2774
57593,2774
57593,2803
58820,2803
58820,3228
59973,3228
59973,3694
61107,3694
61107,3625
62374,3625
62374,3718
63614,3718
63614,4723
64574,4723
64574,5009
65751,5009
65751,5104
67006,5104
67006,5837
68021,5837
68021,5991
69272,5991
69272,6559
70350,6559
70350,7123
71427,7123
71427,7230
72746,7230
72746,7872
73792,7872
73792,8795
74668,8795
74668,9195
75855,9195
75855,9964
76812,9964
76812,10693
77792,10693
77792,11903
78411,11903
78411,12115
79776,12115
79776,13307
80374,13307
80374,13750
81588,13750
81588,14917
82171,14917
82171,15618
83170,15618
83170,16626
83871,16626
83871,16952
85285,16952
85285,17879
86086,17879
86086,19186
86436,19186
86436,20037
87307,20037
87307,21153
87842,21153
87842,22036
88678,22036
88678,23106
89256,23106
89256,23660
90616,23660
90616,25133
90560,25133
90560,26184
91150,26184
91150,26973
92220,26973
92220,27937
93010,27937
93010,29308
92984,29308
92984,30226
93888,30226
93888,31507
93990,31507
93990,32600
94512,32600
94512,33798
94761,33798
94761,34939
95152,34939
95152,35910
96099,35910
96099,37037
96604,37037
96604,38375
96308,38375
96308,39427
97144,39427
97144,40708
96973,40708
96973,41904
97176,41904
97176,43128
97185,43128
97185,44263
97870,44263
97870,45488
97885,45488
97885,46729
97606,46729
97606,47920
98042,47920
98042,49141
97867,49141
97867,50353

View File

@@ -0,0 +1,142 @@
......................................................................S......................................................................
.............................................................................................................................................
......................................................................^......................................................................
.............................................................................................................................................
.....................................................................^.^.....................................................................
.............................................................................................................................................
....................................................................^.^.^....................................................................
.............................................................................................................................................
...................................................................^.....^...................................................................
.............................................................................................................................................
..................................................................^.^...^.^..................................................................
.............................................................................................................................................
.................................................................^.^.^...^.^.................................................................
.............................................................................................................................................
................................................................^.^...^.^.^.^................................................................
.............................................................................................................................................
...............................................................^.^.^.......^.^...............................................................
.............................................................................................................................................
..............................................................^.^...^...^.^.^.^..............................................................
.............................................................................................................................................
.............................................................^.^.^.^.^.^.....^.^.............................................................
.............................................................................................................................................
............................................................^.......^.^.^...^...^............................................................
.............................................................................................................................................
...........................................................^...^.^.^...^...^...^.^...........................................................
.............................................................................................................................................
..........................................................^.^.^.....^.......^...^.^..........................................................
.............................................................................................................................................
.........................................................^...^.^.^.^.....^.....^.^.^.........................................................
.............................................................................................................................................
........................................................^.......^.^.^.^.^.^.^.....^.^........................................................
.............................................................................................................................................
.......................................................^.^.^.^.....^.^.^.^.^.^.^.^...^.......................................................
.............................................................................................................................................
......................................................^.........^.^...^.^.^.^...^.^.^.^......................................................
.............................................................................................................................................
.....................................................^...^.^.^.^...^.^.^.^...^.^.^.^.^.^.....................................................
.............................................................................................................................................
....................................................^.^...^...^.^.^.^.^...^.^.^...^...^.^....................................................
.............................................................................................................................................
...................................................^.^...^.^...^.^.^.^.^.^.^.....^.^.....^...................................................
.............................................................................................................................................
..................................................^.....^.^.....^.^.^.......^.....^...^.^.^..................................................
.............................................................................................................................................
.................................................^...^.^...^.^.^.^...^.^.^.^.^.^.^...^.....^.................................................
.............................................................................................................................................
................................................^...^.^.^.^.^.^.^.^.......^...^.^.^.^...^...^................................................
.............................................................................................................................................
...............................................^.^...^.^...^...^.^.^.^...^.^.....^...^.^.^.^.^...............................................
.............................................................................................................................................
..............................................^...^.^...^...^.^...^.^.^.^...^.^...^.^.^...^.^.^..............................................
.............................................................................................................................................
.............................................^.^.........^.^.....^.^.^.^.^...^...^...^.....^...^.............................................
.............................................................................................................................................
............................................^.^.^...^.^...^...^.^.^.^.^.^.....^.^.^.....^.^...^.^............................................
.............................................................................................................................................
...........................................^...^.^.^.^.^.^...^...^...^.^.......^...^.^.^.^.^.^.^.^...........................................
.............................................................................................................................................
..........................................^.......^.^.^.^.^...^.^.^.^...^.^...^.^.^.....^...^.^...^..........................................
.............................................................................................................................................
.........................................^...^.^...^...^...^.^...^.^.^.^.^...^.....^...^...^.^.^...^.........................................
.............................................................................................................................................
........................................^.^.^.^.^.....^.^.^.....^...^.^.^.^.^.^.^.^...^.^...^...^...^........................................
.............................................................................................................................................
.......................................^...^.^...^.^.^...^.^...^.........^...^.^.....^.^...^.^.^.^...^.......................................
.............................................................................................................................................
......................................^...^...^.....^...^.......^.^...^...^.....^...........^.^.^.^.^.^......................................
.............................................................................................................................................
.....................................^...^.^.^.^.^.^.....^.^.^.^.^.^.....^...^.^.^.^...^.....^.^.^...^.^.....................................
.............................................................................................................................................
....................................^...........^...^.......^.^.^.^.........^.^.^...^.....^.^.^.^.......^....................................
.............................................................................................................................................
...................................^.^.^...^.^.^.....^.....^.^.^.^.^.^.^...^.^.^.^.^...^.^...^.^.^.^...^.^...................................
.............................................................................................................................................
..................................^...^.^...^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^...^.^.^...^...^.^.^.^.^.^.^.^..................................
.............................................................................................................................................
.................................^...^.^.^.^.^...^.^.^.^.^.^.^.^.^.^.^.^.^.^...^.^...^.^.^.^...^.^.......^.^.................................
.............................................................................................................................................
................................^.^.^.^.^...^.^.......^.^.^.^.^.^.....^.^.^...^.......^...^...^.^.^.....^...^................................
.............................................................................................................................................
...............................^.....^.^.......^.^...^.^...^.^.^...^...^.^.^.........^.^.^.^.^.....^...^...^.^...............................
.............................................................................................................................................
..............................^.^.^...^.....^.^...^.^.^.^.^.^.^.^.........^.^...^...^...^.^.^...^...^.^.^.....^..............................
.............................................................................................................................................
.............................^.^.....^.......^.^.^.^.^.^...^.....^.^.^.^...^.^.^...^.^.^.^.^.^...^.^.^.^...^.^.^.............................
.............................................................................................................................................
............................^.......^...^.^.^.....^...^.^.^.^.^.^.^...^...^.......^.^...^.^.^.^.........^.^...^.^............................
.............................................................................................................................................
...........................^...^...^.^.^.^...^.^...^...^.^...^.^.^.^.^.^.....^...^.^.....^.^.^.^...^.........^...^...........................
.............................................................................................................................................
..........................^.^.^.^.^.^.....^...^...^.^.^.....^...^.^.^...^.^.^.^.^.^.^.....^.^.^.^.^.^.^.^.....^...^..........................
.............................................................................................................................................
.........................^.^.^.......^.^.^.....^.^.^.^...^.^.^...^...^...^.^...^.^.....^.^.^.........^.....^.^.^...^.........................
.............................................................................................................................................
........................^.^.^.....^.^...^.^.......^.^.^.....^.^.^.......^.^.....^.^.^.^.^.^.^...^.....^.^.^.^.^.^...^........................
.............................................................................................................................................
.......................^.^.^.....^.^.........^.^.........^...^...^.^.....^.^.^.^.....^...^.^.^.^.^.....^.^.^...^.....^.......................
.............................................................................................................................................
......................^...^.^.^.....^.^.^...^.^.^.^.^...^...^...^.^.^.^...^.^...^.^.^.^.^...^.^...^...^.^.....^...^...^......................
.............................................................................................................................................
.....................^...^.^.^.....^.^.^...^.^.^...^.^.^.....^...^.......^.^.^.^...^.^.^.^.^.^.^.^...^.^.....^.^.^.^...^.....................
.............................................................................................................................................
....................^...^.^.^.....^...^...^.^...^...^...^.....^.^...^...^...^.......^...^.^...^.^...^.......^.^.......^.^....................
.............................................................................................................................................
...................^.^.^.............^.^.^...^.^.^.....^...^...^.^...^.^.^.^.^.................^.^.^.^.^.^.^.^.^.^...^.^.^...................
.............................................................................................................................................
..................^.^.....^.^.^.....^.^...^.^...^.^.^.^.^.^...^.^.^.^.^.^...^...^.^.^.^.......^.^.^.^.^.^.^.^.^.....^.^.^.^..................
.............................................................................................................................................
.................^.....^...^.....^...^.^.^...^...^.^...^...^.^.^...^.^.^.^...^...^.^.^.^.^...^.^.....^...^.^...^.^.......^.^.................
.............................................................................................................................................
................^.^...^...^.^.^...^.^.^.^.^.^.....^...^.^...^.^...^...^.^.....^...^...^.^...^...^...^...^.^...^.^.^.....^...^................
.............................................................................................................................................
...............^.^...^.^.^.^.^.^.^...^.^.^.^.^.^.^...^.....^.^.^.......^.....^.^.^.......^.....^.^...^.^...^...^.^.^.^.....^.^...............
.............................................................................................................................................
..............^.^.^...^.^.^.....^.^.^.......^...^.^...^.^.^...^.^.^.^.^.^.........^.^.^.^.^.^...^...^.^.......^...^.^.....^.^.^..............
.............................................................................................................................................
.............^...^.......^...^.^.^.^...^.^.......^.^.^.^.....^.^.^...^...^.....^.^...^.^...^.^...^.^.^.^...^.......^.^.....^.^.^.............
.............................................................................................................................................
............^.^.^...^...^...^.^.^...^.......^...^...^.....^.^.^...^...^.^...^.^.^.^...^.^...^.^.^...^.^.^...^.^.^.^.^.^.....^...^............
.............................................................................................................................................
...........^.^.^...^.......^.^.^.^.^.....^...^...^.^.^.^.....^...^...^...^.^.^.^.^.^.^.^.^.^.^.^...^.....^.^.^.^.^.^.^.^.^.^.^.^.^...........
.............................................................................................................................................
..........^.^.....^.^...^.....^...^.^.^...^.^.^.^.^...^...^.^...^.^.^...^.......^.^.^.^.^.^.......^.....^...^...^.^.......^...^...^..........
.............................................................................................................................................
.........^.^.....^.^.^.^.^.^.^...^...^.....^.^.^.....^.^.^.^.^.^...^...^...^.^.^...^.^.^.^.....^...^.^.^...^.^...^.^.........^.^.^.^.........
.............................................................................................................................................
........^.^.^.^.^.....^.^...^.^.^...^.^.^.^.......^...^...^.....^.^.....^.^.^...^.^.^...^.^...^.^...^.^.....^...^.....^.^.^.^.^.^...^........
.............................................................................................................................................
.......^.....^...^...^.....^.^.....^...^.^.^...^.^.....^.^.^.^.^...^...^.^.^.^.....^.^.^.^.^.^.^.^...^.^.^...^.^...^.^...^...^...^.^.^.......
.............................................................................................................................................
......^...^...^.......^...^.^...^.^.^.......^.^.^.^.^.....^.^.....^...^.^.^.........^...^...^.^.^...^.^...^.^.^.^.^...^.^.^.^.^.^.....^......
.............................................................................................................................................
.....^...^.^.^...^...^.^.......^.^.^.^.^.^.....^...^...^.^.^.^.^.^.^.......^...^.^...^.^.^.^.^...^.^.^.^.^.^...^.^.^.^.^.^...^.^.^.....^.....
.............................................................................................................................................
....^.........^.^.^...^.^...^.^.^.^...^.^.....^.^.^.^.....^.^.^.^.....^.^.^...^.....^.^.^...^.^.^.^.....^...^.......^.^...^.^.^...^.^...^....
.............................................................................................................................................
...^.......^...^.^.^.^...^.............^.^...^.^.^.^...^.^.^.^.^.^...^.^.^.^.^.^.....^...^.^.^.....^.^.^...^.^.^.^.^.........^.^.^.^.^.^.^...
.............................................................................................................................................
..^.^.^.^...^...^.^.^.^...^.^.......^...^.^.^.^.^.^.^.^.^...^.^...^.....^.^...^.^.........^.^...^.^.^.^.....^.^.^...^.....^.^.....^.^.^.^.^..
.............................................................................................................................................
.^...^.^.^.^...^.^.^.^.^.....^...^.....^.^.^...^...^.^.....^.^.^.^.^.^.^.^.^.^.^.^.^.^.........^.^.^.....^.^.^.^.^.^.^.^...^...^.^.^...^...^.
.............................................................................................................................................

View File

@@ -0,0 +1,5 @@
466 4 959 38 9 64 6664 96 946 235 8 55 427 71 77 826 61 19 923 39 64 51 2529 1 8 671 928 12 5 259 54 968 178 489 1 69 32 2356 7 1 391 396 57 384 676 69 459 8951 727 927 6 726 675 776 93 343 4985 2246 95 8 1 12 115 79 98 412 16 3 66 2 7 89 5235 769 91 2 7 7447 447 7 19 36 644 27 4 7 936 11 92 94 5 25 198 164 4232 9 38 41 44 44 99 41 57 99 778 9 42 69 17 44 1 394 127 73 6262 28 15 231 5792 5 437 282 926 3416 19 9811 143 76 35 3683 926 37 72 84 59 8 5 3 4 68 756 7995 2 778 32 17 68 6335 8 622 8171 16 8 32 597 799 587 97 527 34 298 56 773 1 2 41 7 1 4348 492 782 123 7418 73 3 443 1 88 61 93 6 9 99 94 15 615 76 42 981 13 598 75 38 75 149 5383 75 76 8 12 87 499 8 321 31 375 18 51 9966 62 1359 2 87 12 42 7888 1 2 582 36 126 841 984 123 1532 449 786 544 39 2 3 284 73 5 81 514 47 96 75 75 57 94 34 8 3 91 93 5 7 18 239 67 35 671 17 8 9 46 884 22 7 988 24 53 18 417 889 71 4288 354 83 6 11 496 227 53 75 8862 86 32 1 55 8 91 257 61 639 248 893 993 563 73 76 215 995 74 8 774 8118 5 93 46 9 6773 91 86 17 292 39 12 5 86 7 12 2 195 83 568 3339 3 87 227 1 52 151 636 12 479 64 58 726 91 464 92 7752 41 66 916 41 8233 73 59 62 548 328 483 11 44 5543 31 7 863 416 12 3 143 78 26 561 25 623 1 91 29 5 96 847 984 54 4 618 78 3 17 25 66 2 78 5 28 89 34 46 95 98 428 93 64 9682 19 826 858 58 15 7 3 71 2 699 23 85 92 42 718 36 981 799 11 594 18 272 3 69 41 121 99 693 64 184 495 51 38 35 82 41 114 4 37 98 131 18 25 81 3 633 56 6 7 5 14 449 17 36 62 95 14 5839 2722 12 99 2165 7216 12 13 43 74 7 91 71 98 11 24 4 6 65 77 52 818 76 16 94 94 787 7 3 31 65 92 728 2 77 464 93 39 581 2 395 97 79 16 939 79 48 93 9 51 68 2 34 28 397 1 32 6 875 9131 6273 4 367 44 8572 1119 98 3 1 88 4 695 19 1944 547 9 6963 3 18 21 923 84 444 66 41 8 381 42 932 8592 967 41 7236 63 68 63 168 44 3 338 117 6153 784 78 1 43 34 616 835 395 9 8 72 623 1 2 79 492 37 11 46 653 59 285 16 5 54 7 2431 42 816 524 87 68 1 334 87 57 28 6 7 25 52 863 9 795 71 522 32 4559 62 47 37 6537 58 9 52 54 29 89 1 39 94 295 194 1 39 68 2 72 86 68 254 781 75 14 7 86 9793 29 96 4 82 5897 79 5 25 2413 3 3 41 58 82 3329 52 8 32 336 6583 577 13 67 17 5318 69 17 59 88 7 3 18 9131 15 129 9956 55 5 859 759 5 1677 189 45 49 1 41 25 28 975 266 42 26 5 53 726 43 74 29 646 1 983 79 73 9551 44 75 5 73 46 575 93 755 9619 9 6 1 6874 533 2256 43 7247 72 89 292 913 67 6445 6988 29 35 7 47 18 42 42 948 4 557 55 279 454 887 6 13 4 1686 9 8532 43 657 4 56 81 92 93 31 963 3 943 7 83 4324 18 42 99 53 166 6 9 37 7553 962 3 78 964 99 443 74 69 42 54 48 32 81 247 325 38 31 469 37 5 915 4157 986 736 59 93 1538 3269 49 85 8264 73 134 96 55 2 78 51 8 6 9 4422 68 47 74 74 2 54 869 4 299 834 269 654 545 4746 3 69 481 883 8833 2 46 8 4 54 838 348 4 226 2 843 8 469 6874 8 61 39 88 41 62 36 6 2999 65 3 8443 38 33 48 1 47 213 74 5363 35 59 7 9229 51 8 741 1 955 665 567 27 498 1 12 154 14 63 521 25 1 859 99 682 886 84 8 44 69 97 3 83 48 211 59 37 69 3345 9 843 83 17 65 6 26 5 38 5 8 86 8 89 3 142 88 394 6 773 55 1 7 2 612 97 52 975 31 253 97 71 228 17 171 47 3 638 791 4 241 748 38 971 6 42 63 896 5 61 75 366 7 7145 7 91 48 7 147 666 6467 487 49 87 315 96 75 99 48 78 15 811 76 9 95 3 3791 13 4 14 2 656 984 2 51 621 356 499 2269 1 86 9152 686 8 41 245 29 7 58 53 3 463 47 5 85 1 175 986 1121 82
819 95 1621 22 27 65 6644 76 697 854 162 561 553 8999 51 663 7571 71 415 91 52 25 9111 7 82 869 163 45 31 394 95 642 8567 771 81 787 448 971 947 2 1489 639 23 826 957 83 12 446 947 776 64 249 299 397 65 672 7847 4577 966 8 71 41 322 655 79 524 51 54 31 8911 557 83 2796 494 33 7 48 2349 742 615 78 59 156 9 44 2 17 69 18 366 8 142 739 56 1244 7 63 77 456 61 19 81 18 44 358 42 2 57 947 498 982 833 678 373 5682 15 93 559 6236 23 947 566 865 8489 453 144 448 27 88 526 864 29 81 97 1 16 44 3 33 73 911 3852 586 249 24 66 58 8277 8 434 7627 419 38 47 922 176 624 34 433 1171 126 2 934 55 14 18 222 3 924 455 364 291 7869 66 34 4297 44 15 278 37 4 861 35 71 82 445 62 282 588 96 587 46 3 18 751 6441 97 52 3 75 289 253 4 378 41 567 34 27 515 71 1973 71 85 69 16 4591 4 19 514 58 795 384 252 112 3574 41 842 779 5529 99 43 377 6318 33 64 745 63 45 17 13 983 697 671 6 87 8678 396 98 91 439 429 986 6 462 11 58 15 14 647 15 2 237 97 43 3784 777 876 74 4114 998 27 653 49 116 923 92 41 1145 79 89 2 584 989 8926 713 34 462 41 961 282 739 96 15 741 595 8 885 615 8714 6 483 22 72 6452 26 95 27 472 23 965 74 76 9 46 3 532 68 726 7143 1 42 718 7 17 175 871 85 556 98 59 116 66 751 76 1375 85 711 399 94 1734 55 71 81 286 238 2986 47 87 9416 98 8 141 758 76 9 297 41 24 369 695 111 27 343 56 42 68 389 693 93 837 336 98 95 59 35 17 12 66 316 41 49 945 43 52 47 521 189 44 2821 11 217 244 88 67 67 39 56 56 249 4 47 13 8 881 29 574 254 21 174 13 421 97 69 31 773 93 7 346 938 232 56 99 36 37 55 346 5 75 66 263 37 96 83 68 912 56 4932 49 83 31 332 41 15 84 98 76 8616 8217 89 35 2117 879 1112 92 24 56 24 389 61 74 66 19 294 74 3194 29 62 521 261 75 65 83 137 9 633 283 22 29 139 84 57 712 62 31 493 26 768 89 872 35 478 62 88 85 72 51 8 33 979 34 599 4 868 47 312 9535 424 18 474 38 9936 2881 28 241 8 94 3 462 67 195 785 1 5623 3 11 65 495 5623 241 4 54 3 594 38 795 3144 155 76 981 17 66 693 571 18 13 571 515 519 747 94 48 59 14 1416 994 483 427 23 42 587 83 9 22 863 351 8 47 49 43 598 76 416 279 49 1448 9 184 673 15 14 7 49 53 5528 54 4 842 38 77 17 7 675 55 456 54 1398 59 29 47 257 41 68 49 48 463 29 45 52 27 743 228 9 53 96 8 34 43 215 271 73 993 21 1 31 6641 76 49 19 32 8571 244 78 73 9441 32 663 99 17 52 4683 214 348 62 159 3292 6836 94 11 563 7584 31 851 38 53 4 36 52 9196 27 891 5671 73 551 616 616 61 1223 558 43 88 76 54 67 7229 839 438 11 23 9 67 763 98 563 42 474 12 794 762 999 5855 615 73 5 85 31 168 63 734 9519 44 89 19 9718 368 2348 93 6634 23 72 792 289 86 5936 5936 48 68 3 25 97 85 6 466 4 258 51 112 645 946 82 64 2 213 7 532 81 26 84 67 81 541 85 57 883 35 671 24 89 4336 55 55 96 29 691 34 58 47 8563 682 85 32 662 45 515 24 36 44 914 42 32 85 364 354 89 96 526 62 65 758 5269 334 276 27 16 2219 4313 82 73 1334 498 416 299 13 48 73 261 3 2 2 7953 67 89 53 48 32 98 159 8 712 687 331 329 99 9338 318 18 261 659 5258 37 33 617 6 88 881 627 99 683 79 877 9 281 5847 64 64 84 49 96 54 37 25 5453 36 3 2494 16 15 51 983 69 243 713 3623 777 22 317 9291 76 78 6213 663 767 698 174 98 298 6 76 867 61 92 395 3 34 89 46 295 22 855 73 723 686 81 933 9 412 546 28 32 44 6122 9 953 87 98 96 8 53 36 66 4 9 772 378 35 8 238 72 8 65 68 21 8 89 7 915 37 5774 354 97 395 1425 31 431 32 972 1464 91 463 922 26 631 154 87 156 96 732 91 567 73 45 18 618 9 1773 6 57 36 171 925 625 9494 886 81 97 682 19 37 93 65 94 77 155 84 1 84 5 2236 85 1 79 772 298 543 22 37 556 962 715 9689 66 58 9186 841 12 866 916 17 3 83 67 2 685 42 86 53 46 282 112 3384 82
39 428 3812 46 55 14 378 78 176 984 329 348 226 6737 36 894 8935 9 934 2 65 38 73 18 65 331 194 59 756 2 44 745 7169 541 87 629 214 868 125 4 7135 843 7 143 898 71 81 76 754 813 59 42 551 116 68 876 8496 5168 762 76 47 5 3953 1366 97 56 625 676 15 7913 225 27 249 822 87 26 73 2116 241 222 95 18 919 5 81 76 2 86 54 8493 594 7847 26 9 2254 2 9 84 7237 7 47 18 86 71 945 99 4 88 344 875 812 418 92 1915 9424 41 46 54 4699 99 813 45 42 4296 5733 995 5851 82 26 85 293 286 22 28 9 54 432 98 116 28 48 33 362 464 17 16 58 617 92 7712 2165 611 414 17 62 634 928 86 37 6885 6 7 345 23 41 45 549 78 331 694 785 732 8672 83 3826 7184 21 39 387 17 2 812 64 66 2 738 4 751 718 181 582 73 7 39 517 819 76 48 6 22 761 944 76 124 63 412 77 21 472 683 647 82 35 34 1 786 46 97 124 61 381 883 64 245 652 64 38 965 4752 43 38 749 2859 38 68 947 17 6 561 31 817 163 678 883 373 7877 378 474 47 119 425 842 1 64 99 23 39 43 91 13 39 855 17 6 5334 56 398 12 2139 851 33 929 86 696 171 97 657 2145 73 55 81 188 738 7994 89 84 934 89 9143 798 421 55 23 924 44 7 447 27 4598 41 165 774 45 1449 32 46 8 59 41 461 111 14 57 33 26 8838 81 663 512 62 91 414 16 27 645 742 93 841 378 546 9322 56 414 1956 193 468 796 244 895 86 49 94 77 233 255 8442 35 83 516 65 16 897 94 5 11 765 43 55 1686 375 382 643 9323 45 462 71 86 145 96 134 25 55 259 5 71 62 15 95 283 118 2 237 49 645 11 312 899 89 673 99 882 31 17 95 14 85 52 44 124 2 25 27 9 633 52 727 461 52 53 87 18 65 97 89 387 487 7 6389 227 65 11 6 99 69 57 436 35 51 56 886 8 481 416 67 471 45 5471 16 32 211 584 1 93 325 52 32 3525 9939 92 67 683 71 5523 17 33 6 526 417 23 858 63 74 492 224 4773 55 84 735 359 57 51 85 319 52 942 443 58 5 436 61 632 659 94 76 785 949 8 82 312 73 7819 58 55 9 74 58 9 73 677 32 17 84 578 36 16 9325 94 54 365 22 419 299 714 555 38 42 7 192 64 81 483 49 645 9 117 28 216 2177 556 8 2 81 491 11 565 8375 499 934 845 91 82 133 5 7 68 734 197 558 398 37 18 67 17 8858 96 755 461 19 95 68 683 31 67 391 912 9 46 2 7 489 692 8365 736 7573 982 5 929 556 59 186 27 16 12 6889 26 856 457 62 23 86 83 127 78 294 64 431 83 82 24 616 16 233 2 38 317 3 544 4 29 261 621 46 57 87 9 699 39 9841 495 87 9636 9 38 51 8461 28 42 86 13 984 944 82 36 9761 12 427 411 8 24 2681 785 774 89 253 4854 6723 86 11 267 5635 37 317 65 25 7 77 67 312 95 488 2631 24 5253 963 636 561 496 768 4 6979 99 67 71 4725 641 577 218 92 92 13 562 52 692 72 8243 48 464 628 246 586 552 773 15 37 625 749 25 87 721 42 9833 23 1432 883 7976 77 1887 29 52 331 794 96 5434 3619 996 27 73 67 72 12 4 2536 56 567 8 277 476 778 81 91 73 32 36 481 86 27 45 12 41 628 2 22 175 386 591 55 375 728 15 946 79 84 133 11 6361 88 6434 569 43 52 72 541 9967 373 62 89 658 14 57 45 24 3397 92 2 923 63 38 513 6247 99 526 82 69 23 3526 56 631 5617 746 961 877 69 21 77 4865 96 4 2 443 72 187 22 779 91 1 459 66 158 812 633 312 99 53 218 39 648 6271 292 61 165 738 92 48 331 59 361 964 42 663 11 235 62 38 67 1 25 98 281 18 72 6414 3 768 7992 11 41 49 467 11 533 595 5341 929 98 528 477 73 55 3179 934 19 82 714 1 316 69 8 487 45 59 717 4 98 2 23 149 61 325 95 3574 216 9 969 9 591 288 228 69 43 3838 97 326 3 17 1 96 71 18 53 8 33 354 365 689 188 34 9 9 56 62 39 588 23 84 4 321 9626 2629 47 224 1135 75 895 87 79 8423 42 651 35 82 836 77 47 112 95 724 285 876 389 35 16 653 44 1541 571 9 35 1892 738 51 1532 487 33 21 651 264 81 281 95 98 821 95 16 8 36 15 457 131 51 9 691 688 7544 54 34 727 315 293 384 88 49 635 82 79 773 865 84 46 62 4 71 398 17 88 57 72 716 274 518 81
3 764 4592 46 94 43 589 67 83 933 466 475 684 3377 83 873 8357 2 12 3 19 3 44 54 37 882 16 39 772 9 39 717 3773 194 94 872 957 774 383 287 9785 225 9 63 6 9 5 31 2196 646 81 82 573 382 52 639 54 84 497 77 94 9 5692 6288 74 9 983 137 79 8617 272 61 49 3 2 65 943 998 693 118 45 32 777 2 49 81 6 61 12 9169 989 3353 95 7 63 95 9 9 5121 9 785 31 38 5 21 92 7 95 177 249 195 68 4 8276 123 6 97 8 442 12 636 29 54 8842 5797 333 1586 5 3 8 65 621 82 7 2 25 161 95 171 4 51 8 671 757 6 76 39 731 36 2848 98 523 449 69 68 26 11 6 9 8754 1 2 768 28 35 5 678 78 9 645 89 841 3836 9 8356 9223 47 84 154 76 17 844 75 46 8 919 9 837 356 118 33 81 6 66 918 8 78 4 81 3 269 992 99 72 2 669 62 857 675 751 46 91 44 34 6 59 15 35 489 97 261 377 12 2 2 6 93 962 3595 35 54 65 7323 41 1 6 2 6 214 569 111 228 522 984 128 9416 259 976 44 714 945 428 8 33 6 26 258 32 87 277 65 669 89 1 5785 92 77 13 62 961 24 623 8 94 898 95 797 64 25 34 17 239 136 8549 9 4 337 1 5478 833 94 9 72 12 11 9 836 9 616 43 286 1892 66 874 37 61 6 2 84 875 891 71 13 41 32 6496 13 34 7 58 2 69 29 19 881 96 9 365 473 129 6147 91 773 9161 527 316 837 43 483 5 8 83 88 263 446 6258 95 63 799 7 42 311 3 2 13 662 97 29 6635 643 916 572 1686 6 783 4 64 4545 5 885 2 93 196 5 14 2 62 9 332 818 1 597 2 741 43 54 928 96 758 89 21 89 4 16 85 15 42 65 7 9 3 16 5 44 2 675 489 59 19 2 28 15 71 59 4 493 4 1328 64 7 6 7 8 25 7 77 96 19 57 896 2 9698 352 46 149 91 4991 66 65 148 565 1 46 523 623 72 878 2397 95 55 319 56 1622 51 72 2 329 573 13 475 19 4 639 8268 1372 7 82 6 985 46 85 79 724 46 567 813 45 5 557 79 242 8 19 19 6276 388 2 88 6734 8 3334 81 76 5 67 52 4 26 7689 41 34 46 935 61 15 2279 9 97 8 78 75 96 5572 256 58 26 28 452 38 87 217 38 92 15 132 37 829 9634 664 2 6 82 47 67 683 433 69 271 816 78 2 762 9 2 72 82 36 42 518 3 32 4 9 2622 21 516 797 793 87 2 918 815 16 2 711 6 78 3 2 42 163 8482 964 5886 185 7 99 5 45 854 96 16 83 3764 956 193 448 4 36 98 15 21 67 77 3 238 4 32 53 876 22 388 5 96 331 9 728 1 5 366 615 29 21 44 94 396 84 9876 348 43 5459 9 96 14 5 55 42 597 95 276 921 62 28 317 983 572 987 9 27 17 845 241 4 5 753 7459 98 91 539 2768 81 276 67 79 69 93 47 11 38 61 41 85 6932 4 25 876 815 78 1 6168 17 74 978 4835 76 243 297 51 32 7 17 573 232 65 4142 46 878 276 845 656 863 765 12 64 853 996 56 93 43 222 1382 836 592 239 2537 44 4283 35 99 2 938 91 3 8785 485 74 71 1 59 62 6 1312 69 6689 4 31 91 977 76 91 57 99 49 875 89 28 37 9 93 378 2 81 472 644 231 21 172 52 84 742 34 16 85 43 6479 38 2422 2 36 56 74 951 5631 336 9 99 897 29 3 77 15 6289 48 5 289 8 59 839 3751 6 22 7 7 3 642 1 256 36 131 82 816 98 84 8 1133 59 36 38 78 76 244 38 114 85 1 21 39 78 55 35 898 8 73 743 44 276 7321 829 738 419 146 68 6 3 55 947 819 16 895 43 774 46 92 2 6 6 4 435 18 73 342 8 523 571 4 31 33 333 96 6 7489 96 126 38 457 62 94 93 3417 373 3 86 86 1 366 57 8 416 73 3 36 9 29 4 757 378 68 487 29 8692 336 4 795 6 564 8 198 739 34 344 254 35 4 5 9 63 63 52 7 69 38 9147 3748 165 437 93 5 2 28 1 84 734 24 71 9 872 9531 4745 56 93 4695 2 9 853 4 6471 29 84 1 96 357 64 24 18 19 616 158 843 589 75 23 74 35 1278 543 8 72 3987 68 3 8 22 87 21 712 326 91 515 1 1 372 35 72 11 49 754 42 517 91 7 439 13 7324 434 1 199 892 329 92 93 65 6 64 98 491 481 7 44 8 8 42 4 96 34 36 91 87 71 74 37
* * + * + + + * * + + * + + + * + * * * + * + + * + * + * * * * + + * * * + * * + * * * * * * + + + * + + * * + + + + + * * + + * * * * * + * * + + * * + + + * * + + * + * + + * + * + * * + + * * + + + * + + + + + * * * + * + + + + + + + * * + * + + + + + * + * * * * * + + * * + * + * * * + + + * + + * + * + * * * * + + + + * * * * + + * * * + * + + + + * * * * + + * * * + * * * * + + + + + + + + + + * * * * + * + + + * + * * + * * * * * + * + + + + * + * * + + + * + + + * * * * + * + + + + * * * + + + * * + * * + + * * + + * * * + * * + + + * * + + * * + + + + * * + + + * + + * + + * + + + * + + * + + * + + * * + + + + * + * + + * * * * * + + * + + * + * * + + * * * + + * * * + * + * + + * + * + * + * * + + * + * + * * * + + + + * * * * * + + * * * * + + + * * * * + + + * * * + * * + + + * + + + * + + * + * * * + + * * * + + * * + * + + + + * * + * + + * * * + * + * + + + * * * + + * * + + + * + * + + + + * + * + + * * * + * + * * + + * + * * + + * + * + * * * + + + * * * * + + * + * + * * + + + + + + * + + + + + * * + + + * * + * + + + + * * + * + * + + * * + + * + * * * * + + + + * + * + * + + + + * + + + * * * * * + * * + * + + * + * * + * * + + * * * * * * * + * * + + + * + + * * * * * + * * * + * * * + * + * + + + + + + * + + + * * + + * + + * * * + + + * + * * + + * + + + * + + * * * * + + * + * + + * + + * * + * + * + * * + * * * + * * * + + * + * + + * * * * + + + + * + * + * + + + + * * * * + + * * * * * * + + * + * * + + + * + + * + * * * * * * * + * * + * * + * + * + * * + + + + * * * * + * + * * + * * * + + * * + * + + * * * * + + * + + * * + * + * + * + + + + + * * + * * * * + * * * + + + * + + * + + + + + * * * * + * * + + + + + * + + + + * * + + * * * * * + + + + + + * * + + * * + + * * + * + + * * * * * * + * + + + + * + * + * * + + + + + + + * + + + * + + + + * + * * + * * + * * * + + + * + + * * * + + * + * + * + * + * + * + * * + + + + * * * + * * + * * + + * * * + * * * * + * + + * + * * * + + * * * + + + * + + * + + * + * * + * + * * + + * + *

View File

@@ -0,0 +1,156 @@
[.#...#...#] (3,5,7,8) (0,3,4) (0,1,2,3,4,7,9) (0,1,3,4,6,7,9) (1,4,5,6,8) (0,1,6,9) (0,2,3,4,5,7,8,9) (1,2,5,6,7,9) (0,2,3,5,6,7,8,9) (0,2,3,4,5,7,8) {46,36,54,60,41,78,47,75,59,57}
[.#...#.] (0,1,2,3,4) (0,1,2,3,4,5) (3,5,6) (0,2,4,5) (1,2,5) (3) (0,3,4,5,6) (1,2,4,6) {48,163,178,40,179,32,133}
[##.##.###] (0,1,3,4,6,7,8) (1,4) (1,2,3,5) (3,7) (0,3,4,7) (0,3,8) (1,5,7) (1,2,3,4,5,6,7,8) {29,156,20,68,149,33,23,61,43}
[.###.] (1,2,4) (0,2,4) (0,1,3,4) (2,4) {23,23,40,3,43}
[...####.#.] (1,3,5,9) (0,1,2,3,5,6,7,8,9) (1,2,4,8) (4,6,8,9) (1,2,7) (1,2,7,9) (2,6) (9) (0,2,3,6,7,8,9) (0,1,4,5,6,7) (2,3,5,6,7,8) (2,3,4,5,7,8,9) (4,5,8) {18,56,78,48,75,58,55,52,83,73}
[..#..###] (0,1,2,3,6) (1) (0,1,2,3,4,7) (3,6) (3,5,6) (0,1,3,5,7) (1,3,5,6) {41,47,33,69,13,24,48,21}
[##.####...] (3,8) (1,5,7) (1,4,7,8,9) (0,2,3) (0,3,4,7,8,9) (1,2,4,5,6,7,8,9) (0,2,3,4,5,8,9) (0,1,3,4,7) (1,4) {31,56,25,36,50,41,11,48,30,25}
[#....#..#] (0,1,2,3,4,7) (4,5,8) (1,3) (1,2,8) (2,8) (0,4) (1,2,3,4,5,6,8) (0,2,3,6) (2,3,5,6,7) {28,40,41,45,39,22,21,16,26}
[.#.#] (0,1,2) (0,2,3) (2,3) (1,3) {12,0,12,12}
[#...#.] (1,3,4,5) (0,2,3,5) (0,1,2,4) (1,4,5) (1,2,3) {156,17,167,169,6,162}
[.##..] (0,1) (2,3) (0,1,2,4) (0,2,3,4) (1,2) (0,4) {36,23,36,21,28}
[.###] (0,1,2) (1,2) (2,3) (0,3) {16,11,13,9}
[####..#.#] (1) (0,4,6) (0,2,8) (1,8) (0,4,6,8) (0,2,4,5,6,7) (0,1,3,7) (0,1,2,3,4,6,7) (4,5,6,7) (1,2,6,7) {67,51,52,21,62,30,70,59,28}
[.####] (0,2) (0,2,4) (1,2,3) (1,2,3,4) {187,8,195,8,6}
[###..#] (1,2,4) (0,1,2,5) (1,2,3,5) (0,2,4,5) {31,167,186,146,28,177}
[##....#] (0,1,3,4,5,6) (0,1,3,5) (1,2,4) (1,2,3,5,6) (0,2) (1,5) {41,46,44,31,24,32,20}
[#.#.] (1,2) (1,3) (2,3) (2) (0,3) (0,1,2) {20,51,60,38}
[#.##..####] (0,2,3,4,5,6,7,9) (1,3) (1,2,3,4,6,7) (2,4) (0,2,4,5,6,9) (4,5,8) (0,3,4,9) (0,1,3,6,7,9) (0,1,4,7,8,9) (1,2,4,6,8) {48,58,62,58,83,12,67,41,21,48}
[..##] (2,3) (1,2,3) (3) (0,1,3) (0,1) {18,37,37,41}
[##.#.##.] (0,1,3,4,7) (0,6,7) (3,6) (0,1,2,3,4) (3,4) (0,1,2,3,5,6,7) {211,199,196,234,30,185,216,200}
[#...#.##] (1,4) (1,2,3,4,6,7) (0,3,4,5,7) (2,5) (0,1,2,4,6) (5) (1,4,5,7) (2,3,4,7) (1,5,6) {15,54,49,34,60,70,33,47}
[.#.#] (0,2,3) (1,3) {20,12,20,32}
[#..#.] (4) (0,3) (1,2) (0,2) (0,2,3) (2) {21,13,48,4,9}
[.######] (2,5) (0,2,3,5) (0,5,6) (4) (0,1,6) {45,18,22,9,18,40,36}
[##..#.#.#] (3,7) (1,5) (2,3) (0,1,2,3,4,6,8) (0,1,2,3,4,5,8) (6,8) (0,8) (1,2,8) (1,4,5) (0,1,3,5,6,7,8) (1,2,3,4,5,6,7) {37,61,43,33,21,30,26,7,55}
[#.##] (1,2,3) (0,1,2) (0,2,3) {18,2,18,16}
[...#] (0,1,3) (0) (0,1) (0,1,2) {46,34,8,15}
[.###..#.] (0,1,2,3,4,5) (4,7) (5,6) (1,2,3,5,6,7) (0,2,4,7) (1,2,3,6,7) (0,2,5,7) (1,2,3,4,6) (3,4,6,7) (0,2,3,4,7) {29,24,52,165,163,42,163,190}
[.#.###] (0,1,3,4,5) (3,4,5) (0,2) (1,4,5) (0,2,3) (1,2,4,5) {48,30,31,45,44,44}
[.....#...] (2,3,5) (1,2,3,5,7) (4) (0,3,4,6,7,8) (0,1,4,5,6,7) (4,5,6,7,8) (0,3,6,8) (0,1,3,4,6,7,8) (0,1,6,8) (1,2,5,8) (5) {63,64,34,57,217,221,225,221,225}
[#.#.#####] (4,5) (2,4,6,7,8) (3,5,6,8) (1,3,4,7,8) (0,2,4,5,6,7,8) (1,2,3,5,6,7,8) (1,8) (0,2,3,4,5) (0,6,8) {34,15,58,37,54,58,53,45,56}
[.#..#.] (3) (1,2,3,5) (0,4) (1,2,3) (0,2,4,5) (3,4) (0,1) (0,1,3,4) {190,199,34,195,185,18}
[##..#.###] (1,2,3,5,6,7) (4,6,8) (3,6,7) (3,5,6) (0,2,4,6,7,8) (0,5,6,7,8) (1,2,5) (0,1,2,4,6,8) (1,2,3,6,8) (0,6,7) {54,41,60,49,46,39,113,59,64}
[##.#####.#] (1,3,4,5,6,7,8,9) (4,6,7,8,9) (1,2,4,6) (0,3,4,6) (0,2,4,5,6,8) (0,1,2,5,8,9) (0,2,4,9) (0,1,4,5) {199,27,185,28,209,39,57,19,48,184}
[##..] (0) (0,3) (1,2) (1,2,3) (0,2,3) (0,1) {37,28,14,25}
[.....##..#] (0,1,3,4,5,7,8,9) (7) (0,2,4,8,9) (0,1,2,5,6,7) (0,1) (0,4,5,9) (6,9) (1,3,5,6,7,8,9) (0,1,2,5,7,9) (2,6) {39,38,37,7,8,34,46,44,8,50}
[.###.####.] (0,1,2,3,4,5,7,8,9) (4,9) (1,2,5,7,9) (0,1,2,3,5,6,7,8,9) (0,2,4,6,8,9) (2,3,4,6,9) (3,7,9) (8) (3,8) (0,1,4,5,6,7,8,9) (1,5,8) (0,1,3,4,5,8,9) {37,40,38,45,42,40,32,32,63,72}
[...#.#] (3,5) (0,1,2,5) (1,2) (0,3,4) {12,14,14,10,2,18}
[.###.] (0,2,4) (0,4) (2,3,4) (0,3) (1,2,3) {11,5,30,29,25}
[.#..#] (3) (1,3,4) (1) (2,4) (0,3) (0,2) (1,2,3,4) {28,25,43,31,29}
[##.##.] (0,1,3,4) (2,3,4) (0,1,4,5) (0,2,4,5) (0,1,2,3) (2) (1,3,5) (1) {41,54,43,59,36,17}
[#.....#] (0,1,3,6) (1,2,3,5) (0,1,2) (0,3,4,5,6) (0,4) {158,34,22,43,142,31,25}
[.#.#..#.] (0,1,2,4,6,7) (0,1,2,3,4,5) (1,5) (0,1,3,5,6,7) (0,1,2,3,4,5,7) (1,3,6,7) {207,233,190,213,190,221,29,40}
[.#.##] (0) (0,1) (1,2,3) (1,2,4) (2,4) {120,34,41,9,32}
[.#.#..##.] (1,2,4,6) (0,1,2,3,6,7,8) (2,3) (1,2,3,4,6,8) (0,7,8) (1,2,5,8) (0,2,5,6,8) {24,18,36,21,12,8,26,16,29}
[#..###.] (1,2,3,4,5,6) (0,2,4) (0,1,2,4) (3,5,6) (0,2,3,4,5,6) (0,3,5,6) (0,1,2,3,5,6) (4) (0,1,2,3,5) {77,44,66,199,46,199,190}
[...##..##] (1,2,3,5,6) (0,1,3,4,5,7) (1,2,3,4,5,7,8) (1,2,3,6,8) (0,1,6,7,8) (0,1,2,3,4,5,7) (0,2,3,4,8) (0,1) (1,2,3,4,5,7) (0,3,4,5,6) {75,122,93,109,78,80,57,77,68}
[.######.] (0,3) (0,3,4,5,7) (0,2,4,7) (2,3,5,7) (2,4) (0,1,2,3,4,7) (1,5,6) (5,6,7) {69,29,62,61,67,57,30,83}
[##.#.#.#.#] (0,3,4,6,7,8,9) (0,4,5,6,7) (2,4,6) (0,3,5,6) (1,4,5,9) (0,2,3,4,5,6,7,9) (3,5,8) (0,1,2,3,5,6,7,8,9) (1,5) (0,1,2,5,6,7,8,9) (4,8,9) {75,55,56,57,75,97,92,67,89,81}
[##...] (3) (2,3) (3,4) (0,1,2) (0,3) (1,4) (0,1,4) {25,31,36,35,20}
[.####...] (1,2,3,4,5,7) (1,4,5,6) (1,7) (1,5,6) (0,2,4,6) (0,3,4) (0,2,4,5,6) (2,5,6,7) (2,3,4,5,6,7) {37,56,77,44,75,87,79,68}
[..###.#] (1,2,4) (0,1,5) (1,3,5,6) (2,3,4,6) (0,2) (0,2,3,4,5,6) {193,41,194,36,35,47,36}
[.####.##.] (0,1,4,5,6,8) (0,1,3,4,8) (2,6,7) (2,3,4,5,6,7,8) (0,3,5,6,8) (0,1,2,3,4,6,7,8) (1,3,5,6,8) {37,29,6,39,17,42,48,6,49}
[.###.] (1,2) (0,1,3) (0,1) (0,1,4) {27,44,17,12,11}
[#..###..] (1,2,4,6,7) (0,1,4,7) (0,4,5) (0,5,7) (0,2,3,4,5,6) (0,1,3,5,6) (0,3,4,5,6) (2,4,6,7) (0,1,3,4,5,7) (3,7) {64,50,26,50,55,64,42,58}
[.####.#] (3,5,6) (0,1,4,6) (0,1,2,5,6) (2,4,6) (2,3,4) (0,1,3,4,6) (1) (0,1,2,3) {35,39,33,29,32,5,30}
[..#######.] (0,1,2,4,5,6,7,8) (3,4,6,8,9) (0,2,3,4,6,7,8,9) (0,1,3,7,9) (0,2,3,4,5,6,7,8) (0,2,4,5,6,7,8,9) (0,1,3,4,6,7,8) (3,5,8) (2,5,6,8) (0,1,2,3,5,6,9) (0,1,4,5,7,9) {63,45,22,67,61,46,45,62,60,57}
[##.#.] (1,2,4) (0,1,3) (0,1,4) {20,190,170,13,177}
[####..#.##] (1,4,8) (0,1,3,4,5,6,7,8) (1,3,4,9) (0,1,2,3,7,9) (1,3,4,6,7,8,9) (0,2,4,5,6,8) (0,3,4,5,9) (2,6,7) (0,1,2,4,5,6,7,8,9) (0,1,5) (1,2,8) (8) (2,3,4,5,6,7,8,9) {69,258,242,57,90,67,71,74,262,61}
[##.#] (0,1) (0,3) (2,3) (1,2,3) {33,27,21,37}
[#...###.##] (0,1,2,5,8,9) (5,6) (2,3,4,5,7) (3,4,8) (1,4,6,7,8) (1,6,8) (0,1,2,5,6,7,8) (1,2,4,5,7,9) (3,7,9) (2,8) (1,5,8) (0,1,2,3,4,5,6,8,9) (0,4,5,7,9) {71,97,88,63,90,129,70,78,125,64}
[..##.##.#.] (0,1,2,4,5,6,8,9) (1,2,3,4,5,6,7,9) (0,1,2,5,6,7,8,9) (0,1,2,3,5,8,9) (1,2,7,8) (0,6) (0,1,3,4,5,6,7,8) (0,3,4,5,7,9) (2,9) {79,74,70,46,50,78,52,64,71,74}
[.#..#...##] (1,3,6,9) (1,3,5,6,7,8,9) (2,3,4,5,7,8,9) (1,3,4,7,9) (1,2,3,4,5,6,9) (0,1,2,3,7,9) (3,6,9) (0,1,2,5,6,8,9) {12,179,160,196,149,168,187,29,24,200}
[##.###...] (4,5,7,8) (0,4,6,7,8) (3,4,7,8) (1,2,3,6,7,8) (2,3,5,6,7,8) (0,2,6) (0,1,2,5,6,7) (0,1,2,3,7,8) (1,4,5,7) (1,2) {38,38,49,37,47,40,37,76,60}
[.#.###] (0,1,3,5) (0,4) (2,3) (1,4) (2,3,4) {16,18,13,20,22,7}
[....#..#] (1,2) (0,2,3,5) (4,7) (3,5,6) (0,7) (0,2,4,5,6,7) (1,2,3,4,5,6,7) (3,4,5,6,7) {27,8,21,31,171,42,40,185}
[####] (1,2) (1,3) (0,1,2,3) {13,40,21,32}
[#.#.] (3) (0,2) (0) (0,3) (0,1) (1,3) {51,6,18,31}
[#.#.####..] (0,2,3,4,9) (1,5,9) (0,2,4,6) (3,5) (0,1,3,7,8,9) (2,5,6) (1,3,4,5,6,8,9) (2,3,7,8) (0,1,4,6,7,8) {48,39,41,65,53,38,40,22,40,54}
[.#...##] (0,2,6) (0,1,2,4,5) (0,3,4,6) (2,3,4,5,6) (1,2,3,4,5) (2,3,4,6) (1,5,6) {188,50,227,45,61,54,210}
[.#.#] (1,3) (2,3) (0,2) (0,3) (1) {22,26,21,16}
[#...##.#.] (0,1,4,8) (1,2,5,6,7) (0,3,4,5,6,8) (1,2,3,7,8) (0,1,2,3,4,5,6,7) (0,6,7,8) (0,1,2,3,4) (1,3,4,5,6,7,8) (4,5,6,8) {42,28,19,20,28,8,25,25,34}
[....#..#] (1,2,4,6) (1,2,3,5,6,7) (1,3) (0,1,3,4,5,6) (0,2,4,7) (1,2,4,5) (0,1,3,7) (0,1,2,3,4,5,6) (4,5,6,7) {28,193,172,188,18,168,169,174}
[#..#.##] (0,1,2,3,6) (1,2,4) (3,4,6) (0,1,2,4,5,6) (1,2,5) (0,1,5) (0,1,4,5) (1,2,3,4,6) (0,1,2,3,5,6) {23,44,32,31,49,25,42}
[#...#...#.] (0,1,3,5,7,8) (0,2,5,6,7,9) (0,1,3,6,7,9) (0,1,2,8) (0,4,8) (1,2,3,5,6) (0,1,2,4,5,6) (6,7,8) (2,9) (0,1,2,3,4,5,9) (7,9) {31,34,22,33,4,20,37,40,5,42}
[#.#.#.#.] (0,1,5,6,7) (0,5) (0,2,4,5,6,7) (0,2,6,7) (1,2,7) (0,5,6) (0,1,2,3,4,5) (3,4,5,7) {74,43,50,18,36,73,63,65}
[#..###..#.] (0,1,5,8) (2,3,4,5,7) (0,4,6,9) (7) (0,3,4,7,8,9) (0,2,3,4,9) (0,2,4,5,6,7,8,9) (3,4) (0,1,3,5,6,7,8,9) {41,11,23,37,40,25,21,50,26,39}
[..#...#..] (1,2,4,5) (2,3,4,5,6,8) (4,8) (0,1,2,4,5,6,7,8) (6,7,8) (0,3,7) (1,2,4,5,6,7,8) (2,6,7,8) (1,2,3,4,5,6,8) (0,1,4,5,7,8) {20,23,31,18,37,23,42,62,58}
[.#..##] (0,2,4,5) (0,5) (1,3,5) (2,4,5) (1,2,5) (0,1,4) (1,2,3,4) (1,2,4,5) {28,173,163,15,156,176}
[..##.#.] (3,5) (1,6) (1,4,5) (2,3,5) (0,1,2,4,5) (0,3,4,5,6) (0,1,6) (0,2,3,4,6) {192,198,29,36,34,55,180}
[.#...] (0,2,3,4) (3) (2,4) (2,3,4) (0,1,3) {20,5,23,39,23}
[.###.#.#.] (0,1,2,4,5,6,7) (0,1,5,6,8) (3,5,7,8) (1,2,4,8) (0,1,5,8) (2,3,4,7) (3,4,5,6,8) (0,1,2,3,4,6,7,8) {33,46,30,38,48,61,34,28,67}
[#.#.] (0,2) (0,1,3) {20,15,5,15}
[##.#] (1) (0,1) (0,2,3) (0,2) (1,3) (0) {175,26,160,156}
[#.#...] (0,1,2,5) (0,1,2,4,5) (1,3,4) (2,5) (0,1,2,3) (1) (1,4) {32,64,38,23,33,27}
[##..###] (0,1,2,4,5,6) (0,4,6) (0,1,2,3,4) (3,5) (0,2,3,4,5) (1,5,6) (1,6) {38,43,36,32,38,58,40}
[#...#...#.] (1,4,6,8,9) (0,1,2,3,8,9) (4,7,8) (1,2,3,5,7) (0,1,2,4,6,7,8) (0,4,6,9) (1,5,8) (1,2,3,5,6,7,8) (0,1,2,3,4,5,8,9) (0,1,2,3,4,5,7,8,9) (1,2,3,5,6,7,8,9) (1,3,8,9) {222,258,228,230,246,216,68,67,272,243}
[.#.#] (1,3) (0,2) {0,181,0,181}
[#...#..] (0,1,3,5) (0,2,3,4) (1,2,3,4,5,6) (1,3,5,6) (0,2,3,6) {34,20,19,39,19,20,5}
[..##..#] (2,3,6) (4,5) (0,2,4,5) (0,1,2,3,5) (0,6) (0,1,3,4) (1,2,3,5) (0,1,3,5) (1,5,6) {63,81,46,70,29,86,31}
[#.##] (1,2,3) (0,2,3) {8,11,19,19}
[..#.#.] (0,1) (0,2,4,5) (2,4) (0,1,2,3) (1,2) {33,34,47,7,20,19}
[##...####.] (0,6,8) (1,3,4,5,6,8,9) (0,1,2,3,4,5,7,8,9) (1,5,7) (2,5,7) (1,2,4,5,6,7,8) (6,7,8,9) (3,4,6,8) {19,41,30,162,166,51,157,39,173,36}
[...##.] (0,3,5) (0,1,3,5) (0,2) (5) (0,2,3,4,5) (3) (0,1,2,4,5) (3,4,5) {60,7,37,242,24,49}
[#..#.###.] (0,3,5,6,7) (0,1,2,3,5,7,8) (4,5) (0,1,4,6,7,8) (3,5,7) (0,1,2,6) (0,2,3,4,5,8) {36,26,22,20,25,31,22,24,23}
[.....#..##] (0,1,2,3,4,7,8,9) (4,5,7,9) (1,2,3,5,6,7,8,9) (0,2,6) (1,4,6,9) (0,7) (1,2,5,6,8,9) (1,2,4,8) (2,3,4,7,8) (0,1,3,5,7,8) (0,1,2,3,5,7,8,9) (0,1,2,3,4,5,6,7,8) (1,5,6,7,8,9) {61,127,89,74,48,100,78,106,123,85}
[#...#] (2,3,4) (1,4) (0,2,3) (0,4) {22,4,37,37,25}
[##.#.####.] (1,3,4,7,8) (0,1,2,3,5,6,7,9) (0,3,5) (1,2,3,4,7) (1,5) (3,4) (1,3,4,8,9) (1,5,6,9) (0,1,3,4,5,6,7) (2,7,8) (0,2,5,7) {45,68,47,75,45,72,28,59,19,25}
[.####] (1,2,3,4) (0,1,2,3,4) (2,4) {19,19,28,19,28}
[#.##.#] (0,1,2,3) (5) (1,3,4,5) (0,3,5) (0,2,3,5) (2,3,4,5) {25,8,25,45,20,50}
[..###] (3,4) (0,3) (0,2,3) (0,2,4) (0,1,2,4) (2,3,4) {44,20,49,54,54}
[.##.#] (0,3) (1,2,4) (0,1,2,3) (1,2,3) (4) (0,2,4) (0,1,3) {49,57,40,64,199}
[##.#..#..#] (3,6,8) (2,4,9) (1,2,3,4,5,6,7,8,9) (0,4,8) (1,2,4,5,6) (2,4,7,8) (1,3,4,6,8,9) (0,2,3,5,7,8,9) (1,2,4,6,7) (0,4,6,9) (6) (0,2,3,4,5,9) (0,6,7,8) {35,38,57,25,67,35,54,35,28,30}
[##...#] (0,1,5) (0,1,3,5) (0,2,3,5) (1,3,5) (1,2,3,4) (2,4) {31,44,36,36,25,50}
[..#.#..] (0,1,2,3,5) (1,3,4,5) (0,2,3,5,6) (0,1,2,6) (2,3,4,5,6) {16,19,36,41,25,41,22}
[#..##] (2,4) (0,2,3) (0,1,4) {6,5,10,1,14}
[##..###] (1,3,4,5) (3,4) (3,6) (0,1,2,3,4,6) (0,1,2,4,5) (0,2,4) (0,1,3,4,5) {36,43,28,49,53,28,24}
[#.###] (0,3) (1,3) (0,1,2) (0,3,4) (0,2,3) {37,25,18,32,3}
[.###.] (0,1,2) (0,1,4) (0,3) {25,11,2,14,9}
[..##..] (0,3,4) (0,1,5) (0,1,2,5) (2,5) (0,1,3) (0,3,4,5) {55,30,20,45,25,43}
[.##.#...] (3,4) (1,2,3) (0,3,4,6,7) (0,3,6,7) (0,1,4,6) (0,1,3) (0,2,3,4,5,6) {42,38,14,41,30,1,33,16}
[#.#....] (0,3,5,6) (4,6) (0,1,3,5) (0,1,3,4,6) (0,2,3,5) (2,3,4,5) (4,5,6) {60,30,201,241,223,230,52}
[...#..####] (0,1,3,6,7,9) (1,2,5,6,9) (5,6,8) (3,6,7) (2,5,6,7,9) (0,1,2,3,4,5,6,9) (1,3,4,6,8,9) (0,1,2,4,5,6,7,9) (1,4,6,9) (2,3,5,6,7,8) (0,2,3,6) (3,5,6,8) {59,89,84,93,59,86,149,79,35,97}
[..#####.] (0,2,3,4,5,7) (2,3,4,5,6) (1,3,4,5,7) (0,1,2,5,6,7) (4,5,6) (0,6,7) (0,1,4,5,7) {34,19,26,33,40,44,43,45}
[..#.] (0,1,3) (1,2) (2,3) (0,2) (1,3) {28,195,198,23}
[.####..] (2,4) (3,5) (0,2,5,6) (0,3,4,5,6) (1) (1,2,3,4,5) {26,12,19,24,25,34,26}
[##..#.#..] (2,4,7) (1,2,3,4,6) (3,8) (0,4,5,6,7,8) (2,4,8) (0,1,2,3,4,6,8) (4,5,8) (1,2) (0,2,5,7) {13,22,53,17,55,7,18,13,38}
[.###.##] (0,4,5) (0,2,3,4,5) (2,5) (1,2,3,4,5,6) (0,1,2,4,6) (1,2,4,6) (0,1,4,5,6) (0,1,2,6) (2,4) {56,38,82,8,72,50,38}
[..#.###] (0,1,2,3,4,6) (1,2) (0,1,2,6) (0,1,3,4,5) (1,3,4,6) (0,2,3) {47,57,46,46,31,12,34}
[.....#] (0,4) (0,2,4,5) (1,4,5) (1,3,5) (0,2,3,4) (4,5) (1,4) {13,43,13,29,54,58}
[.#...] (0,2,3,4) (3,4) (1,4) (1,2,3,4) (1,3,4) (1,2) {18,62,45,53,68}
[#.#.#.##.] (0,1,4,5,7) (0,2,3,5,6,7,8) (0,3,5,8) (2,3) (0,2,3,4,5,6,7,8) (0,1,4,5,6,8) (0,1,2,3,4,5,6) (0,1,2,3,5,6) (0,1,5,6,8) (0,1,2,3,5,6,7,8) (2,3,4,5,8) {88,62,55,67,42,90,69,24,55}
[###.] (1,2,3) (0,1,2) {10,29,29,19}
[#.##....] (0,3,4,5,6,7) (0,1,2,4) (1,6,7) (0,2,5,6,7) (0,1,3,6,7) (1,2,4,6,7) (3,4,7) (3,4,5,7) {36,37,20,30,26,15,41,54}
[...###...#] (0,1,3,4,5,6,7,8,9) (3,7,8) (1,2,3,5,6,7,9) (0,2) (0,2,4,5,7,8,9) (1,4,6,8,9) (0,2,3,4,5,6,9) (0,1,2,9) (1,8,9) {50,20,46,33,37,34,30,29,33,44}
[#.###...] (0,1,2,6,7) (0,3) (0,1,3,4,6) (4,6,7) (1,2,6) (1,5) (2,4) {149,152,18,146,165,1,171,23}
[.#...##] (0,1,3) (0,2,3,4,5,6) (0,4,5) (4) (0,2,3,4,5) (2,5,6) (1,5,6) (0,1,2,4,6) {55,42,54,39,45,64,55}
[##.######] (1,2,5,6,7) (0,1,2,6,8) (2,4) (1,2,3,5,6) (0,1,2,3,4,5,7) (0,2,3,5,6,7,8) (0,3,8) (2,3,7) {18,31,54,28,24,33,20,43,5}
[..#..#..] (1,2,3,4,6,7) (3,5) (0,2,3,6) (2,5) (3,4,5,6,7) (0,2,6) {20,10,42,38,16,36,36,16}
[####] (0,1,3) (1,2,3) (0,1,2) (0,1) (1,2) (1,3) {22,46,14,23}
[#.#..###.] (2,3,4,8) (0,1,4,5,8) (0,1,3,4,5,6,7,8) (1,2,3,4,8) (0,4,5,8) (0,2,5,7) (0,2,5,6) (5,6,7,8) {49,39,56,51,61,201,182,178,213}
[#..####.] (0,1) (0,4,5,6,7) (2,3,5,6) (2,3,4,6,7) (3,6) (1,2,4,5,6,7) (0,1,3,4,5,6,7) (0,3,4,5,6) (1,2,7) (0,1,2,4,5,6) {55,47,43,70,72,72,97,41}
[#.##..###] (0,3,5,6,7,8) (0,1,2,3,4,5,8) (0,1,4,6,7) (1,5,6,7,8) (2,4,6,8) (0,3,4,7) (0,6,7) {45,56,24,27,47,40,42,45,44}
[...##..#] (0,3,4,5,6,7) (0,5,6) (0,1,3,5,6,7) (0,2,4,5,6,7) (1,2,3,4,5,7) (0,1,2,3,5,6) {45,15,14,23,15,46,45,22}
[####.] (0,3,4) (0,4) (0,1,3,4) (3) (2,4) (1,3,4) (0,3) {41,29,18,54,67}
[#####.##] (0,2,3,4,5,6) (3,7) (0,5,6,7) (0,1,2,5,7) (1,3,6,7) (0,3,4,5,6) (0,1,2,4,6,7) (0,1,4,5) (1,2,3,4,6) {228,224,48,57,234,212,84,42}
[#.#.] (0,2,3) (0,2) (0,1) (2) (1,3) {24,1,199,14}
[#...##.#..] (4,6) (0,1,2,3,6,7,8,9) (1,2,3,4,6,8,9) (0,2,4,5,6,7) (1,2,4,7,8) (0,1) (9) (2,3,7) (0,1,3,4,8,9) (0,4,5,6) (0,1,3,4,6,7,8) (3,5,7,8) {56,45,47,209,70,207,65,233,217,16}
[......#.] (0,1,3,6) (2) (0) (1,3,4,5,6) (0,3) (2,3,4,6,7) (0,1,4,5,7) (0,2,3,4,7) (0,1,2,4,5,7) (0,5,7) {60,41,52,69,65,33,40,49}
[.#####] (1,3) (1,4) (1,4,5) (0,1,5) (2,4,5) {2,18,20,1,35,25}
[#..#....#.] (0,3,7,8,9) (1,8,9) (2,3,4,5) (0,1,3,5,6,7,8) (1,2,3,4,6,7,9) (2,7) (3,4) (0,2,4,5,7,8) {33,21,12,48,27,26,20,36,34,14}
[##..###.] (1,2,3,5) (0,1,2,3,5,7) (1,3,4,5,7) (0,1,5) (1,4,5,6) (2,5) (0,2,3,4,6,7) (0,3,6,7) {39,43,34,47,31,62,39,42}
[#.#.] (0,2) (0,2,3) (1,3) {23,18,23,28}
[#.#.####.#] (0,1,4,6) (1,4,7,8,9) (6,7) (1,3,5,6,7,8) (0,1,2) (0,2,4,6,9) (0,2,3,7) (1,3,7) (0,1,2,3,5,7,8) (2,3) {39,46,53,50,30,17,54,52,23,26}
[#..#.#.#.] (1,2,4,5,6,7,8) (0,2,3,4,6,7,8) (0,2,3,4,7,8) (0,6) (0,1,4,5,6,7) (1,2,3,6,7,8) (2,3,5,7,8) {159,43,190,170,179,53,60,205,190}
[##....] (0,2,3,5) (2,3,4) (0,4) (1,4) (0,1,2,5) (1,3,5) (0,5) {61,45,24,19,33,55}
[##..#.#.] (0,1,2,3,4,5) (0,1,2,3,4,7) (0,1,2,5,6) (0,1,2,3,4,5,6,7) (1,2) (1,5,6) (0,3) {49,56,48,34,20,33,25,12}
[...##.] (2,4) (1,3,4,5) (0,2,4,5) (2) (1) (2,3) (0,4,5) {18,12,48,23,25,22}
[..#..] (0,2,4) (0,1,3) (0,4) (0,1,2,3) {223,29,196,29,194}
[#.##...] (0,1,2,3) (1,5) (5) (4,5,6) (1,2,3,5) (0,2) (0,1,2,3,5,6) (1,2,5,6) (1,2,4,5,6) {42,69,65,34,23,75,57}
[#.##.] (1,4) (0,1,2,4) (0,2,3) (0,1,4) {34,24,26,10,24}
[#.#..#] (0,1,2,5) (0,2,4) (0,1,3,4,5) (0,1,3) {29,17,17,12,21,14}
[.#..###..] (6,7) (2,4,8) (1,2,3,4,5) (0,1,3,4) (2,3,6,7,8) (0,1,7) (6) (2,4,5,6,7) (0,7) (0,2,5,7) (1,2,4,5,7,8) {39,45,62,38,64,27,40,66,55}
[#.#.##] (0,4,5) (3,4) (2,3,4) (0,1,4,5) {37,20,155,155,192,37}
[.##.##] (0,1,2,3) (0,1,2,4) (1,2,3,5) (2,3) {134,145,153,22,131,11}
[.#.#] (0,2,3) (1,3) (2,3) {20,164,33,197}

View File

@@ -0,0 +1,200 @@
2215452689925244273244333436189317446384838478525478824435233342352236255624326767355438753493222423
1222232323222232132222323221226222225212221213232122232311152232223212123622111212223162322221323211
3786645737446363554463656544667372864465545434545435744345766553343446943531537627746253556233634463
8453332352565142143524531446335443437325325152243234623554533532314513854524534532534224242344434525
3533243449264427643542468452244718248315345733634133352136441275626213553347866334222454323754335453
5535625542655597356352273256244443153325356634941773484673334456353334423458343574664633345343665513
2252332222532292346231412134324235332443333323223313377333323737314334332224532223813332224315253334
6122221212223222221222221122232243223216125222134222113211222222222223423221222333331212121221212222
3373117222222512252222213221487225222222122214221232724313232124722214335222282233236222232242227374
4324221311332133124311141233224134334423134124444233221233312314231241241143121423121121431142256789
2722832232823132312232242222312311332223312432122131823122312222222421622221323221321222222523323232
2231133421122122223222222212222113131222325222122222322212212122222222212321322241522242222221115122
4423313224213441432454432222125442433411323443323133284443431324633442334622623233642434248325321423
4125312414443568333545464313544326176742543256235346446552356366542153744336443643522322645254554644
3644334363342344567643443444444337444344445243654544444365418444443444554523654452443346544244264644
5323444342233135324221242454223642343236246226342152225323242212434243232333142123914226712323424443
6639379995398867788897889288988749385667849837673775358695799893677978593975529534843835737869638469
3236752433626656333544544555126734453323343658344256258555334455342244266243325556734323635333214248
4351655754585521442543947656672256644546555474465433554962535585454738657555244553444643564455354452
2237222225142212451322332222313221222212225221222422211222222722322222242271214331231225222222223223
2834226834525774934433434225284665362232524692858947373345337344135638933531467333732323441653933392
5547365555688654773656643376555665966753267761765346664654556756454675653644573276576656677465466463
6273322623671457517623463322243246837463253252345372646454348235631422283632253433222263367533365247
3225533544429667786914823542454241235224694587356724335421246656612452243836523367132455748296656375
1235212235252334235645542554324336453259222442425243442423325426222264223454235232434222732322373554
5644452554444442344444424444353274364744434532545757444734343347544473446442334433445375345447545435
8999658566789898968985984977945797957698566998575976788977555898595999678878896598558588879888579896
7673764525764117141444537734457367533754724553517727761354114366572756664372565575113736665611522589
4567555557558775667746566745765545556579756615865564655547695665475466764657455294936646645557796555
6242222235121555242223852114242372143458434412422523112222413312522242525223224321221252224267142275
3526223262424234223142334154422313233224241422322432324457133214264521253314474222232111422152244314
4534312358531653444435326421254565555465423365354453543523536263445565534455584255374543435362545335
3825535635733372332522823873676373423922224632436776253233323454953456442636732266264262616444336336
5353444554254525334214351333215441351234241244213121132131111335525432432545215325155351333115536789
2232233243212223242122232423422113222124312331312332433443224222221233226431312241222333334222322433
3454645562342347355436354644554324536534654344455463434663434643375144443244653554534444443632264525
6444254352145644483452712344344242473255424853441343154352436244265832452435433523335733574435377432
3132312235541541525421141124122133422222211321132415273342244222223322121332222335232251222321222322
3545235354434834445435443449444556554448644644554455445555434484434454443565463444444443344545553514
4443544544454556544334342545455335444475164454554444635454434587684554654654254453344537345246543335
3222223236464122221664352262593664263356232425432152232551566222241725266234335212235116173422332146
8154775772554636646858766338544657562185866455861787725652348486767447777458666348356666564766855855
1221222222412312213329222232231222313222225832222223212633222212242332222322221222523223223627226212
2222621222122231222212221222216212222224122122221273422521121222254255163213221224222222542212223224
3444434584135753465934134454468646644634442644124343244465631544464373363183345356351464634526446655
7535235444435124425134323341522455654447423246149234342454321243444424254475444424444256284255864264
3131313322533347523573323445533331735635343235135323336143723343224445344333323633634335333535356133
9864544535884858839444264443453868683432464413666367475676283377453374427472664226448645524563658746
2344334543444343473433354533445255342453454544434543344423445494434334334244342443332233444324233334
2232152322245422563233222133262421322232147523582212222382243667315326412132225136312244182233222421
2123254241324122223222522322321153315223225232224224252414315222161333615743522345322124233123334232
6543555544545243244215456352254534155423335323523329232432543533435135436283144925561434335423442855
3233234434333374432343229743323334333293333233334233323332332133433333333323542323323435333333322333
3465684536348436622676875743446453754523585874478737727444474335854637375237654363638248348394844556
4454634436745226466443443547374435255464644435453736564742648446533347364374743474472452345424444343
8933656355766372657646393747397553984476238556774637844786685554555467468673679656657625666666977846
2333632233554124665936524253474446425624625433364725536353342552734233262355365435653413364336524653
2222222312212122322222221211522312131222322122623211332278223322212325522342315233222332213721141221
1181298225622722112252222117234262422232221211122423762242722826874212221221225132312512231221413822
2321232222323212223322646123213212333223252324632333332222222232331135232232352237222222132214344322
1221322122552522127332262412222222222223722163125212282122622236813222272276282727221132227122221228
5223431413442256232434332146142223345321523733223235542523322245322422331522221362325123221313244232
3432342453333434433312322343332342314333342232534333333144143133333324323343413333344332433322213363
3443454243553355422634953443424654364624344243453332534233333343238365443645241372433324332332533332
4321143226313233531332344322244253232242332243223123124132333223242223424234224342442423323123222234
2565554455555455565555575555545555555555343655656664655955555524575455445455536455556454555555555535
2611557322542172125114222232122124162122122742262382212232121221322342722222222332332225122315333125
2332323522212212332222433231213343123312333222162121331332423122233282313321222332293222232313842232
2835534262526454435243425433472642444444655255455355574643325724455636454555425524564765462542276435
4635364554333454582794449233243545437574434533335433853233342238272466345445537345237554444247354333
4333426431534431243344454563772374252343585223522353233433348353263842323433453427247322233435454137
1222132232212222323332222313222422222231521322232821214212222323222226232323222221321232122222222233
2623232214342242425243213161244233232426313133233434233223621343334414224462316424454253131342226422
9666376743999796547977575657648753956766679456576796755475577565597557567666747856576737577687465656
3221323512251221222233113321272241223213122233321222533324123232222231242422221322233263232222241135
4329444344437333432323234383342233343545443434334337552336563133435332233343155355345454345534333328
4322122245342322235322932142422222222222135272342623144221222263422224343242438122446253145333222311
5111411242372512222222421222235421521222124227523422232323222224542432262322255224232224222421624222
3434645343645334437732534134763436836633433344624613342315725323543833324453447244634344443243262433
2352125121414325322313332133522112225243242453311534432225422332334432322335224313323123262131431268
1325411226243322486221532343122531543532255252442433524212542244261525422422125513522424524225352414
2212322233332213512212133221122222213222223122122222131332222338224223422222311234422132323322232231
4897333563333234432633355484153546233136553473624355563355943643465324342137488327436345332534932423
1221459444444636582465956235642243223384551562622244642455225447416224482347546234532454253662125524
2224252242913642222223234142242262234245262542645321344129112242132433232615524865623262243237414254
4333433343124243433223433254254363823363343133384344232243233743443345244616243424345332423422453134
5223272522231322222235222323722682522626222432751224522532272212433232812215388532222682524324672322
4322313351223222312434332421313331422431223322212222211512232121521472723232323353222222233243253223
3533452432222333331253213313221233233313531221331223332334432233313333323332523241433332532333322333
2667548542533647947376447456534253332366634443577595436763376955332447656464543374437474342363234783
5783362525339762394563884413365533775953756762777362336456335867357397225325253535736523557853521479
4342342532442342313324343343533324533234334243433243343333324232443433313343442324223324333332333343
4545553665353657625654244435735362656445955544446854442544374343695462575455553546456456264453355336
2236823222375633551232263326445312642331321533836332732422263284531332232263523728222243233337251235
4434225232343323322345443342342324235233532234323344323341333423344338344235443333134244234432133353
3535427435662254455763534552565243466554535538587536855524353824445332321243363553424357485556425455
3243533142324243343342423326453232333314445233531243365258335434213733324435252523223332433323435441
2333332323213332533682232333223123222452423233343422243414451332243322132132432222323334252233523226
2352212622323422223646412352333663366434244523322214314225214252523333314444272532353325651432222212
4224412213254531322212684336452464532314422242622247232211232113324232353524242242244412422432224332
4141324254125123524223333233432513333252322142112332133315222123322323335321353332322335651354323233
2433333321223142132253233212223262322562132322224393233242283322353562332233122313228322153336122323
3363323345423248353333332442633333332232432363353741452334233342635342455343223344433333533334355333
2522332243423524523231473333542353333333313535543333425333232333333734234522337335353443353134244341
6754223927727182758649563236142259682732236226357353842724527382266434622326472642328822522483667772
4325343252433432534455233455353233733235455434334245253353535362353354343443333335523343543222433334
3247123342234213252231234322242223222213213842322322242321133543322321322333332241223211122512334233
4221242932312112274233441256823412229862272232222432325623349331486322534236311328228221222226934353
2712212212333273212432213222222222232131231221825222222332231222347241212223233331241122223223518232
3222243222122323122314221233331232232323232322222232221324222122223222122242221412212233232222223232
2237344714333334236643423332423443575533235233233824353343633334523444344844944333333333335343233443
2345335322223323232331133334612334422122522123222322223242222223432423323323322343323442131533363462
2212222222423232232212111112212125224222222222121321221122213322212322223122223312422122222214512122
4322212414121425315331434443432324322222142433233232122222323351222362471222333253112223422223144154
2222132232422222122222133223123222221222132222332216322322262321132226221322222312211422221322233322
6544496363544536655347566343366445555553635355454326644636557433423664464346568943664659453574526365
2225224522242227222222222226222228225261122121426222212222242423224224224212233153122223546222216222
1122512224334223352842323222247124123444121428231422237433131433561222572235251332133243635444654452
1223243424443545212242425752321235232222418121221324222122244535223632321142372523414222122113122221
5423521472243222233282612211443224357222742254442233522322422234644524324421626372112123214942221717
5243133224735522212322225222122421152383252222322434232518421421422224222633236423112322234225322228
5352412344533435553635153222742223426726351253437235513461245342765482532473282334337657223335254572
5443337345554244344483533346125543555335416345524846653564434632452432544342344545545322523444444467
3343333423333322233433434423133334373243523732314126323332224236224224772332236323223331233223333432
4443246455466628754322175624332255352644542355375633425435344633963424365476464254738652659375635433
2222321822222123212123223222223243322214223222232212312222222222211341222222323211223322262223323432
1242522225241242144243333222225322222232222224232223232223241323342322423311111242333231541323122312
2322213371242423221143321223422422423321124212223222141233212622221312222132232232212241233232134234
3133333422333333333233432643233341322343333512326322351224365762341423332413222326524625532253234433
3343433233433222414332332424324323444633444324243342443113234434233443535444243334433332342324423633
5554457453542935751785345354748453843767685229732251456553855682427655945553359156263956756654965957
3634422353633333364333838665245354343593124485344363693433363643327367844633344273137732444334236443
7883345464543164533522413783327362422575552222566662274325345463353126237775878643633522155357245353
5367524233323333273641376325222633833513235543354334596334135335333335714383633529832313916528618443
2222112121211224522222221211622222231225412223222222235222223512722211231623226212212226122222522112
2292221222222222222222222222422111622112142222122322211222222212122222222222812122212322222322122222
2343644354332242544335444243235435322344341544265423547643343442433433415542349346325554244333224752
1342626272364794241632462836364432252262522241286223332413622442466422517221226256243232457113523386
4254356575547763246443254654367844361545533435377655464857245525664645654786446455436745664443664465
8877897263668879437651755889888787888866998987874696636775868588184988732871686767768888286952377878
4443643928243353359443435344857573484452282345235292344275125734343286335554432421454244538326327345
3343293359544353533794535325554345853783435834333355425443554738335824983324733443423543652956494534
4487434445435354424344262454446344342443464334341124344442444224153422242144245442344444444264442424
4852231451722225222152422222211724232413221162422211412323528132322531322222212332453292523122212222
2533125343443433331332213222254415445232135222335632333316516422353424124362374535242333352221235243
1213333123221232133423322145214133222222322226332323342242122333223244323229332413371342222427355322
2223432242232226222222223233264333133233211221233332223322521222233221232529421223222234262323311331
4333251434214664354221552221322252343443351455445251662345456445645454345241255424544544246255343245
6543447336822333353734334549663334737733335633933436547274264143373534549252333364733134356363633755
2421225323335434443342622284243234333432438234242113332333334222332432822441442333334232341523422433
2244122542223238422128322324342256923444424224325263734432452623564127342242643432424572223244356732
2345224549237333932324222335334242245233324253921237223324152312333463342422624243433834322113233372
2236326322323139122242822223232334331123532421322242353233223334423333232235241533322211223213252232
1423322215223123233332222322222242332212321323232231122522224222423234323232333222122231212321414252
2677566548347767364386846141372765763337332238362566163713256568882156338434744825582542117315858459
3113342423363622231122322421242227224259232232222231522322134232333332272311333322222633232432323373
2222422122222133223623223323135632242432413432332222323223232335524333223321314332714222224351233211
4263327583154322543324523434624564135553564125446622222646545433322232532234433636652272242223234232
1521215625366133644532245623615562213146211216653153666111154441566211451633632546646313245546124789
2222222223232322142233222212122231332223111222283222211225422213222222232242222212252231223322322222
2212322222223222222221222115322214234222225222325222212232222322226133231241221322221122321332222221
4243224544324433253532226333833321424342236363152364364334423342433453433343334223232348216624824323
2242121352221222222222542222233352232322522312213223531342222126223412222532222412434224232213122433
3341233422233323323331232232232187329342385233323331273732243133313322322333232323223111213233343221
2112212322222322212222322322262222322128122225221222331322211721223213251125232222622222222212232222
4256325571555252345473125464248364234834464542332345543653455323215135885235753391455336255245254545
4424243555445453553441546755744454544545555133143553954425352853554545564474153646813552251665636444
4226234124378254424637323135223139574523552332353333253215325554423224635122321233234838122844256383
3343624433333336335634336323333433323332453433333313522334333363333321333243333333333333331333533632
5432332433322333261246223314112343332454215423442523214224422442333313624221242212514224334311322422
5145333254344357372346344527376323443453558562453346456633522274244363545356345536446524564233454284
4222323354147213322372128842432315225245323222124424132466332346342658442326244222123212423122463427
5123432273133331422233127732132227273224213165222721122333233343262283213232223434332322313343231233
7523972343477361377743956884687575443466739542777453463647373912825463342455373643625785555533268257
4213324141342324718322323224222134582626532922312232224711231355247332524212226422892822263225123623
1221222133133333213313233423221221222232233323343331234313233236333232332332332353322133234222323322
1324222332512532232325532322623344454413222242321444234232332242343422213323343222332344321442224231
1151223222162533222342825322433243224223622383232414322521524232268232723631322111224242221275225121
2233222423821611241444422334722333356141453136321242233311221221253242122342242723221122122574764322
8573255368427233541249342862965464536493678437533637576625889687456637652825457643483176999343198658
3244224244424643444229472636623243984414241464325683423334836437283334543623242248744844445444255424
4522895222223459222215242224321218938928231422228422322222522291345942435392232845332154532852338761
3252332432222223233223232312222232234263331424324244213733245323642222215123232632211152533443123423
4314642433623624333624333242262233433323334433222234331344432246333323226233324333254433432444424244
4434123323443252336355444433244434856354314442336544424248344344344464148454443245425424424444434543
3633644225434233462334334433334334244457453244225434744644357343345334344315442435435336265343352333
8511753365365353433545751734565554656442345565435633555555553454455244484375353835449714556575324136
1333534633222323212533322633234232122213532344333324532334611133332323322332621571214133333223333232
8747857539877346635974765766877575376767844547564476625546978745769777857787855766876866677674885783
5954947455377864765587667483737385776764967667567557377687557576775775576747374788787674527477967475
2323313232333223232722222211221222212343242221732312323232232332223452252123221332333341222342312331
5246523252273423333432545422334224443522222341333424273555446432242222344235842532143342442243235425
3332362543334362533336343234532534233532372333332337731132253512237233433432133328442433338322623323
2554445353152423523433348333335333634333243454324344334443543343233354334325553534533522353472684334
3252332422222212123233222122333352262253112222224222244222222313222223423912332212322232323713223152
2229222286292113252332322422222522521114553224422143124257322361232241222422232724144422212212742224
2223123222222213252126322422132131223213211223233316234222212222622222222323222231322211262112223224
2311233423122622631116321246121221261234224237222542222225222122217132274222324223432222224222522422
6634644474551646645574355664475663676736253675576458125356566663552375853445554345666675676853752767
5443322233234342223444233322543323223434393253133433243534223622425232323423422334442123542533333224

Some files were not shown because too many files have changed in this diff Show More