From b86faabc79e67829032d4b2e5e800465830445cb Mon Sep 17 00:00:00 2001 From: Nathan Tien You Date: Wed, 3 Dec 2025 16:43:39 +0100 Subject: [PATCH] add 2025 --- .env | 0 .envrc | 1 + .gitignore | 3 +- 2025/1.1.ts | 20 + 2025/1.2.ts | 25 + 2025/2.1.ts | 42 + 2025/2.2.ts | 44 + 2025/3.1.ts | 19 + 2025/3.2.ts | 31 + 2025/inputs/1 | 4779 +++++++++++++++++++++++++++++++++++++++++ 2025/inputs/1.example | 10 + 2025/inputs/2 | 1 + 2025/inputs/2.example | 1 + 2025/inputs/3 | 200 ++ 2025/inputs/3.example | 4 + package-lock.json | 1 - shell.nix | 17 + 17 files changed, 5196 insertions(+), 2 deletions(-) create mode 100644 .env create mode 100644 .envrc create mode 100644 2025/1.1.ts create mode 100644 2025/1.2.ts create mode 100644 2025/2.1.ts create mode 100644 2025/2.2.ts create mode 100644 2025/3.1.ts create mode 100644 2025/3.2.ts create mode 100644 2025/inputs/1 create mode 100644 2025/inputs/1.example create mode 100644 2025/inputs/2 create mode 100644 2025/inputs/2.example create mode 100644 2025/inputs/3 create mode 100644 2025/inputs/3.example create mode 100644 shell.nix diff --git a/.env b/.env new file mode 100644 index 0000000..e69de29 diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..1d953f4 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use nix diff --git a/.gitignore b/.gitignore index 30bc162..4e70dc4 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -/node_modules \ No newline at end of file +/node_modules +/.direnv \ No newline at end of file diff --git a/2025/1.1.ts b/2025/1.1.ts new file mode 100644 index 0000000..c8248a2 --- /dev/null +++ b/2025/1.1.ts @@ -0,0 +1,20 @@ +import { open } from 'node:fs/promises'; + + +const file = await open('./2025/inputs/1'); +let angle = 50 +let count = 0 +for await (const line of file.readLines()) { + const prefix = line[0] + const sign = (prefix == "L") ? -1 : 1 + const value = Number(line.slice(1)) * sign + angle += value + if (angle < 0) { + angle += 100 + } + angle %= 100 + if (angle == 0) { + count++ + } +} +console.log(count) \ No newline at end of file diff --git a/2025/1.2.ts b/2025/1.2.ts new file mode 100644 index 0000000..697ca45 --- /dev/null +++ b/2025/1.2.ts @@ -0,0 +1,25 @@ +import { open } from 'node:fs/promises'; + + +const file = await open('./2025/inputs/1'); +let angle = 50 +let count = 0 +for await (const line of file.readLines()) { + const prefix = line[0] + const value = Number(line.slice(1)) + if (prefix == "L" && angle != 0) { + angle = Math.abs(100 - angle) + } + + angle += value + + let triggers = Math.floor(Math.abs(angle) / 100) + count += triggers + + angle %= 100 + + if (prefix == "L" && angle != 0) { + angle = Math.abs(100 - angle) + } +} +console.log(count) \ No newline at end of file diff --git a/2025/2.1.ts b/2025/2.1.ts new file mode 100644 index 0000000..1d91596 --- /dev/null +++ b/2025/2.1.ts @@ -0,0 +1,42 @@ +import fs from 'node:fs'; + + +const file = fs.readFileSync('./2025/inputs/2').toString(); +const ranges = file.split(",") +let invalids = 0 +for (const r of ranges) { + const [first, last] = r.split("-") + processRange(Number(first), Number(last)) +} + +function processRange(ogstart: number, ogend: number) { + let start = ogstart + let end = ogend + let startDigitAmount = Math.floor(Math.log10(start)) + if ((startDigitAmount + 1) % 2 == 1) { + start = 10 ** (startDigitAmount + 1) + startDigitAmount++ + } + let firstStartHalf = Math.floor(start / (10 ** Math.floor((startDigitAmount + 1) / 2))) + + let endDigitAmount = Math.floor(Math.log10(end)) + if ((endDigitAmount + 1) % 2 == 1) { + end = (10 ** (endDigitAmount)) - 1 + endDigitAmount-- + } + const firstEndHalf = Math.floor(end / (10 ** Math.floor((endDigitAmount + 1) / 2))) + + for (var i = firstStartHalf; i <= firstEndHalf; i++) { + if (Math.floor(Math.log10(start)) % 2 == 0) { + continue + } + const n = Number(i + "" + i) + if (ogstart <= n && n <= ogend) { + invalids += n + } + + } + +} + +console.log(invalids) \ No newline at end of file diff --git a/2025/2.2.ts b/2025/2.2.ts new file mode 100644 index 0000000..5fa7dcf --- /dev/null +++ b/2025/2.2.ts @@ -0,0 +1,44 @@ +import fs from 'node:fs'; + + +const file = fs.readFileSync('./2025/inputs/2').toString(); +const ranges = file.split(",") +let invalids = 0 +for (const r of ranges) { + const [first, last] = r.split("-") + processRange(Number(first), Number(last)) +} + +function processRange(start: number, end: number) { + for (var i = start; i <= end; i++) { + if (isInvalid(i)) { + invalids += i + } + } +} + +function isInvalid(input: number) { + const strinput = input + "" + for (var i = Math.floor(strinput.length / 2); i > 0; i--) { + if ((strinput.length / i) % 1 != 0) { + // Not divisible + continue + } + const splitted = strSplit(strinput, i) + const first = splitted[0] + if (splitted.every(e => e == first)) { + return true + } + } + return false +} + +function strSplit(str: string, n: number) { + var chunks = []; + + for (var i = 0, charsLength = str.length; i < charsLength; i += n) { + chunks.push(str.substring(i, i + n)); + } + return chunks +} +console.log(invalids) \ No newline at end of file diff --git a/2025/3.1.ts b/2025/3.1.ts new file mode 100644 index 0000000..1cef17b --- /dev/null +++ b/2025/3.1.ts @@ -0,0 +1,19 @@ +import { open } from 'node:fs/promises'; + + +const file = await open('./2025/inputs/3'); +let count = 0 +for await (const line of file.readLines()) { + count += findPair(line.split("").map(Number)) +} + + +function findPair(numbs: Array) { + const max = Math.max(...numbs.toSpliced(-1, 1)) + const maxIndex = numbs.indexOf(max) + + const digit = Math.max(...numbs.slice(maxIndex + 1)) + return (max * 10) + digit +} + +console.log(count) \ No newline at end of file diff --git a/2025/3.2.ts b/2025/3.2.ts new file mode 100644 index 0000000..fc7cf7a --- /dev/null +++ b/2025/3.2.ts @@ -0,0 +1,31 @@ +import { open } from 'node:fs/promises'; + + +const file = await open('./2025/inputs/3'); +let count = 0 +for await (const line of file.readLines()) { + count += findPair(line.split("").map(Number)) +} + + +function findPair(numbs: Array) { + let result = '' + for (var i = 12; i > 0; i--) { + const max = findDigit(numbs, i) + const maxIndex = numbs.indexOf(max) + numbs = numbs.slice(maxIndex + 1) + result += max + result + } + + return Number(result) +} + +function findDigit(numbs: Array, pow: number) { + if (pow != 1) { + numbs = numbs.slice(0, -(pow - 1)) + } + const max = Math.max(...numbs) + return max +} +console.log(count) \ No newline at end of file diff --git a/2025/inputs/1 b/2025/inputs/1 new file mode 100644 index 0000000..bb6faba --- /dev/null +++ b/2025/inputs/1 @@ -0,0 +1,4779 @@ +L50 +R6 +L15 +L18 +R24 +R28 +L29 +L41 +L13 +R49 +R18 +R36 +L28 +L10 +R16 +R1 +L47 +R4 +R45 +R45 +L49 +R13 +L19 +R24 +R34 +R13 +L42 +L35 +L14 +R38 +R2 +R31 +L4 +R37 +L40 +L19 +L42 +R32 +L50 +R23 +L31 +R43 +L46 +R36 +R17 +L29 +L25 +R23 +L28 +L80 +R50 +R51 +R98 +R58 +R92 +L57 +R98 +R95 +L69 +L61 +L39 +L21 +L53 +R21 +R53 +L88 +L35 +R7 +L84 +L16 +L84 +R36 +L36 +R90 +R98 +L88 +L39 +R39 +L44 +L94 +R33 +L95 +R82 +R95 +R54 +R32 +R37 +R43 +L43 +L62 +L48 +L15 +L63 +R88 +R94 +R6 +L54 +R86 +L29 +R13 +R84 +L60 +L50 +R81 +L174 +L10 +L436 +R56 +R47 +L677 +R14 +L391 +R575 +L10 +L5 +L18 +L42 +L276 +L26 +L183 +R7 +L22 +R74 +R864 +L16 +L22 +R54 +R15 +L269 +R285 +R57 +L32 +R590 +R63 +L14 +R51 +L59 +R36 +R992 +L68 +R99 +R84 +R22 +L6 +L78 +R78 +R281 +R19 +L59 +L69 +R89 +L35 +L26 +R74 +L54 +L720 +R37 +L42 +R31 +R96 +R78 +L76 +L89 +R765 +L52 +L586 +R38 +R32 +R68 +L375 +L236 +R29 +L4 +R86 +L38 +L62 +R709 +R91 +L78 +L63 +R907 +R834 +R66 +R34 +L53 +L47 +R27 +L27 +R89 +L60 +R650 +R21 +L6 +L94 +L889 +R495 +L6 +R44 +R998 +L34 +L88 +L37 +L83 +R14 +L114 +L29 +R96 +L323 +R97 +L631 +L64 +R33 +L1 +L78 +L5 +L87 +R91 +L557 +R88 +R27 +R66 +R837 +R40 +R71 +R16 +L1 +R14 +L31 +L24 +L445 +L64 +L36 +L6 +L50 +R75 +R64 +R17 +R75 +R898 +R27 +L942 +R51 +R91 +L78 +R78 +R90 +L61 +L92 +R15 +R48 +L49 +L31 +R73 +L93 +L86 +R86 +R206 +R94 +L97 +L3 +L491 +R991 +L27 +L68 +R24 +L529 +L246 +L60 +L1 +L50 +R521 +R999 +R227 +R62 +L41 +L11 +R2 +L11 +R19 +R996 +L82 +R76 +R13 +L95 +L619 +R67 +R34 +R23 +L57 +R578 +R56 +L25 +L75 +L43 +R43 +L668 +L54 +L78 +R32 +L32 +R89 +L89 +L942 +L90 +L52 +L18 +L55 +L57 +R14 +R44 +L913 +R69 +L13 +L19 +L80 +R9 +R13 +L354 +L61 +L95 +L59 +R77 +R82 +R62 +L47 +L75 +L35 +L18 +L21 +L66 +L141 +L59 +L96 +R91 +L95 +R72 +L68 +L883 +R54 +L494 +R44 +L25 +L355 +R55 +L16 +L583 +L72 +L99 +L9 +R79 +R42 +R51 +L56 +L350 +L270 +L17 +L79 +L88 +L6 +L91 +R64 +L3 +R83 +R20 +R28 +L28 +R73 +L273 +L37 +R37 +L71 +L83 +R30 +R88 +R92 +R48 +L51 +L53 +L16 +R326 +L10 +R37 +L89 +R69 +L91 +L26 +L35 +R35 +R22 +L222 +R11 +R99 +L10 +R28 +L94 +L34 +L12 +R12 +R38 +L38 +L16 +R10 +R253 +L48 +R1 +L80 +L22 +R7 +R64 +R31 +L77 +L73 +L73 +L47 +L85 +L45 +L37 +L99 +L8 +L90 +R83 +L24 +R75 +L30 +R30 +L64 +L40 +R13 +L9 +L553 +R84 +R69 +L67 +R2 +R28 +R596 +L73 +L24 +R38 +L95 +L42 +R99 +R38 +R66 +L98 +L68 +R505 +R32 +R166 +L3 +R52 +L5 +L85 +R6 +L30 +L11 +R73 +R97 +R3 +R80 +R97 +R44 +L21 +L53 +R81 +L28 +R83 +L17 +L66 +L28 +R19 +R10 +R21 +L24 +R58 +L87 +R748 +L17 +R41 +L41 +R248 +R752 +R462 +R29 +L47 +L3 +R59 +L19 +L95 +L86 +L11 +L66 +R77 +L73 +L22 +L51 +L67 +L49 +R62 +R5 +R596 +R34 +L37 +L67 +R11 +L8 +L36 +R89 +R19 +L70 +R34 +R42 +L29 +L37 +L46 +L96 +R594 +L20 +R22 +R37 +R46 +R17 +R865 +R435 +L33 +R24 +L26 +L50 +R571 +R88 +R56 +L30 +L39 +R39 +R36 +L52 +L84 +R12 +R88 +R43 +L52 +R34 +L46 +R21 +L445 +R260 +R50 +L65 +L18 +L70 +R80 +L92 +R32 +L76 +R7 +R19 +L651 +L31 +R15 +L32 +R3 +L279 +L61 +R7 +L483 +R8 +L78 +R33 +L13 +R44 +L964 +R21 +L16 +L83 +R83 +R76 +L281 +R845 +R55 +L23 +R40 +L17 +R95 +R5 +R39 +L39 +L45 +L428 +R301 +R285 +R62 +L75 +L22 +R8 +R8 +R6 +R79 +R21 +L88 +L90 +R93 +L62 +L53 +R66 +L84 +L82 +L10 +L76 +L14 +R45 +R92 +R68 +R19 +R776 +R47 +R43 +L47 +R352 +L90 +R32 +R47 +L84 +R872 +R28 +R918 +L7 +L62 +L49 +R616 +L16 +L58 +R58 +R934 +R66 +R16 +L17 +R1 +R58 +L724 +R66 +R51 +L46 +L5 +R589 +R81 +R30 +L47 +R83 +R638 +R50 +R86 +R34 +R87 +L44 +L3 +R555 +L93 +R54 +R169 +L41 +R72 +L19 +R19 +R12 +L41 +R29 +L450 +L62 +R32 +R98 +L8 +R90 +L34 +L38 +L28 +L74 +L77 +R51 +R992 +R98 +R510 +R3 +L902 +L34 +R44 +L11 +L36 +R69 +R258 +R755 +R395 +L78 +L99 +R96 +R660 +L6 +R86 +R67 +R93 +L960 +L98 +L44 +L68 +R19 +R54 +L63 +R75 +R54 +L580 +L49 +L22 +R29 +L424 +R17 +L13 +L33 +L4 +L750 +L296 +R57 +R694 +R45 +R469 +R31 +R492 +L92 +R36 +L36 +L5 +R705 +L27 +L62 +L11 +R35 +L433 +L14 +L88 +L62 +R53 +R30 +L5 +L185 +R32 +L95 +R32 +R25 +R71 +L912 +R35 +R22 +L70 +L67 +R57 +R439 +L39 +R39 +R18 +L11 +L7 +L20 +R18 +L65 +L33 +L590 +R290 +R58 +R28 +L74 +R35 +R51 +R858 +R60 +R84 +R105 +R918 +L23 +L50 +R397 +R37 +L384 +L79 +R95 +R216 +L69 +L63 +L874 +L26 +R81 +L93 +R698 +R14 +L476 +R756 +L4 +R724 +L60 +R760 +R96 +R92 +R952 +L40 +R13 +L32 +L94 +L986 +L59 +R412 +R6 +R20 +L3 +L15 +L96 +L604 +R838 +L14 +R595 +L428 +L30 +R77 +L98 +R98 +L76 +L24 +L20 +L80 +L93 +R51 +R98 +L6 +R50 +R7 +R52 +R64 +L45 +R14 +L694 +L164 +L96 +L12 +L7 +R216 +R18 +R47 +R25 +L64 +R39 +R7 +L7 +L31 +L269 +L99 +R354 +R65 +R980 +L70 +L37 +L71 +L822 +L24 +R51 +R73 +R48 +L527 +R88 +R91 +R84 +R99 +L28 +L958 +R193 +L90 +L81 +R81 +R221 +L41 +L27 +R42 +L95 +L656 +R41 +L81 +R38 +L38 +R96 +R92 +L92 +R68 +L572 +R4 +L70 +R52 +R58 +R314 +R46 +L9 +L91 +L802 +L50 +L44 +R70 +R64 +R45 +L58 +L74 +R78 +L29 +R2 +L2 +R69 +R71 +L273 +L67 +R50 +R84 +L34 +L83 +L71 +L51 +R205 +R127 +R22 +R154 +L232 +L719 +L90 +R75 +R63 +R139 +R905 +R56 +L701 +L94 +R548 +R27 +R948 +R53 +L30 +L1 +L52 +R2 +R81 +R92 +L6 +L14 +R728 +R68 +L49 +L85 +R23 +R94 +R33 +L853 +L808 +L4 +R36 +R4 +L94 +L12 +R92 +L93 +L38 +L32 +R28 +L91 +R472 +R98 +L70 +R55 +L27 +R12 +L11 +R71 +R91 +R10 +R97 +R802 +R60 +R61 +R79 +R57 +L57 +L64 +L67 +L91 +R22 +R2 +R4 +R24 +R513 +L43 +R33 +R77 +L25 +R502 +L50 +L52 +R15 +R69 +R22 +R9 +L69 +R23 +L54 +R974 +R26 +R24 +L96 +R772 +L16 +L84 +L49 +L94 +R98 +L55 +L2 +R36 +R66 +L357 +R26 +R87 +R11 +R73 +R60 +R80 +L72 +L8 +L479 +R23 +L55 +R11 +L75 +L822 +R50 +R9 +R186 +L936 +L37 +R88 +L27 +R60 +R90 +R14 +R78 +R14 +L922 +R86 +R19 +L70 +L505 +R55 +R96 +R32 +R86 +L43 +L19 +R48 +R74 +L826 +R90 +R7 +L6 +R22 +L43 +L73 +L79 +R918 +R49 +R91 +R66 +R3 +L48 +R52 +L3 +R60 +L9 +R29 +R57 +L733 +L77 +R3 +R9 +L884 +L30 +L38 +L91 +L45 +R58 +L17 +L41 +R473 +R27 +L52 +L448 +L98 +R92 +L19 +L16 +R2 +L572 +L230 +L1 +R42 +R99 +R452 +L51 +L912 +R28 +L31 +L585 +L66 +R63 +L97 +L924 +L6 +L19 +R65 +R83 +L62 +L37 +R38 +L21 +L150 +L72 +R31 +R974 +L75 +R86 +L30 +R4 +L85 +R39 +L71 +L24 +R65 +R19 +R3 +R69 +R22 +R78 +R17 +L17 +L92 +L66 +R47 +L89 +L49 +L51 +L10 +L90 +R84 +L84 +L92 +L65 +R12 +L24 +L31 +L55 +L45 +L18 +L56 +L42 +R16 +L1 +L99 +R50 +L10 +L23 +L17 +R564 +L514 +R15 +R4 +L91 +L10 +L68 +L3 +R85 +R18 +R35 +L36 +R1 +R116 +R28 +L44 +R38 +R84 +R78 +L76 +L24 +R4 +L4 +R8 +L8 +L87 +R56 +L69 +L66 +R83 +L131 +R61 +L908 +R86 +R75 +L58 +L42 +L32 +R32 +R9 +L79 +R864 +R29 +R668 +R67 +R98 +R19 +L624 +L11 +L65 +R25 +R1 +R42 +L86 +R43 +R24 +R973 +L197 +L84 +R84 +R19 +L53 +L27 +L23 +R2 +L6 +R78 +R98 +R76 +L64 +R83 +L783 +R5 +R83 +R75 +L63 +L48 +L752 +R927 +L27 +L13 +R660 +L146 +L542 +R733 +L892 +L28 +L38 +L13 +L846 +L75 +R126 +R74 +R92 +R49 +L39 +L98 +L94 +R90 +L575 +L2 +R25 +L30 +L18 +L26 +L18 +R44 +L62 +L33 +R66 +R29 +R742 +L93 +R79 +R72 +R603 +R97 +R87 +R13 +L12 +R28 +R8 +R96 +R86 +R94 +L84 +R1 +L30 +L955 +R68 +R16 +L56 +L65 +L45 +R45 +L95 +L536 +L26 +R753 +L20 +R550 +R79 +L33 +R333 +R2 +R89 +L27 +L725 +L56 +L83 +R84 +L851 +R30 +L474 +R111 +L709 +L47 +L44 +L70 +R74 +R306 +R78 +L388 +L41 +R74 +R8 +R59 +R6 +R23 +R81 +L92 +L509 +R58 +R62 +R71 +L53 +L47 +R595 +R40 +L82 +R47 +R399 +R10 +R44 +R47 +L56 +R26 +R168 +L96 +R72 +L947 +R33 +L69 +L6 +R1 +R74 +L8 +L79 +L19 +L94 +R358 +L50 +R92 +R31 +R69 +L43 +R32 +L41 +R39 +R26 +R443 +R44 +R856 +L250 +L6 +L60 +R66 +L6 +L39 +R74 +L35 +R72 +R341 +L60 +R51 +L84 +R83 +R997 +L71 +L829 +L317 +R93 +L1 +L875 +R34 +L28 +R23 +R59 +R12 +L46 +R646 +L7 +R402 +L65 +R48 +L12 +R34 +R90 +R46 +L15 +R89 +L64 +R692 +L38 +L67 +L33 +R249 +L651 +L91 +L49 +R45 +L3 +L340 +L18 +R858 +L87 +R87 +R73 +L473 +L867 +L33 +L74 +L55 +L759 +R88 +R3 +R16 +R49 +L36 +R45 +L77 +R64 +R461 +R564 +R11 +L10 +R71 +R27 +R390 +L52 +L26 +R58 +R94 +R576 +R10 +R62 +R94 +L22 +L72 +R185 +R27 +R69 +L27 +R846 +L28 +R28 +L44 +L56 +L1 +L99 +R725 +R75 +L207 +L93 +L78 +L22 +L969 +R69 +R37 +L37 +L21 +R65 +L44 +R58 +R35 +R7 +R387 +R55 +L46 +R30 +L26 +R67 +L365 +L34 +L4 +L864 +R67 +L3 +L94 +L53 +L87 +L93 +R18 +R461 +R84 +L226 +L64 +L895 +R9 +R7 +L43 +R966 +L77 +R79 +R20 +R29 +L67 +L33 +R65 +L28 +R8 +R50 +L9 +L91 +L99 +L412 +R184 +L73 +R131 +L831 +R42 +R58 +R49 +L53 +R12 +R92 +L61 +L39 +R62 +L62 +R890 +R30 +R281 +L37 +R64 +L28 +L65 +L75 +R40 +R82 +L282 +L339 +R77 +R62 +L497 +R48 +R49 +R607 +R17 +L24 +R513 +L1 +R60 +L72 +R99 +R1 +L77 +L28 +L510 +R25 +L99 +L11 +R12 +L84 +L133 +R45 +R95 +L55 +L80 +R96 +R90 +L86 +R46 +L4 +L342 +R414 +R86 +R58 +L75 +R8 +L84 +L5 +R40 +R70 +L512 +R46 +L18 +R168 +R72 +R532 +R50 +R19 +R83 +L2 +L50 +L13 +L387 +R898 +R48 +R70 +L16 +R63 +R437 +L867 +L19 +R8 +R52 +L274 +R63 +R37 +L22 +R26 +R18 +R78 +R941 +L90 +L88 +L98 +R35 +L42 +R81 +L39 +R5 +R40 +R55 +L34 +R80 +L14 +L34 +L38 +L33 +L27 +R9 +R66 +L15 +R40 +L36 +R28 +L75 +R83 +L71 +R670 +R1 +R741 +L1 +R51 +L42 +R51 +R87 +L89 +L27 +R274 +L361 +R16 +L54 +R54 +L463 +L21 +R84 +L76 +R88 +R88 +L679 +L49 +R54 +L38 +L5 +L383 +L49 +L575 +R641 +R84 +L101 +L95 +R95 +L6 +R560 +R812 +R34 +R3 +L303 +R59 +L34 +L553 +R4 +L83 +R99 +L11 +L81 +R1 +L56 +L45 +L99 +L34 +R62 +L729 +R536 +L52 +L44 +R89 +L66 +R50 +L69 +R72 +R44 +L260 +R58 +R42 +R43 +R93 +L23 +R20 +R905 +R962 +L99 +R42 +R40 +L10 +R227 +R89 +R55 +L44 +L481 +L4 +R85 +R55 +R54 +R71 +R64 +R57 +R59 +L2 +R65 +R976 +L99 +L99 +L401 +L2 +L772 +L747 +R11 +R65 +R255 +L641 +L782 +L87 +L98 +R19 +L62 +R82 +L84 +L57 +L40 +L60 +L4 +R72 +R4 +L72 +R72 +R202 +L631 +R208 +L51 +L901 +L35 +L542 +R78 +L45 +R524 +R29 +R28 +L828 +R431 +R261 +L82 +R23 +R59 +L61 +R16 +R845 +L75 +R50 +R525 +R11 +L32 +L66 +R75 +L88 +R313 +R23 +R85 +L89 +R54 +L73 +R154 +R34 +R99 +R73 +L73 +L1 +L745 +R549 +L3 +R14 +L29 +R29 +R217 +L91 +R74 +R86 +L8 +L99 +L93 +L342 +L14 +R6 +R53 +R797 +L4 +R795 +R9 +R9 +R42 +L39 +R88 +R684 +L84 +R91 +L91 +R36 +L450 +R14 +L136 +R58 +R79 +L62 +R161 +L85 +R3 +R467 +R15 +R27 +R473 +L81 +R419 +R62 +R882 +R76 +L804 +L54 +L42 +R42 +R40 +L82 +R1 +L341 +R581 +L31 +L681 +R208 +R5 +L527 +R63 +L851 +L26 +R18 +R77 +R46 +R6 +R92 +R13 +L8 +R97 +L12 +L89 +L26 +L73 +L33 +L132 +R92 +R76 +L303 +R22 +R78 +R44 +R76 +R21 +L83 +R85 +R658 +R67 +R67 +R840 +R1 +R199 +L156 +L80 +R40 +R94 +R27 +R950 +L42 +L1 +R93 +L934 +L66 +R50 +R99 +R593 +R158 +L59 +R8 +L109 +R60 +L76 +R44 +L49 +L49 +L20 +L50 +L53 +L47 +L19 +L81 +R156 +R44 +R84 +R73 +R433 +R97 +L22 +L62 +R92 +R5 +L43 +L74 +R82 +R2 +L482 +R89 +L36 +R62 +L82 +L97 +R63 +R855 +L849 +L7 +L583 +L53 +L47 +R71 +L71 +R11 +R89 +L764 +L124 +L20 +R28 +R359 +L99 +L18 +R86 +R305 +R770 +L23 +L61 +R31 +R578 +R95 +R57 +L40 +L60 +R3 +R70 +L47 +L11 +R88 +R53 +R75 +R711 +R58 +L43 +R88 +R63 +R92 +L27 +R27 +L81 +R81 +R4 +R70 +L74 +R38 +R8 +R25 +L7 +R36 +L79 +R35 +L56 +L19 +R17 +L5 +R420 +R49 +R60 +R78 +L640 +L860 +L924 +L76 +L56 +R88 +R80 +R85 +L97 +R77 +R214 +R84 +R88 +R637 +R46 +L46 +L850 +R50 +R34 +R53 +L87 +L93 +R93 +L62 +L38 +R27 +L27 +R43 +L70 +R19 +R9 +R374 +L190 +L82 +R56 +L59 +R682 +R31 +R87 +L76 +R578 +R85 +R956 +L70 +L98 +R61 +L27 +L9 +L385 +R85 +R74 +R26 +R62 +L62 +R953 +L4 +R21 +R15 +R32 +L59 +R28 +L86 +L36 +R27 +L4 +R581 +L20 +R96 +R37 +R19 +L439 +R39 +R67 +L43 +R76 +R67 +R633 +R27 +R773 +L98 +L46 +L75 +R907 +L75 +R28 +L35 +R94 +L74 +L26 +L805 +R63 +R50 +R92 +L251 +L64 +L85 +L22 +L93 +L32 +L175 +R91 +R31 +L49 +L78 +L27 +L384 +R38 +R71 +R29 +R44 +R8 +L40 +R88 +L69 +R369 +L34 +R15 +R38 +L31 +R12 +L75 +L25 +L98 +L75 +R79 +R74 +L26 +R99 +R52 +L5 +L181 +R26 +R55 +L72 +L55 +L69 +R24 +R136 +R36 +L39 +R804 +R75 +L440 +R88 +R70 +R937 +L8 +R13 +R89 +L74 +L15 +R60 +R53 +L887 +R74 +L29 +R82 +L21 +R72 +R96 +R62 +L91 +R729 +R742 +R73 +R85 +R38 +R463 +R99 +R89 +L45 +L479 +R535 +L55 +L7 +R94 +L40 +R768 +L560 +R21 +R86 +L42 +R35 +L59 +L11 +L30 +R74 +R26 +L93 +R93 +R17 +R61 +L78 +L66 +L75 +R92 +L851 +L397 +L92 +R94 +L34 +L271 +L8 +R96 +L288 +R83 +L88 +R84 +L94 +L85 +L53 +R706 +L26 +R90 +R17 +R761 +L29 +L730 +L901 +R65 +L59 +R89 +L20 +L46 +L79 +L31 +L454 +R19 +R72 +L821 +R430 +L10 +L990 +R23 +R283 +L995 +R89 +L39 +L92 +L76 +R651 +R47 +R9 +R665 +L60 +L59 +R22 +R695 +L63 +R91 +R9 +L56 +R37 +R40 +R22 +R90 +L97 +L36 +R70 +R30 +R18 +R876 +L94 +R91 +R9 +L90 +R529 +R61 +L619 +R19 +L58 +R58 +R33 +L85 +R52 +R71 +L871 +L30 +R242 +L336 +R16 +L66 +R75 +L54 +L27 +R38 +R811 +R31 +L48 +L52 +R40 +R4 +R87 +R74 +L46 +L863 +L96 +R87 +R99 +L23 +L61 +L902 +L73 +R81 +R71 +R93 +R30 +R91 +R7 +R37 +R588 +L625 +R8 +R487 +R205 +L14 +L686 +L53 +R56 +L97 +L33 +R27 +L355 +L57 +L2 +L86 +L81 +R81 +L28 +L72 +R35 +R62 +R91 +R612 +R328 +R7 +R40 +L75 +L19 +R801 +R89 +L7 +L702 +L816 +R54 +L305 +L769 +L26 +R30 +R70 +R344 +R56 +L24 +R295 +R90 +L28 +L33 +L60 +R60 +R46 +R20 +L34 +L32 +R67 +R44 +R64 +L9 +L9 +R98 +L970 +L95 +L27 +L63 +R26 +R15 +R622 +R37 +R623 +L83 +R60 +R27 +R36 +R97 +L42 +R90 +L13 +R5 +R93 +R7 +L114 +R614 +L38 +L62 +L58 +L5 +R35 +R21 +R7 +R14 +L14 +R9 +R18 +R38 +R35 +R99 +L99 +R1 +L71 +L19 +L555 +R13 +R5 +L11 +L163 +R954 +R63 +L30 +L70 +R28 +L51 +L94 +R76 +L576 +R41 +R88 +R9 +L38 +R99 +R1 +L44 +R44 +L60 +R879 +R22 +R34 +R61 +R79 +L15 +R20 +L20 +R90 +L63 +L1 +L54 +R328 +R76 +R41 +R17 +L1 +R90 +R76 +L53 +R18 +R9 +L81 +R208 +R89 +R44 +R878 +L59 +L49 +L3 +R97 +L179 +L29 +R34 +R90 +L811 +L2 +R15 +L15 +L48 +R75 +L27 +R2 +R5 +R93 +L94 +L62 +R93 +R23 +L653 +L7 +L910 +R46 +R913 +R44 +R90 +R760 +L64 +L97 +R73 +R44 +R55 +R46 +L23 +L81 +R504 +R57 +R40 +L84 +R34 +R68 +L80 +R886 +R93 +L29 +L62 +L60 +R47 +L49 +R39 +R1 +R68 +R482 +R49 +L609 +L191 +L49 +L26 +R43 +R32 +R5 +L990 +R69 +L84 +R62 +R38 +L73 +L93 +L93 +R26 +R33 +R45 +L20 +L90 +L35 +L210 +R710 +R76 +R773 +L7 +L42 +L6 +R10 +L4 +R30 +L79 +L669 +L82 +L30 +R407 +L89 +L24 +R36 +R553 +L26 +L15 +L12 +R83 +R6 +R89 +L86 +L292 +L86 +L70 +L1 +L50 +R77 +R85 +R45 +L42 +L725 +L7 +L28 +L98 +L65 +L24 +R89 +L20 +R20 +L86 +L50 +R79 +L407 +R42 +L863 +L68 +L47 +L16 +R16 +L58 +L92 +R50 +R70 +L45 +L25 +L71 +L92 +L37 +R73 +L4 +L27 +R512 +R94 +L56 +L23 +R31 +R754 +R89 +R37 +R620 +R3 +R97 +L639 +R88 +L49 +L94 +L6 +L8 +L20 +R11 +L95 +L88 +R599 +R67 +R34 +L73 +L2 +L25 +R976 +R24 +R14 +L514 +R15 +R62 +L73 +R28 +L32 +R63 +R413 +L476 +L321 +R821 +L61 +L39 +R295 +L876 +R38 +L57 +R74 +L56 +R82 +L28 +R5 +L8 +R92 +L26 +L35 +R28 +R42 +L10 +L1 +R57 +L177 +R16 +L29 +R74 +R28 +L64 +L64 +R565 +R46 +L11 +R52 +R48 +L25 +R14 +L13 +L99 +R23 +R74 +L70 +R76 +L66 +R86 +R522 +R29 +R38 +R85 +R89 +R37 +L908 +L55 +R33 +L31 +L39 +L43 +L81 +R73 +R51 +L35 +L65 +R645 +R55 +L76 +R32 +R39 +L995 +R26 +R74 +R8 +R89 +L97 +L45 +R356 +R69 +R79 +L59 +R12 +R880 +R8 +L7 +L35 +R59 +R83 +L85 +R32 +R53 +R33 +R74 +R44 +L58 +L93 +R41 +R10 +R949 +R51 +R49 +R35 +L835 +R658 +L99 +R1 +L4 +L56 +R31 +L31 +L198 +L2 +L304 +L22 +L240 +L292 +L72 +R97 +R79 +R54 +L664 +R54 +L90 +R54 +R46 +L21 +L79 +R152 +R448 +L74 +L26 +L13 +L28 +L43 +L80 +R81 +R594 +R89 +L36 +R725 +L52 +L37 +R214 +R86 +R641 +R35 +L10 +L366 +R86 +L86 +R6 +L6 +R51 +R49 +L13 +R55 +R55 +R603 +R911 +R68 +L37 +L31 +L40 +R29 +L459 +L77 +R47 +L62 +L849 +L86 +R39 +R69 +L19 +L64 +L57 +R18 +L72 +L728 +R678 +L78 +L99 +L16 +L92 +L193 +L51 +L3 +L46 +L76 +L46 +L57 +L521 +L73 +R96 +R68 +R59 +R95 +L213 +R37 +R722 +L295 +R62 +L58 +L573 +L27 +R12 +R76 +R48 +L493 +L51 +R23 +L15 +L27 +R73 +R54 +L29 +R97 +L29 +R7 +R8 +L8 +L801 +L70 +R25 +L73 +L27 +L229 +L64 +R66 +R27 +L76 +L77 +L86 +R39 +R5 +R43 +R22 +R34 +L60 +L329 +L15 +R19 +L19 +L877 +R67 +R40 +R70 +L314 +R30 +R33 +R12 +L31 +R70 +R34 +L94 +R925 +L32 +R11 +L60 +R16 +L19 +R19 +L97 +L92 +L14 +L30 +R34 +L46 +L2 +R12 +R18 +L33 +L950 +L666 +L34 +R93 +L99 +R98 +L593 +R1 +R79 +R21 +L25 +R48 +L23 +R45 +L45 +R52 +L52 +R911 +R89 +R57 +L840 +L83 +R66 +L74 +R174 +R92 +L92 +R27 +R483 +R12 +R378 +L4 +L36 +R4 +R8 +L72 +R964 +L72 +L2 +R10 +R11 +L46 +R35 +R14 +R31 +R43 +R541 +R9 +R82 +L46 +L674 +L48 +R48 +R32 +R8 +R32 +L45 +R6 +R5 +L35 +R91 +R19 +R13 +R165 +R9 +L71 +R105 +R31 +R40 +L5 +L92 +L8 +R42 +R58 +L5 +R50 +L60 +L85 +L13 +R959 +R54 +R85 +L11 +R71 +R9 +R99 +L2 +L85 +L766 +R91 +R6 +L297 +L74 +L26 +R35 +L235 +R5 +L5 +L9 +L71 +L20 +R92 +R405 +R803 +L35 +R425 +R65 +R45 +R87 +R213 +R272 +R228 +L22 +R959 +L516 +L63 +R84 +R365 +L360 +R13 +L97 +R39 +R63 +R68 +R67 +L51 +R66 +R79 +L94 +R3 +R522 +R75 +L46 +R36 +L868 +L22 +L2 +L42 +R44 +L44 +L1 +R51 +R94 +R18 +L149 +R12 +R506 +L5 +L82 +L77 +L986 +R9 +L46 +R16 +L16 +L68 +L32 +L2 +R73 +L59 +L12 +L43 +L57 +L74 +R11 +R63 +R65 +R935 +R85 +R508 +R95 +L88 +R18 +R82 +L99 +L602 +L958 +L327 +R95 +R91 +L80 +L55 +L63 +L2 +L67 +L88 +L319 +R65 +R448 +L95 +R56 +L22 +L68 +R78 +L88 +L34 +L24 +L2 +L448 +R8 +R60 +L86 +L974 +R82 +R60 +R758 +R47 +R14 +L63 +R2 +R114 +L14 +R95 +R5 +L884 +L16 +L35 +L65 +L1 +L92 +L65 +L54 +L88 +R805 +R95 +R74 +R73 +L6 +R759 +R68 +L59 +L56 +L61 +R9 +R25 +R29 +R28 +R961 +R341 +R25 +R90 +R813 +L36 +L77 +L88 +L28 +R16 +R31 +L31 +L98 +L402 +L34 +L166 +R767 +L57 +L10 +L380 +R21 +R50 +R85 +L31 +R23 +L68 +R60 +R40 +R40 +R60 +L399 +R74 +R8 +L75 +L66 +R31 +L73 +R51 +L51 +R85 +L44 +L57 +L315 +L87 +R352 +R66 +R27 +L7 +R70 +R10 +L33 +L667 +R83 +R17 +R30 +R70 +L75 +R539 +L64 +R35 +L25 +R77 +R13 +R18 +R82 +L76 +R76 +L627 +R55 +L69 +R765 +L87 +R92 +R60 +L3 +R662 +R52 +L69 +L24 +L7 +R33 +R13 +R404 +R28 +L20 +L90 +L981 +L28 +R41 +L14 +L86 +R72 +R25 +L897 +L53 +L95 +L896 +R797 +L92 +R39 +L59 +L3 +R21 +R32 +R34 +L37 +L51 +L33 +L34 +R21 +R67 +L72 +R14 +R23 +L423 +R97 +R12 +L23 +L86 +R14 +R81 +R91 +L767 +R458 +R123 +L5 +R332 +L12 +R79 +L15 +L79 +R1 +R54 +L652 +L3 +L3 +R17 +R13 +R73 +L89 +L11 +R88 +R12 +L78 +R53 +L75 +L48 +L60 +L397 +R5 +R60 +R21 +R54 +L17 +R13 +L11 +L71 +L93 +R77 +L620 +L63 +R85 +R402 +L106 +R23 +R745 +L99 +L33 +L46 +R20 +L41 +R29 +L28 +L96 +R629 +R66 +L77 +R74 +L92 +L887 +L71 +R2 +R906 +L25 +L91 +R67 +L81 +L38 +R56 +L40 +L25 +L78 +L49 +R7 +R42 +R74 +R14 +R728 +R9 +R575 +L38 +R79 +L581 +R67 +L27 +L84 +L2 +R12 +R959 +R13 +R2 +L575 +L25 +L48 +R448 +L71 +L81 +L48 +L19 +R976 +L8 +L14 +L25 +L25 +R58 +L43 +R87 +L72 +R85 +R19 +R55 +R26 +R4 +L941 +L63 +R53 +L962 +R395 +R380 +R67 +L33 +L60 +L71 +L69 +L985 +L215 +R14 +R286 +L857 +L37 +L306 +L7 +R7 +R874 +L274 +R70 +R99 +L98 +L93 +L833 +L96 +R51 +R10 +L10 +R35 +R93 +L9 +R81 +L45 +R145 +R95 +L95 +R35 +L565 +L70 +L999 +R54 +L780 +L75 +R410 +R290 +R58 +L10 +L836 +L92 +L56 +R24 +R512 +R562 +R48 +L635 +R46 +R79 +R945 +R65 +L10 +L52 +L48 +L86 +R86 +L71 +R516 +R12 +L57 +L19 +L81 +L823 +L644 +L53 +L45 +L35 +L72 +R11 +R2 +R27 +R903 +R83 +R14 +L53 +L34 +R19 +R58 +L165 +L693 +R590 +R110 +R95 +R5 +R29 +L31 +L69 +R71 +R402 +R98 +L37 +R480 +R57 +L46 +R46 +L62 +L38 +R95 +R76 +R7 +L284 +R86 +L49 +R138 +L889 +L41 +L64 +R89 +L64 +L89 +L76 +L156 +R64 +L65 +R22 +L40 +R66 +L16 +R66 +L97 +R17 +L511 +R815 +L28 +L92 +R65 +L637 +R709 +L79 +R13 +R49 +L76 +L24 +R802 +L94 +R32 +L40 +R34 +L34 +R56 +R44 +L63 +L37 +L93 +L93 +L26 +R85 +R31 +L4 +R88 +L763 +R8 +L56 +R682 +R2 +L61 +R43 +R15 +L61 +R60 +R43 +R39 +R61 +L93 +L86 +L21 +L919 +L981 +L25 +R88 +R31 +R69 +R89 +R48 +L969 +R69 +L32 +L19 +L224 +L82 +R57 +R97 +L16 +R19 +R93 +L393 +L92 +R2 +R90 +R33 +R88 +R59 +R1 +R58 +L56 +L18 +L65 +R38 +L47 +L91 +R51 +L51 +L47 +L53 +R71 +L71 +L66 +L424 +L54 +L56 +R376 +L65 +L11 +R5 +R12 +R61 +L78 +L110 +L90 +R11 +L55 +R58 +L13 +L401 +L70 +R67 +L77 +L547 +R18 +R9 +R53 +R83 +R65 +R390 +R82 +R516 +R78 +R40 +R11 +R82 +R8 +R95 +R8 +R489 +R2 +R98 +R88 +R15 +R97 +R774 +L78 +L451 +R675 +R880 +L57 +L22 +L6 +L28 +L66 +R18 +R561 +R99 +L99 +L69 +R81 +L65 +R27 +R8 +L6 +R24 +L60 +L45 +L90 +R80 +R31 +L16 +L39 +L61 +R53 +R54 +L53 +R15 +L69 +L37 +L218 +L55 +L49 +L41 +L395 +L22 +L71 +L12 +L12 +R76 +L64 +R48 +R52 +L9 +L91 +L35 +L499 +L391 +R25 +L15 +R49 +L64 +R79 +L52 +L581 +L85 +L31 +L51 +R57 +L79 +R73 +R62 +L362 +L44 +R650 +L61 +L45 +R31 +R74 +L52 +R68 +L568 +R11 +L64 +R59 +L46 +L12 +L90 +R89 +R21 +L49 +L572 +L61 +R61 +R66 +R172 +R262 +L24 +R29 +R498 +R97 +L2 +R18 +R55 +R34 +L38 +L67 +L83 +L8 +R6 +L15 +L53 +R759 +R794 +L59 +R59 +R3 +R6 +R91 +R95 +R669 +L271 +L26 +R57 +L79 +L79 +L371 +L45 +R9 +L965 +L94 +L77 +R777 +L30 +R993 +R37 +R48 +R57 +L78 +R10 +L384 +L17 +R565 +L16 +R15 +R99 +R1 +L384 +R24 +R102 +L90 +R90 +R58 +R62 +L6 +L79 +R4 +R23 +L4 +L55 +R55 +R58 +R42 +R518 +L12 +R86 +R19 +L96 +R85 +L94 +L6 +R71 +L71 +L783 +R83 +R345 +R702 +R53 +L43 +L84 +R57 +R45 +R22 +R456 +L26 +R44 +R72 +R16 +R41 +R15 +R85 +L68 +L32 +R34 +L83 +L40 +R89 +L740 +L9 +R6 +L15 +L277 +R35 +L50 +L50 +R219 +R81 +R19 +L190 +R99 +L24 +L4 +L32 +R32 +R57 +L15 +R61 +R110 +R96 +R4 +R35 +R19 +L26 +R59 +R464 +L62 +L2 +L20 +L480 +L78 +R95 +L510 +R26 +R40 +L81 +R299 +L91 +R58 +R1 +R41 +R11 +L11 +L57 +R16 +L24 +R39 +L27 +R89 +R27 +L72 +R9 +R30 +L45 +R11 +R9 +L82 +R77 +L323 +L77 +R30 +R51 +L81 +L95 +R295 +L64 +L36 +R46 +R57 +R99 +L94 +R57 +R97 +R22 +R16 +R91 +R89 +R16 +R4 +L30 +L70 +R56 +R46 +R75 +L42 +R65 +L512 +L509 +R38 +L13 +L61 +R81 +R43 +R33 +L26 +R14 +L70 +R14 +R84 +R61 +L23 +R71 +L14 +L853 +L22 +L36 +R96 +R304 +L833 +L67 +R92 +R24 +R5 +R87 +L21 +R113 +R63 +L31 +R42 +L74 +R25 +L10 +R85 +R2 +L77 +L25 +L77 +R77 +L93 +L665 +L39 +R19 +L89 +L428 +L635 +R30 +L26 +L857 +L17 +L25 +L75 +L73 +R63 +R10 +R40 +L40 +R736 +R14 +R53 +R45 +R445 +R66 +L759 +L10 +R63 +L44 +L9 +L16 +L71 +R87 +L454 +R406 +L56 +L96 +L774 +L26 +L86 +R57 +L171 +R17 +L385 +R126 +R91 +L49 +R62 +L33 +R1 +R99 +R940 +L11 +R47 +L76 +L32 +R32 +R71 +L53 +L12 +L95 +L77 +R61 +L4 +L48 +L72 +L64 +L36 +L57 +L14 +L82 +L36 +R89 +L75 +R575 +L23 +R723 +L843 +L63 +R112 +L83 +R70 +R75 +R35 +R58 +L43 +R62 +L36 +L36 +R673 +R19 +R393 +R43 +R64 +R52 +L73 +R55 +R16 +L46 +R70 +L34 +L44 +L60 +L86 +L158 +L673 +L19 +L569 +L31 +L92 +R17 +L77 +R752 +R98 +L29 +L6 +L63 +R83 +L83 +R88 +L31 +R343 +L33 +L39 +L16 +R88 +L98 +L95 +L16 +L304 +L587 +R74 +L7 +R74 +L474 +R33 +L43 +R67 +L24 +L30 +L14 +L56 +L62 +R962 +L97 +L3 +L81 +R81 +L10 +R10 +R8 +L54 +R46 +L42 +R20 +L64 +L60 +L81 +L73 +R76 +R98 +R7 +R704 +R8 +R184 +R17 +R565 +L26 +R77 +R2 +R190 +L22 +L80 +L253 +L60 +L67 +L20 +R76 +L76 +R56 +R69 +L541 +R16 +R98 +L69 +R87 +R39 +R53 +R25 +R61 +L19 +L75 +L157 +R57 +R27 +L727 +R1 +L48 +R82 +L86 +L49 +R46 +L46 +R65 +R34 +L717 +R46 +L28 +L60 +L20 +L72 +L848 +L18 +R75 +L50 +R52 +L91 +R30 +L398 +L48 +R39 +R9 +R23 +L85 +L76 +L62 +L61 +R84 +R826 +L23 +L60 +L70 +L32 +R36 +R13 +L36 +L77 +L91 +R91 +R12 +L12 +R36 +L80 +L54 +L3 +L7 +R810 +L2 +L58 +R58 +R18 +R82 +R326 +R48 +R26 +R61 +L75 +R14 +L673 +R18 +R54 +L63 +R42 +R12 +L67 +R56 +L479 +L82 +L18 +R49 +L249 +L281 +L39 +L28 +R876 +L28 +L155 +R55 +R938 +L638 +R24 +L24 +R55 +R145 +R97 +R92 +L60 +R196 +L25 +R70 +R69 +R82 +L21 +L83 +R883 +L75 +L91 +R66 +R58 +L58 +R23 +L29 +R406 +R61 +R621 +L279 +L24 +R851 +L30 +R884 +L84 +R66 +L403 +L63 +L15 +R15 +R88 +L596 +R8 +R55 +L55 +R149 +L49 +R45 +R55 +R158 +L58 +L35 +L560 +R33 +L3 +R52 +R313 +R35 +L29 +R52 +L48 +R20 +L610 +L93 +L27 +R9 +R68 +L777 +R199 +L99 +L88 +R88 +R3 +R54 +L57 +R52 +R16 +L58 +L150 +L17 +R83 +R74 +L67 +L33 +R350 +R950 +L328 +R154 +L26 +L69 +L67 +R636 +L95 +L188 +R837 +R39 +L56 +L37 +L46 +L85 +R31 +L289 +L11 +R23 +L68 +L55 +R12 +R88 +L80 +R79 +R1 +L92 +L32 +R35 +L34 +L72 +L85 +L78 +R736 +R61 +R84 +R29 +L52 +R29 +L29 +L8 +R72 +L3 +L27 +L334 +L9 +R6 +L97 +L87 +R387 +L48 +R848 +L49 +L778 +R46 +L319 +L377 +L68 +L55 +L37 +R37 +L17 +L83 +L685 +R85 +L57 +L397 +L91 +R8 +R249 +L12 +R12 +R96 +L391 +R55 +R133 +R95 +L94 +R94 +R32 +L32 +R70 +L574 +R45 +L41 +R5 +L472 +L23 +L10 +L17 +L83 +L72 +R84 +L9 +L49 +R46 +R52 +L52 +L79 +R24 +L45 +L45 +R45 +R35 +R62 +L297 +R69 +R31 +L41 +R456 +L772 +L40 +R633 +R30 +R34 +R51 +L51 +L64 +L645 +R92 +R78 +R715 +L76 +L96 +R96 +L99 +R5 +L6 +L58 +L42 +R18 +L36 +L6 +L32 +L44 +R23 +L23 +L551 +L95 +R38 +L542 +L775 +R25 +R31 +L88 +L643 +L60 +L40 +L95 +L5 +L97 +R97 +R62 +R7 +R831 +R22 +R78 +R46 +R82 +L28 +L977 +R640 +R545 +R496 +L46 +R6 +L91 +L4 +R28 +L97 +L86 +L95 +R85 +L67 +L326 +L656 +L22 +R84 +L62 +L183 +R61 +L33 +L391 +L345 +L43 +L329 +L69 +L919 +R96 +R66 +R7 +R27 +L65 +L28 +L80 +L24 +R34 +R83 +L74 +R754 +L19 +R25 +R63 +L44 +L14 +L74 +R63 +R19 +R49 +L68 +R907 +R93 +L13 +R37 +L20 +R996 +R81 +R56 +R240 +L77 +L11 +L299 +L31 +R99 +R8 +R20 +R34 +L21 +L742 +R93 +R7 +L79 +R15 +R879 +R28 +R519 +R937 +R244 +R351 +L51 +L198 +L23 +R72 +R151 +R12 +L30 +L235 +R12 +L84 +L1 +L32 +R56 +L888 +L52 +L47 +R75 +L18 +R63 +L17 +L296 +R66 +L457 +R46 +R88 +L27 +R66 +L2 +L345 +R6 +L61 +R84 +L784 +L62 +R964 +L82 +R80 +R76 +L82 +R6 +L23 +L94 +L22 +R22 +L72 +L545 +R34 +R73 +R23 +L13 +R34 +R2 +L47 +R69 +R40 +L62 +R81 +L20 +L416 +L64 +R39 +L39 +L793 +L7 +R36 +R4 +L20 +L90 +R32 +L92 +R30 +R70 +L70 +L78 +R69 +R9 +R90 +R321 +R89 +R49 +R51 +L33 +L67 +R12 +R88 +R872 +L57 +L69 +R54 +L92 +R15 +L23 +R11 +L50 +L45 +R42 +L61 +L30 +R33 +R87 +L15 +R28 +L52 +L13 +R65 +R52 +L52 +L75 +R49 +L30 +R86 +R97 +L27 +L88 +L2 +L79 +R53 +L84 +R60 +R40 +L72 +R65 +R20 +R13 +L93 +R60 +R7 +R73 +R27 +L10 +R43 +L57 +R78 +R95 +R81 +L30 +L98 +R98 +L69 +R69 +L93 +L7 +L49 +L3 +L40 +R28 +R45 +L49 +R31 +L2 +L37 +L48 +R25 +L45 +R25 +R30 +R44 +R23 +L44 +L33 +L45 +L1 +L45 +L20 +L21 +L49 +R15 +L15 +R24 +L13 +R22 +L41 +R26 +L34 +L49 +R40 +L40 +L21 +R13 +L41 +R44 +L40 +R37 +L18 +R21 +L40 +L50 +R28 +L11 +L20 +R47 +L30 +L4 diff --git a/2025/inputs/1.example b/2025/inputs/1.example new file mode 100644 index 0000000..d03fad7 --- /dev/null +++ b/2025/inputs/1.example @@ -0,0 +1,10 @@ +L68 +L30 +R48 +L5 +R60 +L55 +L1 +L99 +R14 +L82 \ No newline at end of file diff --git a/2025/inputs/2 b/2025/inputs/2 new file mode 100644 index 0000000..95f5f1e --- /dev/null +++ b/2025/inputs/2 @@ -0,0 +1 @@ +8123221734-8123333968,2665-4538,189952-274622,4975-9031,24163352-24202932,1233-1772,9898889349-9899037441,2-15,2147801-2281579,296141-327417,8989846734-8989940664,31172-42921,593312-632035,862987-983007,613600462-613621897,81807088-81833878,13258610-13489867,643517-782886,986483-1022745,113493-167913,10677-16867,372-518,3489007333-3489264175,1858-2534,18547-26982,16-29,247-366,55547-103861,57-74,30-56,1670594-1765773,76-129,134085905-134182567,441436-566415,7539123416-7539252430,668-1146,581563513-581619699 diff --git a/2025/inputs/2.example b/2025/inputs/2.example new file mode 100644 index 0000000..bd04584 --- /dev/null +++ b/2025/inputs/2.example @@ -0,0 +1 @@ +11-22,95-115,998-1012,1188511880-1188511890,222220-222224,1698522-1698528,446443-446449,38593856-38593862,565653-565659,824824821-824824827,2121212118-2121212124 \ No newline at end of file diff --git a/2025/inputs/3 b/2025/inputs/3 new file mode 100644 index 0000000..f3c5745 --- /dev/null +++ b/2025/inputs/3 @@ -0,0 +1,200 @@ +2555245573282137352766682525526364435746545343523394355638332326665366122245646523573255525564158774 +5413546422442523229295232262733493414148154532639862333271175557334235334296623642342223646213476455 +5433332355353372756453622653442176834335623343626343236463374522272945534432336513564562366234336223 +8587847976565774858953965468986376666446479587478457937677478585829659678676687889878667678628785855 +6725568675552323432643555634432545535456664533555625265445346557244554345575553442385873456485265552 +9635355438448533559523575659543917474655454558565535466569258555554341635555765555575554355746548434 +6334336636325533344553333342445422324353356584464747446345433244635424242342533252332455232342441523 +2232323232223333223433222223123323333233533333132323333373334422234233233234233353331333324225235335 +3453244144313333334225445843256532445424644455423563444533352222214431521555446221352455525534352744 +4222312242222382223222522233222244222252124224122232332141221421123222222222323272422422223564223122 +3665575656254343645544656646746466563665352664365462466653467356356625626343263256544665546553555653 +8868657846574287538755799635858158734635886494697558788974725689798868576477687776866666753869689648 +2394435233234444443212426444434324334444445645433344444344424164444243544324645633244244434434344683 +3332233243354533435342424331323662422344253463563116365314353545433353432343252532424442556323332334 +1323214134211344311144234224422324424143224143344311323144443141442413142114111123244411141324256789 +5555482427856556561438464655344682243557544654673314386626448364445555654745425534534545657564668662 +3133221322242243224332522334251243344322243232322374343332233332233324333332224452231323411422423422 +2122122282221242222223213222222222221423223122232322328222112212212256322122222224221162222322222222 +2121423245343334523343334231542244135423644433421243422342212323237443133345233221333423344343623222 +5312325252622336223612818151262222267254232133124327226531225248123255225352334236321246631522621622 +3557342552354356363355442242355584935534335363451245443455553353135453762254455324454524545613549235 +2424122362224232461213421531227441221241242211232233221232231344444212134222222322212222293223524263 +1122227423222123222223322232242122433221312341312112121222221412221739232122125521281125322212142322 +2673232362764725776575337633457437662545526562533966337745691623542772266356256243476345327233433834 +2323342233322222222311324332312322332332222232532382222212311222332232313213321222232282133231232212 +4221244575224224228233224522352415234264233252652432141565556214844442233244354421744332123233526222 +1331232322232432343412123234322242932245225222233222323354312421333253224123323322143232422222221353 +2222222222223235213322222312223213122263233232322322222233521222261222211212222323212121263122251222 +4324245113362244152243712422245235221423134254345524541353323422522245322432522224224522142822525257 +2578316453353372757453453363342646233133354959333376248434663432317234632133996363315353324333833223 +6652222242825222221442231223832222122212133312232242322244312232212222336314221242534126232232314312 +2122322212435425358523342132223143142522317581625286232223342222181551622253542225113215215323216424 +5243543227223123522226435222214523353423294332623323225833232421131226433388228216142233666441432326 +3686948544446344866654654689566846658258838872968654764673688675797464756757724458892888676744388969 +5122222221234226122222122222242122126232132142422231221122212222312122132222124222222522224122222224 +2312324432333232211232232232222256141323832223231232353232227322232222324223237123312932232262335142 +4353223337238234322333323134632331326332342723234322223323433833223332333892343332253328633626627377 +3334284235525334724323935433542563533367562326346333332264455333343543673342432373653233333325352344 +2122452242322821242222491222222222414222222114424424821431222224222651424421265232275321422233223224 +3222332221733544222324233433833233212132344245344116583322332262232512351327442342253312615326924424 +8422733975263681952227832426355332693251284223632322583938683262547198863782342447397579954522532266 +5344526323123123482423413134372344272534522237343634422211232353544363344527634423242566122432442213 +5544444444544475443343444443444643443432534342442262444444443333333434346444356444446343436614444344 +2562222222212223226524422322122223323222222212321528224222123312321222236232122122422212622322622122 +1362222428321223712423511422932124272231263422714323925422943333537226341275221753238272444722222233 +4212415343225623522421214732314253475222134225325826474324342233122334242332338155471354425423458426 +2562223222332522323222125564232212322222223228342242222424244323241249755732165211423224211122233521 +1242322333255324523623343543212232322322432122251232223532225232322332324213441322533222441333352532 +3453232332433433363333334283542322342636343223322232335733543232472332232236333353336332347332633333 +1725417647425561541234572275622744647722241735336218128384778727854584383531763168831773488155888719 +1522446332232322132232522221122185117242334423252532392423242242434243214352351222221641124529261333 +2232222223222121322222322222212342222237224212322742332322222122222212912182222122232331223122222225 +2432333113333322221522323522313322225242218223353321212432322523222234311323323113221322222122123222 +2247232463533223526323752362263722336323527233143314353312323466351363421222335222342333343522323358 +8221154228333443922523522332333132336454413421343681223333332244312634333232131333333222433132143632 +3343443243423443134423492265243444224243374432432234333374644414347832444334444543424223431243442322 +2393243334232412525232415355234232113343333433335423535553553512245134223155553634223342623431533331 +4444344332444444424344434455243534444454634251323454444213433343343464345442463543543453284444444364 +2221221122225123222224122522222222222212231232222242222342211222252221512212226222344233112222222122 +1542333694524314331323153651644423424546436273645634456134434366663321534652745426342424424455222311 +3935743338337433653364792336733332343538543433516383322344236276634635647951636375327252452623233323 +2122262235525286283123183222332233223822327222122252332356429235352253234332923312134352133243222932 +3635555535455424445655754444935425453346542533454434445553543344336444444554325323555434555586545331 +3244441432544355324343443322443453444123426343224442344434343234443443424346244331424223143244423433 +2343144333443433353323425333433333433353332333333534424323134423533353323334234234332313342522333342 +5344455435524612735278425445744422252242244574433434425325222445345558354322345334242434525143541622 +4446535643565733551245643664341675648246536553545683535533556622556566541564647764736535235665465446 +1342222233222222442551232222231122362822222112331123322232211323212612222266224324222222222251222122 +5462265565746659657348434513426352434324523556513933554415365324354636222553442697434643345441243538 +3433222772325512164333136124332324133223223266333324657422527341311213455432122312223326221422214624 +3123724236324313373624742564433344333522233434332433316623433643228733522234256735463372541622722244 +6626627555652777622637665255256354642356594678571223254715445475546665317246662767346735763653526767 +7633637462597748227556474425364835474466357777349537346683456367642542753733531772736323245774693493 +3333432336333333333314333343343333233333123436654333333323333333224432333333132333463333333233232322 +2294212679457563848346753719657771482455849656257114443711954534474239844322671464334143584221372437 +5233422242235354425214584332662256223223234324253422332232226242235724552341323257273444123126552351 +6624322855312322243623433233432144748638132536334511373552422233625444542423332333333733252339336233 +7432353425125454233535242534352325553442314332452443373255542544222134422532135324233323434334365535 +8738556132488742884427532342423635327963381844412858524137528776125434474844438935374282879495627591 +3715464344244453434482554436558354533464535355535544538743494445352355456345355555554548458455355463 +3214256423113343433443434433341115344331434462434454443143442444524241254225453414446323336334213424 +2223331122222112424622432122422221312222222231221322231222231212323122232221122223233223232324412232 +5272131222224213172322232226212241222221122122222132422432222211222222224311334324244132222222126282 +3521316116613624156133635434453324625544551452142413423125263263432653512413621445146461526535425789 +2332422222132433344227242223432333333344223222324422231233143734323244621343323243344432132233233321 +4235543322522444255511256335245335253546624222234634244341222384357525242242425333824332253522393235 +3367322243225554232322282222235223334254242431213212462233132325132251543324122142135522441424231124 +3542445634224165237844457233456464453346444543944512522415543934654434234442453357543726437782467553 +3122227242342123424331222222222312216242222725222521442223823232252535232222416452726123622315513622 +3333244544333752533433344433322451442334333234314362444312434654343253324122246352142556426354332324 +4323231123224331246322434222242333113223453632244231322332433227632323143223322326213422452232217112 +5354232322351353362463332244235375953362614244626334453443514253436355564662633524743573444523574443 +4535333434353826634424446335633323495525235328542322345222252666325434446235331233257243612315322533 +4451544253436254443233442333244334345344353442342464444443444432334244341413352334424453953424334334 +8225212112622114222224812126134222224263245224242484474222262222161212214213444631222779623222551347 +4521233332431214333345121243434145523225332443512225423255343255225213424435344135224544511513156789 +3223344423222431424523434342231223423332522325132242223323314122452426142251231214321122443221323213 +4347454559995245975147244444733762333385425584487342552433793874354853442454234374453254443534544626 +4222532162212321221421221431223233232427226213222222332222226725432324335231222122122522322312227213 +1231224511293423231245232251325232232323233642324323332223321212532251326223332252222654136327224222 +2342122454434453343422341333233233332431323421421522233553333454352153363324323232526324351333334232 +5345744756675595635594675676335555979777358664836465475573546725357577455347786458695364498743676532 +3524763455522424332323345424524223434534544546375534442463224455468434137164454244533423424447435564 +2356555363553563435355375334535444355343355533634453533533432533545355662445633545444322335533424555 +6225744372552734434415535555653155448535447353446556663221354854466462254223255157453452325543427614 +4448449433441443343444423234544344544344444444444455485533323344424354444444443255441554334444434544 +5712676515344145175343771556132372542165774575453347175532122152262467117711655442123212657616671789 +2132422253442445453624241353344522255333543254525341234342224633841532445674655242414544222543423223 +6353356353332533333322313333323344335333533323333243433343342333343331434333393633323323433632335362 +3523523323333352232252325232335332333333223333332332333623232233233132333333843322535422333463522273 +2222142342523317216322335361313275322123222637221152222323522222221242223222334252263213232422262312 +3219212221422422112222313421212323212322122132422312322312222122227223133133215221253323322235322322 +4251661432722234222224532335345422243322322222222583221173423246222225321223322223122612421332222526 +3222272234222323342221133152431234522243426462651521245274225472353454644534334552442636842232255325 +6233373325362212253466325332543324232532525542123321354323343323752233275333133334543253533335364443 +2343223233122212723422222211224232242242323221322223513222323233233312222332112232322532432222212224 +3252231422615121622412622622222276523212322386122261232242312321523221215251122222422525212112633622 +7885764747473653363474675637675868784443728275273746566653968439767274644776724364656575545442645434 +2742222242224223222623223311126254222424122421226232212324332332422112133232132312223324264232334112 +2331522423323322314332234123422223323222331231333222212745343122542221254313122621333233332323323322 +9555645637577354531594343836443546344441549463736449463593335544845446544245423443433264444357848452 +1385436365543456564545352363646365343464545657333365536633631274125426633142836354441435354445743335 +2332221322274323321743232343252126323332622232233222222342221612313732322213127336222644322221221222 +2123421213211223122321224221325234222322422222112332123422324214332422112232322242524133322342222422 +1424234342425353262131243233324453469225544444331133244284623265324542323333332632244331522346534234 +1421224222243442242422322223243212224223221222232222122134222341221121122222242133122331241223332222 +2344226245144223324252222423224212154415255222234544566533225326223233422136334154424262322242165254 +7253255334362343272221542631239351582273555146521292862172342422413253513656355132182894533254925243 +2234433411442122223554324222252222212322224251222222224334521225342522424222226112222322142254453232 +4432422233313341321226422241222341234233312343344331144233213433264341351332433113342331216432232332 +2324232212342242241322251233122222132222723236524322322322233233312412332223232323433515223342423332 +2696492134445533665555445454825344166569343276335493725432593746342533433344252517653232563354344638 +4374833563374364524943443434933523273243231615537133533444394343635464445633633764697363332743355345 +3233232337222344843342347312434253383243473244332434534344244457332842332315343344337342243233334954 +2422413433243245254234242213553233336242253143235243335334242455446353322343432313342323152113372245 +2342122322322322262135532222143322223112542416223821664253126616626365212332325232424712266422332322 +3324213845427337245332232725322543322249333653573633352526627655222342332932738334241532233393563435 +2322212431232822142214222234522113213222311213232221322224222212223432262342522221112232222242322132 +1124232232145245224222212422322722222512113224223422212224221222226211222342142222221212442222122223 +2122112132112222241225222412224222222233222122222352225222221212222222212522214222222222222324242223 +2222414113212243814294242223442232221242421212122222226624621221672122261534212211311221222122423145 +5683478244543237344346337321844635327637542741744143744364444523144435444532464443237446274666346642 +5544546424576644958845543756142442244324653942243149426339732713469323566539553273432744244442137272 +3422222222212344222512321122223227222422212222212221243134231222122222122422222222224241211242221222 +2373322222222211322225113438221224222344437222422342311221224422224115215222532221223123533212224236 +4337276796342256572338937454577475337476576546642449422775625729961252662566427727345456522373162622 +5234735933352433214173575354635765532744333332623437257377255284233732356365642365345334333326231642 +6314324553322653335345324313656543651344563353124262234333333444535633333993631243433332553145532233 +8221222346542321332775332322232221246223222222222223122226224422242242222223253511282222232122622212 +2333525243332432442432243252232213461332935352512523425322333343324252251221442144333143332422344132 +8363527674335693366826473776748553417989447665663633949562873467376626336353727738173354327456323624 +2212418682422432131122323252232212222383224338322323244834262453222241433232214222148431322253592242 +2321122224122122232434222322122222216222154122212262222122512212122312723214223242321121232521324125 +2222114412221212212217411222143282223382217422521433223141264252426121427211562222123232232722422321 +1222222211231534221322223222232322222222222222221323222224432212221222222112212321222222114122122222 +1122223424221222426122322221112233222213226223112113221222112147122222222322222122332124222292322221 +3343553383433245385145525365335223232363234546433824656332513526381332536324282236422583226353133344 +4732492342765324333513331739224822772634321223342242412333243322324222132634242613842234229462423112 +3125643256275524556332433626714545252744344345433463274546853524474352317325515753446325665476745366 +4224533511234243433542452233215412234232254442332223222223536823123332122574223233462212423252423122 +4247315263132423712386824414634276157333323293232223615513428582434447292185243492234326143836418362 +4533135724245644133333224312325234212145323234235243533642425413744252123232242443242235344123432444 +2222324422234333213323253223222133123333243352328532232331353313312322332332222231231122332323232242 +3925277534233874349445348885622447586356642343831324762824654436557286644843488438559417556565854537 +2222231212212232222221222221542225122222221322212122221222221112222322223222223121222222221122211122 +8747687636452444622834433864483444264454254758347914745364454274428473744361498555337843348457564846 +4353333532533515545542117565634551734335455234455353435456643333343434533934735634323545455533553553 +1133432333331333443333233634333222232323323333233433322533332386332323322433235313343223413213333352 +2244244322443326426344343544323623344754544328349234314343326845448293685333624723325435746339254445 +2323262442326232462423644222126636315318944352482351564262343746212263354522225236222143623254683421 +1323321332247222244412322421222252422412422441241226362444244232222422344323224312822422422241216224 +5366835348333754465654557444743456774564554545676755765533846866687637547353772775554935754554744663 +3243533233134222443333433331522323422244323252323432115433224313143923543332233332432233323323351333 +2232424172522422212223234644343262423333233532422122421131662222413423422335221632422322323415342421 +2426433332237242244228376314363645235321339233448524233924263344454222234334935265185232132333322242 +2423232422323311334233142333122323432423133532323334332123332423331322323832331323342433313343332623 +1232443222223433434543422924633243432342142149333343414483441442423454231343433424422324344445532413 +1343345242342122312222214214523323323542222224422132321324431212225752532533272333222341425213223162 +4583753843764756856378669635655484728768368883857639796465655666448734673438869344669779786636653223 +4444333435553234263344433374333443333332333332363333533324525233343365343333642341362344262232333633 +2321544242127622332222367322414335577334624261322252843276262244257552263532252422824225219332512533 +3432142253337532132333433232522337322284612323323532332435333123134435133233342242224233237223232123 +4333231244224221232232323232332432622322332223132432334243312223322432213324322323432433323221332333 +2221334423231421112242332222123422224122214133424132222222212433123124322322222322232231213242244314 +4312262226342326245321221326223223242221271523232221236422231122432336552422242221232443126738224214 +6555955456378335662853453254665995357775339455735458554366593557734253755782381353465451465459348355 +1142224223112232222222122522232233212223721132222234212522125223212441222212332113424152322317222222 +4546635437352668454442256656465657544438252637452456575656765956535653447444766785663466635754645548 +6755457674885836498743795825524658856524686556745867858446686859549868578755488587556654767867599767 +2222112222222222321112422522232251212122222112222222252222212222344225222322232422221223212222212322 +1132327442133434423282144223262432324242211243364521334223133364432322223322242222723223325141233321 +2326333332323231343613333332423333134123333333333433214323333342233313323252633232243112223334334233 +3563245382268334211461225534232239213473435467263454512214765433232234532627426679445435432572288166 +2362351432332333645413425523216643433243323446435452364562331225326243444224322424342222736234422226 +3235427912235161232225629229228722121466437262984421214262299364422857652361212874355873327982652222 +4433232327424373423226656444524323622732431273631426234347253474825556767433324532334423334462622329 +3522234323528426342653217372343242533467422332633543725133534325533335557336153333543343443323435255 +2353223535157258454242545555359216443755555583323254553443425455544244542575524844564253462244655556 +2325224215124223252521513224722214442235422621153552922242312263378262342197222373332245246222432242 +1212422224352324224333264212322156522232312432522422111222222521313812221112222142322344111253222322 diff --git a/2025/inputs/3.example b/2025/inputs/3.example new file mode 100644 index 0000000..6b1df6a --- /dev/null +++ b/2025/inputs/3.example @@ -0,0 +1,4 @@ +987654321111111 +811111111111119 +234234234234278 +818181911112111 \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 6a94db7..37183d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,7 +4,6 @@ "requires": true, "packages": { "": { - "name": "Advent-of-code", "dependencies": { "@digitak/esrun": "^3.2.25", "typescript": "^5.3.2" diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..1bb4334 --- /dev/null +++ b/shell.nix @@ -0,0 +1,17 @@ +{ + pkgs ? import { }, +}: +pkgs.callPackage ( + { + mkShell, + pkg-config, + openssl, + }: + mkShell { + strictDeps = true; + # host/target agnostic programs + depsBuildBuild = [ + pkgs.nodejs_24 + ]; + } +) { }